Section 9: Program Testing
  Column:   D C B A
Row: Program Testing: YOUR SCORE Attempt Meets Requirements Exceeds Requirements Exemplary
  ***NOTE***: must meet minimum requirements in at least HALF of all programs submitted.
  Minimum Points:   Must exceed requirements in at least one area. Total Points:
  12 0       20
1 Pre- & Post- conditions.    Occasionally defines pre- and post- conditions for methods and functions.  Consistently defines pre- and post- conditions for methods and functions.  Consistently defines pre- and post- conditions for methods and functions. Some use of assertions.  Consistently defines pre- and post- conditions for methods and functions. Some use of assertions. Pre- and Post-conditions well tested & enforced.
2 End-point testing;     Sporadic. . Often  Consistent  Clear, well chosen.
3 Use of test data.    Sporadic. . Often  Consistent  Clear, well chosen.
4 Test data creation & generation    Sporadic. . Able to identify key test points.   Able to identify key test points. Clear on what aspects of the solution are being tested with each set.  Able to identify key test points. Clear on what aspects of the solution are being tested with each set. Able to generate test data automatically when necessary.
5 Test Drivers    Sporadic. . Often  Consistent  Clear, well chosen.
             
  Column:   D C B A
Row: Debugging: YOUR SCORE Attempt Meets Requirements Exceeds Requirements Exemplary
  Minimum Points:   Must exceed requirements in at least one area. Total Points:
  14 0       24
1 Distinguish the major categories of bugs. [syntax vs. semantics]    Occasionally  Sometimes able to identify which kind of bug it is and able to take appropriate action to resolve it.  Usually  Almost Always
2 Debugging Code: demonstrate at least 3 different types of bugs (e.g. Off-by-one; pointer; uninitialized) ; how to avoid them; how to find them when you didn't.   n/a ---  Show's novice ability - sometimes able to identify the bug based on the program's behaviour. Able to resolve the problem with help or prompting.  Show's intermediate level ability - often able to identify the bug based on the program's behaviour. Sometimes able to resolve the problem without help or prompting.  Consistently able to identify and resolve bugs. Able to articulate numerous strategies for avoiding these bugs.
3 Assertions: what are they and how/when to use them.     Able to recite definition.  Able to discuss the concept; follow code that uses them.  Able to use them in own programs.  Able to use assertions effectively.
4 Instrumentation: what is it; when is (not) useful?     Define the term.  Able to pick it out in code - explain its utility/purpose.  Uses it in own programs.  Able to use and discuss it's use critically.
5 Error Messages: how to write useful ones.     Programs have some error messages.  Programs usually have reasonable error messages.  Programs consistently have reasonable error messages.  Programs usually have reasonable error messages. Programs able to recover reasonable when appropriate.
6 Distinguish between a 'bug' and an exception.     Can describe the differences.  Occasional correct placement of error detection/correction code.  Reasonable placement of error detection/correction code.  Clearly and consistently demonstrates distinction between errors and exceptions.