Ch8.Testing10the Ed
Ch8.Testing10the Ed
Development testing
Test-driven development
Release testing
User testing
5
Error, fault, failure
6
Point to ponder: maiden flight of Ariane 5
7
Testing Software is Hard
• If you are testing a bridge’s ability to sustain weight, and you
test it with 1000 tons you can infer that it will sustain weight
1000 tons
8
Program testing goals
Validation testing
To demonstrate to the developer and the system
customer that the software meets its requirements
A successful test shows that the system operates as
intended.
Defect testing
To discover faults or defects in the software where its
behavior is incorrect or not in conformance with its
specification
A successful test is a test that makes the system perform
incorrectly and so exposes a defect in the system.
Chapter 8 Software testing 11
An input-output model of program testing
A setup part, where you initialize the system with the test
case, namely the inputs and expected outputs.
Lecture 2
Interface misuse
A calling component calls another component and makes an
error in its use of its interface e.g. parameters in the wrong order.
Interface misunderstanding
A calling component embeds assumptions about the behaviour
of the called component which are incorrect.
Timing errors
The called and the calling component operate at different
speeds and out-of-date information is accessed.
Code coverage
Every code segment that you write has at least one associated
test so all code written has at least one test.
Regression testing
A regression test suite is developed incrementally as a program
is developed.
Simplified debugging
When a test fails, it should be obvious where the problem lies.
The newly written code needs to be checked and modified.
System documentation
The tests themselves are a form of documentation that describe
what the code should be doing.
Chapter 8 Software testing 52
Regression testing
Alpha testing
Users of the software work with the development team to test
the software at the developer’s site.
Beta testing
A release of the software is made available to users to allow
them to experiment and to raise problems that they discover with
the system developers.
Acceptance testing
Customers test a system to decide whether or not it is ready to
be accepted from the system developers and deployed in the
customer environment. Primarily for custom systems.