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



Grading


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/17Intro and administration
08/19Fault, error, failure (1)
08/24Fault, error, failure (2)
08/26Structural coverage, CFG (1)
08/31Structural coverage, CFG (2)
09/02Structural coverage, CFG (3)
09/07NO CLASSLabor Day
09/09Structural coverage, CFG (4)
09/14Data-flow (1)
09/16Data-flow (2)
09/21NO CLASSWell-being day
09/23Data-flow (3)
09/28Data-flow (4)
09/30Concurrency (1)
10/05Concurrency (2)
10/07Syntax-based testing (1)
10/12NO CLASSUniversity Day
10/14Syntax-based testing (2)
10/19Bug reports
10/21Logic coverage (1)
10/26Logic coverage (2)
10/28Logic coverage (3)
11/02NO CLASSLab work
11/04Symbolic execution (1)
11/09Symbolic execution (2)
11/11Symbolic execution (3)
11/16VerificationSymbolic execution wrap-up
11/18Input-based partitioning (1)
11/23NO CLASSLab work
11/25NO CLASSThanksgiving recess
11/30Regression testingAutomated testing tools
12/02Course wrap-up

Course Schedule