Test-First Design for Java Beginners: Summer 2011
This workshop is sponsored by two NSF DUE CCLI grants:
Integrating Test Design into Computing Curriculum from the Beginning Grant # 0920182
Redesigning Introductory Computing: The Design Discipline Grant # 00618543
Workshop materials: Evaluation
The pre-workshop
questionnaire.
Workshop materials: Library pages and Downloads
The tester
library.
The javalib
libraries for the design of interactive graphics-based games.
All libraries we will use: EclipseJars.zip
Download this file, and unzip.
The textbook draft: How to Design Classes pdf
Workshop materials: Labs
- Lab
1 Fundamentals of Test-First Design
- Lab
2 The Variety of Test Scenaria
- Lab
3 Understanding Equality
- Lab
4 A Creative Project
- Lab
5 Content vs. Structure Equality
- Lab
6 Understanding Mutation
- Lab
7 Using Annotations for Testing Flexibility
- Lab
8 HashMap, Set; JUnit
- Lab
9 Stress Tests
- Lab
10 Randomized Testing: QuickCheck
- Lab
11 Code Quality
- Lab
12 Regression Testing; Integration Testing
Workshop schedule
Day 1: Unit test design in the absence of mutation.
- Functional Java and Design of Class Hierarchies
- Function Objects
- Designing unit tests for mutation-free programs
- Tests for inexact values
Day 2: Unit test design for special cases; Equality
- Understanding Equality
- Constructor and Exceptions tests
- World: interactive games
- Ranges, one-of values, traversals
Day 3: Unit test design in the presence of mutation
- Imperative style: mutating an object, mutating structure
- Imperative World
- Tests for complex data structures: Trees, Hash Maps, Sets, Circularity
Day 4: Comprehensive testing strategies
- Randomized tests
- Stress tests
- Black box testing
- Usability testing
- Integration tests
Day 5: Review, Summary, Pedagogical Pointers
- Code walks
- Test coverage
- Discussion