Software Test Life Cycle

Software Test Life Cycle is the sequence of test activities that needs to be completed to test software. All related test activities are grouped called phases and each phase in a testing life cycle should be completed successfully.

Test Activities in Test Life Cycle:

Test Activities in Test Life Cycle are as follows:

  • Test Planning
  • Test Design
  • Test Data Preparation
  • Test Environment Setup
  • Test Execution
  • Evaluate Exit Criteria
  • Test Signoff

Integrating Software Test Life Cycle into Software Development Life Cycle:

The sequence of Software Test Life Cycle activities differs from each SDLC model to SDLC model.

  1.  Software Test Life Cycle activities inWaterfall Model:

Software development activities are performed in sequence to build software. The most important characteristic of a waterfall model is that entire system is built at once i.e all identified functions of software are released into production at once.

The different phases of waterfall model are as follows:

  • Requirement Analysis
  • System Design
  • Software Development
  • Software Testing
  • Implementation
  • Maintenance

The output of each phase is an input to subsequent phases as below:

  • System design phase activities should start only when requirements are identified and freezed in Requirements Analysis phase.
  • Software development phase activities should start only when system design activities are completed and signed off.
  • Software testing phase activities should start only when software development activities are completed and signed off.
  • Implementation phase activities should start only when software testing activities are completed and signed off.
  • Maintenance phase activities will occur only when Implementation is completed.

Challenges in waterfall model:

  • High probability of requirement changes while development is in progress
  • Frequent requirement changes causes to rework and delay in implementation
  • Cost overhead due to frequent requirement changes and rework

How to overcome waterfall software development life cycle model challenges?

Waterfall software development life cycle model challenges can be handled by integrating software test life cycle process into this waterfall model. Please note that software test life cycle integration is not a complete solution to overcome waterfall software development life cycle model challenges. The software test life cycle process integration into waterfall software development life cycle model helps to resolve challenges as follows:

Requirement changes and rework can occur due to

  • Defect Injection from one phase to the subsequent phases

Example: Requirement defects injected at requirement analysis phase can creep into subsequent phases and     causes to build incorrect software

  • Technical challenges encountered while coding the software and this can lead to requirement change

To prevent above challenges, we need to find as many defects as possible at beginning of the life cycle i.e at requirement analysis phase. This can be achieved by incorporating software test life cycle activities as early as possible.

Given the challenges and nature of the activities in waterfall model we can use V-Model as a software test life cycle model. The testing activities in V-Model progress in parallel with development activities. Test activities in V-Model are as follows:

Requirement Analysis ———- User Acceptance Testing

Design ——————-System Testing

Coding- ————Unit Testing

As shown in above figure for every development activity there is a corresponding testing activity so the V-Model aids in finding defects and technical challenges as early as possible in the life cycle to reduce rework, cost overhead and frequent requirement changes.

2. Software Test Life Cycle activities in Iterative or Incremental Life cycle model:

As opposed to waterfall model, software developed is chunks in this model.  Functions are grouped called chunks and each chunk is implemented or released into live on incremental basis. Example of this model is Agile where each chunk is called sprint. The objective of each sprint is to develop a chunk of software and released accordingly in live environment.

The phases of Iterative or Incremental model looks like as below

Iterative 1

  • Chunk 1 Requirement Analysis
  • Chunk 1 Design
  • Chunk 1 Coding
  • Chunk 1 Testing
  • Chunk 1 Implementation

Iterative 2

  • Chunk 2 Requirement Analysis
  • Chunk 2 Design
  • Chunk 2 Coding
  • Chunk 2 Testing
  • Chunk 2 Implementation

Likewise Iterative n

  • Chunk n Requirement Analysis
  • Chunk n Design
  • Chunk n Coding
  • Chunk n Testing
  • Chunk n Implementation

The complete product with all features will be in live after Iterative n.

The objective of testing in this model is to test each chunk before implementation. The sequences of test activities are as below.

Iterative 1

  • Chunk 1 Test Planning
  • Chunk 1 Test Design
  • Chunk 1 Test Data Setup
  • Chunk 1 Environment Setup
  • Chunk 1 Test Execution
  • Chunk 1 Exit Criteria
  • Chunk 1 Test sign off

Iterative 2

  • Chunk 2 Test Planning
  • Chunk 2 Test Design
  • Chunk 2 Test Data Setup
  • Chunk 2 Environment Setup
  • Chunk 2 Test Execution
  • Chunk 2 Exit Criteria
  • Chunk 2 Test sign off

Likewise Iterative n

  • Chunk n Test Planning
  • Chunk n Test Design
  • Chunk n Test Data Setup
  • Chunk n Environment Setup
  • Chunk n Test Execution
  • Chunk n Exit Criteria
  • Chunk n Test sign off

Regression testing plays a key role in addition to functional testing in this model. As software is developed and implemented in chunks so testing team should ensure that each chunk’s functionality should not be broken while development of each chunk is in progress.

Regression testing is quite challenging in this model as duration of each Iteration is small. Automation tools can be used to overcome this challenge.

 

Software test plan

Why Software test plan is required?

Software test plan is required because the major stakeholders that involved in any project are:

1. Project Manger who manages and allocates budget to the project stakeholders

2. Business System Analysts who creates requirement specification document

3. Development Team who is responsible for coding of any project

4. Quality Assurance Team who is responsible for testing the project

5. Test Environment Specialist who is responsible for creating test environment

6. User Acceptance Team who is responsible for doing User Acceptance Testing

7. Project/Product Implementation Team who is responsible for deploying final product into production environment

It is important to have effective communication between all the stakeholders for the successful implementation of the project. This is achieved by knowing each other responsibilities and respective deliverables that they are responsible for.

Given the effective communication stated above, the onus is also on software quality assurance team as well to let every stakeholder knows on how Quality Assurance team is contributed from their side for the successful implementation of a product. Hence Quality Assurance team uses software test plan to formally document and shares with all the stakeholders to get their acceptance about QA’s responsibilities.

Software Test Plan Definition in Quality Assurance context:

The Master Test Plan (MTP) or Software Test Plan provides planning information for each test phase of the project, including scope of testing, testing approach, data needs, environment needs, and testing resources.  It also provides high-level scheduling input for project management and summarizes the testing processes the project will follow.  

Why software testing is required?

Majority of the organizations are integrating software testing into software development lifecycle to produce high quality software. Below are the most important factors that causing organizations to integrate software testing into software development lifecycle.

  • Most important is business reputation for any business in today’s competitive world. If an intended delivered software to support business does not work then the business reputation will be spoiled which causes to lose the customers
  • Time pressure causes developers to make mistakes and further leads to introduce defects in the developed software
  • High probability of human beings can make mistakes and further leads to introduce defects in the developed software
  • Loss of money if delivered software does not work
  • Loss of time if delivered software does not work
  • Miscommunication within the project stakeholders which leads to produce unintended software
  • Documentation errors which leads to develop unintended software
  • Technology constraints or difficulties leads to produce inaccurate results when delivered software is executed
  • Can cause injury or death when safety critical applications fails to work
  • Multiple integrated software produces inaccurate results