System testing involves analyzing the behavior and functionality of a fully integrated application. It is the third of the four levels of testing, performed after unit and integration testing but before user acceptance testing. A QA team member will usually do the assessing, or occasionally the task will fall to other team members such as product or project managers.

To help us to understand, let’s use an example. Imagine working on a website where a user can pay their water bill. The program has several features like account sign-up, log-in, recurring payments, and one-time payments. While being integrated with the system, each component is analyzed individually. Once the product is fully integrated, QA can go through the user’s flow from beginning to end to perform system testing and monitor non-functional behaviors while performing the tests.

System testing

How to Get Started with System Testing

Test Planning

Tests begin with test planning, and the first step is to write test cases. These test cases can be loosely based on the functional requirements or customer personas if provided, but the primary focus should be the steps a user would take while engaging with the system. While system testing focuses on fully integrated systems, it doesn’t prevent the future addition of extra components or features. Instead, it means that, in concept, the system’s features allow a smooth user flow from beginning to end.

Types of System Testing

This kind of testing can be both functional and non-functional. Functional testing will focus on end-to-end tasks, while non-functional testing will focus on the system’s behavior related to those tasks.

Functional non functional testing

Functional testing

  • Regression – Regression testing involves examining existing code alongside new code to verify existing functions still work as expected after introducing new code.
  • Smoke – Smoke testing is a form of build verification. It involves a quick analysis of the most primary system functions.
  • Exploratory – Exploratory testing is a form of scriptless checking where the tester uses the application and ‘explores’ functions and options to determine how the system will react.
  • Usability – Usability testing ensures that a system is easy to use and navigate. It involves performing intuitive actions that a user would perform.

Non-functional testing

  • Performance – Performance testing involves stress and load testing to ensure the system performs as expected under unusual conditions.
  • Compliance – Compliance testing will confirm if a structure meets mandated legal, contractual, or technical requirements.
  • Security – Security testing usually involves a cybersecurity team. The aim is to discover vulnerabilities within a system before any exploitation occurs.

Tips for System Testing

  • System testing is often the final opportunity to catch issues or defects before a customer receives the application. Testers should pay extra attention to the customer’s requests and needs and ensure they are met.
  • The testing environment should be in close proximity to the production environment to support finding issues before deploying the code to production.
  • System testing is an ideal time to consider new use cases. As the tester goes through the process flow, they may notice things that are not intuitive. They may also become aware of possible scenarios that they could test later.
  • Since requirements can change during the SDLC, system testing is a good time to ensure any automated tests are still relevant and up to date with current requirements.
  • End-to-end tests can often include hardware. If this is the case, request hardware units as early as possible to avoid any delays in testing due to supply issues.
  • If the application has a User Manual, perform your testing according to its instructions to confirm they are clear and accurate.

Tools

System testing can be performed both manually and by using automation. It’s essential for some kinds of testing, like usability testing, to be performed manually. An automation tool can report if a test passes or fails based on how it is programmed, but it cannot give opinions on ease of use (at least yet!). Accordingly, exploratory testing is a manual testing method.

Manual Tools

  • TestLodge – TestLodge is a test management system that allows testers to create and organize test cases. It offers customization options and several price points.
  • TestLink – TestLink is another test management tool with several integration options, and is open-source.

Automation Tools

  • Selenium WebDriver – One of the most popular test automation tools, Selenium offers support for many languages and browsers. It is open-source and has an endless amount of support documentation. 
  • Cypress – Cypress is also an open-source tool for end-to-end testing of web applications. JavaScript is the required test language.
  • Apache JMeter – JMeter is a performance testing tool that is open-source. It has an abundance of training tutorials and documentation. 

Benefits to System Testing

There are many benefits and here are a few:

  • A customer has an expectation that the structure has been tested and used as it would be in production. Performing system tests indicates you are meeting expectations while building customer confidence.
  • It helps you to verify the system will meet the user’s expectations and ensure that it will behave as expected. 
  • The risk of defects contaminating production is reduced because the tester can verify the completeness of an application. 
System testing benefits

Risks in not performing System Testing

  • You risk your team and company’s reputation with stakeholders and customers by ignoring system testing. 
  • Ignoring this process can cause customer disappointment if they find their issues or requirements are not met. 
  • Overlooking system testing can bring legal or contractual problems because compliance testing can be legally binding.
  • If there’s no system testing and requirements are later found not to have been met, the outcome can be time-wasting for the team and financial loss.
System testing avoidance risks

Conclusion

System testing verifies the functional and non-functional features of a system. It involves testing an entire system from start to end, with the user’s actions in mind. The method can be performed manually or by running automated tests, depending on the project’s requirements. System testing is the last verification before the customer uses the program. It lets the tester confirm that customer expectations are met.