About the Course
Meeting Times & LocationTue. Thu. - 9:30AM - 10:45AM (CSIC 2120).
Office HoursTue. Thu. - 10:45AM - 12:00PM (4115 A. V. Williams Building) Other meetings may be scheduled individually and held over Skype and Phone.
Catalog Course DescriptionThis course will examine fundamental software testing and related program analysis techniques. In particular, the important phases of testing will be reviewed, emphasizing the significance of each phase when testing different types of software. The course will also include concepts such as test generation, test oracles, test coverage, regression testing, mutation testing, program analysis (e.g., program-flow and data-flow analysis), and test prioritization.
Course SummaryThis course will examine fundamental software testing and program analysis techniques. In particular, the important phases of testing will be reviewed, emphasizing the significance of each phase when testing different types of software. Students will learn the state of the art in testing technology for object-oriented, component-based, concurrent, distributed, graphical-user interface, and web software. In addition, closely related concepts such as mutation testing and program analysis (e.g., program-flow and data-flow analysis) will also be studied. Emerging concepts such as test-case prioritization and their impact on testing will be examined. Students will gain hands-on testing/analysis experience via a multi-phase course project. By the end of this course, students should be familiar with the state-of-the-art in software testing. Students should also be aware of the major open research problems in testing.
Grading and status with respect to graduate programThe grade of the course will be determined as follows: 15% midterm exam, 5% topic presentation, 5% project presentation, 25% final exam, 50% class project.
MS qualifying course (Midterms + Final exam), PhD core (Software Engineering).