Что такое нефункциональные требования (NFR) в разработке ПО?

«Что такое нефункциональные требования (NFR) в разработке ПО?» — вопрос из категории Тестовая документация, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Нефункциональные требования (NFR) описывают не что делает система, а как она это делает. Они определяют атрибуты качества системы, её ограничения и характеристики работы.

Ключевые категории NFR с примерами:

Категория Описание Пример требования
Производительность Скорость и эффективность системы. "95% запросов к API должны обрабатываться менее чем за 200 мс при нагрузке 100 RPS."
Масштабируемость Способность системы справляться с ростом нагрузки. "Архитектура должна позволять увеличить пропускную способность на 50% путём добавления новых инстансов приложения."
Надёжность/Доступность Время безотказной работы. "Доступность системы (uptime) должна составлять не менее 99.9% ("три девятки")."
Безопасность Защита от угроз. "Все пароли должны храниться в хэшированном виде с использованием алгоритма bcrypt."
Удобство использования (Usability) Простота взаимодействия с интерфейсом. "Новый пользователь должен выполнить основную задачу за 3 клика или менее."
Сопровождаемость Лёгкость поддержки и изменения кода. "Время сборки проекта не должно превышать 5 минут."

Как тестируются NFR:

  • Нагрузочное тестирование (JMeter, k6): Проверка производительности и стабильности под нагрузкой.
  • Тестирование безопасности (OWASP ZAP, SAST/DAST инструменты): Поиск уязвимостей.
  • Юзабилити-тестирование: Оценка удобства интерфейса с реальными пользователями.
  • Тестирование восстановления: Проверка отказоустойчивости (например, отключение сервера БД).

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