Как тестирование требований помогает сделать продукт лучше
Требования – это основа для проектирования и разработки продукта. Они содержат информацию о том, для кого создается продукт, для каких целей, как его использовать, как в нем реализован необходимый функционал.
В основном выделяют следующие виды требований:
- Бизнес-требования - цель, ради которой мы создаем продукт, какая от него ожидается польза, как получать прибыль с его помощью. Обычно требования на этом уровне это документ с общим видением и границами проекта, в нем нет детального описания системы и каких то других технических характеристик.
- Пользовательские требования – описывают, что может делать пользователь при использовании продукта и что он получает (сценарии работы, реакция системы). Часто представлены в виде пользовательских историй (user stories) и вариантов использования (uses cases).
- Бизнес-правила - это ограничения, правила и особенности процессов в предметной области. Например, корпоративная политика, постановления правительства, промышленные стандарты и т.д.
- Функциональные требования определяют функциональность продукта, описывают поведение системы в определенных условиях.
- Нефункциональные требования - это характеристики продукта, такие как удобство использования, надежность, безопасность, расширяемость, масштабируемость, различные ограничения и т.д.
Для цельного понимания продукта и рисков необходимо критически рассматривать данные, содержащиеся в документации. Тестирование требований перед началом разработки нужно для того, чтобы на начальных этапах проектирования устранить максимально возможное количество ошибок и неточностей в документации. Это гораздо проще сделать на этапе тестирования требований, чем исправлять баги в готовом продукте. Есть понятие “Цена дефекта”, она растет на протяжении жизненного цикла разработки, и чем раньше мы найдем дефект, тем эта цена будет меньше.
Разберем важность тестирования требований подробнее.
- Менеджеры раньше получают значимую информацию о продукте и рисках;
- Автор требований еще в контексте проекта и может дать быструю обратную связь;
- Разработчики тратят меньше времени на выяснение деталей;
- Уменьшается количество новых, незапланированных требований после разработки;
- Увеличивается скорость разработки за счет меньшего количества исправлений;
- Быстрое погружение QA специалистов в проект на начальных этапах;
- Проще разработать план тестирования, тестовую документацию;
- Снижение итоговых затрат;
- Сохранение нервов всей команде.
На практике отказ от тестирования требований приводит к усложнению работы: корректировка документации идет параллельно с разработкой. Менеджерам приходится синхронизировать все вопросы в задачах и переписках, затем разработчики дополняют или изменяют функционал, а тестировщики корректируют тест-кейсы и проводят частые регрессы. Все это повышает и загруженность команды, и продукт не может пройти приемо-сдаточное тестирование по всем требованиям. Необходимость проведения тестирования становится очевидна.
Тестирование основывается на соответствие требований определенным характеристикам. Их существует достаточно много, ниже приведен краткий список основных критериев, на которые следует обращать внимание.
- Полнота – требования являются полными, когда содержат всю необходимую для реализации продукта информацию. Например, не всегда бизнес-требования бывают покрыты пользовательскими. Требования должны учитывать интересы всех заинтересованных лиц, содержать всю необходимую для разработки информацию.
- Однозначность – не допускается многозначности толкований, все требования должны быть поняты одинаково всеми, кто их использует. Пример плохих формулировок: “красиво”, “удобно”. Лучше заменить это на конкретные параметры, которые подлежат проверке.
- Непротиворечивость – требования не должны противоречить друг другу. Может возникнуть ситуация, когда автор несколько раз упоминает один и тот же параметр, но в разных контекстах и с разным поведением. Или наличие общего требования без возможности исключений: все страницы должны загружаться за 1 секунду – что может стать невозможным при появлении страницы с выводом большого объема данных.
- Корректность – этот параметр показывает, насколько разработанные и задокументированные требования системы соответствуют предметной области, потребностям заказчика, пользовательским требованиям.
- Тестируемость – для подтверждения реализации требования должна быть возможность на основании формулировки требования разработать тест (написать тест кейс) и выполнить его.
Тестирование требований - необходимый и очень важный этап в жизненном цикле разработки, который в дальнейшем поможет оптимизировать работу команды, избежать недопониманий, сэкономить время, ресурсы, бюджет и, что не менее важно, нервы команде и клиенту.