Comp 290-01: Software Testing and Quality
Instructor: Diane Pozefsky
Time: Monday and Wednesday 9:30 - 10:45
Location: Sitterson 325
Why should we care about testing and software quality?
Consider the following:
In 1993 an $80 million satellite called Clementine was lost in space after a software error caused its thruster rockets to fire continually, consuming all its fuel before its mission was completed. (Notorious Bugs, Byte, September 1995)
In the report "The Economic Impacts of Inadequate Infrastructure for Software Testing", NIST estimates the cost to the US economy from an inadequate software testing infrastructure to be greater than $59 billion. (NIST Planning Report 02-3, The Economic Impacts of Inadequate Infrastructure for Software Testing ,May 2002)
During the first Gulf War (February 1991), a Patriot missile defense system let a Scud through, which hit a barracks, killing 28 people, The problem was a software rounding error that accumulated over 100 hours of operation. (General Accounting Office Report GAO/IMTEC-92-26)
If software testing and quality remain afterthoughts and a second-class discipline, we can expect to see more serious problems arise. Anyone who is working with software needs to be focused on improving its reliability. We may get annoyed when our word processors misbehave, but we expect a much higher reliability from the software that runs medical devices and financial systems. How can we drive software to meet these demands?
Course Description:
This course will present a broad view of the field of software testing and quality. We will look at the general problem that is being addressed: to build the highest quality software that is economically feasible. While testing is the primary component that is used to meet this goal, we will examine other areas that address the problem, including such topics as code verification and reviews and design for test. We will discuss the different types of testing that are needed, including functional, performance, and system testing. We will look at the theoretical underpinnings as well as get hands-on experience with tools used for testing. We will explore the additional complications introduced by distributed solutions, componentization, and web services and briefly look at the economic and human aspects of testing. By the end of the course, the student will appreciate why quality and testing issues should be considered in all aspects of software development.
Course Methodology:
This course will be a combination of instructor lectures, student presentations, and student-led discussions. While there will be no specific text for this course, we will be referring to a number of different books as well as reviewing recent papers in the area. Students will lead discussions of well-known problems that have occurred and evaluate what, if anything, could have been done to prevent them. And, of course, there will be on-hands testing projects.
Assignments
Bug Report
Paper assignment
Papers list
Tool assignment
Microsoft articles
Microsoft assignment