This course presents concepts and techniques for testing software and assuring its quality. Topics cover software testing at the unit, module, substem, and system levels, automatic and manual techniques for generating and validating test data, the testing process, static vs. dynamic analysis, functional testing, inspections, and reliability assessment. Professor's note: The course will attempt to prepare students to test software in structured, organized ways. This course should provide practical knowledge of a variety of ways to test software, an understanding of some of the tradeoff's between testing techniques, and a feel for the practice of software testing and the research in software testing.
Students should have had an undergraduate course in software engineering, CS 616, and/or software engineering experience. Also, students should have knowledge of graph theory and predicate logic.
Students will learn about high level software testing concepts. They will learn to apply a number of detailed testing methods, such as application of the prime implicant coverage criteria to DNF representations. They will explore current topics such as Dataflow and Controlflow-base test adequacy criteria.
Paul Ammann and Jeff Offutt,
Coverage Criteria for Software Testing (in progress)
Web access will be given to this text.