Lesson 6 of 26

Урок 06 — Виды тестирования: Функциональное и Нефункциональное

Название: Functional vs Non-Functional Testing — чем отличается и что тестировать
Описание: Разбираем два главных вида тестирования: функциональное (что система делает) и нефункциональное (как хорошо она это делает). Разбираем на реальных примерах с примерами тест-кейсов.
Почему это важно для QA: Это фундаментальная классификация. Без понимания разницы сложно правильно спланировать тестирование, расставить приоритеты и объяснить команде, что именно ты проверяешь.


1. Общая картина

Представь, что ты покупаешь автомобиль.

  • Функциональное тестирование: заводится ли машина? Работает ли руль? Тормозит ли тормоз? Включается ли кондиционер?
  • Нефункциональное тестирование: насколько быстро разгоняется? Насколько тихий салон? Сколько литров топлива расходует на 100 км? Насколько безопасен при аварии?

Первый вид отвечает на вопрос «работает ли?», второй — «насколько хорошо работает?»


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

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

Что проверяем

  • Авторизация и регистрация работают корректно
  • Кнопки выполняют нужные действия
  • Формы принимают и сохраняют данные
  • Бизнес-логика работает правильно (расчёты, скидки, фильтры)
  • Переходы между страницами корректны

Пример: форма регистрации

Требование: Пользователь может зарегистрироваться, указав имя, email и пароль.

Тест 1: Заполнить все поля корректными данными → ожидаем успешную регистрацию
Тест 2: Оставить поле email пустым → ожидаем сообщение об ошибке
Тест 3: Ввести уже существующий email → ожидаем «Email уже занят»
Тест 4: Ввести пароль короче 8 символов → ожидаем предупреждение

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

ВидЧто проверяет
Unit-тестированиеОтдельные функции/методы
Integration-тестированиеВзаимодействие между модулями
System-тестированиеСистему целиком
Acceptance-тестированиеСоответствие требованиям заказчика
Regression-тестированиеЧто старое не сломалось после изменений

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

Нефункциональное тестирование проверяет качество работы системы, а не наличие функций. Это ответ на вопросы: как быстро? как надёжно? насколько безопасно? насколько удобно?

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

ВидЧто проверяетПример
PerformanceСкорость и отзывчивостьСтраница загружается за < 2 секунды
LoadПоведение под нагрузкойСайт работает при 1000 одновременных пользователях
StressПоведение при перегрузкеЧто происходит при 10 000 одновременных запросах
SecurityЗащита данныхНельзя получить чужие данные без авторизации
UsabilityУдобство использованияПользователь находит нужную функцию за 3 клика
CompatibilityРабота в разных средахСайт корректно отображается в Chrome, Firefox, Safari
ReliabilityНадёжностьСервис работает 99.9% времени
ScalabilityМасштабируемостьСистема выдерживает рост нагрузки в 10 раз

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

Производительность: главная страница загружается менее чем за 1.5 секунды
Нагрузка: сайт стабильно работает при 5000 одновременных пользователях
Безопасность: пароли хранятся в зашифрованном виде (bcrypt)
Совместимость: корректно работает в Chrome 120+, Firefox 115+, Safari 16+
Надёжность: доступность сервиса 99.9% (допустимый простой — 8.7 часов в год)

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

КритерийФункциональноеНефункциональное
Вопрос«Что делает система?»«Как хорошо работает?»
ОсноваТребования, user storiesSLA, метрики качества
РезультатРаботает / не работаетЗначение (мс, %, оценка)
ПримерыАвторизация, поиск, оплатаСкорость, нагрузка, безопасность
ИнструментыSelenium, Playwright, PostmanJMeter, k6, Lighthouse
Когда делатьС начала разработкиПеред релизом, после оптимизаций

5. Как это выглядит на практике

Допустим, ты тестируешь функцию «Поиск товаров» в интернет-магазине.

Функциональные тесты:

  • Поиск по точному названию возвращает нужный товар
  • Поиск по несуществующему товару показывает «Ничего не найдено»
  • Поиск нечувствителен к регистру («iPhone» и «iphone» дают одинаковый результат)
  • Фильтры сужают результаты поиска корректно

Нефункциональные тесты:

  • Результаты поиска появляются менее чем за 500 мс
  • При 500 одновременных запросах поиск не деградирует
  • Поисковой запрос не позволяет выполнить SQL-инъекцию
  • Интерфейс поиска одинаково отображается на мобильных и десктопах

6. Частые ошибки Junior QA

Тестируют только функции, забывая про нефункциональные аспекты
→ В итоге функция работает, но при 100 пользователях сайт падает.

Не понимают, к какому виду относится баг
→ «Кнопка медленно реагирует» — это нефункциональный баг (performance), а не функциональный.

Считают, что нефункциональное тестирование — это только нагрузочное
→ На самом деле это большой класс: безопасность, совместимость, удобство и многое другое.


7. Быстрая шпаргалка

ФУНКЦИОНАЛЬНОЕ ТЕСТИРОВАНИЕ
├── Что проверяем: функции системы
├── Вопрос: «Работает ли?»
├── Пример бага: «Кнопка входа не выполняет авторизацию»
└── Инструменты: Playwright, Postman, TestRail

НЕФУНКЦИОНАЛЬНОЕ ТЕСТИРОВАНИЕ
├── Что проверяем: качество работы системы
├── Вопрос: «Насколько хорошо работает?»
├── Пример бага: «Страница загружается 8 секунд вместо 2»
└── Инструменты: k6, JMeter, Lighthouse, OWASP ZAP

Итог

  • Функциональное = тестируем что делает система
  • Нефункциональное = тестируем как хорошо она это делает
  • Оба вида одинаково важны — без нефункционального качество продукта остаётся неизвестным
  • Хороший QA-инженер планирует оба вида тестирования с самого начала проекта