|
Testing always spans all stages of software lifecycle.
It is much too late to start testing after software product is implemented.
The cost of fixing faults introduced in earlier phases would be
very high.
Software testing requires careful testing and diligent
execution. It starts with a test plan. Test plan is a document
that identifies the high-level project information and software
components that will correspond to test cases. It describes
project's testing strategy, identifies QA resources, efforts, schedule,
and cost. Test cases describe definitive sequence of steps to break
the software. Each functional module has one or more test cases
defined.
The most effective testing is conducted by a separate
dedicated QA group that is charged with responsibility for product
quality. The first pass at testing is always done by the developers
themselves. They are responsible for unit testing, and initial
integration testing. However individual developers always
remain somewhat blindfolded by the work they have done to implement
their modules, making certain assumptions, and missing some border
conditions.
| The more testing is packed
into early development stages the better payoff. |
Testing begins as soon as requirements and design
documentation matures. Their testing procedures consist of walkthroughs
and inspections, implemented as formal reviews.
Each formal review is a planned meeting that target
a particular part of the systems documentation. Formal reviewer
studies documents, and raises questions during the meeting. The
goal is to decide, if each issue represents a problem, without concentrating
on a solution.
Thanks to the 'team synergy' and friendly creative atmosphere reviews
are a great tool in early detection and correction of many design
faults.
Execution-based testing starts once builds (early
releases of the software) are made available.
Execution-based testing of a typical project includes:
- User interface testing
- Database testing
- Security and authorization testing
- Performance testing
- Stress testing
- Fault-tolerance and fail-over testing
- Compatibility and configuration testing
- Installation testing
more >
|