Функциональное и нефункциональное тестирование

Функциональное и нефункциональное тестирование

Введение

Когда ты начинаешь тестировать продукт, первый вопрос — а что именно проверять? На высоком уровне все виды тестирования делятся на два больших класса: функциональное и нефункциональное. Понять разницу между ними — это базовый навык любого QA-инженера.

Функциональное тестирование

Функциональное тестирование проверяет, что делает система — то есть соответствует ли её поведение требованиям и спецификациям.

Вопрос, на который отвечает функциональное тестирование: "Работает ли функция так, как задумано?"

Примеры функционального тестирования:

  • Кнопка «Войти» действительно выполняет вход в систему
  • Фильтр по дате возвращает только записи за нужный период
  • При неверном пароле система показывает сообщение об ошибке
  • Форма регистрации сохраняет данные пользователя в базу

Функциональное тестирование основывается на требованиях (requirements). Если в ТЗ написано «пользователь может оплатить заказ картой» — это функция, которую нужно проверить.

Нефункциональное тестирование

Нефункциональное тестирование проверяет, как система это делает — её характеристики качества.

Вопрос, на который отвечает нефункциональное тестирование: "Насколько хорошо работает система?"

Основные виды нефункционального тестирования:

ВидЧто проверяетПример
Нагрузочное (Performance)Скорость и стабильность под нагрузкойСайт работает при 10 000 одновременных пользователей
Тестирование удобства (Usability)Насколько удобно пользоваться системойНовый пользователь разобрался за 5 минут
Тестирование безопасности (Security)Защищённость от атак и утечек данныхSQL-инъекция не даёт доступ к БД
Тестирование надёжности (Reliability)Стабильность работы во времениСистема не падает за 48 часов непрерывной работы
Тестирование совместимости (Compatibility)Работа в разных браузерах/ОС/устройствахПриложение корректно работает в Firefox и Safari
Тестирование доступности (Accessibility)Удобство для людей с ограниченными возможностямиСкринридер читает все элементы страницы

Ключевые различия

АспектФункциональноеНефункциональное
ВопросЧто делает?Как делает?
ОсноваТребования к функциямХарактеристики качества
ПримерКнопка сохраняет данныеКнопка сохраняет за 0.5 сек
РезультатРаботает / не работаетБыстро/медленно, удобно/неудобно

Когда что применяется

Функциональное тестирование начинается сразу, как только готова хоть какая-то функция. Его делают постоянно на протяжении всего цикла разработки.

Нефункциональное тестирование обычно проводится позже — когда основная функциональность уже реализована и стабилизирована. Исключение — требования к безопасности: их проверяют как можно раньше.

Распространённые ошибки

  • Путать функцию с качеством. «Страница загружается» — функциональное. «Страница загружается за 2 секунды» — нефункциональное.
  • Игнорировать нефункциональные требования. Продукт может работать «правильно», но быть медленным или небезопасным — и это тоже баг.
  • Думать, что нефункциональное менее важно. Пользователи уходят с медленных сайтов быстрее, чем с неудобных.

Что запомнить

  • Функциональное тестирование — что делает система (соответствие требованиям)
  • Нефункциональное тестирование — как делает система (характеристики качества)
  • Оба типа одинаково важны для качественного продукта
  • Основные виды нефункционального: performance, usability, security, reliability, compatibility

Попробуйте интерактивную версию

Практические задачи, квизы и AI-наставник — бесплатный старт без карты

Перейти к практике