[{"data":1,"prerenderedAt":52},["ShallowReactive",2],{"wiki-test-design-use-case-testing-en":3},{"meta":4,"html":8,"headings":9,"words":51},{"title":5,"description":6,"published":7,"updated":7},"Use case testing","Use case testing: use case structure after Cockburn, main success scenario and extensions, deriving test cases, scenario coverage, user stories and Gherkin.","2026-11-03","\u003Cp>\u003Cstrong>Use case testing\u003C/strong> is a black-box test technique in which \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"test-case\">test cases\u003C/span> are designed to exercise use case behaviors. A \u003Cstrong>use case\u003C/strong>, in the definition of Ivar Jacobson and Alistair Cockburn, is all the ways of using a system to achieve a particular goal for a particular user. The test cases follow the main success scenario of the use case and each of its extensions: alternative paths, optional steps and errors.\u003C/p>\n\u003Cp>Use cases come from requirements engineering. According to Cockburn, Ivar Jacobson invented what later became known as use cases in the late 1960s while working on telephony systems at Ericsson, and introduced them to the object-oriented community in the late 1980s. The structure described in this article follows Cockburn's book Writing Effective Use Cases (Addison-Wesley, 2001). In 2024 Jacobson and Cockburn published the Use Case Foundation, a joint definition of the concept. In testing, the ISTQB Foundation Level syllabus 2018 described use case testing as a separate technique; the syllabus 4.0 and its current version 4.0.1 no longer do. The ISTQB Advanced Level Test Analyst syllabus (version 4.0, 2025) treats use cases as models for scenario-based testing, and ISO/IEC/IEEE 29119-4:2021 describes scenario testing in clause 5.2.9.\u003C/p>\n\u003Ch2 id=\"the-problem-use-case-testing-solves\" class=\"wiki-heading\">The problem use case testing solves\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"the-problem-use-case-testing-solves\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Requirements are often written as a list of functions: the system validates the amount, the system sends a code, the system updates the balance. Each function can be tested on its own and still the user cannot reach the goal, because the functions do not work together in the order the user needs them. A list of functions also says little about what happens when something goes wrong in the middle of the flow.\u003C/p>\n\u003Cp>A use case describes the flow from the point of view of the actor and the goal. It contains the main path and, step by step, the conditions under which the path deviates: a wrong input, a timeout, a refusal of an external system. Cockburn's method asks the authors to brainstorm all the things that could go wrong in the successful scenario. \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"defect\">Defects\u003C/span> of error handling are found on these failure paths, and a list of functions does not show them as paths.\u003C/p>\n\u003Cp>Use case testing turns this structure into test cases. Each scenario of the use case becomes at least one test case, and the coverage of scenarios shows which paths of the user's goal have been checked.\u003C/p>\n\u003Ch2 id=\"history\" class=\"wiki-heading\">History\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"history\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>The table lists the milestones of use cases in requirements and in testing standards.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Date\u003C/th>\n\u003Cth>Event\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Late 1960s\u003C/td>\n\u003Ctd>Ivar Jacobson develops what later became use cases at Ericsson, according to Cockburn\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Late 1980s\u003C/td>\n\u003Ctd>Jacobson introduces use cases to the object-oriented community\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>2001\u003C/td>\n\u003Ctd>Alistair Cockburn, Writing Effective Use Cases, Addison-Wesley\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>11 November 2019\u003C/td>\n\u003Ctd>ISTQB Foundation Level syllabus 2018 V3.1 describes use case testing in section 4.2.5\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>October 2021\u003C/td>\n\u003Ctd>ISO/IEC/IEEE 29119-4, second edition, with scenario testing in clause 5.2.9\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>2023\u003C/td>\n\u003Ctd>ISTQB Foundation Level syllabus 4.0: four black-box techniques, use case testing is not among them\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>15 February 2024\u003C/td>\n\u003Ctd>Cockburn announces the Use Case Foundation, written with Jacobson\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>2 May 2025\u003C/td>\n\u003Ctd>ISTQB Advanced Level Test Analyst syllabus 4.0 with scenario-based testing in section 3.2.3\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch2 id=\"structure-of-a-use-case\" class=\"wiki-heading\">Structure of a use case\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"structure-of-a-use-case\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Cockburn's fully dressed template collects everything that has to be true about one goal. The fields relevant for testing are:\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Field\u003C/th>\n\u003Cth>Meaning\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Primary actor\u003C/td>\n\u003Ctd>The actor who initiates the use case to reach a goal\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Scope\u003C/td>\n\u003Ctd>The system under design\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Level\u003C/td>\n\u003Ctd>Summary goal, user goal or subfunction\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Stakeholders and interests\u003C/td>\n\u003Ctd>Who else is affected and what they need protected\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Precondition\u003C/td>\n\u003Ctd>What the system ensures is true before the use case starts\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Minimal guarantees\u003C/td>\n\u003Ctd>What is protected even when the goal is not reached\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Success guarantees\u003C/td>\n\u003Ctd>What is true when the goal is reached\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Trigger\u003C/td>\n\u003Ctd>The event that starts the use case\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Main success scenario\u003C/td>\n\u003Ctd>The numbered steps of the case in which nothing goes wrong\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Extensions\u003C/td>\n\u003Ctd>Conditions that deviate from the main scenario and their handling\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Technology and data variations\u003C/td>\n\u003Ctd>Different ways a step can be done, such as card or bank transfer\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>The Use Case Foundation calls the actor that initiates a use case the \u003Cstrong>primary actor\u003C/strong>, and the actors the system calls upon \u003Cstrong>supporting actors\u003C/strong>. An actor can be a person, an organization, a piece of software or a combination. In Cockburn's words, the \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"precondition\">preconditions\u003C/span> and guarantees say what must be true before and after the use case runs.\u003C/p>\n\u003Ch3 id=\"main-success-scenario-and-extensions\" class=\"wiki-heading\">Main success scenario and extensions\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"main-success-scenario-and-extensions\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>The \u003Cstrong>main success scenario\u003C/strong> is the scenario in which nothing goes wrong. It is a numbered list of steps, each an action of an actor or of the system. The Use Case Foundation describes it as the normal, happy path to value, also called the basic flow.\u003C/p>\n\u003Cp>An \u003Cstrong>extension\u003C/strong> is a condition that can occur at a step of the main scenario, together with the steps that handle it. Extensions are numbered by the step where the condition is detected and a letter: 3a and 3b are two different conditions at step 3, and 3a1, 3a2 are the handling steps of 3a. Cockburn's guideline is that the condition says what was detected, for example &quot;card expired&quot;, not what the actor did wrong. In the example below, some extensions return to a step of the main scenario, and others end the use case without reaching the goal.\u003C/p>\n\u003Cp>The Test Analyst syllabus distinguishes the same parts with other names: the main scenario, extensions, also called alternative scenarios, and exceptions, which fail to reach the goal because of unexpected actions or invalid input. The Use Case Foundation calls extensions alternate flows.\u003C/p>\n\u003Ch3 id=\"forms-of-a-use-case\" class=\"wiki-heading\">Forms of a use case\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"forms-of-a-use-case\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>Cockburn names two forms of writing. The \u003Cstrong>casual\u003C/strong> form &quot;short circuits&quot; the template and is written as a short narrative paragraph. The \u003Cstrong>fully dressed\u003C/strong> form uses the full template and the step numbering. According to Cockburn, casual use cases suit low-ceremony projects and fully dressed ones higher-ceremony projects, and neither is wrong.\u003C/p>\n\u003Cp>He also describes four levels of precision, from the actor's name and goal to the full handling of each extension:\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-3\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Precision level\u003C/th>\n\u003Cth>Content\u003C/th>\n\u003Cth>Supports in test design\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>1\u003C/td>\n\u003Ctd>Primary actor and goal\u003C/td>\n\u003Ctd>Scope of testing\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>2\u003C/td>\n\u003Ctd>Use case brief or main success scenario\u003C/td>\n\u003Ctd>Main path test case\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>3\u003C/td>\n\u003Ctd>Extension conditions\u003C/td>\n\u003Ctd>List of test cases\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>4\u003C/td>\n\u003Ctd>Extension handling steps\u003C/td>\n\u003Ctd>Expected results of each test case\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>A use case at level 2 is enough for one test case. Test cases with \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"expected-result\">expected results\u003C/span> for the failure paths need level 4: without the handling steps, the tester does not know what the system should do when the condition occurs.\u003C/p>\n\u003Ch2 id=\"a-worked-example\" class=\"wiki-heading\">A worked example\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"a-worked-example\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>The example is a fictional use case of an online bank in fully dressed form, shortened to the fields used for testing.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Field\u003C/th>\n\u003Cth>Value\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Use case\u003C/td>\n\u003Ctd>UC-7 Transfer money between own accounts\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Primary actor\u003C/td>\n\u003Ctd>Customer\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Supporting actor\u003C/td>\n\u003Ctd>SMS gateway\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Level\u003C/td>\n\u003Ctd>User goal\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Precondition\u003C/td>\n\u003Ctd>The customer is logged in and has at least two accounts\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Minimal guarantees\u003C/td>\n\u003Ctd>No money is moved without a confirmed code; every attempt is logged\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Success guarantees\u003C/td>\n\u003Ctd>The amount is debited from the source and credited to the target; both balances and the history show it\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Trigger\u003C/td>\n\u003Ctd>The customer selects &quot;Transfer&quot;\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>Main success scenario:\u003C/p>\n\u003Col>\n\u003Cli>The customer selects the source account, the target account and the amount.\u003C/li>\n\u003Cli>The system validates the transfer and shows a summary.\u003C/li>\n\u003Cli>The customer confirms the transfer.\u003C/li>\n\u003Cli>The system sends a one-time code through the SMS gateway.\u003C/li>\n\u003Cli>The customer enters the code.\u003C/li>\n\u003Cli>The system performs the transfer and shows a confirmation.\u003C/li>\n\u003C/ol>\n\u003Cp>Extensions:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>2a. Amount exceeds the available balance.\u003C/strong> 2a1. The system shows the available balance. The use case continues at step 1.\u003C/li>\n\u003Cli>\u003Cstrong>2b. Amount exceeds the daily limit.\u003C/strong> 2b1. The system shows the remaining limit. The use case continues at step 1.\u003C/li>\n\u003Cli>\u003Cstrong>3a. The customer cancels.\u003C/strong> The use case ends without a transfer.\u003C/li>\n\u003Cli>\u003Cstrong>5a. The code is wrong.\u003C/strong> 5a1. The system asks for the code again. 5a2. After the third wrong code the system cancels the transfer and the use case ends.\u003C/li>\n\u003Cli>\u003Cstrong>5b. The code has expired.\u003C/strong> 5b1. The system offers a new code. The use case continues at step 4.\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"from-a-use-case-to-test-cases\" class=\"wiki-heading\">From a use case to test cases\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"from-a-use-case-to-test-cases\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>The Test Analyst syllabus describes the derivation as building a scenario model from the action sequences of the use case and designing test cases that cover its scenarios. A scenario is a complete sequence of steps through the whole use case. Each extension adds at least one scenario: the main path up to the condition, the handling steps, and the rest of the path to success or to failure.\u003C/p>\n\u003Cp>The scenarios of UC-7 and their test cases:\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-4\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Test case\u003C/th>\n\u003Cth>Scenario\u003C/th>\n\u003Cth>Steps\u003C/th>\n\u003Cth>Expected result\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>UC7-1\u003C/td>\n\u003Ctd>Main success scenario\u003C/td>\n\u003Ctd>1-6\u003C/td>\n\u003Ctd>Balances changed, transfer in history\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>UC7-2\u003C/td>\n\u003Ctd>2a, then success\u003C/td>\n\u003Ctd>1, 2, 2a1, 1-6\u003C/td>\n\u003Ctd>Available balance shown, then transfer done\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>UC7-3\u003C/td>\n\u003Ctd>2b, then success\u003C/td>\n\u003Ctd>1, 2, 2b1, 1-6\u003C/td>\n\u003Ctd>Remaining limit shown, then transfer done\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>UC7-4\u003C/td>\n\u003Ctd>3a\u003C/td>\n\u003Ctd>1-3, 3a\u003C/td>\n\u003Ctd>No transfer, attempt logged\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>UC7-5\u003C/td>\n\u003Ctd>5a once, then success\u003C/td>\n\u003Ctd>1-5, 5a1, 5, 6\u003C/td>\n\u003Ctd>Second code accepted, transfer done\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>UC7-6\u003C/td>\n\u003Ctd>5a three times\u003C/td>\n\u003Ctd>1-5, 5a1, 5, 5a1, 5, 5a2\u003C/td>\n\u003Ctd>Transfer cancelled, balances unchanged\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>UC7-7\u003C/td>\n\u003Ctd>5b, then success\u003C/td>\n\u003Ctd>1-5, 5b1, 4-6\u003C/td>\n\u003Ctd>New code sent, transfer done\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>The fields of the use case go into the parts of the test case. The precondition becomes the precondition of the test case: a logged-in customer with two accounts. The trigger is the first step. The success guarantees are the expected result of every test case that reaches the goal, the minimal guarantees of every test case that fails: in UC7-4 and UC7-6 the test checks that no money has moved and that the attempt is in the log. The structure of a test case is described in the article \u003Ca href=\"/en/wiki/test-management/test-case\" class=\"wiki-link wiki-link--article\">Test case\u003C/a>.\u003C/p>\n\u003Cp>Supporting actors determine the \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"test-environment\">test environment\u003C/span>. The SMS gateway of UC-7 is an external system; tests of 5a and 5b need a way to receive the code or a test double that returns a known code and can let it expire.\u003C/p>\n\u003Cp>A scenario fixes the path, not the data. The amount in UC7-2 has to be above the balance, and the boundary between &quot;within the balance&quot; and &quot;above the balance&quot; is tested with the values chosen by \u003Ca href=\"/en/wiki/test-design/equivalence-partitioning-and-boundary-values\" class=\"wiki-link wiki-link--article\">equivalence partitioning and boundary values\u003C/a>. One scenario can therefore lead to several test cases, one per value.\u003C/p>\n\u003Ch2 id=\"coverage-of-a-use-case\" class=\"wiki-heading\">Coverage of a use case\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"coverage-of-a-use-case\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>The Test Analyst syllabus measures scenario coverage as the number of executed scenarios divided by the number of identified scenarios. In UC-7 seven scenarios are identified, and the seven test cases above cover them all. In the syllabus 2018 of the Foundation Level the same idea was expressed as the number of use case behaviors tested divided by the total number of behaviors.\u003C/p>\n\u003Cp>Coverage depends on which scenarios are identified. Two kinds of paths are not obvious:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Combinations of extensions.\u003C/strong> A customer can exceed the balance (2a), correct the amount and then enter a wrong code (5a). Covering each extension once does not cover such combinations; the syllabus recommends prioritizing scenarios by risk.\u003C/li>\n\u003Cli>\u003Cstrong>Loops.\u003C/strong> Extension 5a is a loop. For paths with loops the syllabus applies simple loop coverage: zero iterations, one, more than one, and the maximum where possible. For 5a these are a correct code at once (UC7-1), one wrong code (UC7-5), two wrong codes, and three wrong codes (UC7-6).\u003C/li>\n\u003C/ul>\n\u003Cblockquote>\n\u003Cp>Covering every extension is not the same as covering every requirement behind it. A use case can be complete as a flow and still omit a rule, for example a different daily limit for business customers. Use case coverage is read together with \u003Ca href=\"/en/wiki/test-management/requirements-traceability\" class=\"wiki-link wiki-link--article\">requirements coverage\u003C/a>.\u003C/p>\n\u003C/blockquote>\n\u003Ch2 id=\"use-cases-user-stories-and-acceptance-criteria\" class=\"wiki-heading\">Use cases, user stories and acceptance criteria\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"use-cases-user-stories-and-acceptance-criteria\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>A \u003Cstrong>user story\u003C/strong>, in the ISTQB glossary, is a requirement of one sentence in everyday or business language that captures the functionality a user needs and the reason behind it, together with acceptance criteria. A story is usually smaller than a use case: it can describe one step, one extension or one variation. The ISTQB Foundation Level syllabus 4.0.1 places this work in section 4.5, collaboration-based test approaches: collaborative user story writing, acceptance criteria and acceptance test-driven development. Cockburn has published a book about the relation between the two, Unifying User Stories, Use Cases, Story Maps.\u003C/p>\n\u003Cp>The two descriptions map onto each other. The main success scenario corresponds to the story of the main need, each extension to one or more acceptance criteria of a story: &quot;a wrong code can be entered three times&quot;, &quot;an expired code can be replaced&quot;. A use case gives the context that individual stories lack: the order of the steps and the full list of things that can go wrong.\u003C/p>\n\u003Ch3 id=\"gherkin-scenarios\" class=\"wiki-heading\">Gherkin scenarios\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"gherkin-scenarios\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>Gherkin scenarios are one way to write acceptance criteria that can also be executed. Cucumber's reference describes \u003Ccode>Given\u003C/code> as putting the system into a known state, \u003Ccode>When\u003C/code> as the action and \u003Ccode>Then\u003C/code> as the expected outcome; steps shared by all scenarios of a feature go into \u003Ccode>Background\u003C/code>. Each scenario of a use case becomes a Gherkin scenario. Two scenarios of UC-7:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"gherkin\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">gherkin\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Copied\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Copy\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Copied\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>Feature: Transfer money between own accounts\n\n  Background:\n    Given the customer is logged in\n    And the account &quot;Current&quot; has a balance of 500.00 USD\n    And the account &quot;Savings&quot; has a balance of 0.00 USD\n\n  Scenario: Transfer within the balance\n    When the customer transfers 200.00 USD from &quot;Current&quot; to &quot;Savings&quot;\n    And the customer confirms the transfer with a valid one-time code\n    Then the balance of &quot;Current&quot; is 300.00 USD\n    And the balance of &quot;Savings&quot; is 200.00 USD\n    And the transfer appears in the transaction history\n\n  Scenario: Third wrong code cancels the transfer\n    When the customer transfers 200.00 USD from &quot;Current&quot; to &quot;Savings&quot;\n    And the customer enters a wrong one-time code 3 times\n    Then the transfer is cancelled\n    And the balance of &quot;Current&quot; is 500.00 USD\n    And the attempt is logged\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>The precondition of the use case goes into \u003Ccode>Background\u003C/code>, the steps of the scenario into \u003Ccode>When\u003C/code>, the guarantees into \u003Ccode>Then\u003C/code>. The minimal guarantees become the \u003Ccode>Then\u003C/code> steps of the failure scenario. Gherkin scenarios derived from a \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"decision-table\">decision table\u003C/span> instead of a use case are described in \u003Ca href=\"/en/wiki/test-design/decision-table-testing\" class=\"wiki-link wiki-link--article\">decision table testing\u003C/a>.\u003C/p>\n\u003Ch2 id=\"use-case-testing-and-related-techniques\" class=\"wiki-heading\">Use case testing and related techniques\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"use-case-testing-and-related-techniques\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Several techniques also work with sequences or with business-level descriptions. The table compares them.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-4\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Technique\u003C/th>\n\u003Cth>Model\u003C/th>\n\u003Cth>Coverage items\u003C/th>\n\u003Cth>Point of view\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Use case testing\u003C/td>\n\u003Ctd>Use case with scenarios\u003C/td>\n\u003Ctd>Main scenario, extensions, exceptions\u003C/td>\n\u003Ctd>Actor and goal\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>State transition testing\u003C/td>\n\u003Ctd>States, events, transitions\u003C/td>\n\u003Ctd>States, transitions\u003C/td>\n\u003Ctd>Object and its events\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Decision table testing\u003C/td>\n\u003Ctd>Conditions, actions, rules\u003C/td>\n\u003Ctd>Feasible columns\u003C/td>\n\u003Ctd>One business rule\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Acceptance criteria of user stories\u003C/td>\n\u003Ctd>Story with criteria\u003C/td>\n\u003Ctd>Criteria\u003C/td>\n\u003Ctd>One user need\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>A use case and a state model describe sequences from different points of view. A use case follows one actor toward one goal and passes through several states of the objects it touches. A state model follows one object through all events from all actors. \u003Ca href=\"/en/wiki/test-design/state-transition-testing\" class=\"wiki-link wiki-link--article\">State transition testing\u003C/a> finds events in the wrong state, which a use case usually does not mention.\u003C/p>\n\u003Cp>Inside a single step, the use case often hides a rule with several conditions: step 2 of UC-7 checks both the balance and the daily limit. Such a rule is tested with a decision table, and the use case then contributes the path, the table the combinations.\u003C/p>\n\u003Ch2 id=\"terms\" class=\"wiki-heading\">Terms\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"terms\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Term\u003C/th>\n\u003Cth>Meaning\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Use case testing\u003C/td>\n\u003Ctd>Black-box test technique in which test cases are designed to exercise use case behaviors\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Use case\u003C/td>\n\u003Ctd>All the ways of using a system to achieve a particular goal for a particular user\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Primary actor\u003C/td>\n\u003Ctd>The actor that initiates a use case to achieve a goal\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Main success scenario\u003C/td>\n\u003Ctd>Numbered steps of a use case in which nothing goes wrong\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Extension\u003C/td>\n\u003Ctd>Condition at a step of the main success scenario, together with the steps that handle it\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Minimal guarantees\u003C/td>\n\u003Ctd>What a use case protects even when the goal is not reached\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Success guarantees\u003C/td>\n\u003Ctd>What is true after a use case has reached its goal\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Scenario\u003C/td>\n\u003Ctd>Complete sequence of steps through a use case\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>User story\u003C/td>\n\u003Ctd>One-sentence requirement in everyday or business language with the functionality a user needs, the reason and acceptance criteria\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch2 id=\"sources\" class=\"wiki-heading\">Sources\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"sources\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https://alistaircockburn.com/Use%20Case%20Foundation.pdf\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Use Case Foundation, version 1.1, I. Jacobson, A. Cockburn\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://alistaircockburn.com/Articles/Use-Case-Foundation-Ivar-Alistair\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Use Case Foundation, announcement, A. Cockburn, 15 February 2024\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://alistaircockburn.com/Everything-else\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Writing Effective Use Cases, A. Cockburn, Addison-Wesley, 2001; the author's list of books\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://atsqa.org/assets/documents/ISTQB-CTFL_Syllabus_2018_V3.1.pdf\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">ISTQB Certified Tester Foundation Level Syllabus 2018 V3.1, ISTQB, 2019\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://www.istqb.org/wp-content/uploads/2024/11/ISTQB_CTFL_Syllabus_v4.0.1.pdf\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">ISTQB Certified Tester Foundation Level Syllabus v4.0.1, ISTQB, 2024\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://www.istqb.org/wp-content/uploads/sdm-uploads/ISTQB-CTAL-TA-Syllabus-v4.0-EN-4.pdf\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">ISTQB Certified Tester Advanced Level Test Analyst Syllabus v4.0, ISTQB, 2025\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://glossary.istqb.org/\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">ISTQB Glossary\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://www.iso.org/standard/79430.html\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">ISO/IEC/IEEE 29119-4:2021, Software and systems engineering, Software testing, Part 4: Test techniques\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://cucumber.io/docs/gherkin/reference/\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Gherkin Reference, Cucumber\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003C/ul>\n",[10,14,17,20,24,27,30,33,36,39,42,45,48],{"id":11,"level":12,"text":13},"the-problem-use-case-testing-solves",2,"The problem use case testing solves",{"id":15,"level":12,"text":16},"history","History",{"id":18,"level":12,"text":19},"structure-of-a-use-case","Structure of a use case",{"id":21,"level":22,"text":23},"main-success-scenario-and-extensions",3,"Main success scenario and extensions",{"id":25,"level":22,"text":26},"forms-of-a-use-case","Forms of a use case",{"id":28,"level":12,"text":29},"a-worked-example","A worked example",{"id":31,"level":12,"text":32},"from-a-use-case-to-test-cases","From a use case to test cases",{"id":34,"level":12,"text":35},"coverage-of-a-use-case","Coverage of a use case",{"id":37,"level":12,"text":38},"use-cases-user-stories-and-acceptance-criteria","Use cases, user stories and acceptance criteria",{"id":40,"level":22,"text":41},"gherkin-scenarios","Gherkin scenarios",{"id":43,"level":12,"text":44},"use-case-testing-and-related-techniques","Use case testing and related techniques",{"id":46,"level":12,"text":47},"terms","Terms",{"id":49,"level":12,"text":50},"sources","Sources",2596,1793718928698]