Software Testing

Fall 2023

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, 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. Working knowledge of Java, Git, and GitHub is required (and assumed).


News and Announcements  

  • All news and announcements will be posted on Canvas

 Tuesday/Thursday, 10:10 -- 11:25am
 Room: Olin Hall 255

Course Email:

 Owolabi Legunsen
 Office Hours (OH):
     Tue/Thu, 3:00 -- 4:00pm @ Gates 442A

Course Staff:
 Valeria Marques
   OH: M, 10-11am @ Rhodes 404
  Kevin Guan
   OH: W 1:30-2:30pm @ Rhodes 576
  Soon Jae Park
   OH: Su 10-11am @ Rhodes 404


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

Final course grades will be based on the following:

Activity Grade Details
Homework 40%
  • There will be up to five homework assignments.
  • Students will have at least one week to complete each homework.
  • Some homework assignments 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 who have contributed fairly to a group submission will receive the same score on that submission. Verified lack of participation may lead to loss of points for the offending student when the final grade for this course is determined.
  • 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%.
Pop quizzes 5%
  • There will be three to six graded pop quizzes in class.
  • Pop quizzes will NOT be announced in advance.
  • Students may miss one pop quiz without penalty.
Prelim 1 20%
  • Date: 10/5/2023
Prelim 2 25%
  • Date: 11/14/2023
Final Quiz 10%
  • Date: 11/30/2023


Schedule, Slides, and other Lecture Materials  

These will be shared on Canvas.


Course Resources  

Course Administration

  • We are using Canvas as the course management system.
  • Announcements will be posted on Canvas.
  • Send all questions, complaints, and requests to the course email:
  • We will make a best effort to respond to all messages sent to the course email within 24 hours, including on weekends. Plan ahead: questions sent to the course email too close to a due date may not be answered before that due date.

Required Textbook

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

Special COVID-19-related information

Everyone is expected to abide by the university public health requirements at all times. See this page for the latest information.

Other Resources

  • Readings may be assigned from free, publicly available articles that will be linked on Canvas. 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 in 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: Course-specific policies include:
  • Unless otherwise stated, homework submissions should be the original work of each student or group.
  • Students are not allowed to use ChatGPT, Codex, or any other tool that is based on Generative Artificial Intelligence. Rationale: This course teaches how to test human written or machine generated code. Students should therefore seek to develop and demonstrate an understanding of testing principles that they can use to independently validate code that is written by humans or produced by Generative Artificial Intelligence.
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: