Tuesday 24 April 2012

Role of Testing in SDLC


Let us take (RUP) SDLC model developed by IBM to understand the role of testing in depth. Rational Unified Process (RUP) has 4 different phases viz. inception, elaboration, construction and transition phases. When we compare RUP with the traditional SDLC model, inception phase is similar to analysis phase, elaboration is same as design phase, construction phase is similar to implementation and transition phase is similar to deployment and maintenance. In most of the industries, as part of the RUP process, JAD (Joint application Development) sessions are conducted. These sessions give an opportunity for all teams to present their ideas and document them. Testing team generally gets involved in the inception phase, depending on the schedule. As you see the figure above, Test shows different inclination and declination. Inclination emphasizes the increased role of the testing team and declination emphasizes the decreasing role.
Inception phase: In this phase, a tester will get a chance to understand the purpose of this project. Generally the information is documented by the architecture team in the ARF (Architectural reference document). Data architects, Information architects, System architects are the key players in this phase.
Elaboration phase: In this phase, a tester will get a chance to understand how the project is designed and what all the systems are getting upgraded or downgraded based on this project. This is a major phase, where the entire design of the project is documented in the JAD sessions in the Business Requirement document (BRD), System requirement document (SRD), Product requirement document (PRD), Business use cases (BUC) and System Use cases (SUC). Architects, Business analysts, Project management, Development, Testing, Production support teams etc attend the JAD sessions to give sign-off on these documents, once they are completely documented. Business use cases describe the business process of the project. System use cases describe about a system, which is impacted by the project.
Construction phase: In this phase, developers have a major role of constructing the system based on the design accepted during the JAD sessions. A tester has to follow closely with the development team to understand different changes considered by the development. There is always a possibility that the development can miss, misinterpret the design documents, in this case, a tester can always escalate the issue to the concerning developers to resolve the issue. Technical design documents (TDD), Interface specification documents (ISD), Software architecture documents (SAD) etc are generated in this phase to document the development process. During the same phase, testing team needs to develop the high level scenarios (HLS) based on the BRD, SRD, TDD, PRD, BUC, SUC, SAD, ISD. Each high level scenario can have one or more test cases. A tester must make sure that all the requirements are traced to a test case thru a QA matrix. Though it’s not compulsory to write test cases based only on these documents and there is always a possibility of missing some of the functionality, so we have to write test cases based on all possible sources of the latest updated information (latest signed-off updated documents). In many of the projects I have worked, sometimes I had to write test cases based on the verbal information given the development, sometimes on viewing the data flow diagrams and process flow diagrams. In this, phase, testing will have a major role for performing System testing, integrated system testing.
Transition phase: In this phase, the system/software whatever it is designed is ready to rollout for production. In most of the industries, IT always rolls out the product slowly like 5% every week for a certain period until the 100% is in production. In this, phase, testing will have a major role for performing regression testing. Roll out is done by moving the newly written code into a staging environment, where we test the product and raise the defects. Once the entire code is in the staging environment and it is stable. This code will be moved into production. However, there is always a chance of defects/bugs arising in this stage. Regression testing will identify any defects occurring due to the already existing code.

No comments:

Post a Comment