CS 477 Lecture Notes
Week Three, Tuesday: Testing Principles
Handout: "Risks of Content Filtering," Communications of the ACM
Guest speaker: Luigi Manna, USC CS Department System Administrator
Quality Issues
The term "V&V" is commonly (wrongly) used to denote testing. The old fashioned
(wrong) process model lumps testing into a single phase. "Verification" means determining
if a phase has been performed properly. "Validation" refers to an acceptance process.
Boehm's definitions (which I prefer) are:
Verification: Are we building the product right?
Validation: Are we building the right product?
Quality: the extent to which the product satisfies its specifications.
In some organizations, the role of SQA is really that of "process police."
They ensure that the development (and maintenance) team is following the
right process. If the team skips some step, SQA raises a flag and halts
the process.

Figure 1: Testing should not be a separate phase.

Figure 2: Testing should be distributed throughout development and maintenance.
Nonexecution-Based Testing
Document walkthrough: advance document review--list of not understood items and list of
incorrect items. Record faults only.
Document inspection: more intensive than a walkthrough with 5 formal steps.
Checklist of potential faults. Written report by inspection leader.
bug = fault
error => fault => failure
Execution-Based Testing
Dijkstra: Execution testing can never prove a program is bug-free.
What Should Be Tested?
Input space must always be a small subset of potential inputs.
Test a real-time system with a simulator.
Utility, reliability, robustness, performance, correctness.
Testing versus Correctness Proofs
Correctness proofs can supplement testing when the cost is justified.
Who Should Perform Execution-Based Testing?
Systematic testing should not be performed by the programmer.
When Testing Stops
Testing stops when the product has been removed from service
(because it becomes easier to build new than to maintain an old system, for example).
This page established January 30, 1998; last updated January 24, 2000.