Arunkumar Khannur's Software Testing Knowledge Center
   
 

4.2. Test Phases

Each phase of testing has a different emphasis and purpose. Different phases of software testing help us to evaluate different work products of software starting at the lowest (smallest) possible item, and work towards testing the entire system as a whole (include business processes where applicable). Different phases of software testing are represented in the form of diagram in Fig. 4.1: Phases and Structure of Software Testing.
The following are the test phases that would allow verifying and validating lowest level structures of the software and moving towards system.
  • Unit Testing: Units are made up of program components. In unit testing the focus is to verify individual hardware or software units, or small groups of related code unit. In Unit Testing, the emphasis is on removal of basic coding errors and also, compliance with programming style and standards.
  • Integration Testing: Verifies inter-module interfaces, critical external interfaces and user and business workflows and scenarios that would be helpful in evolving the system. Integration testing includes Functional Testing.
  • Functional Testing at integration level focuses on verifying modules that are basically small groups of interdependent units that are functionally or logically related. This involves verification of behavior of the group and also, interfaces that connect the units. This phase is optional, but recommended in case modules involved are having complex processing areas. Function Test also exercises the behavior of the module based on specific input including new functionality and that error conditions are properly handled.
  • System Testing: Verifies the complete, integrated system meets its functional and non-functional objectives and requirements.
    • Functional Testing at system level verifies interoperability testing of interfacing with all external components along with end-to-end business workflows and Interoperability. Interoperability Testing verifies the interfaces (data and control elements) with external systems. Usually requires special test environments and coordination. Many times part of development and testing happens in operational environment during deployment.
    • Non-functionality Testing in System Testing includes Usability Testing, Reliability Testing, Efficiency Testing, Portability Testing, and Maintainability Testing. In these non-functional tests, performance testing one type of testing.
  • Performance Testing verifies the system to know the extent to which it meets the performance requirements like load, volume, stress and also, worst case scenarios.Non-functionality Testing in System Testing includes Usability Testing, Reliability Testing, Efficiency Testing, Portability Testing, and Maintainability Testing. In these non-functional tests, performance testing one type of testing.
  • Regression Testing: Re-execution of previously executed tests to ensure the test results are the same. Regression testing may be performed at the end of each test phase after reported bugs are fixed or as a separate test phase prior to Acceptance Testing or changes are made to the system to address client and user complaints post-release of system. Regression testing will help to evaluate the impact of recent changes to know whether they have degraded the system.
  • User/Acceptance Testing: User Acceptance Testing (UAT) validates the integrated system with its acceptance criteria and the customer's expectations. UAT is a testing by the End Customer who would sign off the Final Product for acceptance. Usually the users are responsible for executing the tests. May also involve verification of help desk functions, backup and recovery, business processes, user training material evaluations, etc. Approach and procedure for UAT and system acceptance criteria are arrived at with the help of the system requirements specification (SRS), and or request for proposal (RFP) and/or Integration Test Plan (ITP) and/or contract.
  • Pilot/Field Testing: Verifies the system and business processes in the deployment like environment under typical business conditions. May also involve verification of help desk functions and manual procedures. This phase is optional. Pilot/field testing is usually discussed in the request for proposal (RFP) and/or Integration Test Plan (ITP) and/or contract.
  • Installation or Production Testing: Verifies the installed system performs as expected in the user’s environment if acceptance or pilot testing was not performed at the user location. This is the final check-out of the system prior to retiring the existing system (if one exists), and/or turning responsibility for the system over to the user organization or Maintenance and Operations (M&O) staff. The system is used for processing actual business using "live" data and the new/modified business processes.

Following Table 4.1 summarizes Phases of Testing along with Structural Level, in phase and its constituents.
Table 4.1 Phases of Testing, Structural Level, and Constituents
Phase of Testing Software and its Structural Level Constituents
Unit Testing Units Set of Programs
Programs Set of Statements, Loop, Function/ Procedure call, Assignment
Statements Statement Type, Resulting Value and its Type from Expression, Assigned and Stored Value and its Type in Variable
Expressions Precedence Rules, Operators, Operands, Type of Result
Data Records, Variables, Constants, Types
Integration Testing Modules Functions and procedures, Interfaces at unit level, Behavior of Connected Units, Error Handling
System Testing System that is complete and integrated Functionality: end to end workflows Interfacing with external systems Applicable non-functionality that includes Reliability, Efficiency, Usability, Portability, Maintainability
Regression Testing System in Operation Modified System with addressed Maintenance Requests, Change Requests, and Fixed Bugs
User Acceptance Testing Integrated system with its acceptance criteria and the customer's expectations Business processes, help desk functions, backup and recovery, user training material evaluations
Pilot or Field Testing System and business processes in the deployment like environment under typical business conditions System installed in deployment like environment
Installation or Production Testing Installing System in Live Environment Installation Guidelines User Manuals Trouble shooting Manuals System Installation System connected to other Systems in Environment
 
 
 
Khannur's Book
Arunkumar Khannur, Software Testing - Techniques and Applications, Published by Pearson Publications, 2011 (ISBN:978-81-317-5836-6; Pages:341 + xxii)
Follow Khannur
         
Khannur's Company
ISQT Process & Consulting Services Pvt. Ltd., Bangalore, INDIA
Khannur's Software Testing Forum
STEP-AUTO Forum
 Contact Khannur
ISQT Process & Consulting Services Pvt. Ltd.
#732, 1st Floor, 12th Main,
3rd Block, Rajajinagar,
Bangalore - 560010, INDIA
Phone: +91 80 23012511
URL: www.isqtinternational.com
Email: khannur@isqtinternational.com
Skype: arun.isqt