CSE 270: Software Testing - Reading Material

4.1 System Testing and User Acceptance Testing

Introduction

System testing is a phase in the software testing life cycle where the entire integrated software system is tested as a whole to ensure that it functions according to specified requirements. The primary goal is to validate that all individual components, modules, and their interactions within the system work seamlessly, and the system as a whole meets its functional and non-functional requirements.

Objectives

Conducting a system test has very specific objectives:

How is System Testing Conducted?

There may be many steps in conducting a system test. Here are some of the most common:

How to Determine if System Testing is Successful

Each organization will make its own determination about how successful system testing is. Below are common criteria to use to determine if the system is ready to deploy to production.

System testing is considered successful when the software system demonstrates reliability, functionality, and performance in alignment with specified requirements, ultimately meeting user expectations and business objectives. Successful system testing contributes to the overall quality assurance process and prepares the system for deployment to production.

System Testing vs. End-to-end Testing

Sometimes the term system testing and end-to-end testing are used interchangeably. It is important to understand the key differences between these types of testing.

Scope

System testing verifies the entire integrated software system, including individual components and their interactions. The focus is on internal system functionalities, interactions, and components. By contrast, end-to-end testing evaluates the entire application from start to finish, including integrated components, subsystems, and external interfaces. Focusing on complete user scenarios, external interfaces, and real-world workflows.

Objectives

The objective of system testing is to verify the correct functioning of the entire system, integration of components, and system-wide performance. The goal is to ensure system reliability, security, and performance. However, end-to-end testing validates complete user scenarios, end-to-end workflows, and interactions with external interfaces with the goal of ensuring the application behaves as expected in real-world scenarios.

User Focus

System testing considers the end user indirectly, with a primary focus on the correct functioning of the system. End-to-end testing emphasizes the complete user experience and real-world scenarios.

Success Criteria

System testing considers verification of system reliability, performance, security, and successful integration of components. End-to-end testing values successful execution of user scenarios, seamless integration, and positive user experiences.

Testing Approach

System testing focuses on verifying the internal logic of the system, integration points, and ensuring components work together correctly. End-to-end testing emphasizes testing the complete end-to-end user journey, including external interfaces and third-party integrations.

Challenges with System Testing and End-to-End Testing

Because this testing occurs at the end of the software development life cycle shortly before deployment, there are serious concerns that must be addressed.

Despite the challenges, system testing and end-to-end testing are important parts of the software development lifecycle, and should not be omitted whenever possible.

User Acceptance Testing

Once the system has been verified with a combination of system testing and/or end-to-end testing, it is ready to be shown to the customer or other stakeholders for verification.

User Acceptance Testing (UAT) is the final phase of testing in the software development life cycle, where end users or stakeholders evaluate the software to ensure it meets business requirements and is ready for production release. The primary goal is to gain user approval and confidence that the application aligns with their expectations and functions correctly in real-world scenarios.

User Acceptance Testing is typically conducted by individuals who represent the actual users of the software and have a stake in its successful deployment. This may include business analysts, product owners, project managers, and other stakeholders who have a vested interest in the application's success. QA professionals may facilitate UAT, provide support, and assist in defect management.

During UAT the stakeholders verify that the software meets the specified business requirements. They also confirm that the application aligns with end users' needs and expectations. This is done by evaluating the application in a simulated production environment to identify any issues before actual deployment. If all parties are satisfied, this ensures that the software is ready for production release.

Setting up and executing a User Acceptance Test will typically include the following steps:

The successful completion of UAT is an important milestone in the software development process, indicating that the software is ready to be deployed and used in a live environment.