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 stories | SLA, метрики качества |
| Результат | Работает / не работает | Значение (мс, %, оценка) |
| Примеры | Авторизация, поиск, оплата | Скорость, нагрузка, безопасность |
| Инструменты | Selenium, Playwright, Postman | JMeter, 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-инженер планирует оба вида тестирования с самого начала проекта