90 likes | 193 Views
Group that looked at Miami syllabus. Current Syllabus (with regards to testing). Testing is already in course (albeit in a vague manner). We focused on the level at which to put in into this course. 2: To be able to identify and eliminate errors in programs
E N D
Current Syllabus (with regards to testing) Testing is already in course (albeit in a vague manner). We focused on the level at which to put in into this course. • 2: To be able to identify and eliminate errors in programs • 2.1: Describe the difference between a syntax error, run-time error, and logic error • 2.2: Read errors reported by the compiler and use those error messages to correct the syntax • 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