Качественные требования к ПО | часть 3

Photo by Axel Holen on Unsplash

Как можно определить (и улучшить) качество требований?

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

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

Свойства качественных требований

Качественными можно называть требования, которые соответствует перечисленным ниже свойствам:

  • Завершенность (completeness). Требование содержит полный набор информации для его однозначного понимания. В нем не должно встречаться «очевидных», «и так всем понятных», «само собой разумеющееся» фраз, «размытых» формулировок (и т.п., и т.д., и других…, ну и в том же духе).
  • Атомарность (atomicity). Требование является атомарным, если его не можно разбить на отдельные требования, и оно описывает только одну функцию.
  • Последовательность (consistency). Требование не должно противоречить самому себе (да-да, и так бывает) или другим требованиям.
  • Недвусмысленность (clearness). Требование не должно содержать жаргона, неочевидных аббревиатур, расплывчатых формулировок. (Кстати, для улучшение этой характеристики есть хорошая практика – вести словарь проекта. Тогда понятий «клиент», «пользователь», «кастомер», «юзер» – пропадут, и появиться одно, однозначное – «студент», (если сервис предназначен для них) и все будут понимать друг друга с первого раза и 100% однозначно)
  • Выполнимость (feasibility). Требование должно быть реализуемым в рамках бюджета и срока разработки проекта. (Построить самолет для 150 человек за 2 недели – не возможно)
  • Обязательность (obligatoriness). Если требование не обязательное – его просто нужно выкинуть. НО если требование нужное, но не критичное – ему просто присваивают меньший приоритет.
  • Актуальность (up-to-date). Если требование не актуально (например описанный функционал убрали с проекта) – его нужно удалить.
  • Прослеживаемость (traceability). Бывает вертикальной – показывает связь с требованиями других уровней, или горизонтальной – показывает связь с тест-планом, тест-кейсами. Для обеспечения этой характеристики часто применяются специальные инструменты (requirements management tool) но даже без них у требования должны быть как минимум: уникальный номер, оглавление, валидные ссылки на другие требования / тест-кейсы.
  • Модифицируемость (modifiability). Исправление / внесение правок в требования должно быть простой операцией. Если с этим возникают проблемы – значит требование изначально не соответствует описанным характеристикам, и это нужно исправлять.
  • Важность (importance). Показывает на сколько требование важно для успеха проекта.
  • Стабильность (stability). Описывает вероятность правок в будущем. (Лично – никогда не встречал. Интересно, кто в команде может адекватно оценить будущее, астрологи??)
  • Срочность (priority). Показывает на сколько срочно должно быть реализовано требование (самое важное – делаем в первую очередь)
  • Проверяемость (verifiability). Показывает, что можно создать тест-кейс, который однозначно покажет, что требование реализовано верно.

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

По началу — будут ошибки и это нормально. Исправляя их вы будете учиться и каждый раз писать все лучше и лучше :)

Такой чек-лист поможет вам:

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

Это завершающая статья о требованиях, самая короткая, но как по мне — самая важная! Надеюсь после прочтения у всех появилось базовое понимание что такое требования, зачем они нужны и как и ними можно работать :)

Но не забывайте — это ведь только начало!

В интернете есть множество интересных статей, книг, приложений для работы с требованиями — не бойтесь изучать это тему :) Она очень интересная!

Удачи! :)

🔥 Интересуешься тестированием и хочешь получать актуальную информацию?

👉 Присоединяйся к 3,000+ тестировщикам в Телеграм!

Тебе не хватает практики по тестированию?
👉 Получи практическое задание!

Хочешь расти быстрей, как профессионал?
👉 Оставляй заявку на менторство!

QA Lead. Love My Family, JavaScript and Quality Products

QA Lead. Love My Family, JavaScript and Quality Products