Group that looked at Miami syllabus Current Syllabus (with regards to testing) • 2: To be able to identify eliminate Testingand is already in errors in programs course (albeit in a – 2.1: Describe thevague difference betweenWe a syntax manner). error, run-time error, and logic error focused on the level – 2.2: Read errors reported by the compiler and use at which to put in those error messages to correct the syntax into this course. – 2.3: Use techniques and tools for debugging programs – 2.4: Design and document a complete set of test cases and use this to identify logic errors Proposed outcome • 2.4: Design a set of test cases based on boundary values and equivalence classes and use these to identify logic errors. Idea #1: Test identification • Goal: Teach basic testing concepts such as boundary values and equivalence classes • Assignment: Give students a method and have them identify test cases • Don’t have to worry about confusing students with notation Example: A good party • A good party has to have at least 10 people and more than 5 programmers – Okay maybe my criteria for a good party is different than yours • Method goodParty(int people, int programmers) • What are some tests we should run Idea #2: Test identification • Give students .exe and ask them to find errors. • Reduces perverse incentives for students in testing their own code • Could be extended to code-based testing Idea #3: Writing testers • Have students write testers as a main method • Give structure to students – Something similar to Junit but more forgiving • Example: Put each test in a separate method that begins with test • Stagger due dates for project/tester • Will make them appreciate Junit later Later Progression • CS 2 – Introduce Junit – Introduce statement coverage and tools (EMMA) • CS 3 (Data Structures) – Similar tools for C++ • Integration Testing/Test Drive Development covered in Software Engineering course – Oftentimes taken concurrently with CS 3 Evaluation Plan for CS1 • Pre/Post Survey/Assessment – Importance of testing – Simple specification, identify test cases • Need rubric • Measure grade of final project and compare control vs. experimental – Don’t have students turn test cases in – Survey students if they used testing techniques