Audits a test file's input-domain coverage per entry point across three axes: equivalence partitioning (clustering the literal values the tests actually pass, to infer which partitions are exercised), boundary value analysis (recorded n/a when the entry point declares no bound), and error/negative-path coverage (classifying every matcher as positive or negative and computing the negative-assertion ratio). Emits a PASS / SHALLOW / N/A verdict per axis per entry point, with the evidence that produced it. Owns whether the test data spans the input space, not whether an individual assertion is specific enough: matcher specificity belongs to `test-code-conventions`. Use when a test file's cases all look alike - every argument the same shape, every response a success, no thrown-error case - and the suite needs a defensible answer on whether it exercises more than one equivalence class before it is approved.
70
88%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
createUser(email, age). The declared contract is email: string matching a
format, age: integer, minimum 18, maximum 120, and the function throws
ValidationError on a rejected input.
The suite has three tests, passing ("ada@example.com", 30),
("grace@example.com", 42), and ("alan@example.com", 35), each asserting
expect(result.id).toEqual(expect.any(String)).
Walking the axes:
email values are all the same length band and character class, all
well-formed: one partition, no invalid partition. age values are 30, 42,
35: same sign, same order of magnitude, all inside the valid range: one
partition. SHALLOW on both parameters.age declares minimum 18 and maximum 120, so the partition is
ordered and the axis applies. Required 2-value coverage items are 17, 18,
120, 121. None is exercised. SHALLOW.ValidationError is declared and never asserted. SHALLOW.Verdict: SHALLOW. The minimum set that clears the floor is one malformed
email (§EP invalid partition), age=17 and age=121 (§BVA, adding age=18
and age=120 if the team holds a 3-value bar), and one assertion that a
rejected input raises ValidationError (§NEG).
Note how three tests bought nothing: they are one test repeated with the literals changed. This is the pattern the literal-clustering heuristic in Step 2 exists to name.