Фундаментальное различие

Всё тестирование ПО делится на две категории:

Функциональное тестирование проверяет ЧТО делает система — функции, бизнес-правила, обработку данных. Форма входа принимает валидные учётные данные? Поиск возвращает правильные результаты? Скидка считается правильно?

Нефункциональное тестирование проверяет КАК система выполняет функции — скорость, безопасность, надёжность, удобство. Страница загружается за 2 секунды? Система выдержит 10,000 пользователей? Данные зашифрованы?

Аналогия с автомобилем. Функциональное: Двигатель заводится? Тормоза останавливают? Нефункциональное: Как быстро разгон 0-100? Насколько тихо в салоне? Какой расход топлива?

Типы функционального тестирования

Тестирование функций

Проверка работы каждой функции: вход, регистрация, поиск, корзина, оплата.

Тестирование бизнес-правил

Проверка логики: ценообразование, контроль доступа, процессы согласования, правила соответствия.

Тестирование UI

Проверка интерфейса: формы, кнопки, навигация, сообщения об ошибках, динамический контент.

Тестирование API

Проверка API: форматы ответов, CRUD-операции, обработка ошибок, пагинация.

Тестирование базы данных

Проверка данных: CRUD, ограничения целостности, транзакции, хранимые процедуры.

Типы нефункционального тестирования

Производительность

  • Время отклика: Как быстро система реагирует?
  • Пропускная способность: Сколько транзакций в секунду?
  • Использование ресурсов: Сколько CPU, памяти, диска?
  • Масштабируемость: Справляется ли с растущей нагрузкой?

Безопасность

  • Аутентификация: Могут ли неавторизованные пользователи войти?
  • Авторизация: Могут ли пользователи выходить за рамки разрешений?
  • Защита данных: Чувствительные данные зашифрованы?
  • Сканирование уязвимостей: OWASP Top 10?

Удобство использования

  • Обучаемость: Новые пользователи разбираются без обучения?
  • Эффективность: Опытные пользователи выполняют задачи быстро?
  • Доступность: Пользователи с инвалидностью могут работать (WCAG)?
  • Восстановление от ошибок: Легко ли исправить ошибку?

Надёжность

  • Доступность: Какой процент времени система работает (99.9%)?
  • Отказоустойчивость: Как система справляется с отказами компонентов?
  • Восстанавливаемость: Как быстро восстанавливается?

Совместимость

  • Браузеры: Chrome, Firefox, Safari, Edge
  • Устройства: десктоп, планшет, мобильный
  • ОС: Windows, macOS, Linux, iOS, Android

Сопровождаемость

  • Качество кода, модульность, тестируемость, документация.

Переносимость

  • Устанавливаемость, адаптируемость, заменяемость.

ISO 25010: Модель качества

ХарактеристикаКатегорияКлючевой вопрос
Функциональная пригодностьФункциональнаяДелает ли то, что должна?
Эффективность производительностиНефункциональнаяБыстро и эффективно?
СовместимостьНефункциональнаяРаботает с другими системами?
Удобство использованияНефункциональнаяЛегко ли пользоваться?
НадёжностьНефункциональнаяМожно ли на неё положиться?
БезопасностьНефункциональнаяЗащищена ли она?
СопровождаемостьНефункциональнаяЛегко ли менять?
ПереносимостьНефункциональнаяМожет переноситься?

Только одна из восьми характеристик функциональная. Это подчёркивает, как много в качестве ПО — нефункционального.

Сравнительная таблица

АспектФункциональноеНефункциональное
ПроверяетЧто делает системаКак выполняет
ОсноваТребования, user storiesАтрибуты качества, SLA
ПримерыВход, поиск, оплатаПроизводительность, безопасность
ИнструментыSelenium, Cypress, PostmanJMeter, k6, OWASP ZAP
КтоQA-инженерыQA + специалисты
КогдаНа протяжении разработкиПосле функциональной стабильности

Упражнение: Классифицируйте активности тестирования

Классифицируйте каждую активность как Функциональную (Ф) или Нефункциональную (НФ). Для НФ укажите характеристику.

  1. Проверить, что пользователь может зарегистрироваться с валидным email
  2. Проверить, что страница регистрации загружается менее чем за 3 секунды
  3. Проверить, что форма доступна с помощью скринридера
  4. Проверить, что дублирующие email отклоняются
  5. Проверить, что система обрабатывает 500 одновременных регистраций
  6. Проверить работу в Chrome, Firefox и Safari
  7. Проверить, что пароли хешируются перед хранением
  8. Проверить отправку email подтверждения в течение 1 минуты
  9. Проверить, что форма показывает ясные сообщения об ошибках
  10. Проверить корректное восстановление при падении email-сервиса
  11. Проверить, что API возвращает 201 при успешном создании
  12. Проверить удобство мобильной формы на 5-дюймовом экране
ПодсказкаСпросите: «Я тестирую ЧТО делает система (функцию, бизнес-правило) или КАК (скорость, безопасность, удобство)?»
Решение
  1. Ф — Функция (регистрация)
  2. НФ — Производительность — Время отклика
  3. НФ — Удобство (Доступность) — Соответствие WCAG
  4. Ф — Бизнес-правило (ограничение уникальности)
  5. НФ — Производительность (Нагрузка) — Ёмкость системы
  6. НФ — Совместимость (Браузерная) — Кросс-браузерная поддержка
  7. НФ — Безопасность — Защита данных (хеширование)
  8. НФ — Производительность / Надёжность — Своевременность зависимого процесса
  9. Ф — Поведение UI (отображение ошибок — функция). Ясность сообщений — удобство.
  10. НФ — Надёжность (Отказоустойчивость) — Плавная деградация
  11. Ф — Поведение API (корректный статус-код — функциональный контракт)
  12. НФ — Удобство — Удобство использования на конкретном форм-факторе

Когда что тестировать

Функциональное первым. Нет смысла тестировать скорость, если функция не работает.

Нефункциональное требует стабильных сборок. Результаты производительности бессмысленны при сбоях приложения.

Планировать нефункциональное рано. Выполнять позже, но планировать при сборе требований.

Профессиональные советы

Совет 1: Нефункциональные требования часто неявные. Стейкхолдеры редко говорят «страница должна грузиться за 2 секунды». Они это подразумевают. QA должен спрашивать.

Совет 2: Нефункциональные сбои часто наносят больше ущерба. Функциональный баг затрагивает одну функцию. Брешь в безопасности — всю организацию.

Совет 3: Многие команды пренебрегают нефункциональным тестированием. 500 функциональных тестов и ноль по производительности или безопасности — обычное дело. Этот пробел догоняет в продакшене.

Ключевые выводы

  • Функциональное проверяет ЧТО делает система; нефункциональное — КАК работает
  • ISO 25010 определяет 8 характеристик качества — только одна функциональная
  • Типы НФ: производительность, безопасность, удобство, надёжность, совместимость, сопровождаемость, переносимость
  • Сначала функциональное, затем нефункциональное при стабильной сборке
  • НФ-требования часто неявные — QA должен проактивно спрашивать
  • Недоинвестирование в НФ-тестирование создаёт пробелы, проявляющиеся в продакшене