Fig A (Traditional)
Fig B (Most commonly used)
In the above Fig A, the Testing Phase comes after the Development or coding is complete and before the product is launched and goes into Maintenance phase. We have some disadvantages using this model - cost of fixing errors will be high because we are not able to find errors until coding is completed. If there is error at Requirements phase then all phases should be changed. So, total cost becomes very high.
The Fig B shows the recommended Test Process involves testing in every phase of the life cycle. During the Requirements phase, the emphasis is upon validation to determine that the defined requirements meet the needs of the organization. During Design and Development phases, the emphasis is on verification to ensure that the design and program accomplish the defined requirements. During the Test and Installation phases, the emphasis is on inspection to determine that the implemented system meets the system specification. During the maintenance phases, the system will be re-tested to determine that the changes work and that the unchanged portion continues to work.
The main objective of the requirement analysis is to prepare a document, which includes all the client requirements. That is, the Software Requirement Specification (SRS) document is the primary output of this phase. Proper requirements and specifications are critical for having a successful project. Removing errors at this phase can reduce the cost as much as errors found in the Design phase. And also you should verify the following activities:
- Determine Verification Approach.
- Determine Adequacy of Requirements.
- Generate functional test data.
- Determine consistency of design with requirements.
In this phase we are going to design entire project into two types:
- High –Level Design or System Design.
- Low –Level Design or Detailed Design.
High –Level Design or System Design (HLD)
High – level Design gives the overall System Design in terms of Functional Architecture and Database design. This is very useful for the developers to understand the flow of the system. In this phase design team, review team (testers) and customers plays a major role. For this the entry criteria are the requirement document that is SRS. And the exit criteria will be HLD, projects standards, the functional design documents, and the database design document.
Low – Level Design (LLD)
During the detailed phase, the view of the application developed during the high level design is broken down into modules and programs. Logic design is done for every program and then documented as program specifications. For every program, a unit test plan is created.
The entry criteria for this will be the HLD document. And the exit criteria will the program specification and unit test plan (LLD).
This is the phase where actually coding starts. After the preparation of HLD and LLD, the developers know what is their role and according to the specifications they develop the project. This stage produces the source code, executables, and database. The output of this phase is the subject to subsequent testing and validation. And we should also verify these activities:
- Determine adequacy of implementation.
- Generate structural and functional test data for programs.
The inputs for this phase are the physical database design document, project standards, program specification, unit test plan, program skeletons, and utilities tools. The output will be test data, source data, executables, and code reviews.
This phase is intended to find defects that can be exposed only by testing the entire system. This can be done by Static Testing or Dynamic Testing. Static testing means testing the product, which is not executing, we do it by examining and conducting the reviews. Dynamic testing is what you would normally think of testing. We test the executing part of the project.
A series of different tests are done to verify that all system elements have been properly integrated and the system performs all its functions.
Note that the system test planning can occur before coding is completed. Indeed, it is often done in parallel with coding. The input for this is requirements specification document, and the output are the system test plan and test result.
This phase includes two basic tasks:
- Getting the software accepted
- Installing the software at the customer site.
Acceptance consist of formal testing conducted by the customer according to the Acceptance test plan prepared earlier and analysis of the test results to determine whether the system satisfies its acceptance criteria. When the result of the analysis satisfies the acceptance criteria, the user accepts the software.
This phase is for all modifications, which is not meeting the customer requirements or any thing to append to the present system. All types of corrections for the project or product take place in this phase. The cost of risk will be very high in this phase. This is the last phase of software development life cycle. The input to this will be project to be corrected and the output will be modified version of the project.