Syllabus * Schedule * Piazza
                          Course Syllabus                          

SWE 737: Advanced Software Testing
Spring 2017, Thursday 4:30-7:10 pm, AB 2026

Instructor: Dr. Jeff Offutt,
Prerequisite: SWE 637 (or permission of instructor; experience is also relevant)

Many large software companies report that 50% or more of software development resources are devoted to testing. In broad terms, the goal of testing software is to find, and fix, software faults in-house before they are revealed to users as failures. Studies have found that user-revealed faults cost up to 100 times more to debug and repair as faults found during development. As software grows in complexity and cost, is used in more applications, and is based on more technologies, this cost is fast becoming unsustainable.

SWE 737 will pick up where SWE 637 leaves off and explore several cutting edge software topics in depth.

Topics: See the schedule page.

Who should take this course

This course is intended for students interested in deep exploration of software testing at either the research or cutting-edge level. PhD students will carry out a small research project, then write and present a paper. MS students will choose from activities including tool building, tool evaluation and use, and exploring an advanced topic in depth, and writing and presenting a paper. Topics will be suggested by the instructor and the students, and we will decide as a group what specifically to explore.


We will not use a book, although the SWE 637 text, Introduction to Software Testing, will serve as a valuable reference. The second edition was came out in December.

Other readings will be selected from the literature after the list of topics is finalized.

Grade determination and class activities

SWE 737 will not have regular homework problems or exams. Grades will be determined from participation (attending class, joining discussions, presenting material, and participating on piazza), and from a semester-long project. We will have four general types of projects and each student will select a specific project early in the semester.

  1. A survey style paper on an advanced testing topic.
    We will discuss ideas in the first two weeks of class. Possible topics:
    • Test oracles
    • Regression testing
    • Integration testing
    • Usability testing
  2. Tool building.
    As with the survey paper, we will discuss ideas in the first two weeks of class. Possibilities include a web-based tool to solve input space partitionig criteria (PW, EC, BS, ACoC); a front-end to the graph or logic coverage webapps, for example, a tool that extracts control-flow graphs from software; a weak mutation tool; and others.
  3. Tool evaluation and use, resulting in a written report.
    This would be based on one or more existing test tools. An evaluation would probably compare several tools, whereas a “use” would probably apply a test tool to a real application.
  4. A research paper.
    PhD students in particular will be encouraged to either continue their existing research project as part of the class; start a new research project, hopefully leading to a publication or a PhD proposal; or contribute to an existing research project of the professor's or another professor. A few possible topics:
    • Weak mutation
    • Personalized test criteria
    • Machine learning to find minimal mutants
    • PP^n: Lin and Jeff had an idea for extending Prime Paths, which requires each cycle to be taken once, to PP^n, where each cycle must be taken n times.
    • Test Driven Design: Model input domain with grammars, then design TDD tests from an IDM. Refactor the software leads to refactoring the IDM.

My Home Page