Какие критерии качества требований к ПО вы знаете?

Ответ

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

SMART-критерии:

  • Specific (Конкретные) — однозначные, без двусмысленности.
  • Measurable (Измеримые) — содержат количественные метрики для проверки.
  • Achievable (Достижимые) — реализуемы с учетом ресурсов и технологий.
  • Relevant (Релевантные) — соответствуют бизнес-целям и ценности продукта.
  • Traceable (Прослеживаемые) — имеют уникальный идентификатор и связь с тест-кейсами.

Дополнительные атрибуты:

  • Непротиворечивость — требования не конфликтуют друг с другом.
  • Полнота — покрывают все необходимые сценарии и условия.
  • Тестируемость — могут быть объективно проверены (вручную или автоматически).
  • Атомарность — описывают одну функциональность или ограничение.

Примеры:

  • Плохо: "Система должна быть быстрой."
  • Хорошо: "95% поисковых запросов должны обрабатываться менее чем за 2 секунды при нагрузке 1000 запросов в секунду."

Ответ 18+ 🔞

А, слушай, вот эта вся хуйня про требования, которую менеджеры любят на стенках развешивать! SMART, блядь! Ну, типа, умные, да? А на деле-то получается, что они их пишут так, что потом тестировщики с ума сходят, в рот меня чих-пых!

Вот смотри, чтобы не было как в том анекдоте: «Система должна быть быстрой». Это пиздец какой уровень! Быстрой, блядь! А что это значит? Что она должна быстро бегать? Или быстро думать? Или просто не тормозить, когда я на неё смотрю? Полная хуйня, а не требование!

А вот если по-нормальному, то надо вот так, с цифирками, чтобы всё понятно было даже этому, полупидору, который вчера пришёл. Смотри:

Конкретные (Specific) — это чтобы нихуя не додумывать. Не «пользователь может войти», а «пользователь может войти, введя email и пароль в форму на странице /login». Вот так, блядь, чётко! Чтобы даже мартышлюшка поняла.

Измеримые (Measurable) — это самое важное, ёпта! Всё в цифрах! Не «быстро», а «за 2 секунды». Не «под нагрузкой», а «при 1000 пользователей в минуту». Потому что иначе придёт заказчик и скажет: «А мне кажется, она медленная». А ты ему: «А нахуй ты думал, когда писал „быстро“?». Вот и весь разговор.

Достижимые (Achievable) — ну тут вообще песня. Это чтобы архитектор не обещал, что одно ядро будет обрабатывать запросы со скоростью света, пока мы тут на PHP сидим. Реалистичность, блядь! И ресурсы посчитать. А то получится «хочу, чтобы всё было, но денег дам только на хлеб с маслом».

Релевантные (Relevant) — а это чтобы какой-нибудь умник не впихнул в требования к интернет-магазину функцию расчёта орбиты спутника. Каждая фича должна быть к месту, а не потому что «а вот у конкурентов есть, и мы хочу».

Прослеживаемые (Traceable) — это, типа, чтобы каждое требование было как зэк — с номером. ID-123. И чтобы от него можно было дойти до тест-кейса, который его проверяет, и до бага, если что-то пошло не так. Иначе начнётся: «А кто это написал? А зачем это нужно?». И все будут делать вид, что нихуя не при чём.

А ещё, блядь, есть куча других приколов. Непротиворечивость — это чтобы одно требование не говорило «кнопка красная», а другое — «все кнопки синие». А то дизайнер и разработчик друг другу ебальники набьют.

Полнота — это чтобы описали ВСЕ случаи. Не только «что будет, если ввести правильный пароль», но и «что будет, если ввести „хуй“ вместо пароля». Все эти «а если интернет отвалится?», «а если сервер сдохнет?». Всё, блядь, надо предусмотреть!

Тестируемость — вот это золотое правило! Если требование нельзя проверить — это не требование, а бла-бла-бла для презентации. «Система должна быть удобной» — а как это проверить? Опросом пользователей? Так это уже не тестирование, а социология, ебать!

Атомарность — ну это чтобы не писать роман в одном пункте. Одно требование — одна фича. «Пользователь может зарегистрироваться» — это одно. «Пользователь может восстановить пароль» — это уже другое. Не надо их в кучу сваливать, а то получится пиздопроебибна, которую никто не поймёт.

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