Lifecycle in simple term refers to the sequence of changes from one form to other form. These changes can happen to any tangible or intangible things. Every entity has a lifecycle from its inception to retire / demise.
In a similar fashion, Software is also an entity. Just like developing software involves a sequences of steps, testing also has steps which should be executed in a definite sequence.
This phenomenon of executing the testing activities in a systematic and planned way is called testing life cycle.
What is Software Testing Life Cycle (STLC)
Software Testing Life Cycle refers to a testing process which has specific steps to be executed in a definite sequence to ensure that the quality goals have been met. In STLC process, each activity is carried out in a planned and systematic way. Each phase has different goals and deliverables. Different organizations have different phases in STLC; however the basis remains the same.
Software Testing Life Cycle consists of six phases:
- Requirement Analysis
- Test Planning
- Test case Design
- Test Case Execution
- Re-testing and regression
- Final Testing and Closure
1. Requirements Analysis
In this phase the testing team analyse the client requirements and discuss with developers during the design phase to see which requirements are testable and how they are going to test those requirements. It is very important to start testing activities from the requirements phase itself because the cost of fixing defect is very less if it is found in requirements phase rather than in future phases.
2. Test Planning:
A test plan defines how we are going to proceed testing with the requirements that we have for a project
- Scope of testing
- Testing Strategies (Black Box, White Box, etc.)
- Testing Levels (Functional, Integration testing, Regression testing, Performances, security etc.)
- Limitation (if any)
- Testing Techniques
- Testing Tools, Test devices, OS, browsers and Databases
- Test Reporting and Bug reporting (How would bugs be reported)
- Resource allocation
3. Test Design
· In this phase, Test cases are created with reference to spec available for a project. During test case creation, The test cases are categorised under test suits,which have a bunch of test cases for particular module. In the test-case document, it should have test summary, test inputs, expected result, actual result section. The test cases prepared by the QA team are reviewed and approved.
· The QA team analysis the cases to be automated for the milestones and writes the automated test cases. Test data may also be created in this phase by the QA team if test environment is available to them. The test cases should cover all Positive and negative scenarios along with input datas.
4. Test Execution (Unit / Functional Testing Phase)
Test Case execution is a process of executing test cases/scripts in a logical sequence with specific test data (if available). Unit test are carried out by the developers and other functional and non-functional test cases are executed by dedicated testing team. If any Test Case/Script or Test Scenario fails, Testing Team logs the bug in Bug Tracking tool (Bugzilla, Jira, MantisBT, etc.). Simultaneously a dedicated team of developers would be fixing the bugs and release the fixes in next build. Testing team will verify the reported bug and accordingly update the Bugs logged. This cycle continues till all the bugs identified in product are fixed. Finally a Regression or Ad-hoc Testing is performed after that the test results are updated.
5. Re-testing and regression testing phase
By this time, at-least one test cycle (one round of test execution) would have been completed and bugs would have been reported. Once the development team fixes the bugs, then a second round of testing begins where re-testing and regression testing is carried out. Re-testing is testing of corrected/enhanced module. And regression testing is done to ensure that fixed bug do not affect the remaining functionality of the modules and also the functionality of the same module. Here is where automation tests are extremely useful to repeat the same test cases again and again. During this phase – review of test cases and test plan could also be carried out.
6. Final Testing and Closure
When the planned test cycles are completed, then the final testing is done. Ideally this is System or Integration testing. Also any remaining Stress and Performance testing is carried out. Inputs for process improvements in terms of software metrics is given. Test result analysis is done in order to find out the defect distribution by type and severity. Then final Test reports, test release notes are prepared and final auditing is done for closing the testing process in order to release the tested product.
I think I have addressed all major points of Software Testing Life Cycle (STLC). I would like all of you to please share you experience on STLC in below comment section.