System Testing: Why? What? & How?
Introduction:
‘Unit testing’ focuses on testing each unit of the code.
‘Integration testing’ focuses on testing the integration of “units of code” or components.
Each level of testing builds on the previous level.
‘System Testing’ is the next level of testing. It focuses on testing the system as a whole.
This article attempts to take a close look at the System Testing Process and analyze:
Why System Testing is done? What are the necessary steps to perform System Testing? How to make it successful?
How does System Testing fit into the Software Development Life Cycle?
In a typical Enterprise, ‘unit testing’ is done by the programmers. This ensures that the individual components are working OK. The ‘Integration testing’ focuses on successful integration of all the individual pieces of software (components or units of code).
Once the components are integrated, the system as a whole needs to be rigorously tested to ensure that it meets the Quality Standards.
Thus the System testing builds on the previous levels of testing namely unit testing and Integration Testing.
Usually a dedicated testing team is responsible for doing ‘System Testing’.
Why System Testing is important?
System Testing is a crucial step in Quality Management Process.
……..– In the Software Development Life cycle System Testing is the first level where
………..the System is tested as a whole
……..– The System is tested to verify if it meets the functional and technical
………..requirements
……..– The application/System is tested in an environment that closely resembles the
………..production environment where the application will be finally deployed
……..– The System Testing enables us to test, verify and validate both the Business
………..requirements as well as the Application Architecture
Prerequisites for System Testing:
The prerequisites for System Testing are:
……..– All the components should have been successfully Unit Tested
……..– All the components should have been successfully integrated and Integration
……….Testing should be completed
……..– An Environment closely resembling the production environment should be
………..created.
When necessary, several iterations of System Testing are done in multiple environments.
Steps needed to do System Testing:
The following steps are important to perform System Testing:
……..Step 1: Create a System Test Plan
……..Step 2: Create Test Cases
……..Step 3: Carefully Build Data used as Input for System Testing
……..Step 3: If applicable create scripts to
………………– Build environment and
………………– to automate Execution of test cases
……..Step 4: Execute the test cases
……..Step 5: Fix the bugs if any and re test the code
……..Step 6: Repeat the test cycle as necessary
What is a ‘System Test Plan’?
As you may have read in the other articles in the testing series, this document typically describes the following:
………– The Testing Goals
………– The key areas to be focused on while testing
………– The Testing Deliverables
………– How the tests will be carried out
………– The list of things to be Tested
………– Roles and Responsibilities
………– Prerequisites to begin Testing
………– Test Environment
………– Assumptions
………– What to do after a test is successfully carried out
………– What to do if test fails
………– Glossary
How to write a System Test Case?
A Test Case describes exactly how the test should be carried out.
The System test cases help us verify and validate the system.
The System Test Cases are written such that:
……..– They cover all the use cases and scenarios
……..– The Test cases validate the technical Requirements and Specifications
……..– The Test cases verify if the application/System meet the Business & Functional
………..Requirements specified
……..– The Test cases may also verify if the System meets the performance standards
Since a dedicated test team may execute the test cases it is necessary that System Test Cases. The detailed Test cases help the test executioners do the testing as specified without any ambiguity.
The format of the System Test Cases may be like all other Test cases as illustrated below:
-
Test Case ID
-
Test Case Description:
-
What to Test?
-
How to Test?
-
-
Input Data
-
Expected Result
-
Actual Result
Sample Test Case Format:
Test Case ID |
What To Test? |
How to Test? |
Input Data |
Expected Result |
Actual Result |
Pass/Fail |
. |
. |
. |
. |
. |
. |
. |
Additionally the following information may also be captured:
……..a) Test Suite Name
……..b) Tested By
……..c) Date
……..d) Test Iteration (The Test Cases may be executed one or more times)
Working towards Effective Systems Testing:
There are various factors that affect success of System Testing:
1) Test Coverage: System Testing will be effective only to the extent of the coverage of Test Cases. What is Test coverage? Adequate Test coverage implies the scenarios covered by the test cases are sufficient. The Test cases should “cover” all scenarios, use cases, Business Requirements, Technical Requirements, and Performance Requirements. The test cases should enable us to verify and validate that the system/application meets the project goals and specifications.
2) Defect Tracking: The defects found during the process of testing should be tracked. Subsequent iterations of test cases verify if the defects have been fixed.
3) Test Execution: The Test cases should be executed in the manner specified. Failure to do so results in improper Test Results.
4) Build Process Automation: A Lot of errors occur due to an improper build. ‘Build’ is a compilation of the various components that make the application deployed in the appropriate environment. The Test results will not be accurate if the application is not ‘built’ correctly or if the environment is not set up as specified. Automating this process may help reduce manual errors.
5) Test Automation: Automating the Test process could help us in many ways:
a. The test can be repeated with fewer errors of omission or oversight
b. Some scenarios can be simulated if the tests are automated for instance
simulating a large number of users or simulating increasing large amounts
of input/output data
6) Documentation: Proper Documentation helps keep track of Tests executed. It also helps create a knowledge base for current and future projects. Appropriate metrics/Statistics can be captured to validate or verify the efficiency of the technical design /architecture.
Summary:
In this article we studied the necessity of ‘System Testing’ and how it is done.