As a Software Quality Engineer, I have been through many interviews in my early career and the most frequently asked question was about software testing life cycle. I tried to cram the answer but soon I realized that it is a very wider concept and I have to consider the complete picture before deciding what it actually is.
So I decided to help my readers to understand the concept in a simpler way.
So what is Software Testing Life Cycle (STLC)?
Software Testing Life Cycle is a group of circularly arranged testing activities, in a specific sequence to understand and test the software in a structured way. These activities are mostly coupled with one or more software development stages and are not bound to testing stage itself only.
Why do we need it?
A lot of people might be wondering that testing is a very simple process in which you can just take a product and test it whenever you need, then why does it have a rocket science behind it?
Well, it’s not as simple as it seems. Always remember that a good process always leads to a good product. We require following a systematic approach towards testing because it is a serious job and no risks should be taken in it.
In order to help you understand better about STLC, let’s have a look at some generic stages of STLC in most widely used software development process models.
Note: Please also noted that these stages are not fixed ones. We can always make a hybrid STLC according to the nature and needs of the organization and the product.
Software Testing Life Cycle in Water-fall Model
In a traditional cycle, we can have the following concrete stages and there is only one testing cycle in this approach and no two stages can be executed parallel.
- Requirement analysis: The team first double checks the clarity and of the requirement and discusses the agreed requirements. Then they thoroughly study them to get a grip on the scope of the system and mirror it in a Requirement Traceability Matrix.
- Test Planning: The techniques and approaches of the tests are discussed, finalized and documented as a Test Plan in this stage. It is important for all the team members, to brain storm and choose the technique with the smartest test coverage.
- Test Case Design: The QA team creates and cross checks clear and comprehensive Test Cases on an atomic level.
- Test Environment Setup: Here either QA or the development team fulfills all the hardware and software requirements to deploy a Test Environment and the team tests the major functionalities. One has to be very careful and focused while doing so because this will determine if the software is stable enough for the testing or not. All the actual testing depends on this activity.
- Test Execution: The test cases are run according to the given steps and expected results and every test case is marked as pass OR fail and Test Results are created.
- Test Closure Activity: Test And Bug Reports are generated and discussed so that the upcoming risks and failures can be handled by using past experiences and knowledge of the current state of the system.
Software Testing Life Cycle in V-Model
There’s a fact about this model is that it does not have a distinct testing phase. In fact, the testing activities, which in this case are verification and validation, are hooked with each SDLC stage.
Think of it as, whenever there is an artifact produced, you have to create a corresponding test plan or test case document. Checking of the artifacts will also go side by side with this.
But when the actual coding starts, you will execute the test cases that you have created before, and this way the development and testing will become parallel. After each kind of testing, a document with the test results will be produced. The sequence of testing activities will create a testing cycle as follows:
- Unit testing: Developers separately check the functionality of each unit i.e. the smallest building block of the whole system.
- Integration testing: Different units are combined and tested to see if they are compatible and are well prepared for the system testing and is performed by the testers.
- System testing: Tester combine all the modules and test them as a whole. It is to be seen if the system is catering all the needs of the user either functional or non-functional. Performance, reliability, security, load and stress of the system are examined here.
- User acceptance testing: The end users tests the system themselves if the delivered system is according to the contract or not.
Software Testing Life Cycle in Agile
All the activities will revolve around the goal to keep yourself fully updated with your surrounded team. Your team should maintain such a frequent and clear communication that all of you remain on the same page always.
As you can see that the communication is the key, so, all the stages will involve meetings and discussions. In agile team, QA and Development acts as one. So let’s dive into its stages.
- Impact assessment: You will analyze that what areas will be at risk if a change is made in any area. This means that QA team has to find out what areas should be focused if a certain change is induced.
- Agile Testing Planning: All stakeholders gather to plan the deployment milestones and testing routines and create a flexible timeline of the project.
- Release Readiness: You decide either the current release is mature enough to go live or you have to roll back this stage.
- Daily Scrums: Semi-formal daily stand-ups are adopted to coordinate the ongoing tasks of each member and discuss the daily goals and weekly targets.
- Test Agility Review: Larger stakeholders gather to evaluate the overall progress. They discuss the risks and improve the processes to mitigate them in the future.
In my opinion, agile testing is more feasible and effective because it allows better risk and change management it is neither too rigid like V-model nor too steady paced like Waterfall. So yeah, it’s cool.