Software Testing

Fall 2022

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

 

News  

  • 9/13/2022: Quiz 1.

  • 9/8/2022: Homework 0 is assigned.

  • 8/25/2022: Reading 1 is assigned.

  • 8/21/2022: The website is up!


Lectures:
 Tuesday/Thursday
 9:40 -- 10:55am
 Room: Baker Lab 135

Course Email:
 cs5154-staff@cornell.edu

Instructor:
 Owolabi Legunsen
 Office Hours (OH):
     Tue/Thu, 2:30 -- 3:30pm
     Room: Gates 442A

Course Staff:
 Ayaka Yorihiro
   OH: Wed 9:30 - 10:30am
   Room: Rhodes 576
  Richard Palmer
   OH: Sun 1:30 - 2:30pm
   Room: Rhodes 400
  Christian Donovan
   OH: Mon 2 - 3pm
   Room: Rhodes 400
  Michael Ye
   OH: Fri 1 - 2pm
   Room: Rhodes 400

Assessment  

This course involves assigned readings, homework, quizzes, in-class participation, 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
Homework 30%
  • There will be up to six 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. But, the instructor will take any reported lack of participation into consideration when deciding final course grades.
  • 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 5%
  • 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 may 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 15%
  • There will be quizzes in class.
  • Quizzes will take place roughly every two to three weeks and will be announced in advance.
  • Quizzes will test knowledge of material from the readings and from recent lectures.
In-class participation 5%
  • There will be graded in-class activities.
  • In-class participation activities will NOT be announced in advance.
  • Students may miss one in-class participation activity without penalty.
Prelim 1 20%
  • Date: 10/6/2022
Prelim 2 or Final Exam 25%
  • Date: 11/15/2022

 

Tentative Schedule  


Date Topic Notes Homework/Reading
8/23
Introduction
 slides,  scribbles
8/25
Foundations
 slides Reading 1 assigned
8/30
Foundations (contd)
 slides
9/1
Test Automation Demo
 slides,  code
9/6
Test Automation Framework
 slides,  code  JUnit 4,  JUnit 4 Assert
9/8
Test Automation Framework (contd)
 slides,  code  JUnit 4,  JUnit 4 Assert
9/13
Quiz 1, More on Test Automation
 slides,  code
9/15
Input Space Partitioning (ISP)
 slides
9/20
Implementing ISP
 slides
9/22
Implementing ISP (2)
 slides
9/27
Coverage Criteria and ISP
 slides
9/29
Quiz 2 and in-class discussion
10/4
ISP Wrap-Up
 slides
10/6
Prelim 1
10/8
No Class: Fall Break
10/13
Graph-Based Testing
 slides
10/18
Loops in Graph-Based Testing
 slides
10/20
Loops in Graph-Based Testing (2)
 slides
10/25
Graph-Based Coverage and Source Code
 slides
10/27
Quiz 3, Logic Coverage
 slides,  code
10/31
Logic Coverage (2)
 slides
11/3
Active Clause Criteria
 slides
11/8
Applying Logic Coverage to Source Code
 slides
11/10
Mutation Testing
 slides
11/15
Prelim 2
11/17
Mutation Testing (2)
 slides,  notes
11/22
Regression Testing
 slides
 

Course Resources  

Course Administration

  • We are using Canvas or CMS as course management systems.
  • Announcements will be posted on this web page, Canvas, or CMS. Check the news section regularly for updates.
  • Send all questions, complaints, and requests to the course email: cs5154-staff@cornell.edu
  • We will make our best effort to respond to all messages sent to the course email within 24 hours, including on weekends. Plan ahead: don't leave your questions till just before submissions are due.

Required Textbook

The following textbook is required for this course: 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 for Fall 22

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