Presentation on theme: "Group that looked at Miami syllabus. Current Syllabus (with regards to testing) 2: To be able to identify and eliminate errors in programs – 2.1: Describe."— Presentation transcript:
Group that looked at Miami syllabus
Current Syllabus (with regards to testing) 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 Testing is already in course (albeit in a vague manner). We focused on the level at which to put in into this course.
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