Software Testing

Fall 2025

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

Lectures:
 Monday/Wednesday, 1:25 -- 2:40pm
 Room: Gates Hall G01

Course Email:
 cs5154-staff@cornell.edu

Instructor:
 Owolabi Legunsen
 Office Hours (OH):
     M/W, 3:00 -- 4:00pm @ Gates 442A

Course Staff:
 Shinhae Kim
   OH: T, 10-11am @ Rhodes 574
 Stephen Shen
   OH: F, noon-1pm @ Rhodes 576

Assessment  

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 30%
  • 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. It is your responsibility to ensure that your submission is complete by that time, even in the presence of potential technical glitches. Lateness will be penalized: each additional day of lateness will decrease the grade for that homework by 30%.
Pop quizzes 10%
  • 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 25%
  • Date: 10/15/2025 @ 1:25-2:40pm
Prelim 2 25%
  • Date and Time: 11/19/2025 @ 1:25-2:40pm
Final Quiz 10%
  • Date: 12/8/2025

 

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, comments, complaints, and requests to the course email: cs5154-staff@cornell.edu
  • 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.

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:
  • 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

Integrity is a cornerstone of both our learning community and professional life; it is about respecting yourself and respecting others. You respect yourself by submitting work completed through your own effort; you respect others by acknowledging contributions from them when collaboration is allowed (e.g., group projects). When your individual effort is required (such as on an exam), you may neither seek nor accept help from others. 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.
  • On any programming assignment, it is a violation of academic integrity to:
    • Look at or be in possession of the code of another group in this semester or a previous one with a similar assignment.
    • Show or give your code to another student not in your group.
    • Post code on any communication platform (including group chats, Q&A sites, etc.) that other students can see.
  • If you do an assignment within a group, you must work together as much as possible. It is a violation of academic integrity to submit as a group if all members cannot claim joint authorship of all portions of the submission.
  • Students are NOT allowed to use ChatGPT, Codex, or any other tool that is based on Generative Artificial Intelligence (AI). Rationale: This course teaches the fundamentals of how to test human written or machine generated code. Students should therefore seek to develop and demonstrate mastery of those testing principles that are being taught, so that they can use that mastery in the future to independently validate code that is written by humans or produced by Generative AI. We will use an honor system that assumes by default that you are not using Generative AI. But, if we detect that you used Generative AI, then we will prosecute that usage as a violation of academic integrity.
  • If we suspect that the Code of Academic Integrity is not being upheld, we may upload student submissions to 3rd-party services that detect plagiarism; enrollment in this course implies consent for your submissions to be used in this manner.
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 to the extent that such accommodations do not negatively affect learning outcomes for other students in the course. 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: