What is System Testing?
The next step in software testing after unit and integration testing is called System testing.
It is a type of black-box testing in which the whole system is tested to validate the fully integrated software with its hardware/software components.
Broadly there are two types of testing:
- Black Box testing
- White Box testing
System testing is called black-box testing because in this testing the external workings of the fully integrated software are tested using the user specifications.
In contrast, the white box testing tests the internal workings of the software, i.e. code.
System testing can be better explained with the help of an example:
Consider the manufacture of a ballpoint pen.
The various components of the pen such as cap, body, tail, ink cartridge, ballpoint, etc. are produced separately and are unit tested to check for their working and performance.
After unit testing, the next step is to integrate two or more components of the pen to check whether they are compatible or not. This step is called integration testing.
Once this is done, the system testing begins. In this the pen is tested as a whole for its working in an external environment such as on a paper, cardboard, etc. for the user.
Software Testing vs System Testing
Commonly, software testing and system testing are used interchangeably sometimes however they are not the same.
System testing is a part of a step of software testing. In software testing following steps occur:
• Unit Testing:
It is the first step of testing and is performed on each block of code individually. It is usually done by the programmer who has written the code.
• Integration Testing:
Once two or more individual components have been successfully unit tested, they are integrated into the main software package. Here the modules are tested before, during, and after their integration for compatibility. Since the various sections in a single module might be created by several programmers, it is important to check whether the module works together as a whole or not.
• System Testing:
After the integration testing, a professional testing agent integrates the individual modules and also with its external environment and then tests it as a whole before launching it to the public for acceptance testing.
• Acceptance Testing:
In this testing, the beta version of the product is made available to the public, and the user’s test whether the system is acceptable or not. In case any bugs are found, the system is re-released with newly improved functionalities and resolved bugs.
What is tested in System Testing?
In a system testing the whole system is tested and hence it is important for the tester to know what is to be tested. The tester performs the checks of the system for the following:
- The end to end testing is done where the integrated components including the hardware and software systems are all checked for successful interaction with each other and as a whole system.
- Detailed test cases and test suites for each aspect of the application are formulated and the input and desired output of the test cases are verified.
- The user experience is also tested with the whole system.
Types of System Testing
Being the most comprehensive level of testing, there are more than 70 types of testing available in system testing. Some of these several types of testing are:
- Usability Testing: The flexibility, ability, and user-friendliness of the system are tested from the end user’s perspective.
- Smoke Testing: It is done to make sure that the important functions of the system work. It also checks whether the built system is fit for further testing or not.
- Performance/Load Testing: The performance of the software is tested under real-life loads, such as webservers.
- Security Testing: The possible vulnerabilities in the system are tested for data and resource leaks that may occur in the future. It is done to protect the system from intruders.
- Regression Testing: Sometimes in solving old bugs, new bugs might arise. In this testing, the changes made or modules added over the course of software development are tested to check for new bugs in the system.
- Recovery Testing: The reliability, trustworthiness, and recovery from possible crashes are tested in this testing.
- Migration Testing: To cope with possible infrastructure changes, the system is checked for mobility between old and new system infrastructures.
- Functional Testing: Testers check the system for any missing functionalities and create a log for it. These are those functions that a product could have for improved functioning.
- Hardware/Software Testing: The external environment, i.e. hardware and software system are check for compatibility with the software product formed.
- Compliance Testing: The system is tested for compliance with internal or external standards.
System Testing Used by Testers
Several variables define the type of system testing used by testers. They are:
- Large, medium, or small company: The type of system testing used will be highly dependent on the size of the company the testers work for. Large companies differ from medium or small in their testing methods due to several factors such as money, infrastructure, etc.
- Time availability: Time is a major factor in determining the type of testing most suitable for the software project.
- Resource availability: The company that the tester works for plays an important role in resource availability. Large firms will most likely have more expensive automated software than others.
- Education: The expertise of the tester determines the type of testing to be used. Some testers will have to learn some software before using them for testing.
- Budget: The total budget approved for the testing becomes a major factor not only in small, but large companies as well for determining the type of testing to be used.
The Testing Environment
The testers must make sure that the environment that they are using for testing is as close to the actual production and user’s environment as possible. If not, then it might be possible that the end-users will be able to identify the issues and bugs which the highly qualified team of testers might not have found.