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:
Tuesday/Thursday, 10:10 -- 11:25am
Room: Olin Hall 255
Course Email:
cs5154-staff@cornell.edu
Instructor:
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
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 |
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% |
|
Prelim 2 |
25% |
|
Final Quiz |
10% |
|
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: 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.
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: