# Тестирование требований
# Описание
Тестирование требований — это их проверка, чтобы найти ошибки до начала разработки.
Стив Макконнелл в книге «Сколько стоит программный проект» пишет, что при разработке требований в продукт вносят порядка 30% ошибок. Часто исправить их на этой стадии гораздо проще и дешевле, чем потом.
# Почему ветка важна?
Для менеджера:
- Увеличивается скорость разработки — меньше одинаковых вопросов к автору требований, меньше переделок после разработки
- Он раньше получает информацию, важную для принятия решений
- Выше качество продукта — некоторые ошибки требований очень дорого или невозможно исправить после разработки
Для автора требований:
- Обратная связь сразу, пока он ещё в контексте задачи
- Дополнительная информация о краевых случаях и рисках
- Меньше одинаковых вопросов
Для разработчика:
- Качественные требования, из которых понятно, что нужно сделать
- Меньше новых требований, которые появляются уже после разработки. И меньше усилий, чтобы вписать их в систему
Для тестировщика:
- Возможность влиять на проект в самом начале. Часто тестировщики знают, как продукт работает на самом деле и какие есть подводные камни
- Меньше багов на этапе тестирования продукта
- Понятнее, что должно получиться и как это проверять. Следовательно проще разрабатывать план тестирования и тестовую документацию
# Что будет, если её не делать?
- Проблемы в требованиях найдут уже тестировщики или пользователи. Чинить такие проблемы может быть дорого, а иногда и невозможно
- Разработчики будут тратить больше времени, пытаясь прояснить детали
- Разработчикам придётся выкручиваться и придумывать костыли, чтобы вписать пропущенные требования в систему
# На кого может быть делегирована?
Аналитики, тестировщики
# Примеры поведения
# Примеры плохого поведения
- Замкнутый круг «У тестировщиков много работы, потому что требования низкого качества → У тестировщиков нет времени на тестирование требований → У тестировщиков много работы, потому что требования низкого качества»
- Новые требования не фиксируются в общем документе, а остаются на словах или в переписках
# Примеры хорошего поведения
- Тестировщики работают с задачей с самого начала — когда обсуждаются и формулируются требования
- Выделяется специальное время, чтобы тестировать требования
- Автор требований оперативно отвечает на вопросы и фиксирует изменения
- Требования пишут и тестируют разные люди
# Способы прокачки
# Практика
В каждом проекте свои требования — где-то это многостраничные документы, а где-то только user story или минимальное описание того, что надо сделать. Поэтому тестирование требований тоже будет разным.
Опирайтесь на критерии качества требований и выбирайте из них те, которые важны для вашего проекта. Наталья Желнова в статье Нефункциональные требования к программному обеспечению.Часть 1 приводит основные характеристики хороших требований:
- Полнота
- Однозначность
- Корректность
- Непротиворечивость
- Необходимость
- Осуществимость
- Проверяемость
Полный список критериев качества требований можно посмотреть в IEEE Std 830-1998.
Автор требований не всегда описывает все необходимое для разработки (например негативные сценарии). Для проверки на полноту требований:
- Проверьте каждый объект по CRUDL (Create, Read, Update, Delete (или Deactivate), List)
- Подумайте о том, что может пойти не так, какие негативные сценарии и граничные условия могут быть. Хорошая техника — составление сценариев использования
- Проверьте, что в сложных условиях «если — то», описаны все варианты. Хорошей помощью может быть таблица решений
- Подумайте о заинтересованных лицах — не забыли ли учесть чьи-то интересы, например спросить техподдержку
- Проверьте, что нет отсылок на неопределённую информацию. Если в требованиях автор пишет «Спроси об этом Машу», то когда дойдёт дело до разработки Маша может быть недоступна
Все участники команды должны понимать требования однозначно. Если у кого-то возникают вопросы — то они могут появиться и у других членов команды. Все, что может быть понятно неправильно, будет понятно неправильно. Обратите внимание на:
- Терминологию — вся команда должна понимать, что стоит за каждым понятием. Одни и те же вещи должны называться одним и тем же понятием
- Качественные определения — «красиво», «удобно», «быстро». Такие требования надо заменять конкретными параметрами, чтобы все понимали как его проверить
- То, что требования написаны простым языком — понятно «кто что делает». Если читателю приходится разбираться со всей мощью русского языка, то сложно понять, что надо сделать
Если требование корректно, то оно не содержит в себе неверной и неточной информации. Этот критерий обычно трудно проверить. Помогает, когда требования тестирует человек, который хорошо разбирается в предметной области.
При проверке непротиворечивости, обратите внимание на:
- Одно и тоже требование написано несколько раз в разных местах — если вы будете его менять, с большой вероятностью где-то забудете
- Союз «и» у требований — это несколько разных требований и они могут противоречить друг другу. Например «быстро, хорошо и дёшево»
Необходимость требования — «а это требование точно нужно?». Это в большей степени работа менеджеров и аналитиков. Но человек, читающий требования, тоже может задать вопрос «Зачем мы это делаем?». Хорошо помогает формат user story.
Когда вы проверяете осуществимость требований, смотрите на то, можно ли это вообще сделать в рамках существующих ограничений. Обычно этим занимаются уже разработчики.
Один из самых важных критериев — проверяемость. Как вы поймёте, что требование реализовано? Как вы поймёте, что проект в целом успешен? Если в требовании нет контрольного примера, либо вы сходу не можете придумать тест — это плохое требование.
Чтобы проверить требования на проверяемость можно разработать набор тестов. Это может быть программа приёмо-сдаточных испытаний, автотесты в TDD, набор тест-кейсов и т. д.
# Консультации
# Теория
# Статьи
- Виктория Соковикова. Можно ли протестировать техническое задание за полчаса
- Серия записей в блоге про тестирование требований
- Вера Данилова. Стратегия тестирования краткосрочного проекта
- Анастасия Асеева-Нгуен. 3 Амиго — способ коммуникации для создания качественного продукта
- Анастасия Асеева-Нгуена. Введение в Example Mapping
- Darren McMillan. “Wiki” (WWWWWH/KE) requirements testing mnemonic
- Ольга Назина. Чек-лист тестирования требований