This course will cover various techniques for test case design, as used for testing of software artifacts including requirements, design and code. We will discuss algorithms and techniques for test case design based on graphs, logic, syntax of programming languages and on inputs. Special techniques for testing object-oriented features and web applications will also be discussed. The course will end with symbolic testing techniques. These broadly will cover test cases for both white-box and black-box. INTENDED AUDIENCE: Any Interested Learners PRE-REQUISITES: Programming, Algorithms, Discrete Mathematics (basics) INDUSTRY SUPPORT: The material of this course has been used to offer training for Samsung, ABB and Mindtree. The course will be useful for any firm that does tests their software.
Week 1: Techniques and algorithms for test case design: Graphs based testing- structural coverage criteria.Week 2: Graphs based testing: Data flow coverage criteriaWeek 3: Graphs based testing: Data flow coverage criteriaWeek 4: Graphs coverage for source code, design elements and requirementsWeek 5: Techniques and algorithms for test case design: Logic based testing- Predicates, logic based coverage criteriaWeek 6: Specification based logic coverage, logic coverage on finite state machinesWeek 7: Input space partitioning: Input domain modeling, combination strategies criteriaWeek 8: Syntax based testing: Coverage criteria based on syntax, mutation testingWeek 9: Test case design (as learnt above) applied to object-oriented applicationsWeek 10: Test case design (as learnt above) applied to web applicationsWeek 11: Symbolic testingWeek 12: Concolic testing, Conclusion