The objective of system-level testing, also called system testing, is to establish whether an implementation conforms to the requirements specified by the customers.
It takes much effort to guarantee that customer requirements have been met and the system is acceptable. A variety of system tests are run to meet a wide range of unspecified expectations as well. As integrated systems, consisting of both hardware and software components, are often used in reality, there is a need to have a much broader view of the behavior of the systems. For example, a telephone switching system not only is required to provide a connection between two users but also is expected to do so even if there are many ongoing connections below a certain upper limit. When the upper limit on the number of simultaneous connections is reached, the system is not expected to behave in an undesired manner.
- Test engineers can accurately focus on different aspects of system testing, one at a time while evaluating its quality.
- Test engineers can prioritize their tasks based on test categories. For example, it is more meaningful and useful to identify the limitations of a system only after ensuring that the system performs all basic functions to the test an engineer’s satisfaction. Therefore, stress tests, which thrive to identify the limitations of a system, are executed after functionality tests.
- Planning the system testing phase based on test categorization lets a test engineer obtain a well-balanced test suite. Practical limitations make it difficult to be exhaustive, and economic considerations may restrict the testing process from continuing any further. However, it is important to design a balanced test suite, rather than an unbalanced one with many test cases in one category and no tests in another.
Types of system testing
- Load and stability
- Basic tests provide an evidence that the system can be installed, configured, and brought to an operational state.
- Functionality tests provide comprehensive testing over the full range of the requirements within the capabilities of the system.
- Robustness tests determine how well the system recovers from various input errors and other failure situations.
- Interoperability tests determine whether the system can interoperate with other third-party products.
- Performance tests measure the performance characteristics of the system, for example, throughput and response time, under various conditions.
- Stress tests put a system under stress in order to determine the limitations of a system and, when it fails, to determine the manner in which the failure occurs.
- Load and stability tests provide evidence that the system remains stable for a long period of time under full load.
- Reliability tests measure the ability of the system to keep operating for a long time without developing failures.
- Regression tests determine that the system remains stable as it cycles through the integration of other subsystems and through maintenance tasks.
- Documentation tests ensure that the system’s user guides are accurate and usable.
- Regulatory tests ensure that the system meets the requirements of government regulatory bodies in the countries where it will be deployed.