[{"data":1,"prerenderedAt":52},["ShallowReactive",2],{"wiki-test-design-use-case-testing-ru":3},{"meta":4,"html":8,"headings":9,"words":51},{"title":5,"description":6,"published":7,"updated":7,"sourceUpdated":7},"Тестирование по вариантам использования","Тестирование по вариантам использования: структура по Кокберну, основной сценарий и расширения, вывод тест-кейсов, покрытие, юзер стори и Gherkin.","2026-11-03","\u003Cp>\u003Cstrong>Тестирование по вариантам использования\u003C/strong> (use case testing) - техника тестирования методом чёрного ящика, при которой \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"test-case\">тест-кейсы\u003C/span> строятся так, чтобы задействовать поведение, описанное вариантами использования. \u003Cstrong>Вариант использования\u003C/strong> (use case), в определении Ивара Якобсона (Ivar Jacobson) и Алистера Кокберна (Alistair Cockburn), - это все способы использовать систему, чтобы достичь определённой цели определённого пользователя. Тест-кейсы следуют основному успешному сценарию варианта использования и каждому из его расширений: альтернативным путям, необязательным шагам и ошибкам.\u003C/p>\n\u003Cp>Варианты использования пришли из инженерии требований. По словам Кокберна, Якобсон придумал то, что позже назвали вариантами использования, в конце 1960-х годов, когда работал над телефонными системами в Ericsson, а в конце 1980-х представил их сообществу объектно-ориентированного программирования. Структура, описанная в этой статье, следует книге Кокберна Writing Effective Use Cases (Addison-Wesley, 2001). В 2024 году Якобсон и Кокберн опубликовали Use Case Foundation - совместное определение понятия. В тестировании силлабус ISTQB Foundation Level 2018 года описывал тестирование по вариантам использования как отдельную технику; силлабус 4.0 и его текущая версия 4.0.1 этого уже не делают. Силлабус ISTQB Advanced Level Test Analyst (версия 4.0, 2025 год) рассматривает варианты использования как модели для тестирования на основе сценариев, а ISO/IEC/IEEE 29119-4:2021 описывает тестирование сценариев (scenario testing) в разделе 5.2.9.\u003C/p>\n\u003Ch2 id=\"какую-задачу-решает-тестирование-по-вариантам-использования\" class=\"wiki-heading\">Какую задачу решает тестирование по вариантам использования\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"какую-задачу-решает-тестирование-по-вариантам-использования\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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>Требования часто записывают списком функций: система проверяет сумму, система отправляет код, система обновляет баланс. Каждую функцию можно проверить отдельно, и всё равно пользователь не достигнет цели, потому что функции не работают вместе в том порядке, который ему нужен. Список функций к тому же мало говорит о том, что происходит, когда что-то идёт не так посередине процесса.\u003C/p>\n\u003Cp>Вариант использования описывает процесс с точки зрения актора и цели. Он содержит основной путь и, шаг за шагом, условия, при которых путь отклоняется: неверный ввод, истёкшее время ожидания, отказ внешней системы. Метод Кокберна требует от авторов перебрать всё, что может пойти не так в успешном сценарии. \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"defect\">Дефекты\u003C/span> обработки ошибок находятся на этих путях отказа, а список функций не показывает их как пути.\u003C/p>\n\u003Cp>Тестирование по вариантам использования превращает эту структуру в тест-кейсы. Каждый сценарий варианта использования становится хотя бы одним тест-кейсом, а покрытие сценариев показывает, какие пути к цели пользователя проверены.\u003C/p>\n\u003Ch2 id=\"история\" class=\"wiki-heading\">История\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"история\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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>В таблице - основные вехи вариантов использования в требованиях и в стандартах тестирования.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Дата\u003C/th>\n\u003Cth>Событие\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Конец 1960-х\u003C/td>\n\u003Ctd>Ивар Якобсон разрабатывает в Ericsson то, что позже стало вариантами использования, по словам Кокберна\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Конец 1980-х\u003C/td>\n\u003Ctd>Якобсон представляет варианты использования сообществу объектно-ориентированного программирования\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>2001\u003C/td>\n\u003Ctd>Алистер Кокберн, Writing Effective Use Cases, Addison-Wesley\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>11 ноября 2019\u003C/td>\n\u003Ctd>Силлабус ISTQB Foundation Level 2018 V3.1 описывает тестирование по вариантам использования в разделе 4.2.5\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Октябрь 2021\u003C/td>\n\u003Ctd>ISO/IEC/IEEE 29119-4, второе издание, с тестированием сценариев в разделе 5.2.9\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>2023\u003C/td>\n\u003Ctd>Силлабус ISTQB Foundation Level 4.0: четыре техники чёрного ящика, тестирования по вариантам использования среди них нет\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>15 февраля 2024\u003C/td>\n\u003Ctd>Кокберн объявляет о Use Case Foundation, написанном вместе с Якобсоном\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>2 мая 2025\u003C/td>\n\u003Ctd>Силлабус ISTQB Advanced Level Test Analyst 4.0 с тестированием на основе сценариев в разделе 3.2.3\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch2 id=\"структура-варианта-использования\" class=\"wiki-heading\">Структура варианта использования\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"структура-варианта-использования\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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>Полный шаблон Кокберна (fully dressed) собирает всё, что должно быть верно в отношении одной цели. Поля, важные для тестирования:\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Поле\u003C/th>\n\u003Cth>Значение\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Primary actor\u003C/td>\n\u003Ctd>Актор, который запускает вариант использования, чтобы достичь цели\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Scope\u003C/td>\n\u003Ctd>Проектируемая система\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Level\u003C/td>\n\u003Ctd>Обобщённая цель, цель пользователя или подфункция\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Stakeholders and interests\u003C/td>\n\u003Ctd>Кого ещё затрагивает процесс и что нужно защитить для них\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Precondition\u003C/td>\n\u003Ctd>Что система гарантирует до начала варианта использования\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Minimal guarantees\u003C/td>\n\u003Ctd>Что защищено, даже когда цель не достигнута\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Success guarantees\u003C/td>\n\u003Ctd>Что верно, когда цель достигнута\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Trigger\u003C/td>\n\u003Ctd>Событие, которое запускает вариант использования\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Main success scenario\u003C/td>\n\u003Ctd>Пронумерованные шаги случая, в котором ничего не идёт не так\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Extensions\u003C/td>\n\u003Ctd>Условия, отклоняющиеся от основного сценария, и их обработка\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Technology and data variations\u003C/td>\n\u003Ctd>Разные способы выполнить шаг, например картой или банковским переводом\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>Use Case Foundation называет актора, который запускает вариант использования, \u003Cstrong>основным актором\u003C/strong> (primary actor), а акторов, к которым обращается система, - \u003Cstrong>вспомогательными акторами\u003C/strong> (supporting actors). Актором может быть человек, организация, программа или их сочетание. По формулировке Кокберна, \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"precondition\">предусловия\u003C/span> и гарантии говорят, что должно быть верно до и после выполнения варианта использования.\u003C/p>\n\u003Ch3 id=\"основной-успешный-сценарий-и-расширения\" class=\"wiki-heading\">Основной успешный сценарий и расширения\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"основной-успешный-сценарий-и-расширения\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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>\u003Cstrong>Основной успешный сценарий\u003C/strong> (main success scenario) - сценарий, в котором ничего не идёт не так. Это пронумерованный список шагов, каждый из которых - действие актора или системы. Use Case Foundation описывает его как обычный успешный путь к ценности (happy path), который также называют основным потоком (basic flow).\u003C/p>\n\u003Cp>\u003Cstrong>Расширение\u003C/strong> (extension) - условие, которое может возникнуть на шаге основного сценария, вместе с шагами, которые его обрабатывают. Расширения нумеруются по шагу, на котором условие обнаружено, и букве: 3a и 3b - два разных условия на шаге 3, а 3a1, 3a2 - шаги обработки 3a. Правило Кокберна: условие говорит о том, что обнаружено, например «карта просрочена», а не о том, что актор сделал неправильно. В примере ниже одни расширения возвращают к шагу основного сценария, другие завершают вариант использования без достижения цели.\u003C/p>\n\u003Cp>Силлабус Test Analyst различает те же части под другими названиями: основной сценарий, расширения, они же альтернативные сценарии, и исключения, которые не достигают цели из-за неожиданных действий или неверного ввода. Use Case Foundation называет расширения альтернативными потоками (alternate flows).\u003C/p>\n\u003Ch3 id=\"формы-варианта-использования\" class=\"wiki-heading\">Формы варианта использования\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"формы-варианта-использования\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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>Кокберн называет две формы записи. \u003Cstrong>Неформальная форма\u003C/strong> (casual) «срезает» шаблон и пишется как короткое повествование. \u003Cstrong>Полная форма\u003C/strong> (fully dressed) использует весь шаблон и нумерацию шагов. По Кокберну, неформальные варианты использования подходят проектам с минимумом формальностей, полные - проектам с более строгими процедурами, и ни одна форма не ошибочна.\u003C/p>\n\u003Cp>Он также описывает четыре уровня точности, от имени актора и цели до полной обработки каждого расширения:\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-3\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Уровень точности\u003C/th>\n\u003Cth>Содержание\u003C/th>\n\u003Cth>Что даёт тест-дизайну\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>1\u003C/td>\n\u003Ctd>Основной актор и цель\u003C/td>\n\u003Ctd>Объём тестирования\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>2\u003C/td>\n\u003Ctd>Краткое описание (use case brief) или основной успешный сценарий\u003C/td>\n\u003Ctd>Тест-кейс основного пути\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>3\u003C/td>\n\u003Ctd>Условия расширений\u003C/td>\n\u003Ctd>Список тест-кейсов\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>4\u003C/td>\n\u003Ctd>Шаги обработки расширений\u003C/td>\n\u003Ctd>Ожидаемые результаты каждого тест-кейса\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>Варианта использования на уровне 2 хватает на один тест-кейс. Тест-кейсам с \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"expected-result\">ожидаемыми результатами\u003C/span> для путей отказа нужен уровень 4: без шагов обработки тестировщик не знает, что должна делать система, когда возникает условие.\u003C/p>\n\u003Ch2 id=\"разобранный-пример\" class=\"wiki-heading\">Разобранный пример\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"разобранный-пример\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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>Пример - вымышленный вариант использования интернет-банка в полной форме, сокращённый до полей, нужных для тестирования.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Поле\u003C/th>\n\u003Cth>Значение\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Use case\u003C/td>\n\u003Ctd>UC-7 Перевод денег между своими счетами\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Primary actor\u003C/td>\n\u003Ctd>Клиент\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Supporting actor\u003C/td>\n\u003Ctd>SMS-шлюз\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Level\u003C/td>\n\u003Ctd>Цель пользователя\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Precondition\u003C/td>\n\u003Ctd>Клиент вошёл в систему, и у него не меньше двух счетов\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Minimal guarantees\u003C/td>\n\u003Ctd>Деньги не перемещаются без подтверждённого кода; каждая попытка записывается в журнал\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Success guarantees\u003C/td>\n\u003Ctd>Сумма списана со счёта-источника и зачислена на счёт-получатель; это видно в обоих балансах и в истории\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Trigger\u003C/td>\n\u003Ctd>Клиент выбирает «Перевод»\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>Основной успешный сценарий:\u003C/p>\n\u003Col>\n\u003Cli>Клиент выбирает счёт-источник, счёт-получатель и сумму.\u003C/li>\n\u003Cli>Система проверяет перевод и показывает сводку.\u003C/li>\n\u003Cli>Клиент подтверждает перевод.\u003C/li>\n\u003Cli>Система отправляет одноразовый код через SMS-шлюз.\u003C/li>\n\u003Cli>Клиент вводит код.\u003C/li>\n\u003Cli>Система выполняет перевод и показывает подтверждение.\u003C/li>\n\u003C/ol>\n\u003Cp>Расширения:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>2a. Сумма превышает доступный остаток.\u003C/strong> 2a1. Система показывает доступный остаток. Вариант использования продолжается с шага 1.\u003C/li>\n\u003Cli>\u003Cstrong>2b. Сумма превышает дневной лимит.\u003C/strong> 2b1. Система показывает оставшийся лимит. Вариант использования продолжается с шага 1.\u003C/li>\n\u003Cli>\u003Cstrong>3a. Клиент отменяет перевод.\u003C/strong> Вариант использования завершается без перевода.\u003C/li>\n\u003Cli>\u003Cstrong>5a. Код неверный.\u003C/strong> 5a1. Система снова запрашивает код. 5a2. После третьего неверного кода система отменяет перевод, и вариант использования завершается.\u003C/li>\n\u003Cli>\u003Cstrong>5b. Срок действия кода истёк.\u003C/strong> 5b1. Система предлагает новый код. Вариант использования продолжается с шага 4.\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"от-варианта-использования-к-тест-кейсам\" class=\"wiki-heading\">От варианта использования к тест-кейсам\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"от-варианта-использования-к-тест-кейсам\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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 Analyst описывает вывод тест-кейсов так: из последовательностей действий варианта использования строится модель сценариев, и тест-кейсы проектируются так, чтобы покрыть её сценарии. Сценарий - полная последовательность шагов через весь вариант использования. Каждое расширение добавляет хотя бы один сценарий: основной путь до условия, шаги обработки и остаток пути до успеха или до отказа.\u003C/p>\n\u003Cp>Сценарии UC-7 и их тест-кейсы:\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-4\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Тест-кейс\u003C/th>\n\u003Cth>Сценарий\u003C/th>\n\u003Cth>Шаги\u003C/th>\n\u003Cth>Ожидаемый результат\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>UC7-1\u003C/td>\n\u003Ctd>Основной успешный сценарий\u003C/td>\n\u003Ctd>1-6\u003C/td>\n\u003Ctd>Балансы изменены, перевод в истории\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>UC7-2\u003C/td>\n\u003Ctd>2a, затем успех\u003C/td>\n\u003Ctd>1, 2, 2a1, 1-6\u003C/td>\n\u003Ctd>Показан доступный остаток, затем перевод выполнен\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>UC7-3\u003C/td>\n\u003Ctd>2b, затем успех\u003C/td>\n\u003Ctd>1, 2, 2b1, 1-6\u003C/td>\n\u003Ctd>Показан оставшийся лимит, затем перевод выполнен\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>Перевода нет, попытка в журнале\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>UC7-5\u003C/td>\n\u003Ctd>5a один раз, затем успех\u003C/td>\n\u003Ctd>1-5, 5a1, 5, 6\u003C/td>\n\u003Ctd>Второй код принят, перевод выполнен\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>UC7-6\u003C/td>\n\u003Ctd>5a три раза\u003C/td>\n\u003Ctd>1-5, 5a1, 5, 5a1, 5, 5a2\u003C/td>\n\u003Ctd>Перевод отменён, балансы не изменились\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>UC7-7\u003C/td>\n\u003Ctd>5b, затем успех\u003C/td>\n\u003Ctd>1-5, 5b1, 4-6\u003C/td>\n\u003Ctd>Отправлен новый код, перевод выполнен\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>Поля варианта использования переходят в части тест-кейса. Предусловие варианта использования становится предусловием тест-кейса: клиент вошёл в систему, у него два счёта. Триггер - первый шаг. Гарантии успеха - ожидаемый результат каждого тест-кейса, который достигает цели, минимальные гарантии - каждого тест-кейса, который заканчивается отказом: в UC7-4 и UC7-6 тест проверяет, что деньги не переместились и что попытка есть в журнале. Структура тест-кейса описана в статье \u003Ca href=\"/ru/wiki/test-management/test-case\" class=\"wiki-link wiki-link--article\">Тест-кейс\u003C/a>.\u003C/p>\n\u003Cp>Вспомогательные акторы определяют \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"test-environment\">тестовое окружение\u003C/span>. SMS-шлюз в UC-7 - внешняя система; тестам 5a и 5b нужен способ получить код или тестовый двойник, который возвращает известный код и умеет делать его просроченным.\u003C/p>\n\u003Cp>Сценарий задаёт путь, а не данные. Сумма в UC7-2 должна быть больше остатка, а граница между «в пределах остатка» и «больше остатка» проверяется значениями, выбранными по статье \u003Ca href=\"/ru/wiki/test-design/equivalence-partitioning-and-boundary-values\" class=\"wiki-link wiki-link--article\">Классы эквивалентности и граничные значения\u003C/a>. Поэтому один сценарий может дать несколько тест-кейсов, по одному на значение.\u003C/p>\n\u003Ch2 id=\"покрытие-варианта-использования\" class=\"wiki-heading\">Покрытие варианта использования\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"покрытие-варианта-использования\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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 Analyst измеряет покрытие сценариев как число выполненных сценариев, делённое на число выявленных сценариев. В UC-7 выявлено семь сценариев, и семь тест-кейсов выше покрывают их все. В силлабусе Foundation Level 2018 года та же идея выражалась как число проверенных вариантов поведения варианта использования, делённое на общее число вариантов поведения.\u003C/p>\n\u003Cp>Покрытие зависит от того, какие сценарии выявлены. Два вида путей неочевидны:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Сочетания расширений.\u003C/strong> Клиент может превысить остаток (2a), исправить сумму, а затем ввести неверный код (5a). Покрытие каждого расширения по одному разу не покрывает таких сочетаний; силлабус рекомендует расставлять приоритеты сценариев по риску.\u003C/li>\n\u003Cli>\u003Cstrong>Циклы.\u003C/strong> Расширение 5a - цикл. Для путей с циклами силлабус применяет простое покрытие циклов: ноль итераций, одна, больше одной и максимальное число, если это возможно. Для 5a это верный код сразу (UC7-1), один неверный код (UC7-5), два неверных кода и три неверных кода (UC7-6).\u003C/li>\n\u003C/ul>\n\u003Cblockquote>\n\u003Cp>Покрыть каждое расширение - не то же самое, что покрыть каждое требование за ним. Вариант использования может быть полным как процесс и всё же пропускать правило, например другой дневной лимит для корпоративных клиентов. Покрытие вариантов использования читают вместе с \u003Ca href=\"/ru/wiki/test-management/requirements-traceability\" class=\"wiki-link wiki-link--article\">покрытием требований\u003C/a>.\u003C/p>\n\u003C/blockquote>\n\u003Ch2 id=\"варианты-использования-юзер-стори-и-критерии-приёмки\" class=\"wiki-heading\">Варианты использования, юзер стори и критерии приёмки\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"варианты-использования-юзер-стори-и-критерии-приёмки\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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>\u003Cstrong>Юзер стори\u003C/strong> (user story), в определении глоссария ISTQB, - требование из одного предложения на повседневном или деловом языке, которое описывает нужную пользователю функциональность и причину, по которой она нужна, вместе с критериями приёмки. Юзер стори обычно меньше варианта использования: она может описывать один шаг, одно расширение или одну вариацию. Силлабус ISTQB Foundation Level 4.0.1 помещает эту работу в раздел 4.5, подходы к тестированию на основе совместной работы: совместное написание юзер стори, критерии приёмки и разработка через приёмочные тесты (acceptance test-driven development). Кокберн опубликовал книгу о связи между ними, Unifying User Stories, Use Cases, Story Maps.\u003C/p>\n\u003Cp>Два описания отображаются друг на друга. Основной успешный сценарий соответствует юзер стори об основной потребности, каждое расширение - одному или нескольким критериям приёмки: «неверный код можно ввести три раза», «просроченный код можно заменить». Вариант использования даёт контекст, которого нет у отдельных юзер стори: порядок шагов и полный список того, что может пойти не так.\u003C/p>\n\u003Ch3 id=\"сценарии-gherkin\" class=\"wiki-heading\">Сценарии Gherkin\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"сценарии-gherkin\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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 - один из способов записать критерии приёмки так, чтобы их можно было ещё и выполнить. Справочник Cucumber описывает \u003Ccode>Given\u003C/code> как приведение системы в известное состояние, \u003Ccode>When\u003C/code> - как действие, а \u003Ccode>Then\u003C/code> - как ожидаемый результат; шаги, общие для всех сценариев функции, помещаются в \u003Ccode>Background\u003C/code>. Каждый сценарий варианта использования становится сценарием Gherkin. Два сценария 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=\"Скопировано\">\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\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\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>Предусловие варианта использования переходит в \u003Ccode>Background\u003C/code>, шаги сценария - в \u003Ccode>When\u003C/code>, гарантии - в \u003Ccode>Then\u003C/code>. Минимальные гарантии становятся шагами \u003Ccode>Then\u003C/code> сценария отказа. Сценарии Gherkin, выведенные не из варианта использования, а из \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"decision-table\">таблицы решений\u003C/span>, описаны в статье \u003Ca href=\"/ru/wiki/test-design/decision-table-testing\" class=\"wiki-link wiki-link--article\">Таблицы решений\u003C/a>.\u003C/p>\n\u003Ch2 id=\"тестирование-по-вариантам-использования-и-смежные-техники\" class=\"wiki-heading\">Тестирование по вариантам использования и смежные техники\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"тестирование-по-вариантам-использования-и-смежные-техники\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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>Несколько техник тоже работают с последовательностями или с описаниями на уровне бизнеса. Таблица сравнивает их.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-4\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Техника\u003C/th>\n\u003Cth>Модель\u003C/th>\n\u003Cth>Элементы покрытия\u003C/th>\n\u003Cth>Точка зрения\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Тестирование по вариантам использования\u003C/td>\n\u003Ctd>Вариант использования со сценариями\u003C/td>\n\u003Ctd>Основной сценарий, расширения, исключения\u003C/td>\n\u003Ctd>Актор и цель\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Тестирование переходов состояний\u003C/td>\n\u003Ctd>Состояния, события, переходы\u003C/td>\n\u003Ctd>Состояния, переходы\u003C/td>\n\u003Ctd>Объект и его события\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Тестирование с таблицами решений\u003C/td>\n\u003Ctd>Условия, действия, правила\u003C/td>\n\u003Ctd>Выполнимые столбцы\u003C/td>\n\u003Ctd>Одно бизнес-правило\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Критерии приёмки юзер стори\u003C/td>\n\u003Ctd>Юзер стори с критериями\u003C/td>\n\u003Ctd>Критерии\u003C/td>\n\u003Ctd>Одна потребность пользователя\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>Вариант использования и модель состояний описывают последовательности с разных точек зрения. Вариант использования следует за одним актором к одной цели и проходит через несколько состояний объектов, которых касается. Модель состояний следует за одним объектом через все события от всех акторов. \u003Ca href=\"/ru/wiki/test-design/state-transition-testing\" class=\"wiki-link wiki-link--article\">Тестирование переходов состояний\u003C/a> находит события в неподходящем состоянии, о которых вариант использования обычно не упоминает.\u003C/p>\n\u003Cp>Внутри одного шага вариант использования часто скрывает правило с несколькими условиями: шаг 2 в UC-7 проверяет и остаток, и дневной лимит. Такое правило проверяют таблицей решений, и тогда вариант использования даёт путь, а таблица - сочетания.\u003C/p>\n\u003Ch2 id=\"термины\" class=\"wiki-heading\">Термины\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"термины\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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>Термин\u003C/th>\n\u003Cth>Значение\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Тестирование по вариантам использования (use case testing)\u003C/td>\n\u003Ctd>Техника тестирования методом чёрного ящика, при которой тест-кейсы задействуют поведение, описанное вариантами использования\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Вариант использования (use case)\u003C/td>\n\u003Ctd>Все способы использовать систему, чтобы достичь определённой цели определённого пользователя\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Основной актор (primary actor)\u003C/td>\n\u003Ctd>Актор, который запускает вариант использования, чтобы достичь цели\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Основной успешный сценарий (main success scenario)\u003C/td>\n\u003Ctd>Пронумерованные шаги варианта использования, в которых ничего не идёт не так\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Расширение (extension)\u003C/td>\n\u003Ctd>Условие на шаге основного успешного сценария вместе с шагами, которые его обрабатывают\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Минимальные гарантии (minimal guarantees)\u003C/td>\n\u003Ctd>То, что вариант использования защищает, даже когда цель не достигнута\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Гарантии успеха (success guarantees)\u003C/td>\n\u003Ctd>То, что верно после того, как вариант использования достиг цели\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Сценарий (scenario)\u003C/td>\n\u003Ctd>Полная последовательность шагов через вариант использования\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Юзер стори (user story)\u003C/td>\n\u003Ctd>Требование из одного предложения на повседневном или деловом языке с нужной пользователю функциональностью, причиной и критериями приёмки\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch2 id=\"источники\" class=\"wiki-heading\">Источники\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"источники\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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\">(откроется в новой вкладке)\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\">(откроется в новой вкладке)\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\">(откроется в новой вкладке)\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\">(откроется в новой вкладке)\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\">(откроется в новой вкладке)\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\">(откроется в новой вкладке)\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\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\">(откроется в новой вкладке)\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\">(откроется в новой вкладке)\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\">(откроется в новой вкладке)\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},"какую-задачу-решает-тестирование-по-вариантам-использования",2,"Какую задачу решает тестирование по вариантам использования",{"id":15,"level":12,"text":16},"история","История",{"id":18,"level":12,"text":19},"структура-варианта-использования","Структура варианта использования",{"id":21,"level":22,"text":23},"основной-успешный-сценарий-и-расширения",3,"Основной успешный сценарий и расширения",{"id":25,"level":22,"text":26},"формы-варианта-использования","Формы варианта использования",{"id":28,"level":12,"text":29},"разобранный-пример","Разобранный пример",{"id":31,"level":12,"text":32},"от-варианта-использования-к-тест-кейсам","От варианта использования к тест-кейсам",{"id":34,"level":12,"text":35},"покрытие-варианта-использования","Покрытие варианта использования",{"id":37,"level":12,"text":38},"варианты-использования-юзер-стори-и-критерии-приёмки","Варианты использования, юзер стори и критерии приёмки",{"id":40,"level":22,"text":41},"сценарии-gherkin","Сценарии Gherkin",{"id":43,"level":12,"text":44},"тестирование-по-вариантам-использования-и-смежные-техники","Тестирование по вариантам использования и смежные техники",{"id":46,"level":12,"text":47},"термины","Термины",{"id":49,"level":12,"text":50},"источники","Источники",2256,1793718893051]