Software Testing - Program testing goals, Verification and Validation, Inspections and testing, Stages of testing, Regression testing, Release testing, Performance testing


Testing is intended to show that a program does what it is intended to do and to discover program defects before it is put into use. 

When you test software, you execute a program using artificial data. 

You check the results of the test run for errors, anomalies or information about the program’s non-functional attributes. 

Program Testing Goals

To demonstrate to the developer and the customer that the software meets its requirements. 
To discover situations in which the behavior of the software is incorrect, undesirable or does not conform to its specification.

Verification vs validation

Verification: "Are we building the product right”.  The software should conform to its specification.
Validation: "Are we building the right product”. The software should do what the user really requires.

Inspections and testing

Software inspections Concerned with analysis of the static system representation to discover problems  (static verification)

May be supplement by tool-based document and code analysis.

Software testing Concerned with exercising and observing product behavior (dynamic verification)
The system is executed with test data and its operational behavior is observed.

A model of the software testing process 


Stages of testing

Development testing, where the system is tested during development to discover bugs and defects.

Release testing, where a separate testing team tests a complete version of the system before it is released to users.

User testing, where users or potential users of a system test the system in their own environment.

Development Testing

Development testing includes all testing activities that are carried out by the team developing the system.

  • Unit testing
  • Component testing
  • System testing

Release testing

Release testing is the process of testing a particular release of a system that is intended for use outside of the development team.

The primary goal of the release testing process is to convince the system that it is good enough for use.

Performance Testing

Part of release testing may involve testing the emergent properties of a system, such as performance and reliability.

Tests should reflect the profile of use of the system.

Performance tests usually involve planning a series of tests where the load is steadily increased until the system performance becomes unacceptable.

Regression testing

Regression testing is testing the system to check that changes have not ‘broken’ previously working code.

In a manual testing process, regression testing is expensive but, with automated testing, it is simple and straightforward. All tests are rerun every time a change is made to the program.

Tests must run ‘successfully’ before the change is committed.

User testing

User or customer testing is a stage in the testing process in which users or customers provide input and advice on system testing.

  • Alpha testing
  • Beta testing

Agile methods and acceptance testing

In agile methods, the user/customer is part of the development team and is responsible for making decisions on the acceptability of the system.

Tests are defined by the user/customer and are integrated with other tests in that they are run automatically when changes are made.

There is no separate acceptance testing process.

Comments