Blame
|
1 | <!-- Generated from applied-computing-au vic/unit3-4/sat/C08-2026/C08-Reference-Godot by port-reference-godot-to-wiki.py — do not hand-edit; re-run the port. --> |
||||||
| 2 | # Testing Tables and Corrections |
|||||||
| 3 | ||||||||
| 4 | *The testing table is the artefact the whole C8-1 rubric reads from: one row per test, and for every failed test, what you did about it.* |
|||||||
| 5 | ||||||||
| 6 | **Definition.** A testing table documents each test case: the exact input you ran, the output you **expected**, the output you **actually** got, and — when the two disagree — the **corrective action** you took. Expected-vs-actual across a range of data is the 7–8 discriminator; a complete list of corrective actions for every failed test is the 9–10 one. |
|||||||
| 7 | ||||||||
| 8 | ## The structure |
|||||||
| 9 | ||||||||
| 10 | | Column | What goes in it | |
|||||||
| 11 | |---|---| |
|||||||
| 12 | | Test Case ID | TC001, TC002, … | |
|||||||
| 13 | | Test Description | what this row proves, in one phrase | |
|||||||
| 14 | | Input Data | the exact value(s) entered | |
|||||||
| 15 | | Expected Output | the specific output — never just "works" | |
|||||||
| 16 | | Actual Output | what really happened, even when it matches | |
|||||||
| 17 | | Pass/Fail | one word | |
|||||||
| 18 | | Error Type | S / L / R / V (below) | |
|||||||
| 19 | | Corrective Action / Notes | for every Fail: what you changed, and the re-run result | |
|||||||
| 20 | ||||||||
| 21 | **Error types:** **S**yntax · **L**ogic · **R**un-time · **V**alidation |
|||||||
| 22 | ||||||||
| 23 | ## A worked slice |
|||||||
| 24 | ||||||||
| 25 | | Test ID | Description | Input | Expected | Actual | Result | Corrective action | |
|||||||
| 26 | |---|---|---|---|---|---|---| |
|||||||
| 27 | | TC001 | Valid login | saleh / OoeiO9! | Access granted, menu screen | Access granted, menu screen | Pass | — | |
|||||||
| 28 | | TC002 | Wrong password | saleh / saleh | Error message | **Access granted!** | Fail | Login branch never compared the password — added the check; re-run: error shows ✅ | |
|||||||
| 29 | | TC004 | Update existing profile | (edit form) | Profile updated, back to menu | Profile did not update | Fail | Save wrote to a copy, not the record — fixed reference; re-run: Pass ✅ | |
|||||||
| 30 | ||||||||
| 31 | The Fail rows are where the marks live: *fault → fix → re-run result*, written next to the row. That same fix cycle, performed live, is what your screen recording must show. |
|||||||
| 32 | ||||||||
| 33 | ## Rules that keep the table honest |
|||||||
| 34 | ||||||||
| 35 | - **Write Expected before you run.** An expected output copied from the actual output tests nothing. |
|||||||
| 36 | - **Never delete a failed row.** The fail plus its corrective action *is* the evidence — a table of green Passes scores lower than one showing real fixes. |
|||||||
| 37 | - **Cover the range:** valid, boundary, invalid, wrong, absent — see [Types of Test Data](/sd/C08/Types%20of%20Test%20Data). |
|||||||
| 38 | - **At least one row per validation rule** in your code: the empty field, the out-of-range value, the wrong type — with the input that should trigger it. |
|||||||
| 39 | ||||||||
| 40 | ## Going further — automated tests |
|||||||
| 41 | ||||||||
| 42 | A unit test is a testing-table row written as code, so it re-runs itself after every change (in Godot: the **GUT** addon). A passing automated suite is strong "all modules function correctly" evidence for 9–10 — but the documented table stays the required artefact. |
|||||||
| 43 | ||||||||
| 44 | The blank template is in your class repo: `S-C08/C081-Alpha-Testing-Plan-Template.md`. |
|||||||
