Найти тему

Основы тестирования. Часть 8. Анализ требований.

Требование (requirement) ​— описание того, какие функции и с соблюдением каких условий должно выполнять приложение в процессе решения полезной для пользователя задачи.

Спецификация требований программного обеспечения (англ. software requirements specification, SRS) — структурированный набор требований/запросов (функциональность, производительность, конструктивные ограничения и атрибуты) к программному обеспечению и его внешним интерфейсам. Также данный термин часто называют "спекой".

Тестирование требований (спецификации) — это их проверка, чтобы найти ошибки до начала разработки.

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

Чем позднее была обнаружена ошибка, тем сложнее, дольше и дороже будет её исправление.
Как же тестировать требования?
Как же тестировать требования?

Каждое требование на данном этапе проверяется на соответствие критериям "хороших требований". Списков таких критериев довольно много. Я бы хотел остановиться на следующем:

  1. Корректность — каждое требование должно точно описывать желаемый функционал.
  2. Проверяемость — требование должно быть сформулировано так, чтобы существовали способы однозначной проверки, выполнено оно или нет.
  3. Полнота — каждое требование должно содержать всю информацию, необходимую разработчику, чтобы правильно спроектировать и реализовать требуемую функциональность.
  4. Недвусмысленность — требование описано без неочевидных аббревиатур и расплывчатых формулировок и допускает только однозначное объективное понимание. Отсутствуют качественные определения: "некрасиво", "не работает" и так далее. Также стоит определить, что вся терминология в спецификации однозначно задана.
  5. Непротиворечивость — требование не должно содержать внутренних противоречий и противоречий другим требованиям и документам.
  6. Приоритетность — приоритет требования представляет собой количественную оценку степени значимости (важности) требования.
  7. Атомарность — требование является атомарным, если его нельзя разбить на отдельные требования без потери завершённости и оно описывает одну и только одну ситуацию.
  8. Модифицируемость — характеризует простоту внесения изменений в отдельные требования и в набор требований.
  9. Прослеживаемость — у каждого требования должен быть уникальный идентификатор, по которому на него можно сослаться.

Для проверки на полноту требований:

  • Проверьте каждый объект по CRUDL (Create, Read, Update, Delete (или Deactivate), List)
  • Подумайте о том, что может пойти не так, какие негативные сценарии и граничные условия могут быть. Хорошая техника — составление сценариев использования
  • Проверьте, что в сложных условиях «если — то», описаны все варианты. Хорошей помощью может быть таблица решений
  • Подумайте о заинтересованных лицах — не забыли ли учесть чьи-то интересы, например спросить техподдержку
  • Проверьте, что нет отсылок на неопределённую информацию. Если в требованиях автор пишет «Спроси об этом Машу», то когда дойдёт дело до разработки Маша может быть недоступна

Хочу отметить, что нужно чётко контролировать и избегать следующих ситуаций:

  • Замкнутый круг «У тестировщиков много работы, потому что требования низкого качества → У тестировщиков нет времени на тестирование требований → У тестировщиков много работы, потому что требования низкого качества»
  • Новые требования не фиксируются в общем документе, а остаются на словах или в переписках

Источники:

Тестирование требований: // --. URL: https://tlroadmap.io/roles/technical-lead/product-quality/testing/testing-requirements.html (Дата обращения: 22.01.2023).

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

Буду рад вашим вопросам в комментариях!