- This is a great way to introduce or reinforce test-driven development (TDD).
- Ask students to discuss writing a method to "remove duplicates" from the array [2, 3, 55, 3, 3, 16, 16].
- Without further prompting, students will likely devise an algorithm that only removes the duplicates in the middle or the end of the array.
- Next, encourage students figure out all the test/boundary cases removing duplicate adjacent elements.
- Have students create a table to keep track of all their test cases like the table at the bottom of this tip.
- Students should keep track of their thinking in tabular form to encourage the correct use of test cases.
- Students will be tracking their progress as they successfully remove more and more duplicate elements from the array.
- Students will either have to trace through all algorithms by hand, or program them and run them as a group.
- The table should include the following four columns:
- Contents of the test array initially.
- Contents of the test array after duplicates are removed.
- Information about the test case.
- Information about the array that remains.
- If students get stuck or too overwhelmed give them a hint that there are 8 test cases they need to account for.
- The eight test cases (i.e., boundary conditions) students need to consider are as follows:
- Ending with a non-duplicate
- Starting with a duplicate
- Duplicates only in the middle
- A array of one element
- A longer array with all duplicates
- A longer array with no duplicates
- An empty array
- A null array is not possible.
- A single element between sequences of duplicates.
- For example, the array [2, 3, 55, 3, 3, 16, 16, 16] is an array with duplicates at the end and in the middle.
- Collect a list of wrong answers and wrong test cases, to use for introducing debugging.
- Below is the beginning of a sample table students will create:
Initial Test Array Contents of Test Array after Duplicates are Removed Information about Test Case Information about the Remaining Array [2, 3, 55, 3, 3, 16, 16, 16] [2, 3, 55, 3, 3, 16] The code written for this test case removed the duplicates the end of the array. 1 boundary case identified. There are still duplicates to remove in other parts of the array. [2, 3, 55, 3, 3, 16]