Sunday, July 16, 2017

System Testing

System testing is testing the complete system with respect to requirements. It is an important testing level because it is the last level before the system is given to the users for acceptance testing. Also, dedicated testers in software project teams do the bulk of their testing in this level. View the video on System Testing or read on.

System Testing

The order of testing levels is unit testing, integration testing, system testing and acceptance testing. Out of these test levels, unit testing and integration testing are white box testing. Whereas, system testing and acceptance testing are mostly black box testing. System testing can include white box testing because some types of testing done within system testing (e.g. performance testing, security testing and accessibility testing) require knowledge of system internals.

System testing is started after the integration testing is completed successfully. System testing is done with respect to two types of requirements, the requirements specifications and the system specifications. System testing involves writing and executing system test cases against both the requirements specifications and the system specifications. The requirements specifications (e.g. functional requirements specifications or user stories) define the expected functionality and behavior of the system. The system specifications (e.g. design documents) define the expected non-functional features and design of the system.

System testing includes the relevant types of testing in the following rough order of test execution:
  1. Installation testing - to find if the system can be successfully deployed in the production environment replica
  2. Sanity testing - to decide whether to continue with further detailed system testing
  3. Functional testing (scripted and exploratory) - to find out if each feature has been implemented correctly and completely
  4. Security testing - to find if there are any security vulnerabilities or data privacy defects
  5. Usability testing - to find out the intuitiveness and efficiency of the user interfaces
  6. Accessibility testing - to find out if the system can be used by as many users as possible, including users with any disabilities or special requirements
  7. Performance testing - to find out the responsiveness, throughput and capacity of the system
  8. Regression testing - to find if there are any regression defects