The Importance of Utilizing a Software QA Team
For anybody involved in a traditional software development process, knowing whether or not you need a QA team is a critical question to answer. It's a silly question, really, considering that assuring quality is pretty much essential in software development. But, if there's no QA team in place, how would one assure quality?
There are many agile organizations however, which operate without dedicated QA people. Some do it out of necessity, i.e. lack of financial resources. Many do it out of conviction. They believe that they found a more effective way of assuring quality.
It is Not a Question of Whether You Need Quality
Of course you do. Software needs to satisfy a level of quality before it is released. Assuring quality involves running a variety of test cases emulating a broad set of usage scenarios, load factors, environment combinations, edge cases etc.
Automation is an Answer
QA can be automated to a large degree. There are many tools and frameworks on the market which help with automation of unit, integration, regression, stress and performance tests. Automated test cases guarantee repeatability of the process, can be executed faster and reduce need for manual labor.
Agile methodologies incorporated a number of ideas to address QA needs:
- Test-driven development (TDD) process requires developers to write test cases before writing the actual code. When developer completes code, by definition it has to pass test cases.
- Continuous integration (CI) involves integrating code from all developers early and often - typically many times a day. Combined with automated test cases it results in catching and resolving integration issues immediately.
- Small releases reduce risk of running into major issues or surprises.
- Frequent releases allow to respond to and address any issues which might be found on production rapidly.
TDD and CI make developers clearly responsible for writing and execution of test cases. With a good adherence to the process it is entirely possible to develop software without a dedicated QA team.
Well designed processes incorporates a system of checks and balances which provide a feedback loop, a mechanism to keep the process on track. QA process which relies solely on the Development team lacks such mechanism. QA team can bring a different perspective, add breadth to the test cases and provide independent validation of software. Hence even with a perfect agile process there is value in having a QA team. It can be however much smaller than in a traditional software development process.Continued on the next page