As we have seen earlier that testing is an essential phase of SDLC, we will be confused about when to start with testing in software development life cycle.
In conventional testing process, the testing was happening only towards the end of life cycle. If I say more clearly, testing was done after the application is built. Many people view testing as a “washing machine” that you clean your code with the end of the development cycle. Most of the cases this process in turn results in scarifying huge cost.
It is better to have a look on the distribution of defects in the life cycle. Before that we should have a clear idea about the phases in SDLC. One of the most practical models (V-model) is shown below.
Defect Distribution chart
This chart clearly depicts the necessity of testing to be done in the early stages. As seen here the defects detected in design and coding phase is comparatively higher than that in other stages.
Now we can go for Software Testing Life Cycle (STLC). One of the frequently using models is shown below.
Each phase is associated with review and test. Unit testing is done by development team. System testing is the responsibility of SQA.
User representative team is responsible for doing the user acceptance test. And the technology compliance testing is done by system installation and support group.
Phase I - Requirements Definition and Acceptance Testing
To ensure software quality by eradicating errors as earlier as possible in the development process.
· to begin defining the high level (most broad) requirements of the application being developed.
· to begin planning the testing activities that will have to be performed to verify the high level requirements have been incorporated and satisfied.
· to establish the pre-defined conditions that will have to be tested to verify the high level requirements (most broad) have been incorporated and satisfied.
Phase II - High Level Design and Integration Testing
· to refine the granularity of the high-level requirements established during the Requirements Definition phase.
· to begin creating a high level solution design based on the requirements established during the Requirements Definition.
· to begin planning the testing activities to be performed to verify the requirements (at the High-Level Design phase) have been incorporated and satisfied.
· to establish the pre-defined conditions that will have to be tested to verify the High-Level Design phase requirements have been incorporated and satisfied.
Phase III - Detailed Design and Unit Testing
· to refine the granularity of the requirements established during the High-Level Design phase.
· to continue refining the design and solution based on the requirements established during the High-Level Design phase - this includes the creation of specifications (functional and/or technical) used to create the application.
· to begin planning the testing activities to be performed to verify the requirements (at the Detailed Design phase) have been incorporated and satisfied.
· to establish the pre-defined conditions that will have to be tested to verify the Detailed Design phase requirements have been incorporated and satisfied.
Phase IV – Coding
· to translate the specifications created in the Detailed Design phase into technical code (in whatever platform or language).
Phase V - Unit Testing
· to execute the Unit Test phase activities according to pre-defined Unit Test plan (established in Phase III).
· to identify and document deviations between "expected results" with "actual testing results" for each and every unit/program.
· to ensure all pre-defined Unit Test cases have been executed and all the expectant results have been achieved.
Phase VI - Integration Testing
· to execute the Integration Test phase testing activities according to plan (established in Phase II).
· to identify and document deviations between " expected results " with "actual testing results" for each and every sub-system.
· to ensure all pre-defined Integration Test cases have been executed and all the expectant results have been achieved.
· to ensure all of the appropriate requirements have been defined and successfully tested
Phase VII - Acceptance Testing
· to execute the Acceptance Test phase testing activities according to plan (established in Phase I).
· to identify and document deviations between " expected results " with "actual testing results" for the application.
· to ensure all pre-defined Integration Test cases have been executed and all the expectant results have been achieved.
Testing life Cycle – Team Structure
An effective testing team includes a mixture of members who has
- § Testing Expertise
- § Tools Expertise
- § Database Expertise
- § Domain Technology Expertise
The testing team must be properly structured, with defined roles and responsibilities that allow the testers to perform their functions with minimum overlap. There should not be any uncertainty regarding which team member should perform which duties. The test Manager will be facilitating any resources required for the testing team.
Roles and Responsibilities
- Prepare Project Plan
- Test Management
- Test Planning
- Team management
- Work allocation to the team
- Test coverage Analysis
- Monitoring the deliverables
- Verify readiness of product
- Obtain customer acceptance on deliverables
- Perform risk analysis when required
- Reviews and status Reporting
- Authorize intermediate deliverables and patch releases to customer
Test Lead
- Resolves technical issues for the testing team
- Provides direction to the team members
- Review and approve test plan
- Review Test script / code
- Approve completion of integration testing
- Conduct system /regression tests
- Ensure tests are conducted as per plan
- Report status to Test Manager
Tester
- Development of test scripts and test cases
- Test Execution
- Result capturing and analyzing
- Detect Reporting and status report