CA 7503 - Lecture 2
CA 7503 - Lecture 2
CA 7503 - Lecture 2
Software Testing
Lecture 2 :
The Realities of Software Testing
What is Software
Testing?
• Software testing is a process of executing
a program or application with the intent of
finding the software bugs.
4
Terminology
• Fault: an imperfection that may lead to a
failure
• E.g., missing/incorrect code that may result in a
failure
• Bug: another name for a fault in code
7
Software process models are an ideal …
not reality
12
Axiom 1
• It is impossible to test a program completely
• A calculator
• MS Word
15
Axiom 2
• If you try to test too
much, the development
cost becomes
prohibitive.
19
Axiom 5
• Not all bugs found will be fixed.
• There are several reasons why you might
choose not to fix a bug:
• There’s not enough time
• Some deadlines cannot be extended (e.g., Y2K)
• It’s not really a bug
• Specifications can be wrong
• It’s too risky to fix
• “I’m not touching Murphy’s code!”
• It’s just not worth it
• Bugs in fringe features may have to wait
• Why not charge the customer for bug fixes in the next
release (sound familiar?)
The decision-making process usually involves the 20
software testers, the project managers, and the
Axiom 6
• It is difficult to say when a bug is indeed a bug.
21
Axiom 7
• Specifications are never final
22
Axiom 8
• Software testers are not the most popular
members of a project
• Goal of a software tester:
• Find bugs
• Find bugs early
• Make sure bugs get fixed
• Validation
• “Are we building the right product?”