Gherkin
A structured syntax for describing software behaviour, centred on Given-When-Then clauses. Designed to map directly to automated test steps.
Gherkin is the domain-specific language behind Cucumber and other Behaviour-Driven Development tools. A Gherkin scenario has three main clauses: Given (the starting state), When (the trigger), and Then (the expected result). Additional clauses like And and But extend the logic. Every line in a Gherkin feature file maps to a step definition in code — that's how the scenarios become automated tests.
Gherkin is powerful for its original purpose: writing living documentation that's also a test suite. But the syntax is optimised for test runners, not for PMs or customer success teams. The rigid keyword structure, the need to match step definitions exactly, and the assumption that the reader understands how BDD fits into a CI pipeline all work against it as a product specification format.
Context/Action/Outcome is structurally similar to Given-When-Then but written for humans rather than machines. No step definitions. No test harness. No syntax errors if a line is slightly rephrased. Same underlying shape, different audience.
Gherkin (Given / When / Then)
Given a trial user When they try to access a premium feature Then they see an upgrade prompt
Context / Action / Outcome
Context: A user's trial has expired Action: They attempt to access a premium feature Outcome: They see an upgrade prompt
Related Terms
A software development practice where behaviour is described in a structured format (typically Gherkin) that can be read by stakeholders and executed as automated tests.
A structured format for describing product behaviour. Precise enough to be unambiguous, plain enough for anyone on the team to read — without the machine-oriented syntax of BDD.
A single plain-language description of how a product behaves in a specific situation. The atomic unit of a living product specification.
See it in practice
The Specsight demo shows real scenarios, features, and a complete living product spec — generated from an actual codebase.