CtrlK
BlogDocsLog inGet started
Tessl Logo

testland/input-domain-coverage-audit

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

Quality

88%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

Overview
Quality
Evals
Security
Files

worked-example.mdreferences/

Worked example

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:

  • §EP. 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.
  • §BVA. 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.
  • §NEG. Three assertions, all targeting a returned value: ratio 0. 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.

SKILL.md

tile.json