Software Testing Background
Chapter 1
2

In this chapter
 Infamous software error case studies
 What is a bug?
 Why do bugs occurs?
 The cost of bugs
 What makes a good software tester?
3

Story of Bug
 Mark II, Harvard University, 1947
 Behemoth stopped working
 A moth stuck between a set of relay contacts
 Computer BUG was born
4

Infamous software error case studies
 Disney Lion King, 1944-1945
 Intel Pentium floating-point division bug, 1994
 NASA Mars Polar Lander, 1999
 Patriot Missile Defense System, 1991
 The Y2K (Year 2000) Bug, circa 1974
 Dangerous Viewing Ahead, 2004
5

What is a Bug
 Software failure
 The software didn’t operate as intended
 Terms for Software Failure
 Defect, Variance, Fault, Failure, Problem,
Inconsistency, Error, Feature, Incident, Bug,
Anomaly
 Why should we know these terms?
6

Software Bug: A Formal Definition
 Product specification
 Software bug occurs when:
 The software doesn’t do something that the
spec says it should do
 The software does something that the spec
says it shouldn’t do
 The software does something that the spec
doesn’t mention
 The software is difficult to understand, hard to
use, slow
7

Why do Bugs Occur
 Most of the bugs aren’t caused by
programming errors
 Number one: Specification
 Number two: Design
 Number three: Coding error
 Number four: Others
8

The Cost of Bugs
 The cost are logarithmic
$1
$10
$100
$1000+
specification design code release
9

What Exactly Does a Software Tester Do?
 The goal of software tester is to find bugs
 The goal of software tester is to find bugs and
find them as early as possible
The goal of a software tester
is to find bugs,
find them as
early as possible
,
and make
sure they get fixed
 Fixing a bug does not necessarily imply
correcting the software
10

What Makes a Good Software Tester?
 Question: Is tester’s job easier than a programmer’s?
 “As a matter of cosmic history, it has always been easier to destroy
than to create.”
 List of traits for software testers:
 They are explorers
 They are troubleshooters
 They are relentless
 They creative
 They are perfectionists
 They exercise good judgment
 They are tactful and diplomatic
 They are persuasive
 A fundamental trait of software testers is
they simply like to break things.