CtrlK
BlogDocsLog inGet started
Tessl Logo

testland/decision-table-test-design

Derives human-readable manual test cases from a business-rule spec via a decision table: identify conditions and actions, build the full 2^n-column matrix, collapse columns with irrelevant entries, strike infeasible combinations, then emit one test case per remaining column (each feasible column is one coverage item per ISTQB CTFL v4.0 section 4.2.3). A deep single-technique walkthrough rather than a broad multi-lens case matrix; the output is manual step/expected cases rather than parameterized test code, and it covers how cases are derived rather than how a case record is structured. Use when a spec's outcome depends on interacting conditions (pricing, eligibility, discounts, routing rules) rather than the boundaries of a single input.

93

1.02x
Quality

93%

Does it follow best practices?

Impact

94%

1.02x

Average score across 10 eval scenarios

SecuritybySnyk

Passed

No findings from the security scan

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-6/

{
  "context": "Four facts - Gold card, Basic fare, bag over 23 kg, paid online - give 16 combinations that reduce to 7 genuinely different cases, because payment channel stops mattering for Gold cardholders and on Standard fares, and bag weight stops mattering for Gold cardholders. Two sentences are doing no honest work: one restates the Gold rule for Standard fares, and one prices a Gold cardholder on a Basic fare at EUR 25 in direct conflict with the opening sentence. Predicted baseline failure: the agent writes a fee table keyed by fare and card, prices the Gold-plus-Basic-plus-online passenger at EUR 25 because a sentence says so, and never notices that the same passenger is priced at zero by the first sentence. It also gives no reduction count, so the thirty-row script the team wanted rationalised is replaced by an equally unmeasured list. Both failures survive a sentence-by-sentence read of the document against the extract, because every sentence of the extract has been used.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Deliverable exists",
      "description": "A file named baggage-fee-analysis.md exists and contains a fee table. Scores zero if absent or if it contains only prose.",
      "max_score": 5
    },
    {
      "name": "The conflicting sentence identified rather than applied",
      "description": "The document identifies that 'Gold cardholders on a Basic fare pay EUR 25 for a bag paid online' cannot stand alongside 'Gold cardholders check one bag free on any fare', and raises it for the revenue team instead of pricing those passengers. Scores zero if a Gold cardholder on a Basic fare with an online-paid bag is priced at EUR 25 as the expected result. Scores at most half if the sentence is listed as merely redundant or as safe to delete, rather than as a disagreement that changes what a real passenger pays.",
      "max_score": 30
    },
    {
      "name": "The genuinely redundant sentence identified",
      "description": "The document names 'Gold cardholders travelling on a Standard fare check their first bag free' as adding nothing - it is already covered twice - and distinguishes it from the conflicting sentence above. Scores zero if no sentence is identified as deletable, and scores at most half if it is lumped together with the conflicting sentence under one heading.",
      "max_score": 18
    },
    {
      "name": "All sixteen combinations carry a fee",
      "description": "All 16 combinations of the four facts are traceable with a total fee: EUR 0, 25, 35, 60, 85, and 95 are the values that occur. Scores zero if fewer than 16 can be traced or if the table is keyed by fare family alone. Scores at most half if more than two totals are wrong - the Basic-fare heavy-bag totals are EUR 95 at the airport and EUR 85 online.",
      "max_score": 22
    },
    {
      "name": "Reduction count stated with reasoning",
      "description": "The document states how many genuinely different cases remain - seven, once payment channel is dropped for Gold and Standard passengers and weight is dropped for Gold - and names which fact stops mattering where. Scores zero if no count is given. Scores at most half if a count is given with no statement of which fact was dropped for which group, or if the count does not follow from the table.",
      "max_score": 20
    },
    {
      "name": "MUST NOT check only the passengers who pay",
      "description": "Anti-pattern guard. The bag drops QA is asked to check include the zero-fee cases - a Gold cardholder and a Standard-fare passenger with an under-23 kg bag - not only the Basic-fare and heavy-bag rows. Scores zero if every proposed check expects a non-zero fee, since a free-bag rule that silently starts charging is exactly the regression this section has produced before.",
      "max_score": 18
    },
    {
      "name": "Payment channel scoped correctly",
      "description": "The document states that whether the bag was paid online matters only on a Basic fare for a non-Gold passenger, and nowhere else. Scores zero if the online and airport variants are listed as separate cases for Standard-fare or Gold passengers.",
      "max_score": 12
    }
  ]
}

SKILL.md

tile.json