Software Testing

Fall 2021

Software testing is widely used for detecting flaws in software. Systematic and organized approaches to testing will be discussed, including test adequacy criteria, manual and automatic generation of test inputs, regression testing, debugging, and at least one dynamic analysis for detecting known classes of errors. Students will learn how to design and automate the execution of high-quality software tests. Students will also learn how to generate test suites that meet coverage and other adequacy criteria.

Prerequisites. Graduate standing (Ph.D, MS, or MEng) in CS, or CS majors who have taken CS 3110 or CS 4120, or permission of instructor required. Knowlegde of Java, Git, and GitHub is required (and assumed).



  • 11/11/2021: Quiz 3.

  • 11/4/2021: Homework 3 is assigned.

  • 10/28/2021: Homework 2 is assigned.

  • 10/19/2021: Prelim.

  • 10/5/2021: Reading 3 is assigned.

  • 9/30/2021: Quiz 2.

  • 9/28/2021: Homework 1 is assigned.

  • 9/21/2021: Reading 2 is assigned.

  • 9/16/2021: Quiz 1.

  • 9/7/2021: Homework 0 is assigned.

  • 8/31/2021: Reading 1 is assigned.

  • 8/25/2021: The website is up!

 9:40 -- 10:55am
 Room: Plant Science 233

Course Email:

 Owolabi Legunsen
 Office Hours:
     Tue/Thu, 3:30 -- 4:30pm
     Room: Gates 310

TA: Ayaka Yorihiro
  Office Hours:
     Fri, 10:30 -- 11:30am
     Room: Rhodes 406

TA: Sandipan Nath
  Office Hours:
     Sun, 6:00 -- 7:00pm
     Room: Rhodes 400


This course involves assigned readings, homework, quizzes, in-class labs, a prelim, and a final exam. Homework may include written components or programming exercises. Homework will be completed in small student groups. Also, homework may involve testing non-trivial open-source software and applying techniques and tools learned in class to that software.

Final course grades will be based on the following.

Activity Grade Details
Homeworks 35%
  • There will be 6 -- 7 homework assignments.
  • Students will have at least one week to complete each homework.
  • Homework will require students to work in groups. Rationale: software engineers work in teams and this course offers a chance to practice teamwork.
  • Students may self-organize into groups. Students who cannot find groups on their own will be randomly assigned to groups.
  • All students in a group will receive the same score on their submission.
  • Homework must be submitted by the due date. Lateness will be penalized: each additional day of lateness will decrease the grade for that homework by 30%.
Readings 10%
  • Students will be required to read parts of the required textbook or articles on software testing.
  • Students will work individually on some readings. Other readings will require students to work in groups.
  • Each reading will be accompanied by questions that the students will answer and submit.
  • Students will have at least one week to complete each reading and answer the questions.
  • Readings will be graded on submission. Failure to submit by the due date will result in zero points for that reading.
Quizzes 10%
  • There will be quizzes in class.
  • Quizzes will take place roughly every two weeks and will be announced in advance.
  • Quizzes will test knowledge of material from the readings and from recent lectures.
Labs 5%
  • There will be occassional labs in class.
  • Labs offer students a chance to practice testing concepts and ask questions.
  • Labs will be completed individually or in groups.
  • Students will receive full grade upon completion of each lab.
Prelim 20%
  • Date: October 19, 2021
  • Venue: Gates G01
Final Exam 20%
  • Date: December 12, 2021
  • Venue: Gates G01


Tentative Schedule  

Date Topic Notes Assignments/Resources
 slides,  scribbles
 slides,  scribbles Reading 1 assigned
Foundations (contd), Test Automation Demo
 slides,  code  JUnit 4,  JUnit 4 Assert
Test Automation Framework
 slides,  code Homework 0 assigned
In-class Lab
Lab Review
Intro to Input Space Partitioning (ISP)
 slides Quiz 1
Implementing Input Space Partitioning
 slides Reading 2 assigned
Coverage Criteria and ISP
Coverage Criteria and ISP (2)
 slides,  scribbles,  code Homework 1 assigned
Graph-Based Testing
 slides Quiz 2
Graph-Based Testing (2)
 slides,  scribbles
Loops in Graph-Based Testing
 slides,  scribbles
Graph-Based Coverage and Source Code
 slides,  scribbles
Prelim Review
Logic Coverage
Logic Coverage (2)
Active Clause Coverage Criteria
 slides,  scribbles Homework 2 assigned
Applying Logic Coverage to Source Code
Mutation Testing
 slides Homework 3 assigned
Mutation Testing Demo
 slides, notes
Mutation Testing Wrap-up
 slides, notes Quiz 3
Guided Random Test Generation
Randooop Demo
 slides,  code Homework 4 assigned
Regression Testing
Regression Test Selection
Regression Test Selection (2)
 slides Quiz 4
Wrapping up

Course Resources  

Course Administration

  • Announcements will be posted on this web page. Check the news section regularly for updates.
  • Send all questions, complaints, and requests to the course email:
  • All messages sent to the course email will receive a response within 24 hours, including on weekends. Plan ahead, and don't leave your questions till just before submissions are due.
  • We are using CMS or Canvas as course management systems.


The following textbook is required for this course: Introduction to Software Testing by Paul Ammann and Jeff Offutt. A print copy is on reserve in the Olin library. Digital or print (new or used) copies may also be purchased via the Cornell Bookstore.

Other Resources

  • Readings may be assigned from free, publicly available articles that will be linked in the schedule section. Do NOT pay for articles that are assigned in this course.
  • Homework programming assignments will be in Java. Instructions for installing Java and associated software can be found here.
  • If you need to brush up on your Java skills, invest some time studying the following resources:
  • Projects and homework will involve running tests on your code and applying cutting-edge tools on open-source projects. In both cases you will use Maven as a build system. Brief introductions to Maven can be found here and here.

General Resources  

Academic Integrity

Students are expected to know and abide by Cornell's policies on academic integrity, including: Academic integrity violations will be prosecuted aggressively. If you are not sure what constitutes an academic integrity violation, please ask.

Special Needs and Wellness

We provide accommodations for disabilities. Students with disabilities can contact Student Disability Services at 607-254-4545 or the instructor for a confidential discussion of their individual needs. If you experience personal or academic stress or need to talk to someone who can help, contact the instructor or: