Mike Hammontree

Jun 202011
 

What is the value of quality and why is it everyone’s responsibility? Have you ever really stopped and asked yourself this? Or, do you just assume that quality is a built-in, natural phenomenon and not something you have to be concerned about?

While this seems like a straight-forward question that should be easy to answer, it is actually a commonly misunderstood part of many software development efforts. With a clear understanding of quality, and by implementing concepts to assure quality within your project, you will be taking a great step towards improving your final product and increasing the return on your investment.

What is quality?

Merriam-Webster provides several definitions for quality. For the purposes of software development, there are two in particular that fit well: a degree of excellence and superiority in kind.

Don’t you want your end result to have a high degree of excellence and be a superior product? It won’t happen accidentally. Quality is deliberate, intentional, and should always be planned. Think of it as a guiding principle of your project that should be highlighted on day one. Regardless of what you’re building, quality should be one of your objectives.

What is quality assurance (QA)?

Quality assurance is the process of ensuring your deliverables meet a defined, minimum standard with the least amount of defects possible. Quality assurance requires dedication, planning, consistent attention and time.

The standards for quality assurance within your project are set during the requirements phase. These may include functional requirements, non-functional requirements, standards required for integration into other platforms, usability needs or company-specific best practices. As the foundation for your deliverables, having clear, specific requirements plays a critical role in quality assurance.

Value & Responsibility:

Quite simply, quality adds value by improving your end result. Implementing the practice of quality assurance in all phases of the project lifecycle and with all members of the project team is how to get it.

Every resource has the potential to add quality while working within their respective roles on the project. Everyone inherits this responsibility as part of the project team. Even with a resource filling the role of tester, it does not let others off the hook for maintaining quality while working on the project.

In much the same way a player on a sports team contributes to its overall success, each member of a project team is able to provide the same contribution to quality within a project. Working together as a team towards improving quality produces better results. Whether your business sponsor steps forward to clarify vagueness in a requirement, your project manager catches an error in estimates, or your developer corrects a defect prior to system testing, each person has contributed to improving the quality of the final result.

As a matter of fact, errors corrected earlier in the project lifecycle, whether they be in planning or defects in actual code, result in less overall expense to the project as a whole since they were not carried downstream. The further downstream errors and defects go, the more costly they become to correct in hours burned, resource engagement and budget consumption.

In the case of a production defect, while you can go back and correct one that’s been exposed to your users after release, you may have a hard time, or possibly never, overcome negative perceptions and opinions formed as the end user encountered the issue. The risk and potential impact to your business is significantly reduced by having quality assurance processes in place to minimize this situation from occurring to begin with.

Dedication to quality assurance will involve commitments to time, budget and resources around quality tools and practices used in the project. Include expenses for resource(s) to fill the role of tester in your project budget. Plan time for unit, integration, system, regression and user acceptance testing, both manually and automated if possible, prior to release. Provide the needed tools and environments for testing resources to verify and validate project requirements. And finally, use a system to log defects and track tasks for the project as a way to manage work and minimize risk prior to release.

Once you have the people and tools in place, commit to following through on addressing issues that impact quality. If you are doing the work to identify these issues in your product or processes, you must also follow through with getting the effort required to correct them into your project workflow to realize the value of your investment in quality.

Misconceptions surrounding quality, quality assurance and testing:

Misconceptions about quality, quality assurance and testing can easily work their way into technical groups and project teams. Be aware of the differences in some of these common misconceptions surrounding quality to keep your team and project focused on delivering high quality results.

- Quality, quality assurance, and testing are all the same thing.

While they are all related to one another, they are different. Quality is the goal, quality assurance is the process, and testing is one of the primary tools used within quality assurance to increase quality. It’s easy to lump them all together as one, and place that responsibility on one person only. By doing so, you narrow the potential for improving quality by limiting resources who can otherwise have a positive impact on your end result.

- Quality assurance guarantees perfect results.

While quality assurance processes can greatly improve the overall end result of a project, it is not a system designed to create perfection. When instituting a culture of quality amongst your project team, it is important to note that while perfection itself may be unattainable, it is not an excuse to disregard processes intended to improve quality. Higher quality typically results in higher end user satisfaction with a product.

- If everyone is focused on quality, then I don’t need a tester.

Even with everyone focused on quality, the role of a tester in software development is still one which we highly recommend be included in your project team. Acute testers have the ability to not only put themselves in the shoes of the end user, but also provide valuable details on where defects are happening and how to recreate them. This is the key to turning reported defects into implemented fixes quickly and accurately. Developers are often too familiar with the code to see some issues while end users are often not familiar enough to know if something is working as designed. Having the tester in the middle helps bridge the gap, and will help bring a higher level of confidence to your deliverables.

- With a tester on my project team, my developers will be able to work quicker since they won’t need to test.

Unit testing by developers is one of the easiest ways quality can add value to a project. When a developer finds an issue as a result of testing done as they develop, they have the ability to implement a fix much quicker than at any other time in the project. This conserves time, resources, budget and potential impact on other areas of code once integrated. Testing resources will once again verify this code as part of the whole, either directly or indirectly, during system and integration testing downstream. Unit testing will not uncover all defects in software, which is why system and regression testing is necessary as well. Unit, system and regression tests are intended to complement each other. Quality will suffer and project resources will be wasted unnecessarily if any one type of testing is used as a replacement for another.

As you get the wheels turning while contemplating the next project on the horizon, take a close look at your processes and the dynamics of your project team. Is quality a goal? Is everyone taking responsibility for quality? Will you get more value from this effort with people and processes that are more quality-centric as you work?  Odds are, you will.