Test Coverage
Black-box testing: test functionality without consideration of internal structure of implementation
White-box testing: take internal structure into account when designing tests
Test coverage: measure of how many parts of a program have been tested
Make sure
that each part of your program is exercised at least once by one test case
E.g., make sure to execute each branch in at least one test case
Include boundary test cases: legal values that lie at the boundary of the set of acceptable inputs
Tip: write first test cases before program is written completely → gives insight into what program should do