Arunkumar Khannur's Software Testing Knowledge Center
2.2 Testing Levels
Different levels of software testing are represented in the form of a diagram as Fig. 2.1: Levels and Structure of Software Testing.
The following are the test levels that would allow verifying and validating lowest level structures of the software and moving towards system.

Each level of testing has different objectives, emphasis, and purpose. In order to meet these objectives of each test level, a group of test activities are organized and managed together in each test level. Also, each such test level is linked to responsibilities in a project. Thus, different levels of software testing help us to evaluate different work products of software starting right from the lowest (smallest) possible item, and work towards testing the entire system (include business processes where applicable).
Fig. 2.1 Levels and Strcture of Software Testing
The following are the test levels 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.
  • Component Testing at integration level focuses on verifying components 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 if components under consideation have complex processing areas. Component Test also checks the behavior of the component based on specific input and also, checks whether possible error conditions are properly handled.
  • Integration Testing: Verifies inter-module interfaces, critical external interfaces, user and business workflows and scenarios that would be helpful in evolving the system. Integration testing also includes Functional Testing.
  • System Testing: Verifies the complete, integrated system in order to check whether the 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 an 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 is 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.
    • Regression Testing: Re-execution of previously executed tests after changes have been incorporated to check for possible side effects of fixed bugs on other parts of the software. Regression testing may be performed at the end of each test level after reported bugs are fixed or as a separate test level prior to Acceptance Testing or whenever changes are made to the system to address post-release complaints of client and user.- Regression testing will help to evaluate the impact of recent changes to know whether they have degraded the system.
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
 Contact Khannur
ISQT Process & Consulting Services Pvt. Ltd.
#732, 1st Floor, 12th Main,
3rd Block, Rajajinagar,
Bangalore - 560010, INDIA
Phone: +91 80 23012511
Skype: arun.isqt