Требования: анализ, типы и поиск неоднозначностей
Зачем тестировщику разбираться в требованиях
В предыдущей статье мы говорили, что QA приносит максимум пользы, когда подключается как можно раньше — уже на этапе требований в SDLC. Это не «чужая зона ответственности», а точка, где можно дешево предотвратить дорогие дефекты.
Для ручного тестирования требования важны по двум причинам:
они задают ожидаемое поведение продукта
они дают основу для тестов, чек-листов, критериев приемки и баг-репортовЕсли требования неполные или неоднозначные, то тестирование превращается в угадывание, а команда рискует сделать «не то», даже если всё работает без ошибок.
Что такое требование
Требование — это согласованное описание того, что система должна делать или какими свойствами должна обладать.
Важно отличать требование от похожих формулировок:
Идея — направление («сделаем оплату в 1 клик»).
Пожелание — хочется, но не обязательно («желательно темная тема»).
Требование — конкретная договоренность, по которой можно проверить результат.Признак хорошего требования для тестировщика: его можно проверить и получить однозначный вывод «соответствует / не соответствует».
Откуда берутся требования и как они выглядят в проектах
Требования редко живут в одном документе. В реальности они складываются из нескольких источников:
цели бизнеса и метрики продукта
пользовательские сценарии и боли клиентов
сообщения поддержки и реальные инциденты
дизайн-макеты и прототипы
юридические требования (например, хранение персональных данных)
ограничения платформы, API, инфраструктурыИ фиксируются тоже по-разному:
задачи в трекере (Jira, YouTrack и аналоги)
спецификации (документы, страницы в Confluence)
пользовательские истории (user stories)
критерии приемки (acceptance criteria)
протоколы встреч и договоренности в перепискеТестировщику полезно сразу выяснять, где находится «источник истины» по задаче: что считать актуальным, если макет, описание в задаче и комментарии противоречат друг другу.
Уровни и типы требований
Одна из причин путаницы в обсуждениях — разные уровни требований. Условно можно представить это как «лестницу» от целей к деталям реализации.
!Уровни требований помогают понять, на каком уровне возникло противоречие и что именно нужно уточнять
По уровню (о чем договоренность)
Бизнес-требования: зачем это компании (цель, ценность).
Пользовательские требования: что нужно пользователю или роли.
Системные (продуктовые) требования: что должна делать система, чтобы удовлетворить потребности.По содержанию (что именно описываем)
| Тип | Что описывает | Пример | Как тестировщику проверять |
|---|---|---|---|
| Функциональные | Поведение и функции системы | «Пользователь может сбросить пароль по email» | Сценарии, негативные проверки, граничные случаи |
| Нефункциональные | Свойства качества и ограничения по качеству | «Страница поиска открывается не дольше 2 секунд при 1 000 одновременных пользователях» | Замеры (если возможно), проверки условий, уточнение метрик |
| Ограничения | Запреты и рамки решения | «Пароли храним только в виде хеша», «Поддерживаем iOS 16+» | Проверки соответствия ограничениям, совместимость |
| Бизнес-правила | Логика предметной области | «Скидка 10% действует только при сумме заказа от 3 000 ₽» | Таблицы решений, наборы проверок по комбинациям |
Если требования не делят на типы явно, тестировщик может сделать это сам — так проще найти пробелы. Частая ситуация: функциональность описана, а нефункциональные требования не определены (скорость, безопасность, логирование, совместимость).
Форматы требований, с которыми чаще всего работает QA
Пользовательская история (user story)
Пользовательская история — короткое описание потребности пользователя, часто в виде шаблона:
«Как роль, я хочу действие, чтобы ценность.»Важно: история сама по себе почти всегда недостаточна для тестирования. Ей нужны критерии приемки.
О Scrum и том, как команда работает с бэклогом, можно посмотреть в официальном гайде: The Scrum Guide.
Критерии приемки (acceptance criteria)
Критерии приемки — это проверяемые условия, по которым команда понимает, что задача выполнена.
Критерии приемки полезны тем, что:
задают границы (что входит и что не входит)
уменьшают неоднозначность («как должно быть»)
дают основу для тестовUse case (сценарий использования)
Use case — описание взаимодействия пользователя и системы шаг за шагом:
основной успешный поток
альтернативные потоки
ошибки и исключенияТакой формат особенно удобен, когда много правил и развилок.
Спецификация (SRS/PRD)
Иногда требования оформляют в более формальном документе (спецификация). Даже если документ не называется «SRS», суть похожа: описать поведение, правила, данные, интерфейсы и ограничения.
Если хочется увидеть, как требования описывают в стандартах, можно ориентироваться на описание стандарта ISO/IEC/IEEE 29148.
Анализ требований: что именно делает ручной тестировщик
Когда QA «анализирует требования», это не про поиск грамматических ошибок. Это про снижение рисков разработки и будущего тестирования.
Практический набор действий:
Понять цель изменения: какую проблему решаем и для кого.
Определить объекты тестирования: экраны, API, роли, интеграции, отчеты.
Вытащить бизнес-правила: условия, исключения, ограничения.
Найти пробелы: что не описано (ошибки, пустые значения, лимиты, статусы).
Найти неоднозначности: места, где два человека поймут по-разному.
Сформулировать вопросы и согласовать решения.
Подготовить основу для тест-дизайна: будущий чек-лист, тестовые данные, приоритеты.Чтобы это было проще делать системно, полезно проходить требование по одинаковому «скелету».
Шаблон вопросов QA к требованию
Ниже — набор вопросов, которые помогают быстро находить слабые места. Не нужно задавать их все всегда, но полезно держать как опору.
Контекст и границы
Какая цель изменения и какой ожидаемый результат для пользователя?
Что входит в задачу, а что явно не входит?
Какие роли участвуют и чем отличаются права?Данные
Какие поля обязательны, какие опциональны?
Какие форматы, длины, допустимые символы?
Что делаем с пустыми значениями?Бизнес-правила
Какие условия включают/выключают поведение?
Какие лимиты и пороги (сумма, количество, время)?
Есть ли исключения из правил?Ошибки и сообщения
Какие ошибки возможны и как их показываем пользователю?
Какие коды/тексты сообщений нужны?
Что происходит с данными при ошибке: сохраняем, откатываем, частично применяем?Интеграции и состояния
С какими внешними системами взаимодействуем?
Какие таймауты и поведение при недоступности интеграции?
Какие состояния сущности существуют и как между ними переходить?Нефункциональные требования
Какая ожидаемая скорость/нагрузка/устойчивость?
Какие требования к безопасности и доступам?
Какие браузеры/устройства/версии ОС поддерживаются?Что такое неоднозначность и почему она опасна
Неоднозначность — это когда требование можно прочитать по-разному и оба прочтения выглядят «логичными».
Опасность неоднозначности:
разработчик реализует одно понимание, бизнес ожидает другое
тестировщик проверяет «не то» и пропускает реальные проблемы
дефекты всплывают в конце или после релиза, когда исправлять дорожеЧасто неоднозначности прячутся в «обычных» словах.
Слова-маркеры неоднозначности
| Маркер в требовании | Почему это риск | Как уточнять |
|---|---|---|
| «быстро», «не тормозит» | нет измерения | «За сколько секунд и при каких условиях?» |
| «удобно», «понятно» | субъективно | «Какие конкретные элементы/правила UX считаем обязательными?» |
| «по возможности», «желательно» | непонятен приоритет | «Это обязательное требование или nice-to-have?» |
| «поддерживает» | непонятен объем | «Какие версии/форматы/кейсы поддерживаем, а какие нет?» |
| «и т.п.», «и другие» | бесконечный список | «Дайте полный перечень или критерий включения» |
| «обычно», «как всегда» | скрытые допущения | «Опишите точное правило и исключения» |
Типовые проблемы качества требований
Неполнота: не описаны ошибки, ограничения, статусы, роль, данные.
Противоречие: разные части документа говорят разное.
Непроверяемость: нельзя однозначно проверить («должно быть красиво»).
Нереализуемость: технически/по срокам невозможно, но это не проговорено.Тестировщик не обязан «чинить» требования в одиночку, но обязан подсветить риск и добиваться прояснения.
Практические техники поиска неоднозначностей
Перефразирование и согласование смысла
Один из самых сильных приемов — коротко пересказать требование своими словами и попросить подтвердить:
«Правильно ли я понимаю, что ...?»
«То есть при условии X мы всегда делаем Y, а при Z — делаем W?»Это быстро выявляет расхождения в понимании.
Примеры и контрпримеры
Просите примеры:
положительный пример («как должно быть»)
отрицательный пример («как точно не должно быть»)Контрпример часто вскрывает скрытое правило лучше, чем длинное обсуждение.
Граничные значения простыми словами
Граничные значения — это значения «на границе правила» и рядом с ней. Например, если скидка включается от 3 000 ₽, то важны проверки:
2 999 ₽ (не должно сработать)
3 000 ₽ (должно сработать)
3 001 ₽ (должно сработать)Такие границы нужно сначала увидеть в требованиях. Если границ нет, их нужно запросить.
Таблица решений для бизнес-правил
Когда результат зависит от нескольких условий (например, роль + сумма заказа + способ оплаты), удобно фиксировать правила в виде таблицы: условия → ожидаемый результат.
Польза для QA:
видно, какие комбинации покрыты правилами, а какие «висят в воздухе»
проще составлять чек-лист и не забыть важные случаиДиаграмма состояний для сущностей
Если у сущности есть статусы (заказ: создан → оплачен → отправлен → доставлен → отменен), полезно прояснить:
какие статусы существуют
какие переходы разрешены
что является событием переходаЭто помогает найти пробелы: «а что если отменить уже оплаченный заказ?»
Как сделать требование проверяемым: примеры улучшения критериев
Ниже — типичная «плохая» формулировка и вариант, который легче тестировать.
| Было | Стало |
|---|---|
| «Система должна работать быстро» | «Главная страница открывается не дольше 2 секунд при скорости сети от 20 Мбит/с на браузерах Chrome и Firefox последних двух версий» |
| «При ошибке показывать сообщение» | «При неверном пароле показывается текст “Неверный логин или пароль”, поле пароля очищается, счетчик попыток увеличивается на 1» |
| «Поддержать загрузку файлов» | «Разрешены форматы PDF и JPG, размер до 10 МБ; при превышении размера показывается ошибка; успешный файл отображается в списке вложений» |
Ключевой принцип: критерий приемки должен отвечать на вопрос тестировщика «как понять, что сделано правильно?» без дополнительных догадок.
Мини-чек-лист QA перед стартом разработки
Понятны роли и права доступа.
Описаны данные, форматы, обязательность и ограничения.
Описаны ошибки и поведение системы при сбоях.
Зафиксированы бизнес-правила и исключения.
Определены нефункциональные ожидания (где критично).
Нет слов-маркеров без уточнения (или заведены вопросы/решения).
Понятны зависимости: интеграции, другие команды, миграции данных.
Согласованы критерии приемки.Итоги
Требования — основа для того, чтобы тестирование было воспроизводимым и полезным.
Требования бывают разных уровней и типов: функциональные, нефункциональные, ограничения и бизнес-правила.
Главная ценность QA на этапе требований — находить неполноту и неоднозначности до разработки.
Лучший способ уменьшить риск — превращать формулировки в проверяемые критерии приемки и фиксировать правила через примеры, таблицы решений и уточняющие вопросы.