These are rough, personal lecture notes handwritten by Patrick Lam
used during lecture. Their primary purpose is for reading/review by students
of the class. Thanks to Erik Demaine for providing the software used to
generate these pages.
- Lecture 1: [pdf] -- Introduction pages 1
- Lecture 2: -- RIP fault model; test cases; coverage (infeasibility) pages 1, 2, 3, 4
- Lecture 3: -- Subsumption; introduction to graphs; semantic vs syntactic reachability pages 1, 2, 3
- Lecture 4: -- Test paths; Single-entry single exit graphs; test cases vs test paths. pages 1, 2
- Lecture 5: -- Test cases vs test paths example. Graph coverage: node coverage, edge coverage. pages 1, 2, 3
- Lecture 6: -- Edge-pair coverage. Simple and prime paths. Prime path coverage. Simple and complete round-trip coverage. Complete and specified path coverage. Example: prime path coverage vs complete path coverage. pages 1, 2, 3
- Lecture 7: -- Tours with sidetrips and detours. pages 1, 2
- Lecture 8: [pdf] -- Algorithm for computing prime paths pages 1, 2
- Lecture 9: -- Data-flow criteria; reaching defs; du-paths; def-path and def-pair sets. pages 1, 2, 3
- Lecture 10: -- Def-pair vs. def-path sets. Touring du-paths. All-defs, all-uses, all-du-paths coverage. pages 1, 2, 3
- Lecture 11: -- Structural graph coverage for source code: how to build CFGs. pages 1, 2
- Lecture 12: -- Dataflow graph coverage for source code: defs and uses in source. Structural graph coverage for design elements. pages 1, 2
- Lecture 13: -- Dataflow Graph Coverage for Design Elements. Last-defs and first-uses. Coupling. pages 1, 2, 3
- Lecture 14: [pdf] -- Graph coverage for specifications: sequencing constraints, finite state machines. pages 1, 2, 3, 4
- Lecture 15: -- Graph coverage for use cases (Outrun example). pages 1, 2, 3
- Lecture 16: -- Logic Coverage: Predicates, Predicate Coverage, Clause Coverage, Active Clauses pages 1, 2, 3
- Lecture 17: -- Active Clause Coverages: General, Correlated pages 1, 2, 3
- Lecture 18: -- Restricted Active Clause Coverage, Inactive Clause Coverages pages 1, 2
- Lecture 19: -- General and Restricted Inactive Clause Coverage; Infeasibility and Subsumption; Making Clauses determine Predicates pages 1, 2, 3
- Lecture 20: -- Making Clauses Determine Predicates II; Finding Satisfying Values pages 1, 2, 3
- Lecture 21: -- Structural Logic Coverage of Programs and Finite State Machines pages 1, 2, 3
- Lecture 22: -- Concurrency I (Intro, Java threads). pages 1
- Lecture 23: -- Concurrency II (Race conditions, deadlocks, diagnosing and fixing). pages 1, 2, 3, 4, 5
- Lecture 24: -- Test plans. pages 1, 2, 3
- Lecture 25: -- Writing Good Bug Reports. pages 1, 2, 3
- Lecture 26: -- Regression testing. pages 1, 2
- Lecture 27: -- Syntax-based testing: regexps and grammars. Mutation and killing mutants. pages 1, 2, 3
- Lecture 28: -- Mutation testing for source code; weakly and strongly killing mutants. pages 1, 2, 3, 4
- Lecture 29: -- Mutation Operators: Effective, plus examples of normal, integration and OO mutation operators. pages 1, 2, 3
- Lecture 30: -- Mutating inputs (invalid inputs) pages 1, 2, 3, 4
- Lecture 31: -- Input-space based testing: partitions pages 1, 2, 3, 4
- Lecture 32: -- Choosing Blocks and Values; Combining Partitions pages 1, 2
- Lecture 33: -- Combining input domain models: Each Choice, Pair-Wise, T-Wise Coverage. Base choices; Base Choice Coverage, Multiple Base Choice Coverage. pages 1, 2, 3
- Lecture 34: -- Constraints Among Partitions; Lexicon; Perf; Random bits. pages 1, 2, 3, 4