CSC 405 Lecture Notes Week 3
Overview of Software Testing Concepts
-
Goals for 405 lecture and lab in weeks 3 and 4.
-
In lecture, cover conceptual and theoretical details of software testing.
-
In lab, come up with testing framework(s) and tools to use for testing our
projects.
-
A bit of motivation.
-
In the last decade, there has been Highly significant shift in the industry
mindset regarding the importance and utility of testing.
-
A number of good studies provide evidence that testing can be very cost
effective.
-
The amount of emphasis placed on testing in industrial settings is likely to
increase in coming years.
-
Some costly and spectacular software failures have been due at least partially
to inadequate software testing.
-
Some information on the expense of poorly tested software.
-
See the NIST report, "The Economic Impacts of Inadequate Infrastructure for
Software Testing" (2002), wherein it says:
-
Inadequate software testing costs the US alone between $22 and $59 billion
annually
-
Better approaches could cut this amount in half.
-
There have been huge losses due to web application failures:
-
Financial services: $6.5 million per hour (just in USA)
-
Credit card sales applications: $2.4 million per hour (in USA)
-
In Dec 2006, amazon.com's BOGO offer turned into a double discount
-
In 2007, Symantec says that most security vulnerabilities are due to faulty
software.
-
Full citations and further discussion of these points is in the book
"Introduction to Software Testing", by Ammann and Offutt, Cambridge University
Press, 2008.
-
Testing terminology
-
You can consider the following topic list to be a quiz of sorts
-
It tests your knowledge of testing concepts form 308, 309, and wherever else
you may have learned about software testing.
-
The quiz rules are these:
-
based on common use in the testing vernacular, stick the word "test"
or "testing" in front of or after each of the following terms
-
having so constructed each term, ask yourself if you know what it means
-
The terms are these:
-
automation
-
unit
-
module
-
integration
-
system
-
acceptance
-
design
-
plan
-
case
-
oracle
-
stub
-
driver
-
harness
-
framework
-
top-down
-
bottom-up
-
regression
-
coverage
-
subsumption
-
automation
-
mutation
-
Automated testing frameworks (further concrete details next
week).
-
X-Unit frameworks -- JUnit, CppUnit, CxxUnit, etc.
-
File-based frameworks -- using make, ant, or comparable build tools for testing
activities.
-
Testing kernel-based and real-time systems (such as Batman and 80211s) -- the
Linux Testing Project provides support for this.