[{"data":1,"prerenderedAt":64},["ShallowReactive",2],{"wiki-test-management-test-case-en":3},{"meta":4,"html":8,"headings":9,"words":63},{"title":5,"description":6,"published":7,"updated":7},"Test case","A test case: preconditions, steps, expected results and postconditions, atomicity, parameterization, priority, life cycle statuses and custom properties.","2026-11-03","\u003Cp>A \u003Cstrong>test case\u003C/strong> is a description of one check of a product: the state in which the check starts, the actions performed, the expected results and the state after the check. The ISTQB glossary defines a test case as a set of preconditions, inputs, actions (where applicable), expected results and postconditions, developed based on test conditions.\u003C/p>\n\u003Cp>The structure of a test case is described by ISO/IEC/IEEE 29119-3, the international standard for test documentation (current edition 2021), as part of the test case specification document. Before 2013 the same role was played by IEEE 829, the IEEE standard for software test documentation. In a \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"test-management-system\">test management system\u003C/span> a test case is the central entity: \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"test-suite\">test suites\u003C/span> group test cases, \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"test-run\">test runs\u003C/span> execute them, results and \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"defect\">defects\u003C/span> refer to them. The system as a whole is described in the article \u003Ca href=\"/en/wiki/test-management/what-is-a-test-management-system\" class=\"wiki-link wiki-link--article\">What is a test management system\u003C/a>.\u003C/p>\n\u003Ch2 id=\"what-a-test-case-is-for\" class=\"wiki-heading\">What a test case is for\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"what-a-test-case-is-for\" 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 check that is not written down exists only in the head of the person who performs it. It cannot be repeated by someone else in the same way, it cannot be reviewed before execution, and its result cannot be compared with the result of the previous release.\u003C/p>\n\u003Cp>A written test case solves these problems:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Repeatability.\u003C/strong> Two people who execute the same test case on the same version of the product obtain the same result, because the conditions, actions and expected results are fixed.\u003C/li>\n\u003Cli>\u003Cstrong>Review.\u003C/strong> Test cases are reviewed before execution, like any other work product. Errors in a test are cheaper to find in its text than in its results.\u003C/li>\n\u003Cli>\u003Cstrong>History.\u003C/strong> Every execution of a test case leaves a result. The results of one test case across releases show when a behavior changed.\u003C/li>\n\u003Cli>\u003Cstrong>Coverage.\u003C/strong> A test case is linked to the requirements or risks it checks. The links show what is covered by tests and what is not.\u003C/li>\n\u003Cli>\u003Cstrong>Regression.\u003C/strong> A set of test cases is executed again after changes to the product. Without written cases, \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"regression-testing\">regression testing\u003C/span> depends on the memory of the testers.\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"structure-of-a-test-case\" class=\"wiki-heading\">Structure of a test case\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"structure-of-a-test-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 ISTQB definition lists the parts of a test case. Test management systems add an identifier, a title and attributes.\u003C/p>\n\u003Ch3 id=\"identifier-and-title\" class=\"wiki-heading\">Identifier and title\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"identifier-and-title\" 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 identifier is unique within the project and does not change when the test case is edited: results, defects and links to requirements refer to it. The title states what is checked, in terms of behavior: &quot;Payment with an expired card is rejected&quot; rather than &quot;Payment test 3&quot;.\u003C/p>\n\u003Ch3 id=\"objective-and-traceability\" class=\"wiki-heading\">Objective and traceability\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"objective-and-traceability\" 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 objective states which test condition the test case checks. A test condition, in the ISTQB glossary, is a testable aspect of a component or system identified as a basis for testing. The objective is recorded as a link to a requirement, a \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"user-story\">user story\u003C/span>, an acceptance criterion or a risk. These links are the basis of \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"requirements-traceability\">requirements traceability\u003C/span>, described in the article \u003Ca href=\"/en/wiki/test-management/requirements-traceability\" class=\"wiki-link wiki-link--article\">Requirements traceability and coverage\u003C/a>.\u003C/p>\n\u003Ch3 id=\"preconditions\" class=\"wiki-heading\">Preconditions\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"preconditions\" 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>A \u003Cstrong>precondition\u003C/strong> is the required state of a test item and its \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"test-environment\">test environment\u003C/span> before test execution. Preconditions include the version of the product, the configuration of the environment, existing data and the state of the user: &quot;The user is signed in. The cart contains one item. A saved card with the expiry date 01/2025 is linked to the account.&quot;\u003C/p>\n\u003Cp>A precondition is written so that it can be checked and established. &quot;The system is in a normal state&quot; cannot be checked. &quot;The order list of the user is empty&quot; can.\u003C/p>\n\u003Ch3 id=\"steps-and-expected-results\" class=\"wiki-heading\">Steps and expected results\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"steps-and-expected-results\" 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>A \u003Cstrong>test step\u003C/strong> is a single interaction between an actor and the test object: an input, an action and an expected result. An \u003Cstrong>expected result\u003C/strong> is the observable predicted behavior of the test item under specified conditions, based on its test basis.\u003C/p>\n\u003Cp>The expected result of each step is written so that the person executing the test can compare it with what is observed without interpretation. &quot;The page works correctly&quot; cannot be compared. &quot;The message 'Card expired' is shown under the card field, the order is not created&quot; can.\u003C/p>\n\u003Cp>The example below is a test case with three steps:\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-3\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>No.\u003C/th>\n\u003Cth>Action\u003C/th>\n\u003Cth>Expected result\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>1\u003C/td>\n\u003Ctd>Open the cart and click &quot;Checkout&quot;\u003C/td>\n\u003Ctd>The payment page opens, the saved card is selected\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>2\u003C/td>\n\u003Ctd>Click &quot;Pay&quot;\u003C/td>\n\u003Ctd>The message &quot;Card expired&quot; is shown under the card field\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>3\u003C/td>\n\u003Ctd>Open the order list\u003C/td>\n\u003Ctd>The list is empty\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>Not every step needs its own expected result. A step that only prepares the next one (&quot;Enter the amount 100&quot;) can be combined with the step whose result is checked.\u003C/p>\n\u003Ch3 id=\"postconditions\" class=\"wiki-heading\">Postconditions\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"postconditions\" 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>A \u003Cstrong>postcondition\u003C/strong> is the expected state of the test item and its environment at the end of the test case. Postconditions describe what remains after the test, such as created records or changed settings, and what has to be cleaned up so that the next test starts from a known state.\u003C/p>\n\u003Ch3 id=\"test-data\" class=\"wiki-heading\">Test data\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"test-data\" 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>Test data are the values a test case uses: accounts, amounts, dates, files. They are written in the test case itself, in a separate table or in a referenced data set. Test data that depend on the environment (an account that exists only on one stand) are stated explicitly, otherwise the test case cannot be executed in another environment.\u003C/p>\n\u003Ch3 id=\"high-level-and-low-level-test-cases\" class=\"wiki-heading\">High-level and low-level test cases\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"high-level-and-low-level-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/h3>\n\u003Cp>The ISTQB glossary distinguishes two levels of detail. A \u003Cstrong>high-level test case\u003C/strong> has abstract preconditions, inputs, expected results and actions: &quot;Pay with an expired card&quot;. A \u003Cstrong>low-level test case\u003C/strong> has concrete values and a detailed description of actions: the card number, the date, the exact text of the message.\u003C/p>\n\u003Cp>High-level test cases are faster to write and leave room for the experience of the tester. Low-level test cases give the same result in the hands of any executor and are a direct basis for automation. The choice depends on the qualification of the testers, the risk of the area and the requirements of the project for repeatability and audit.\u003C/p>\n\u003Ch2 id=\"atomicity\" class=\"wiki-heading\">Atomicity\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"atomicity\" 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>An atomic test case checks one test condition and has one reason to fail. The status of its result then has one meaning: &quot;failed&quot; points to one behavior.\u003C/p>\n\u003Cp>A test case that checks several conditions at once (&quot;registration, sign-in and password change&quot;) has several problems:\u003C/p>\n\u003Cul>\n\u003Cli>if the second check fails, the third is not executed, and its status remains unknown;\u003C/li>\n\u003Cli>the status &quot;failed&quot; does not say which of the behaviors is broken;\u003C/li>\n\u003Cli>coverage is overstated: one passed result is counted for three requirements, although only part of the case may have been executed.\u003C/li>\n\u003C/ul>\n\u003Cp>Atomicity does not mean one step. A test case often needs several steps to reach the state in which the check is performed. What it means is one checked behavior, with the preceding steps as setup.\u003C/p>\n\u003Ch2 id=\"parameterization\" class=\"wiki-heading\">Parameterization\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"parameterization\" 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>Many checks differ only in data: the same steps with different amounts, currencies or user roles. Parameterization separates the steps from the data. The test case is written once with parameters, and a data table lists the combinations:\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-3\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Role\u003C/th>\n\u003Cth>Amount\u003C/th>\n\u003Cth>Expected result\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Customer\u003C/td>\n\u003Ctd>100.00\u003C/td>\n\u003Ctd>The payment is accepted\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Customer\u003C/td>\n\u003Ctd>0.00\u003C/td>\n\u003Ctd>The message &quot;Enter an amount greater than zero&quot;\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Guest\u003C/td>\n\u003Ctd>100.00\u003C/td>\n\u003Ctd>The sign-in page opens\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>Each row of the table is executed and recorded as a separate result. A change in the steps is made in one place for all combinations.\u003C/p>\n\u003Cp>In test automation the same approach is called \u003Cstrong>data-driven testing\u003C/strong>: the test data and expected results are stored separately from the test script. Test frameworks support it directly. In pytest, for example, one test function is run for each set of parameters:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"python\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">python\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>import pytest\n\n\n@pytest.mark.parametrize(\n    (&quot;amount&quot;, &quot;accepted&quot;),\n    [(&quot;100.00&quot;, True), (&quot;0.00&quot;, False)],\n)\ndef test_payment_amount(checkout, amount, accepted):\n    result = checkout.pay(amount)\n    assert result.accepted is accepted\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>How to choose the parameter values so that a small number of rows covers the significant cases is described in the series on test design: \u003Ca href=\"/en/wiki/test-design/equivalence-partitioning-and-boundary-values\" class=\"wiki-link wiki-link--article\">Equivalence partitioning and boundary values\u003C/a> and \u003Ca href=\"/en/wiki/test-design/pairwise-testing\" class=\"wiki-link wiki-link--article\">Pairwise testing\u003C/a>.\u003C/p>\n\u003Ch2 id=\"priority\" class=\"wiki-heading\">Priority\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"priority\" 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>Priority defines the order in which test cases are executed when not all of them can be executed or when the most important ones are needed first. The ISTQB Foundation Level syllabus (version 4.0.1) names three common approaches to prioritization:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>risk-based\u003C/strong>: test cases that check the highest risks are executed first;\u003C/li>\n\u003Cli>\u003Cstrong>coverage-based\u003C/strong>: test cases that achieve the highest coverage are executed first;\u003C/li>\n\u003Cli>\u003Cstrong>requirements-based\u003C/strong>: the order follows the priorities of the requirements set by stakeholders.\u003C/li>\n\u003C/ul>\n\u003Cp>Dependencies between test cases also affect the order: a test case that needs data created by another is executed after it.\u003C/p>\n\u003Cp>The priority of a test case is a separate attribute from the priority of a defect. The first is about the order of execution, the second about the order of fixing. The two are described separately in the article \u003Ca href=\"/en/wiki/test-management/defect-report\" class=\"wiki-link wiki-link--article\">Defect report\u003C/a>.\u003C/p>\n\u003Ch2 id=\"life-cycle-statuses\" class=\"wiki-heading\">Life cycle statuses\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"life-cycle-statuses\" 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 test case is a work product with its own life cycle: it is written, reviewed, used, updated and retired. Standards do not define a fixed set of statuses, and each system or team sets its own. A typical set:\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Status\u003C/th>\n\u003Cth>Meaning\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Draft\u003C/td>\n\u003Ctd>The test case is being written and is not used in runs\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>In review\u003C/td>\n\u003Ctd>The test case is waiting for review\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Active\u003C/td>\n\u003Ctd>The test case is approved and used in runs\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Needs update\u003C/td>\n\u003Ctd>The product or the requirement has changed, and the test case no longer matches it\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Deprecated\u003C/td>\n\u003Ctd>The test case is no longer used, but its results are kept\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>The status of a test case and the status of its result are different things. &quot;Active&quot; says that the description can be used. &quot;Passed&quot; or &quot;failed&quot; says what happened in one execution.\u003C/p>\n\u003Cp>A test case is not deleted when it becomes obsolete. Its results belong to past runs and reports, and deleting it would change the history. It is moved to a final status and excluded from new runs.\u003C/p>\n\u003Cp>Changes to a test case are versioned. A result refers to the version of the test case that was executed. Without this, a result from last year would point to steps that were written later.\u003C/p>\n\u003Ch2 id=\"custom-properties\" class=\"wiki-heading\">Custom properties\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"custom-properties\" 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>Test management systems allow teams to add their own fields to a test case: \u003Cstrong>custom properties\u003C/strong>. Typical examples are the component, the platform, the type of test (functional, performance, security), the automation status (manual, automated, to be automated) and the level of risk.\u003C/p>\n\u003Cp>\u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"custom-property\">Custom properties\u003C/span> serve three purposes: filtering when a run is assembled (&quot;all active test cases of the Payment component for Android&quot;), grouping in reports, and mapping data when test cases are transferred between systems. The last purpose is described in the article \u003Ca href=\"/en/wiki/test-management/migrating-test-management-systems\" class=\"wiki-link wiki-link--article\">Migration between test management systems\u003C/a>.\u003C/p>\n\u003Ch2 id=\"test-case-and-other-forms-of-test-description\" class=\"wiki-heading\">Test case and other forms of test description\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"test-case-and-other-forms-of-test-description\" 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 test case is one of several ways to describe a test. The table compares it with the forms most often used alongside it.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-3\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Form\u003C/th>\n\u003Cth>What it fixes\u003C/th>\n\u003Cth>Typical use\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Test case\u003C/td>\n\u003Ctd>Preconditions, steps, expected results, postconditions\u003C/td>\n\u003Ctd>Repeatable checks, regression, audit\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Checklist\u003C/td>\n\u003Ctd>A list of conditions to check, without steps\u003C/td>\n\u003Ctd>Experienced testers, quick regression, reviews\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Test charter\u003C/td>\n\u003Ctd>The objective and scope of an exploratory session, without steps\u003C/td>\n\u003Ctd>Exploratory testing\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Gherkin scenario\u003C/td>\n\u003Ctd>Behavior in the form Given / When / Then\u003C/td>\n\u003Ctd>Behavior-driven development, executable specifications\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Automated test\u003C/td>\n\u003Ctd>Steps and checks as code\u003C/td>\n\u003Ctd>Regression in CI\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>A checklist and a test charter leave the actions to the tester. This makes them faster to write but less repeatable: two executions of the same checklist item can differ. A test case fixes the actions and gives the same result regardless of the executor.\u003C/p>\n\u003Cp>A Gherkin scenario has the same parts as a test case: \u003Ccode>Given\u003C/code> corresponds to preconditions, \u003Ccode>When\u003C/code> to actions, \u003Ccode>Then\u003C/code> to expected results.\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: Payment\n\n  Scenario: Payment with an expired card is rejected\n    Given the user is signed in\n    And a saved card with the expiry date 01/2025 is linked to the account\n    When the user pays for the cart with the saved card\n    Then the message &quot;Card expired&quot; is shown\n    And no order is created\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>An automated test is often written from a test case, and the test case remains as its description. The link between them is kept in the test management system: the result of the automated test is recorded as a result of the test case.\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>Test case\u003C/td>\n\u003Ctd>Set of preconditions, inputs, actions, expected results and postconditions, developed based on test conditions\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Test condition\u003C/td>\n\u003Ctd>Testable aspect of a component or system identified as a basis for testing\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Precondition\u003C/td>\n\u003Ctd>Required state of a test item and its test environment before test execution\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Test step\u003C/td>\n\u003Ctd>Single interaction between an actor and a test object: an input, an action and an expected result\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Expected result\u003C/td>\n\u003Ctd>Observable predicted behavior of a test item under specified conditions, based on its test basis\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Postcondition\u003C/td>\n\u003Ctd>Expected state of a test item and its environment at the end of test case execution\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>High-level test case\u003C/td>\n\u003Ctd>Test case with abstract preconditions, inputs, expected results and actions\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Low-level test case\u003C/td>\n\u003Ctd>Test case with concrete values and a detailed description of actions\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Atomic test case\u003C/td>\n\u003Ctd>Test case that checks one test condition and has one reason to fail\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Data-driven testing\u003C/td>\n\u003Ctd>Approach in which test data and expected results are stored separately from the test steps\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://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://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/79429.html\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">ISO/IEC/IEEE 29119-3:2021, Software testing, Part 3: Test documentation\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://standards.ieee.org/ieee/829/3787/\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">IEEE 829-2008, Standard for Software and System Test Documentation\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://docs.pytest.org/en/stable/how-to/parametrize.html\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">How to parametrize fixtures and test functions, pytest documentation\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,21,24,27,30,33,36,39,42,45,48,51,54,57,60],{"id":11,"level":12,"text":13},"what-a-test-case-is-for",2,"What a test case is for",{"id":15,"level":12,"text":16},"structure-of-a-test-case","Structure of a test case",{"id":18,"level":19,"text":20},"identifier-and-title",3,"Identifier and title",{"id":22,"level":19,"text":23},"objective-and-traceability","Objective and traceability",{"id":25,"level":19,"text":26},"preconditions","Preconditions",{"id":28,"level":19,"text":29},"steps-and-expected-results","Steps and expected results",{"id":31,"level":19,"text":32},"postconditions","Postconditions",{"id":34,"level":19,"text":35},"test-data","Test data",{"id":37,"level":19,"text":38},"high-level-and-low-level-test-cases","High-level and low-level test cases",{"id":40,"level":12,"text":41},"atomicity","Atomicity",{"id":43,"level":12,"text":44},"parameterization","Parameterization",{"id":46,"level":12,"text":47},"priority","Priority",{"id":49,"level":12,"text":50},"life-cycle-statuses","Life cycle statuses",{"id":52,"level":12,"text":53},"custom-properties","Custom properties",{"id":55,"level":12,"text":56},"test-case-and-other-forms-of-test-description","Test case and other forms of test description",{"id":58,"level":12,"text":59},"terms","Terms",{"id":61,"level":12,"text":62},"sources","Sources",2124,1793718897800]