Home Research Teaching Students Service

CS182 Software Testing and Verification Fall 2022

Course Description

Software has bugs. In this course, you will learn systematic testing methods to detect bugs in modern software applications: test coverage, test generation, unit and regression testing, and verification. This course will also provide you hands-on experience with real-world testing tools, including fuzz testing tools, program analysis tools, and symbolic execution tools. This will prepare students to become test engineers and experienced software developers.

In the beginning of the class, I will ask you to fill out a background survey on what you are hoping to learn from this class. In the subsequent lectures, I will discuss how your expectations are aligned with and/or different from what to be covered and emphasized in the class.

Optional Textbooks

Syllabus


Lectures
Reading, Assignments, etc
Week 0
9/23 F
Introduction
Reading: Chapter 1.1 Introduction to Software Testing
Week 1
9/26
9/28
9/30
Testing Overview
9.26 Reading: Chapter 1.2 Introduction to Software Testing
9.26 Reading: Chapter 1 The Fuzzing Book
9.28 Reading: Chapter 2.1 The Fuzzing Book
9.30 Reading:Chapter 2&5 Introduction to Software Testing
Week 2
10/03
10/05
10/07
Input Space Partitioning
10.03-05 Reading:Chapter 6 Introduction to Software Testing
10.05 in-class quiz
10.07 Reading: Control Flow Graph
10.07 HW1
Week 3
10/10
10/12
10/14
Test Coverage
10.10-12 Reading: Chapter 7 Introduction to Software Testing
10.14 Reading: Chapter 2.2 The Fuzzing Book
10.07 Tool: Graph Coverage Web Application
HW1 due
Week 4
10/17
10/19
10/21
Test Coverage
10.17-19 Reading:Chapter 8 Introduction to Software Testing
10.21 Reading:Chapter 9 Introduction to Software Testing
HW2
Week 5
10/24
10/26
10/28
Test Generation
10.24 Reading: Chapter 2.3 The Fuzzing Book
10.26 Reading: Chapter 3.6 The Fuzzing Book
10.28 Reading: Chapter 4.5 The Fuzzing Book
HW2 due
Week 6
10/31(Midterm)
11/02
11/04
Midterm is on Monday 10/31 in Class.

Test Generation
11.02 Reading: Chapter 4.4 The Fuzzing Book
Week 7
11/07
11/09
11/11(No class)
Unit and Regression Testing
11.07 Reading: Regression Testing
11.09 Reading: Quantum Software Testing
HW3
Week 8
11/14
11/16
11/18
Verification
11.14 Reading: Linting
11.16 Reading: Model Checking
11.18 Reading: An Axiomatic Basis for Computer Programming
HW3 due
Week 9
11/21
11/23
11/25(No class)
Tool Demonstrations
HW4
Week 10
11/28
11/30
12/02
Tool Demonstrations
HW4 due

Grading

Class Policy