You’ll have a difficult time finding people and companies who disregard software quality. QA is fundamental to every product’s success. Even so, why do we see so many buggy products, delayed releases, and frustrated customers? There must be something fundamentally wrong with how we deliver software. We wanted to find out what causes poor software quality, among other issues like this.
Because quality is multi-dimensional, every stakeholder has their own definition and understanding of quality. After discussing with multiple testers spread across product and service companies, one thing stood out — practices play an important factor in the overall software quality.
Let’s explore what causes poor software quality, along with different practices and factors.
Lack of Management Support
It’s critical to build quality into the product and to ensure that all stakeholders are on the same page. When multiple teams work on the same project, the testing scope increases, and the chances of project delays also increase. There is a possibility that every development team will eat up testing time just days away from release. To boot, when the testing team doesn’t have enough time to test, many managers ignore their request for additional time. The team is stretched thin, affecting the quality of work. If you are a manager, please understand that some tasks cannot be completed just by adding more people, especially in the software industry.
Lack of User Understanding
Beware of the Map vs. Territory mental model. The practices that worked for past clients may not be perfect for your next customer. Blindly following practices without understanding reality is a common factor in project failures. While reuse and replicating processes are usually good, pay attention to the current user’s unique context and reality. The more we understand the user, the better we will be able to fine-tune and customize the processes.
Not Building Quality With Good Practices
There is a difference between doing a task and owning a task. We often see all the practices in the system but experience a lack of ownership. When we work on a complex task like releasing software to customers, we must build quality right from the start. We are bound for trouble if developers believe they can just code and leave testing to the QA team. Multiple projects have poor software quality because of this rework. The QA team finds basic bugs, and the developers are busy fixing them, all while management thinks there is real progress. By the time testers reach the critical functionalities, they are left with no option but to rush the testing. Some teams still have a single environment where development and testing are parallel. Testers are unaware of the continual changes made by developers. Bugs get closed and are attributed to environmental instability.
Not Using the Right Tools
The software industry is continuously improving and marching towards a mature state. Still, we find teams using the wrong tools. People write code on their local machine, share bugs over email/chat, and do not maintain copies of data or backups. They are hesitant to invest in the right tools for development, testing, and business analysis. Remember the phrase, penny wise, pound foolish; it reminds me of these teams. Make the best use of your teams. Don’t let them struggle with legacy or incorrect tools. Keep an eye out for collaboration tools. Try them out before rejecting them. You will be surprised at how productive your teams have become. Once they are productive and efficient, you will see a direct positive impact on the software quality. There will be fewer blame games as well.
Not Skilled in Testing
Tools, environments, and processes are evident to a large extent. Identifying a skilled person from an unskilled person without digging deep into their outputs and thought process is difficult. Unskilled teams rely a lot on scripts and do not understand exploratory testing. Testing is a combination of checking and exploring. Some teams are averse to automation. Good automation saves time and lets the testers spend time on other valuable tasks. One less discussed skill is bug advocacy. Testers who don’t advocate for the right bugs risk the product quality. The right bugs don’t get picked in the triage, and unskilled testers sink the software’s quality.
In conclusion, to ensure that software quality is up to the mark, ensure the following:
Management support throughout the software delivery cycle
Understand the user thoroughly and align practices
Advocate for quality from the start with good practices
Ajay Balamurugadas began his career as a software tester, first with desktop applications and later moving towards web and mobile. He cofounded Weekend Testing and Test Maniac and collaborated with The Test Tribe. He's written several short books with practical tips for testers. He was introduced to the Bach Brothers' Testing Legion of Merit in 2015 and has led several workshops and spoken at conferences. Ajay often shares on Twitter, LinkedIn, and his blog.