System Testing | A Complete Guide
Earlier we have learned Integration testing in detail and in this article, we will learn System Testing and the following concepts
What is System Testing?
System Testing is a level of Software Testing that is performed on a complete and fully integrated application to evaluate the system’s compliance with its specified requirements.
Its purpose is to evaluate the end-to-end system specifications hence it is also known as End To End testing. It is to prevent application crashes and failures during its implementation of the production environment.
It verifies the completed system to ensure that the system works as intended or not.
It is performed by the Test Team that is independent of the Dev Team.
It is black-box testing.
It includes functional and non-functional testing.
ISTQB Definition of System Testing
A test level that focuses on verifying that a system as a whole meets specified requirements.
Practical Example of System Testing
Assume you are testing the functionality of a calling feature of a particular mobile phone (Say iPhone XE)
Prerequisites: You need to have iPhone XE and a SIM Card.
Both iPhone XE and SIM card are separately manufactured. Once both are ready you have to insert the SIM card in your iPhone XE to test it.
Inserting SIM Card in your iPhone XE allows you to do Integration testing whereas testing the calling feature after inserting the SIM Card allows you to perform System Testing.
When System Testing is performed?
System testing is the third level of testing and it is performed in the following conditions
- Done after completion of Integration Testing
- Done before performing Acceptance Testing
Who performs System Testing?
Usually, testers perform System Testing.
System Testing Process
The system testing process varies from project to project. But still, the following steps are common in the process of system testing.
Steps followed to perform system testing are as follows
- Test Environment Setup: Setting up a separate environment for system testing for better quality testing
- Test Plan Creation: Create a plan which needs to be followed
- Test Case Creation: Create test cases based on the requirement document
- Test Data Creation: Create valid test data to ensure quality testing
- Test Case Execution: Execute test by following the test cases to test the application
- Defect Reporting: Report the defects with the proper bug report template.
- Retest & Regression testing (if required): Repeat the test cycle if the test is not successful.
- Signoff: Signoff after test completion.
What are the Types of System Testing
System Testing focuses on over 50 Types to validate the functionality and performance of an application. Check our detailed list of types of Software Testing.
Here I am going to provide frequently used types of system testing.
- Regression Testing
- Sanity Testing
- Usability Testing
- Load Testing
- Performance Testing
- Maintenance Testing
- Recoverability Testing
- Migration Testing
- Functionality Testing
- Hardware/Software Testing
- Smoke Testing
- Security Testing
- Compliance Testing
- Installation Testing
- Interoperability Testing
- Scalability Testing
- Reliability Testing
- Documentation Testing
Prerequisites of System Testing:
- Ensure whether the Unit testing is done or not
- Ensure whether the Integration testing is done or not
- The software should be completely and fully developed
- Ensure the test environment is ready and it should be as close enough to the production environment.
Difference between System Testing vs Integration Testing
|INTEGRATION TESTING||SYSTEM TESTING|
|It is a low level testing||It is a high level testing|
|It is followed by System Testing||It is followed by Acceptance Testing|
|It is performed after unit testing||It is performed after integration testing|
|Different types of integration testing are:|
• Top bottom integration testing
• Bottom top integration testing
• Big bang integration testing
• Sandwich integration testing
|Different types of system testing are:
• Regression testing
• Sanity testing
• Usability testing
• Load testing
• Performance testing
• Maintenance testing
|Testers perform functional testing to validate the interaction of two modules||Testers perform both functional as well as non-functional testing to evaluate the functionality, usability, performance testing etc.,|
|Performed to test whether two different modules interact effectively with each other or not||Performed to test whether the product is performing as per user expectations and the required specifications|
|It can be performed by both testers and developers||It is performed by testers|
|Testing takes place on the interface of two individual modules||Testing takes place on complete software application|
|Here, we validate the interace between the individual modules.||Here, we validate the finished product.|
|Testers need to understand the interlinked modules and their interaction.||Testers need to understand the internal structure and programming language.|
|It covers only functional testing.||It covers both functional and non-functional testing.|
This is all about System Testing. If you like this post, please share it with your friends.
- Unit Testing Guide
- Integration Testing Guide
- Acceptance Testing Guide
- Quality Assurance Vs Quality Control
- Non-functional Testing Vs Functional Testing