In system testing a software test professional aims to detect defects or bugs both within the interfaces and also within the software as a whole. However, the during integration testing of the application or software, the software test professional aims to detect the bugs / defects between the individual units that are integrated together.
During system testing, the focus is on the software design, behavior and even the believed expectations of the customer. So, we can also refer the system testing phase of software testing as investigatory testing phase of the software development life cycle.
At what stage of SDLC the System Testing comes into picture:
After the integration of all components of the software being developed, the whole software system is rigorously tested to ensure that it meets the specified business, functional & non-functional requirements. System Testing is build on the unit testing and integration testing levels. Generally, a separate and dedicated team is responsible for system testing. And, system testing is performed on stagging server.
Why system testing is required:
- It is the first level of software testing where the software / application is tested as a whole.
- It is done to verify and validate the technical, business, functional and non-functional requirements of the software. It also includes the verification & validation of software application architecture.
- System testing is done on stagging environment that closely resembles the production environment where the final software will be deployed.
- Unit Testing must be completed
- Integration Testing must be completed
- Complete software system should be developed
- A software testing environment that closely resembling the production environment must be available (stagging environment).
- Creation of System Test Plan
- Creation of system test cases
- Selection / creation of test data for system testing
- Software Test Automation of execution of automated test cases (if required)
- Execution of test cases
- Bug fixing and regression testing
- Repeat the software test cycle (if required on multiple environments)
- Goals & Objective
- Area of focus (Critical areas)
- System testing strategy
- Entry and exit criteria
- Suspension & resumption criteria for software testing
- Test Environment
- Staffing and Training Plan
- Roles and Responsibilities
How to write system test cases: The system test cases are written in a similar way as we write functional test cases. However, while creating system test cases following two points needs to be kept in mind:
- System test cases must cover the use cases and scenarios
- They must validate the all types of requirements - technical, UI, functional, non-functional, performance etc.
As per Wikipedia, there are total of 24 types of testings that needs to be considered during system testing. These are:
GUI software testing, Usability testing, Performance testing, Compatibility testing, Error handling testing, Load testing, Volume testing, Stress testing, User help testing, Security testing, Scalability testing, Capacity testing, Sanity testing, Smoke testing, Exploratory testing, Ad hoc testing, Regression testing, Reliability testing, Recovery testing, Installation testing, Idem potency testing, Maintenance testing, Recovery testing and failover testing, Accessibility testing
The format of system test cases contains:
- Test Case ID - a unique number
- Test Suite Name
- Tester - name of tester who execute of write test cases
- Requirement - Requirement Id or brief description of the functionality / requirement
- How to Test - Steps to follow for execution of the test case
- Test Data - Input Data
- Expected Result
- Actual Result
- Pass / Fail
- Test Iteration