This three day instructor-lead seminar develops skills necessary to produce high-quality object-oriented systems. It begins by establishing the motivation and proper role for testing. Thirteen test design patterns are presented to show how to design test suites at class, cluster, and subsystem, and system scope. Basic approaches for test automation are presented. The use of assertions and other techniques for built-in-test are discussed. All levels of testing are covered, including unit, integration, performance, and system test.Participants develop test cases using test design patterns in nine small group exercises. Each participant receives a detailed notebook including solved problems. This document is a valuable desk reference.
The seminar shows how to test applications written in any object-oriented language, including Ada 95, C#, C++, Java, Eiffel, Objective-C,and Smalltalk. The seminar conforms to the IEEE standards for software testing.
Bob Binder and Duane Terrazas are course instructors. Binder is the developer of this course.
Learn how to do effective and efficient testing of object-oriented systems. Learn how to use source code, UML models, and use cases to design tests. Learn when to retest inherited features. Learn how to test an object's state space. Learn how to test event- driven/GUI applications and how to code assertions to reduce external testing. Learn how to evaluate testing for completeness and sufficiency. Learn about available software support for testing object-oriented systems.
Software developers, object architects, system architects, software engineers, system engineers, test engineers, quality assurance analysts, programmer analysts, programmers, project managers. A working knowledge of object-oriented design and programming is assumed; one or more years OO programming is suggested. No prior knowledge of testing is assumed.
Each participant receives a copy of Testing Object-oriented Systems: Models, Patterns, and Tools.
248.1 Introduction. Challenges in Test Design. Course Objectives. Why Test? Validation, Verification, and Testing. What Testing is Not. The Role of Testing. Unit Scope: Methods, Classes, Clusters, or Subsystems? What’s Different About Testing Objects? Limits of Testing. Results-oriented Testing. What is Responsibility-based Test Design? Course Schedule.
248.2 Category-Partition. The Test Design Pattern. The Category-Partition Test Pattern.
Exercise 2. makeChange Method: Category-Partition Approach.
248.3 Combinational Function. The Combinational Function Test Pattern.
Exercise 3. Triangle Class Reporter Methods.
248.4 Invariant Boundaries. The Invariant Boundaries Test Pattern.
Exercise 4. plotLine Method: Domain Analysis.
248.5 Implementation-based Test Design. Motivation. Coverage metrics. Control graphing. Control flow testing: statement coverage, predicate coverage models. Loop tests. The basis path test model.
Exercise 5. Abx Extended Flow Graph.
248.6 Modal Class. Preliminaries, The Modal Class Test Pattern.
Exercise 6. Class TrafficLight.
248.7 Non-Modal Class. The Non-Modal Class Test Pattern.
Exercise 7. Class DateTime.
248.8 Class Associations. The Class Associations Test Pattern.
Exercise 8. Virtual Video Object Model.
248.9 Assertions. Assertion-based testing: who and why; preconditions, postconditions, loop invariants, class invariants, design by contract. Using assertions for testing. The Percolation Pattern.
248.10 Test Drivers. Stubs. Driver Hierarchies. Testing Frameworks. OO test COTS.
248.11 Integration Strategy. Dependency analysis. Small Pop, Alpha-Omega Cycle, Big Bang Integration, Bottom Up Integration, Top Down integration, Collaboration Integration.
Exercise 11. Integration: Lessons Learned
248.12 Extended Use Case. A use-case primer. Extended Use Case Test Pattern.
Exercise 12. Virtual Video, Rent a Copy Use Case.