In software testing there are four software testing Test Levels. They can be encountered when testing both a system and a system of systems (multiple, dispersed, independent systems in context as part of a larger and more complex system). If this article I am going to show my test manager view on the software testing test levels.
Component / Unit Test
Focuses on components that are separately testable. Component testing happens when testing is performed on each individual unit separately without integrating with other components. It’s also referred to as Unit Test when it is viewed from an architecture perspective
Focuses on interactions between components or systems. Integration Testing is a level of software testing where individual units or components are tested together. The purpose of this level is to test the interactions between integrated units or systems.
Focuses on the behavior and capabilities of a whole system or product, often considering the end-to-end tasks the system can perform and the non-functional behaviors. System Testing is a level of testing that validates the complete system or the fully integrated software product. The purpose is to evaluate the end to end system specifications.
Focuses on the behavior and capabilities of a whole system or product: confidence, completion, fit for use & purpose. Some call it user acceptance testing as this is a level of software testing things are tested for acceptability. The purpose of this test is to evaluate the system’s compliance with the business and user requirements and assess whether it is acceptable for delivery.
The best way to navigate across the software testing Test Levels is to follow a predefined course, to constantly monitor it as you go along and apply course corrections whenever you see fit.
Software testing phases
A Test Manager knows that there are four software test phases that need to be under control in order to have a successful testing process: Test Analysis, Test Design, Test Implementation and Test Execution. Besides this test phases, a test manager does not forget about Test Planning and Test Closure.
Test analysis is the process of analyzing the test basis (all documents from which the requirements of a component or system can be inferred) and defining test objectives. Covers WHAT is to be tested in the form of test conditions and can start as soon as the basis for testing is established for each test level.
Test Design is an item or event of a component or system that could be verified by one or more test cases (ex: function, transaction, feature, etc.). Covers HOW something is to be tested by identifying test cases with step wise elaboration for the test conditions (from Test Analysis) or from the test basis using techniques identified in the test strategy or plan.
Test Implementation is the process of developing and prioritizing test procedures, creating test data and, optionally, preparing test harnesses and writing automated test scripts. This is when tests are organized and prioritized and when test designs are implemented as test cases, test procedures and test data. It is of great importance to pick the right tests and run them in the right order. The importance of this even grows exponentially in risk-based strategies when we prioritize based on the likelihood of risk and problems.
Test execution is the process of running a test on the component or system under test, producing actual result.
This article is based on the ISTQB Advanced Syllabus version 2012 and it also references the ISTQB Foundation Syllabus version 2018. It uses terminology definitions from the ISTQB Glossary version 3.2.