CtrlK
BlogDocsLog inGet started
Tessl Logo

testland/state-transition-test-design

Derives human-readable manual test cases from stateful behavior: identify states, events, transitions, and guard conditions, draw the state table including invalid (empty-cell) transitions, choose a coverage level (all states, valid transitions / 0-switch, transition pairs / 1-switch per Chow, all transitions including invalid ones), then derive one test case per coverage item as an event sequence with per-step expected states (ISTQB CTFL v4.0 section 4.2.4). 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 for lifecycle entities (accounts, orders, subscriptions), workflows, and UI wizards where the response to an event depends on the current state.

78

0.81x
Quality

93%

Does it follow best practices?

Impact

77%

0.81x

Average score across 10 eval scenarios

SecuritybySnyk

Passed

No findings from the security scan

Overview
Quality
Evals
Security
Files

Evaluation results

26%

-65%

A cancelled pipeline run reported success

Criteria
Baseline
With context

Deliverable exists

100%

0%

The cancelling state is covered as a state in its own right

76%

0%

MUST NOT write cases that assert an outcome for simultaneous arrivals

100%

100%

The five finished states are used as starting points

100%

0%

MUST NOT model the scheduler's internal phases as states

100%

100%

All 45 state/input combinations accounted for

100%

0%

Both timeouts and both give-up paths are distinguished

66%

0%

Expected results come from the run page or the API

100%

0%

100%

15%

A delivered parcel went back out for delivery

Criteria
Baseline
With context

Deliverable exists

100%

100%

Both finished statuses are used as starting points for every scan type

50%

100%

MUST NOT ship the journey walk as the pack

100%

100%

All 20 status/scan combinations accounted for

100%

100%

Mis-scans on a live parcel are covered

100%

100%

The hub self-scan is modelled as a transition

100%

100%

Expected results are what the public tracking page shows

100%

100%

100%

4%

Applicants are getting back inside a submitted application

Criteria
Baseline
With context

Deliverable exists

100%

100%

The submitted application is attacked through routes the UI does not offer

100%

100%

MUST NOT record 'the button is not shown' as the expected result

87%

100%

Undefined behaviour is raised as questions, not answered

100%

100%

All 24 state/event combinations accounted for

100%

100%

Back is exercised from every step that has one

91%

100%

Save and exit is modelled as a transition on every step

100%

100%

Expected results are observable to the applicant

90%

100%

100%

Cancelled subscriptions are coming back to life

Criteria
Baseline
With context

Deliverable exists

100%

100%

All 30 status/event combinations accounted for

100%

100%

The cancelled subscription is attacked with every event

100%

100%

Paused rejects the payment events

100%

100%

Transitions that keep the same status are modelled

100%

100%

Expected results are observable to the tester

100%

100%

MUST NOT ship a pack made only of things that work

100%

100%

80%

-8%

Gift cards are paying for things they should not

Criteria
Baseline
With context

Deliverable exists

100%

100%

MUST NOT invent balance-derived situations

100%

100%

Events that leave the situation unchanged are modelled as transitions

50%

50%

Redemption is modelled with its outcome depending on the amount

100%

100%

The two incidents are covered as refusals with their situations seeded

100%

100%

All 40 situation/event combinations accounted for

100%

100%

MUST NOT sweep a row of refusals into one case

83%

0%

Every case states starting balance and per-step balance

100%

100%

97%

-3%

Loan test cases nobody outside the team can run

Criteria
Baseline
With context

Deliverable exists

100%

100%

The model is built on the seven visible situations

100%

100%

MUST NOT assert on database state

100%

100%

The two indistinguishable codes are called out

100%

100%

Events that must be refused after the money moves

100%

85%

All 42 situation/event combinations accounted for

100%

100%

Transitions that keep the same label are modelled

100%

100%

Each case is runnable from the two screens alone

100%

100%

100%

3%

Nobody can say what a contract does when the first approver clicks Approve

Criteria
Baseline
With context

Deliverable exists

100%

100%

Approving is modelled as two distinct entries with different outcomes

100%

100%

The first approval has its own case asserting the contract did not move

100%

100%

MUST NOT collapse the two approvals into a single unasserted step

100%

100%

Actions that must be refused are covered

85%

100%

All 36 status/action combinations accounted for

100%

100%

The approval count is a stated precondition and its reset is exercised

100%

100%

Every step names the status the tester should see

100%

100%

0%

-100%

Our exam coverage report says 100% and we do not believe it

Criteria
Baseline
With context

Deliverable exists

100%

0%

Coverage is counted against transitions, not situations

100%

0%

MUST NOT let reaching every situation stand as the coverage claim

100%

0%

The lead's claim is answered explicitly

100%

0%

Answers posted outside the working situation are covered

100%

0%

All 28 situation/event combinations accounted for

100%

0%

The window closing is exercised from the paused situation

100%

0%

Cases are runnable steps with per-step expected situation

100%

0%

94%

-3%

Reopened tickets close themselves twenty minutes later

Criteria
Baseline
With context

Deliverable exists

100%

100%

Statuses reachable by more than one route are identified with their routes

100%

83%

Cases run a route in followed by the next event

100%

100%

MUST NOT present one end-to-end walk as the coverage

100%

100%

MUST NOT dump every possible two-step sequence

100%

100%

Events that must be refused are covered

81%

81%

All 35 status/event combinations accounted for

100%

100%

Clock expectations are stated per step

100%

100%

Failed

Three pairing bugs hid behind one ticket

Evaluated
Agent
Claude Code
Model
Claude Sonnet 4.6

Table of Contents