Software Testing Life Cycle - STLC

February 12, 2013 Kapil



Contrary to popular belief, Software Testing is not a just a single activity. It consists of series of activities carried out methodologically to help certify your software product. These activities (stages) constitute the Software Testing Life Cycle (STLC).


The different stages in Software Test Life Cycle -

Each of these stages has a definite Entry and Exit criteria, Activities & Deliverables associated with it. In an Ideal world you will not enter the next stage until the exit criteria for the previous stage is met. But practically this is not always possible. So we will focus of activities and deliverables for the different stages in STLC. Let’s look into them in detail.

Requirement Analysis
During this phase, test team studies the requirements from a testing point of view to identify the testable requirements. The QA team may interact with various stakeholders (Client, Business Analyst, Technical Leads, and System Architects etc.) to understand the requirements in detail. Requirements could be either Functional (defining what the software must do) or Non Functional (defining system performance /security availability). Automation feasibility for the given testing project is also done in this stage.

Activities
·         Identify types of tests to be performed. 
·         Gather details about testing priorities and focus.
·         Prepare Requirement Traceability Matrix (RTM).
·         Identify test environment details where testing is supposed to be carried out. 
·         Automation feasibility analysis (if required).

Deliverables 
·         RTM
·         Automation feasibility report. (if applicable)

Test Planning
This phase is also called Test Strategy phase. Typically, in this stage, a Senior QA manager will determine effort and cost estimates for the project and would prepare and finalize the Test Plan.

Activities
·         Preparation of test plan/strategy document for various types of testing
·         Test tool selection 
·         Test effort estimation 
·         Resource planning and determining roles and responsibilities.
·         Training requirement

Deliverables 
·         Test plan /strategy document.
·         Effort estimation document.

Test Case Development
This phase involves creation, verification and rework of test cases & test scripts. Test data , is identified/created and is reviewed and then reworked as well.

Activities
·         Create test cases, automation scripts (if applicable)
·         Review and baseline test cases and scripts 
·         Create test data (If Test Environment is available)

Deliverables 
·         Test cases/scripts 
·         Test data

Test Environment Setup
Test environment decides the software and hardware conditions under which a work product is tested. Test environment set-up is one of the critical aspects of testing process and can be done in parallel with Test Case Development Stage. Test team may not be involved in this activity if the customer/development team provides the test environment in which case the test team is required to do a readiness check (smoke testing) of the given environment.

Activities 
·         Understand the required architecture, environment set-up and prepare hardware and software requirement list for the Test Environment. 
·         Setup test Environment and test data 
·         Perform smoke test on the build

Deliverables 
·         Environment ready with test data set up 
·         Smoke Test Results.

Test Execution
During this phase test team will carry out the testing based on the test plans and the test cases prepared. Bugs will be reported back to the development team for correction and retesting will be performed.

Activities 
·         Execute tests as per plan
·         Document test results, and log defects for failed cases 
·         Map defects to test cases in RTM 
·         Retest the defect fixes 
·         Track the defects to closure

Deliverables 
·         Completed RTM with execution status 
·         Test cases updated with results 
·         Defect reports

Test Cycle Closure
Testing team will meet , discuss and analyze testing artifacts to identify strategies that have to be implemented in future, taking lessons from the current test cycle. The idea is to remove the process bottlenecks for future test cycles and share best practices for any similar projects in future.

Activities
·         Evaluate cycle completion criteria based on Time,Test coverage,Cost,Software,Critical Business Objectives , Quality
·         Prepare test metrics based on the above parameters. 
·         Document the learning out of the project 
·         Prepare Test closure report 
·         Qualitative and quantitative reporting of quality of the work product to the customer. 
·         Test result analysis to find out the defect distribution by type and severity.

Deliverables 
·         Test Closure report 
·         Test metrics



Finally, summary of STLC along with Entry and Exit Criteria

STLC Stage
Entry Criteria
Activity
Exit Criteria
Deliverables
Requirement Analysis
Requirements Document available (both functional and non-functional)
Analyse business functionality to know the business modules and module specific functionalities.
Signed off RTM
RTM
Acceptance criteria defined.
Identify all transactions in the modules.
Test automation feasibility report signed off by the client
Automation feasibility report (if applicable)
Application architectural document available.
Identify all the user profiles.



Gather user interface/authentication, geographic spread requirements.



Identify types of tests to be performed.



Gather details about testing priorities and focus.



Prepare Requirement Traceability Matrix (RTM).



Identify test environment details where testing is supposed to be carried out.



Automation feasibility analysis (if required).


Test Planning
Requirements Documents
Analyze various testing approaches available
Approved test plan/strategy document.
Test plan/strategy document.
Requirement Traceability matrix.
Finalize on the best suited approach
Effort estimation document signed off.
Effort estimation document.
Test automation feasibility document.
Preparation of test plan/strategy document for various types of testing



Test tool selection



Test effort estimation



Resource planning and determining roles and responsibilities.


Test case development
Requirements Documents
Create test cases, automation scripts (where applicable)
Reviewed and signed test Cases/scripts
Test cases/scripts
RTM and test plan
Review and baseline test cases and scripts
Reviewed and signed test data
Test data
Automation analysis report
Create test data


Test Environment setup
System Design and architecture documents are available
Understand the required architecture, environment set-up
Environment setup is working as per the plan and checklist
Environment ready with test data set up
Environment set-up plan is available
Prepare hardware and software requirement list
Test data setup is complete
Smoke Test Results.

Finalize connectivity requirements
Smoke test is successful


Prepare environment setup checklist



Setup test Environment and test data



Perform smoke test on the build



Accept/reject the build depending on smoke test result


Test Execution
Baselined RTM, Test Plan , Test case/scripts are available
Execute tests as per plan
All tests planned are executed
Completed RTM with execution status
Test environment is ready
Document test results, and log defects for failed cases
Defects logged and tracked to closure
Test cases updated with results
Test data set up is done
Update test plans/test cases, if necessary

Defect reports
Unit/Integration test report for the build to be tested is available
Map defects to test cases in RTM



Retest the defect fixes



Regression testing of application



Track the defects to closure






Test Cycle closure
Testing has been completed
Evaluate cycle completion criteria based on - Time, Test coverage , Cost , Software Quality , Critical Business Objectives
Test Closure report signed off by client
Test Closure report
Test results are available
Prepare test metrics based on the above parameters.
Test metrics
Defect logs are available
Document the learning out of the project


Prepare Test closure report


Qualitative and quantitative reporting of quality of the work product to the customer.


Test result analysis to find out the defect distribution by type and severity


0

Testing Guidelines for Novices as well as Experts

December 17, 2012 Kapil

Software testing is a critical component of the software engineering process. It is an element of software quality assurance and can be described as a process of running a program in such a manner as to uncover as many errors as possible.

The process of software testing involves creating test cases to break "the system" but before this a software engineer must understand the basic principles that guide software testing.

Experts of the software testing industry have prescribed guidelines that form an excellent starting point for any tester may be a novice or an expert. Testers can keep them in mind while attempting any testing exercise.

1) Test according to the user requirements: Testing should be based on user requirements. This is to ensure that we uncover all defects that might cause the program or system to fail to meet the client's requirements.

2) Avoid redundant tests: Remember that our testing time and resources are limited.

3) Don’t try to test everything: It is virtually impossible to test everything. Reasons being exhaustive testing of all possible scenarios are just not feasible. This happens due to extremely large number of variables affecting the system and equally large number of paths a program flow can take.

4) Deploy effective resources for testing: This represents use of the most suitable tools, procedures and individuals to conduct the tests. The test team should use tools that they are confident and familiar with. Testing procedures should be clearly defined. Testing personnel may be a technical group of people independent of the developers.

5) Plan the tests early: Test planning should be done earlier during SDLC. This is because test planning can begin independently of the coding and as soon as the client requirements are set.

6) Begin the testing early: Try to begin the testing right from the moment, requirements analysis phase gets over to avoid defect migration.

7) Plan the tests for extreme conditions: Testing effort must be directed towards unexpected and invalid input along with valid inputs as well. Our endeavour is to ensure that our program produces correct messages when an invalid test is encountered and should generate correct results when the test is valid.

8) Identify & Isolate the problem areas: Remember that the chances of large number of defects in a module or group of modules are directly proportional to the number of errors already found.

9) Begin testing from the module level: The focus of testing should be concentrated on the smallest programming units first and then expand to other parts of the system.

10) Entrust the testing jobs to an independent agency: The individuals involved in the software development should not perform Testing. This is due to the simple reason that developers could psychologically tend to overlook weaknesses in their own creation. Generally the third party testing or dedicated test engineers prove to be more effective.

11) Assign testing to the best personnel: Remember that testing requires great deal of creativity and responsibility. Hence personnel with best track record must be entrusted the job of designing, implementing, and analysis of test cases, test data & the test results.

12) Don’t test with pessimism: Never begin your testing effort with an assumption that everything is in order & you are not likely to find any error in it.

13) Test with sole objective of finding maximum errors: Remember that the intent of testing is to execute the software application with a motive of uncovering errors & that too maximum in numbers.

14) Try not to change the software during test: While you are implementing the set of test cases designed for the purpose, try not to make changes during such period.

15) Importance of proper documentation: Document all the test cases & the results of testing as per software test standards & preferably it must be controlled by some configuration management system. We must document all our expectations of the test results even if such expectations are difficult to achieve.

16) Test with a destructive attitude: Testing is effective when done with a destructive attitude or an assumption that everything is wrong.

17) Try to test maximum possible requirements: Try to cover functional & non functional requirements of the software application under the scope of your testing.

18) Try to use Automation Tools: Try to support your testing by automated testing tools to the maximum possible extent.

19) Special care for testing critical Software: Full testing right from requirements phase till acceptance testing must be done for critical software applications.

20) Test Analysis: Quantitative assessment of tests & their results must be done thoroughly.

0

« Previous Posts Next posts »

Proudly powered by Kapil Saxena.