Shorten QA Cycles
Of course you expect your QA cycle to reveal system-level bugs. Most system-level problems can only be found using the full integrated application. But QA teams often don’t have enough time to integrate and perform system testing. They have to spend too much time on unit-level bugs that could have been caught earlier in the development cycle. Not catching these defects until system test has two serious consequences.
The "bug dance" is costly and time consuming
First, it is very costly and time consuming to address these defects during system test because the bug has to pass through many hands before it is ultimately fixed. Here’s a typical scenario: the QA person must find the bug and report it. It then goes to a lead developer who has to assign it to an engineer. The engineer has to spend time debugging the problem and often finds that the bug really belongs to someone else. Even after an engineer tracks down the problem to the specific class with the faulty code, they then have to spend a lot of time figuring out how that class works before beginning the work to repair the bug. And finally, the engineer will need to spend time making sure that nothing else broke during the debugging process.
QA is delayed doing their job
Secondly, while this "bug fix dance" is proceeding, QA is blocked from completing their system test effort. Sometimes this is because the bug is a fundamental problem that prevents a feature from being exercised at all, while other times, all the fixes coming in require large areas of the system to be retested. Whatever the situation, the result is a QA system test cycle that takes far longer than planned.
Unit testing is the answer
The solution is for developers to test their code as they write it – when unit-level bugs are found during development, the context is fresh in the developer’s mind and the bugs can be fixed easily, thereby avoiding the "bug fix dance."
Automation can help
AgitarOne includes software agitation for interactive, exploratory unit testing. This unique, award-winning, automated way to exercise Java code provides observations and insight into the behavior of classes and methods.
By reporting on the actual behavior of the code over a wide range of test data, software agitation quickly surfaces unexpected behavior that would otherwise remain undiscovered until the system test cycle. AgitarOne can help you eliminate up to 90% of bugs during development. And once you’ve used Agitation to eliminate unit-level bugs, you can use AgitarOne’s automated JUnit generation to create a suite of regression tests that captures the behavior of your code.