Home Research Teaching Students Service
CS182 Software Testing and Verification Fall 2022
- Instructor: Professor Qian Zhang
- Office: WCH357
- Office Hours: MW 12:00PM to 01:00PM, or by appointment
- TA: Spoorthi Badikala
- Office: WCH110
- Office Hours: F 01:00pm to 02:00pm, or by appointment
- Lectures: MWF 11:00AM to 11:50AM, Student Success Center Room 216
- Discusions: T 01:00PM to 01:50PM, CHASS Interdisciplinary-North Room 1002
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
- Introduction to Software Testing Edition 2 Paul Ammann and Jeff Offutt
- The Fuzzing Book, Andreas Zeller, Rahul Gopinath, Marcel Böhme, Gordon Fraser, and Christian Holler
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
-
Assignments: 40% (4*10%)
Projects: 35% (Proposal 5%, Presentation and tool tutorial 15%, final report 15%)
Midterm 20%
Class Participation 5% (Polls, discussions, quizzes, etc.)
Due to the current pandemic situation, the instructor reserves the right to modify the above class schedule, assessment methods, and grading policy.
Class Policy
- Class announcements will be made through Canvas.
- Please use on-line repository services such as GitHub for version control and project management. Please provide a read permission to us, so that we can access and grade your project. Your team's collaboration history will be also used for adjusting individual grades within your teams.
- If you could not attend the midterm, individual schedules will be available upon request. Please contact the instructor and TA in advance with a physician's report.