Как стать автором
Обновить

Ключевые концепции тестирования требований

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 2.1K
Автор оригинала: Maria Golubeva

Что такое требования к продукту?

Требование — это спецификация того, что должно быть реализовано. В нем описывается поведение и атрибуты системы.

Процесс определения требований имеет огромное значение в процессе разработки требований. Он представляет собой третий этап, следующий за сбором и анализом требований, которым управляют такие роли, как бизнес-аналитики, системные аналитики и дизайнеры продуктов, которые варьируются от проекта к проекту.

Цель состоит в том, чтобы создать документ c требованиями или спецификацию с соответствующей детализацией. Этот документ будет содержать все требования к дизайну, проверке и техническому обслуживанию продукта.

Требования - первое, на что обращает внимание команда проекта, это основа для проектирования и разработки продукта.

Требования служат краеугольным камнем, закладывающим основу для проектирования и разработки продукта. Любой недостаток или неточность в документации может проявиться в самый неподходящий момент. Стив Макконнелл в своей книге "Сколько стоит программный проект" указывает, что около 30 % ошибок вносится в продукт при разработке требований.

Очевидно, что гораздо проще и дешевле исправить дефект в паре строк требований, чем потом переделывать несколько сотен (или даже тысяч) строк кода.

Почему тестирование требований важно?

Тестирование требований - необходимая и очень важная процедура, которая помогает оптимизировать работу команды и избежать недопонимания, а также позволяет понять, могут ли эти требования быть выполнены с точки зрения времени, ресурсов и бюджета.

От качества сформированных требований зависит качество программного обеспечения. Требования формируют blueprient продукта. На их основе создаются тест-кейсы, выявляющие дефекты, когда продукт расходится с требованиями. Проблемы выявляют противоречия и приходится принимать действия по их устранению. 

В связи с вышесказанным, при разработке программного обеспечения тестирование должно проводиться уже на этапе разработки спецификации. Тестирование требований направлено на устранение максимально возможного количества ошибок на начальных этапах проектирования системы. В долгосрочной перспективе это позволяет: 

  • Установить взаимопонимание между членами команды при создании продукта.

  • Значительно снизить затраты на разработку и тестирование продукта.

  • Снизить риск получения продукта, который не соответствует ожиданиям заказчика или потребностям конечного пользователя.

  • Улучшить качество продукта.

  • Сократить время доставки готового продукта.

Что произойдет, если не проводить  тестирование требований?

Возникнут трудности в процессе разработки.

  • Проблемы в требованиях будут обнаружены после разработки: 

    1. Тестировщиками на этапе тестирования.

    2. Пользователями после выпуска продукта.

Устранение таких проблем может быть дорогостоящим, а иногда и невозможным

  • Клиенты и конечные пользователи будут не удовлетворены реализованным продуктом.

  • Разработчики будут тратить больше времени на уточнение деталей и придумывание решений, чтобы вписать недостающие требования в систему.

 

Ключевые свойства хороших требований

У каждого проекта свои требования - в одних проектах это могут быть многостраничные документы, а в других - только пользовательские истории или минимальное описание того, что нужно сделать. Поэтому и требования к тестированию будут отличаться. Следовательно, опирайтесь на критерии качества требований и выбирайте то, что важно для вашего проекта. 

Ключевыми характеристиками хороших требований являются:

  • Полнота. Все ли описано? Ничего ли не забыли? Что, если у нас все еще есть неописанный функционал или пользовательский сценарий? Документация должна предоставлять максимально четкую информацию о том, как должен работать каждый отдельный модуль и весь продукт в целом. После прочтения документации не должно оставаться вопросов, но на практике выявляется большое количество недостатков.

  • Корректность и согласованность. Все утверждения должны быть правильными, правдивыми и иметь смысл.

  • Последовательность. Требования не должны противоречить сами себе. Обычно это происходит, когда требований много. Аналитик просто забывает, что уже писал о параметре, и снова придумывает его поведение. Иногда он придумывает что-то немного другое.

  • Ясность. Требования должны быть прозрачными и понятными для всех, с возможностью только одной интерпретации.

  • Тестируемость. Можно ли протестировать эту функциональность? Подумайте об этом заранее. А бывает, что разработчик уже все сделал, и только тогда тестировщик понимает, что задачу никак нельзя проверить. Или можно проверить вручную, но нельзя написать автотесты, фреймворк под новую функциональность не заточен. Это может быть проблемой, если в компании все проверки автоматизируются.

  • Прослеживаемость. Требование полностью или частично соответствует потребностям бизнеса, заявленным заинтересованными сторонами, и это задокументировано.

  • Атомарность. Требование не может быть разделено на несколько более детальных требований без потери полноты.

  • Выполнимость. Требование может быть реализовано в рамках данного проекта.

  • Актуальность. Требование не устарело по прошествии времени.

  • Модифицируемость.

  • Упорядочены по важности, стабильности и срочности.

Основные принципы тестирования требований

  • Тестирование требований лучше всего проводить до начала разработки. Для этого нужно рассчитать необходимое время на проверку и «заморозить» тестируемую документацию до окончания проверки.

  • Каждый член команды может помочь в проведении тестирования требований. Однако для достижения наилучшего результата описание и проверка требований должны быть поручены разным людям. Например, во время sprint refinement.

  • Создание отчета о дефектах документации ничем не отличается от сообщения о дефектах продукта: об ошибках следует сообщать в систему отслеживания ошибок, как обычно.

  • В случае, когда проверка требований проводится параллельно с разработкой, крайне желательно предупреждать команду разработчиков о найденных дефектах (чтобы они могли вовремя исправить ошибку).

  • Уровень детализации требований (как и глубина тестирования) сильно зависит от уровня проекта. Нет смысла проверять время отклика на кнопку в проекте, который только начался (если, конечно, это не относится к ключевой функциональности).

Техники тестирования требований

  • Взаимный просмотр:

    1. Беглый просмотр.

    2. Технический просмотр.

    3. Формальная инспекция.

  • Вопросы.

  • Написание тест-кейсов и чек листов.

  • Исследование поведения системы.

  • Рисунки (графическое представление).

  • Прототипирование.

Идеи тестирования требований

Полнота

Проверка полноты требований:

  1. Проверьте каждый объект на соответствие требованиям CRUDL (Create, Read, Update, Delete (или Deactivate), List).

  2. Подумайте, что может пойти не так, какими могут быть негативные сценарии и граничные условия (сценарии использования).

  3. Проверьте, что в сложных условиях "если - то" описаны все варианты (таблица решений).

Корректность

Если требование корректно, значит, оно не содержит неверной и неточной информации. Этот критерий обычно сложно проверить. Помогает, если требования проверяет человек, хорошо разбирающийся в предметной области.

Согласованность

 Проверяя согласованность, обратите внимание на: 

  1. Одно и то же требование написано несколько раз в разных местах - если вы его измените, то, скорее всего, где-то забудете.

  2. Союз "и" в требованиях — это несколько разных требований, и они могут противоречить друг другу. Например, "быстро, хорошо и дешево". 

Ясность

Все члены команды должны понимать требования однозначно:

  1. Терминология - все должны понимать, что стоит за каждым понятием. Одни и те же вещи должны называться одним и тем же понятием.

  2. Качественные определения - "красиво", "удобно", "быстро". Такие требования должны быть заменены конкретными параметрами, чтобы все понимали, как их проверять.

  3. Требования должны быть написаны простым языком – тогда понятно, "кто что делает".

Тестируемость/верифицируемость

Один из самых важных критериев - проверяемость. Как вы узнаете, что требование выполнено? Как вы узнаете, что проект в целом успешен? Если у требования нет тест-кейса или вы не можете сразу придумать тест, это плохое требование. Например, вы можете проверить пользовательскую историю: 

  1. Критерии приемки присутствуют в пользовательской истории. 

  2. Критерии приемки точны и недвусмысленны. 

  3. QA-инженер может написать чек лист или тест-кейсы для этой истории пользователя. 

Выполняемость

Когда вы проверяете выполнимость требований, посмотрите, можно ли это вообще сделать в рамках существующих ограничений. Обычно QA-инженеры делают это вместе с разработчиками, поскольку вторые обладают более глубокой технической экспертизой. 

Теги:
Хабы:
-1
Комментарии 2
Комментарии Комментарии 2

Публикации