Monday, January 16, 2012

Software Testing Life Cycle (STLC)

A Software Testing Life Cycle is made up of series of phases.

1.       Requirement Gathering and Analysis
Requirements analysis is critical to the success of any project. The scope and boundary of the proposed software solution is drawn. Identifying stakeholders such as customers, end-users, system administrators etc. is the next step in requirements analysis. This is one of the most important steps in the whole process as proper identification of stakeholders enables the business analyst to draw a road map for gathering requirements. Testing Team identifies the testable requirements. Requirement can be functional or non functional. Scope of Automation (if any) is also considered.
Activities
·         Prepare Requirement Traceability Matrix (RTM).
·         Identifying the approach or setting the priorities module wise.
·         Identification of areas to be tested automatically and those requiring manual testing
Out-Put After This Phase
·         Requirement Traceability Matrix (RTM).
2.       Test Planning
A test plan is a document is created which provides detail of a systematic approach to testing. Testing Effort and Cost Estimation for the project would be calculated.
Activities
·         Project scope and expectations definition
·         Technology and methodology selection
·         Preparation of test plan document for various types of testing to be performed.
·         Testing effort estimation 
·         Definition of QA metrics
·         Resource Planning and identifying the roles and responsibility. 
·         Testing Tool Selection.
Out-Put After This Phase
·         Test Plan
·         Testing Effort Estimation
3.       Test Case Development
After Requirement is freeze followed by initial understanding, testing team starts creating Test Case or Test Scripts along with test data, which are later reviewed followed by rectifying the issues reported by reviewer. Categorization of Test Case as per their priority is also set.
Activities
·         Create test cases or Test scripts (if applicable).
·         Categorization of Test Case.
·         Create Test Data
Out-Put After This Phase
·         Test Cases/Scripts
·         Test Data
4.       Test Environment Setup
A testing environment is a setup of software and hardware on which the testing team is going to perform the testing of the software product. This setup consists of the physical setup of hardware and software setup that includes Server Operating system, client operating system, database server, front end running environment, browser (if web application) and other software components required to run this software product. These setups are done by support staff. Testing team has to ensure the conditions are met before testing is taken off. Followed by Smoke Test which verifies the Test Environment as well as stability of the build delivered to Test Team.
Activities
·         Ensure the required Hardware and Software or different combination of machines are ready
·         Perform a Smoke Test on the build delivered for Testing
Out-Put After This Phase
·         Test Machine or Test Lab
·         Smoke Test Result
5.       Test Case Execution
Test Case execution is a process of executing test cases/scripts in a logical sequence with specific test data (if available). If any Test Case/Script or Test Scenario fails, Testing Team logs the bug in Bug Tracking tool (Bugzilla, Jira, TTPro, etc.). Simultaneously a dedicated team of developers would be fixing the bugs and release the fixes in next build. Testing team shall 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 which Test Report is prepared if all goes well.
Activities
·         Execution of Test Cases
·         Log bugs in bug tracking tool
·         Create Test Result document
·         Map defects to Test Cases in RTM
·         Verify the bug logged in new build
·         Update the bug status in bug reporting tool as per verification status
Out-Put After This Phase
·         Test Result
·         Defect Report
·         RTM with execution status
6.       Closure - Product Release
Once the test meets the exit criteria, the activities such as capturing the key outputs, lessons learned, results, logs, documents related to the project are noted down and used as a reference for future projects. Later a Causal Analysis and Resolution (CAR) Report is prepared where in best practices and cause of failures occurred are noted down.
 Activities
·         Test Metrics based on Test coverage, Cost, Time, Quality etc is prepared
·         Test Closure Report Preparation
·         Test Result Analysis is performed to calculate the defect distribution by type and severity.
·         Causal Analysis and Resolution (CAR) Report is prepared
Out-Put After This Phase
·         Test Closure Report 
·         Test Metrics
·         Causal Analysis and Resolution (CAR) Report

Note: There are different process and methodologies followed in various organizations. The above content is as per my experience in industry so far.

Please feel free to write comments if you like my post or else if your opinion is different or you may like to add any more points in them.