Test suite covers enough values to execute all paths through code, but may not catch other errors triggered by special values. Short-circuit evaluation (e.g., if(a && b || do_something()) {…} ). Covering all paths through the lines of code may not cover all paths through the expressions contained within. On exam 2: insert_into_bst(…), our test on that question had 100% line coverage but not path coverage. float calculate_inverse(float n) { return 1.0 / n; // what if n == 0? }