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).

 

News  

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


Lectures:
 Tuesday/Thursday
 9:40 -- 10:55am
 Room: Plant Science 233

Course Email:
 cs5154-staff@cornell.edu

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

Assessment  

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
Final Exam 20%
  • Date: TBD

 

Tentative Schedule  


Date Topic Notes Assignments/Resources
8/26
Introduction
 slides,  scribbles
8/31
Foundations
 slides,  scribbles Reading 1 assigned
9/2
Foundations (contd), Test Automation Demo
 slides,  code  JUnit 4,  JUnit 4 Assert
9/7
Test Automation Framework
 slides,  code Homework 0 assigned
9/9
In-class Lab
9/14
Lab Review
9/16
Intro to Input Space Partitioning (ISP)
 slides Quiz 1
9/21
Implementing Input Space Partitioning
 slides Reading 2 assigned
9/23
Coverage Criteria and ISP
 slides
9/28
Coverage Criteria and ISP (2)
 slides,  scribbles,  code Homework 1 assigned
9/30
Graph-Based Testing
 slides Quiz 2
10/5
Graph-Based Testing (2)
 slides,  scribbles
10/7
Loops in Graph-Based Testing
 slides,  scribbles
10/14
Graph-Based Coverage and Source Code
 slides,  scribbles
10/19
Prelim Review
Prelim
10/21
Logic Coverage
 slides
10/26
Logic Coverage (2)
 slides
10/28
Active Clause Coverage Criteria
 slides Homework 2 assigned
11/1
Applying Logic Coverage to Source Code
 slides
11/4
Mutation Testing
 slides Homework 3 assigned
11/9
Mutation Testing Demo
 slides, notes
11/11
Mutation Testing Wrap-up
 slides, notes Quiz 3
11/16
Guided Random Test Generation
 slides
11/18
Randooop Demo
 slides
11/23
RegressionTesting
 slides
 

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: cs5154-staff@cornell.edu
  • 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.

Textbook

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: