Lecture notes
You can check out all lecture notes' sources with the following command:
git clone http://patricklam.ca/stqam/stqam-lectures.git/
The usual git commands will work for pulling updates from my repository.
You may use these lecture notes however you like. I am placing no
restrictions on their use. As far as I'm concerned, feel free to remix and
share.
- Lecture 1: Introduction.
- Lecture 2: RIP fault model; test cases; coverage (infeasibility).
- Lecture 3: (v2) Subsumption. Graph Coverage: introduction to graphs; semantic vs syntactic reachability.
- Lecture 4: (v2) Test paths; Single-entry single exit graphs; test cases vs test paths; node coverage.
- Lecture 5: (v2) NC example; edge coverage; edge-pair coverage; simple and prime paths; prime path coverage; simple round trip coverage; complete round trip coverage; complete path coverage; specified path coverage.
- Lecture 6: (v3) PPC vs CPC; sidetrips and detours; Best-Effort Touring.
- Lecture 7: (v2) Algorithm for computing prime paths; prime paths example. Data flow Criteria: du paths.
- Lecture 8: All-Uses, All-Defs, All-Du-Paths Criteria; subsumption chart.
- Lecture 9: Graph coverage for source code: constructing control-flow graphs.
- Lecture 10: Dataflow graph coverage for source code; structural graph coverage for design elements.
- Lecture 11: Dataflow graph coverage for design elements; coupling dataflow.
- Lecture 12: (v2) Graph coverage for specifications: sequencing constraints.
- Lecture 13: (v2) Graph coverage for specifications: Finite State Machines.
- Lecture 14: Graph coverage for use cases. Summary of graph coverage.
- Lecture 15: (v2) Logic coverage. Predicates and clauses. Predicate coverage, clause coverage, combinatorial coverage.
- Lecture 16: (v2) Active clauses. Determination.
- Lecture 17: (v4) Making clauses determine predicates. Active Clause Coverage. General Active Clause Coverage. Correlated Active Clause Coverage.
- Lecture 18: (v2) Remarks on ACC criteria.
- Lecture 19: (v2) Infeasibility (including how to get it) and subsumption for logic criteria. Logic coverage example.
- Lecture 20: Logic coverage of programs and Finite State Machines.
- Lecture 21: Unit testing. Principles of unit testing. Mock objects, dependency injection.
- Lecture 22: Syntax-based testing: regexps and grammars. Mutation and killing mutants.
- Lecture 23: Mutation testing for source code; weakly and strongly killing mutants.
- Lecture 24: Mutation Operators: Examples of normal, integration and OO mutation operators.
- Lecture 25: Input space grammars and mutating inputs: testing your programs on invalid inputs.
- Lecture 26: Guest Lecture by Aakarsh Nair on Regression Tests, Selenium, and Software Testing in Industry.
- Lecture 27: (v2) QA for Web Applications.
- Lecture 28: Test plans.
- Lecture 29: Input-space based testing: partitions. Input domain modelling, including interface-based IDMs.
- Lecture 30: Functionality-based IDMs.
- Lecture 31: Combining input domain models: Each Choice, Pair-Wise, T-Wise Coverage. Base choices; Base Choice Coverage, Multiple Base Choice Coverage. Constraints Among Partitions.
- Lecture 32: Writing good bug reports.
- Lecture 33: Guest Lecture by Prof. Derek Rayside on Software Model Checking.
- Lecture 34: Usage models. Wrap-up.