Overview
The software testing course introduces various testing concepts, principles, and methodologies that assist developers in the process of testing and validating software systems. To help students better understand the subject, the course uses a hands-on approach.
The course covers the basic principles of software testing: the psychology and economics of software testing, development and use of test cases, design and code inspection, version control systems, black box testing, higher-order testing, white box testing, unit testing, incremental testing, regression testing, processes for debugging and fixing software defects, and testing techniques for concurrent and complex systems.
Prerequisites: COMP 530/730 (operating systems), COMP 734 (distributed systems), or equivalent background.
Course Info
- Time: Monday and Wednesday, 3:35-4:50 PM
- Room: FB007
- Instructor: Sishuai Gong
- Email: sishuai@cs.unc.edu
- Office hours: 30 minutes after class or by appointment
Grading
- Midterm and final exams: 40%
- Group lab assignment: 30%
- Class participation: 30%
Midterm and final exams
The course will include a midterm exam and a final exam. Together, they account for 40% of the course grade.
Group lab assignment
There will be one group-based lab assignment, accounting for 30% of the course grade. Details will be announced early in the semester.
Class participation
Participation is central to the course. Students are required to attend all classes. Absence of up to two classes is allowed without prior notice; additional absences must be reported and approved.
Everyone is expected to engage actively during discussions---by asking questions, offering thoughts, or responding to others. The classroom should remain inclusive and respectful.
| Date | Topic | Detail |
|---|---|---|
| 08/17 | Intro and administration | |
| 08/19 | Fault, error, failure (1) | |
| 08/24 | Fault, error, failure (2) | |
| 08/26 | Structural coverage, CFG (1) | |
| 08/31 | Structural coverage, CFG (2) | |
| 09/02 | Structural coverage, CFG (3) | |
| 09/07 | NO CLASS | Labor Day |
| 09/09 | Structural coverage, CFG (4) | |
| 09/14 | Data-flow (1) | |
| 09/16 | Data-flow (2) | |
| 09/21 | NO CLASS | Well-being day |
| 09/23 | Data-flow (3) | |
| 09/28 | Data-flow (4) | |
| 09/30 | Concurrency (1) | |
| 10/05 | Concurrency (2) | |
| 10/07 | Syntax-based testing (1) | |
| 10/12 | NO CLASS | University Day |
| 10/14 | Syntax-based testing (2) | |
| 10/19 | Bug reports | |
| 10/21 | Logic coverage (1) | |
| 10/26 | Logic coverage (2) | |
| 10/28 | Logic coverage (3) | |
| 11/02 | NO CLASS | Lab work |
| 11/04 | Symbolic execution (1) | |
| 11/09 | Symbolic execution (2) | |
| 11/11 | Symbolic execution (3) | |
| 11/16 | Verification | Symbolic execution wrap-up |
| 11/18 | Input-based partitioning (1) | |
| 11/23 | NO CLASS | Lab work |
| 11/25 | NO CLASS | Thanksgiving recess |
| 11/30 | Regression testing | Automated testing tools |
| 12/02 | Course wrap-up |