By Wayne Ariola, Vice President of Strategy, Parasoft
Your CFO would laugh at the thought of waiting for an auditor to determine whether
the books had any errors. Rather, he would ensure that the company had policies
and procedures for vetting and then correcting errors long before the audit. If
the CFO did not have this, he would go to jail.
Why, then, do so many software development teams wait for QA to identify the
errors in their software? There are several serious problems with this approach:
Since today's complex SOA and Web 2.0 applications are becoming increasingly
difficult to test at the application level, leaving the burden of testing
to QA is inefficient and ineffective. Consequently, applications are released
without truly knowing what errors remain in the application and what impact
they will have.
It would be significantly faster, easier, and cheaper to find the same errors
earlier in the lifecycle.
Iterative development models (Agile, TDD, Scrum, etc.), which place the
onus of quality on developers, are becoming increasingly popular.
If defects are not removed by developers, then QA testers and business analysts
end up chasing and reporting bugs rather than validating end-to-end business
scenarios.
A more effective approach advocates bottom-up quality in a top-down quality
process: eliminating errors as they are introduced and preventing similar types
of errors from entering the code base, and then supplementing that with a top-down
approach, which is a QA-level audit that verifies whether end-to-end business
scenarios are working effectively. This approach involves the following core
components:
Error prevention: Fully-automated practices that help developers detect
errors as soon as they are introduced and prevent similar types of errors
from entering the code base.
Continuous regression testing: An iterative cycle that checks whether requirements
are implemented correctly and continue to function correctly as the application
evolves. Human intelligence is required to design test cases, but execution
is fully automated.
Functional audit: An audit, with QA or domain experts validating that the
expected end-to-end business scenarios are working effectively.
Process control: A control point that sits on top of the other components
and provides visibility into the entire process. Such visibility allows teams
to fix the process and make small adjustments in the way their organization
is approaching quality problems.