Slides | Testing Links

Harvey Mudd College
 Computer Science 181

Fall 2004
Software Testing and Quality Assurance

Instructor:

Prof. Bob Keller, 1249 Olin (MTuW; 4:15-5:30 p.m. or by drop-in or appt.), x 18483

What this course is about:

Software testing is an endeavor that, although partially coupled to the software development process, can be viewed as an independent intellectual activity, with its own sets of problems and techniques. Similarly, there is an applicable body of theory distinct from, but not unrelated to, the theory of software verification.

It is well known that software cannot generally be exhaustively tested. Moreover expeditious formal specifications and proofs of program correctness for complete systems are usually not within the capability of even the advanced software developer. Therefore testing seeks to provide the best assessment of software quality within limited resources.

The purpose of this course is to develop an awareness of the approaches to testing, with an emphasis on conceptual underpinning, and to also conduct a survey of contemporary tools.

We will not leave untouched the thorny issues surrounding testing applications with graphical user interfaces, web-based interfaces, and real-time systems.

We will spend some time comparing testing with complementary approaches such as formal verification.

Even someone who never plans to be a tester can benefit from understanding issues such as testing in multi-threaded environments.

How this course is structured:

The course will have a seminar structure. There will be assigned papers, in-class presentations by students, and some homework and coding. Grading breakdown is:

30% Class participation, which will include some presentations
70% Written work, which will include some code development

Some questions to which we will seek answers:

o           What is “software quality”?

o           How is software quality similar to, as well as different from, quality of other kinds of products?

o           Can software quality be measured? Can it be managed?

o           What techniques can be used to assure software quality?

o           What aspects, and to what extent, can the specification of software and its testing be formalized?

o           For those aspects that can be formalized, to what extent can they be proved?

o           For those aspects that can be proved, to what extent can the proofs be automated?

o           How does testing interplay with specification and proof?

o           What development/testing processes are likely to enhance software quality?

Course Outline

Text:

There are many available books on testing. Most tend to be oriented toward practice and methods. We are going to do a critical read of the following, which is somewhat more theoretical than average, as a baseline reference:

 

Paul C. Jorgensen, Software Testing, A Craftsman’s Approach (2nd edition), CRC Press, 2002.

Other references will be introduced as we go.