Функциональное и нефункциональное тестирование
Функциональное и нефункциональное тестирование
Введение
Когда ты начинаешь тестировать продукт, первый вопрос — а что именно проверять? На высоком уровне все виды тестирования делятся на два больших класса: функциональное и нефункциональное. Понять разницу между ними — это базовый навык любого QA-инженера.
Функциональное тестирование
Функциональное тестирование проверяет, что делает система — то есть соответствует ли её поведение требованиям и спецификациям.
Вопрос, на который отвечает функциональное тестирование: "Работает ли функция так, как задумано?"
Примеры функционального тестирования:
- Кнопка «Войти» действительно выполняет вход в систему
- Фильтр по дате возвращает только записи за нужный период
- При неверном пароле система показывает сообщение об ошибке
- Форма регистрации сохраняет данные пользователя в базу
Функциональное тестирование основывается на требованиях (requirements). Если в ТЗ написано «пользователь может оплатить заказ картой» — это функция, которую нужно проверить.
Нефункциональное тестирование
Нефункциональное тестирование проверяет, как система это делает — её характеристики качества.
Вопрос, на который отвечает нефункциональное тестирование: "Насколько хорошо работает система?"
Основные виды нефункционального тестирования:
| Вид | Что проверяет | Пример |
|---|---|---|
| Нагрузочное (Performance) | Скорость и стабильность под нагрузкой | Сайт работает при 10 000 одновременных пользователей |
| Тестирование удобства (Usability) | Насколько удобно пользоваться системой | Новый пользователь разобрался за 5 минут |
| Тестирование безопасности (Security) | Защищённость от атак и утечек данных | SQL-инъекция не даёт доступ к БД |
| Тестирование надёжности (Reliability) | Стабильность работы во времени | Система не падает за 48 часов непрерывной работы |
| Тестирование совместимости (Compatibility) | Работа в разных браузерах/ОС/устройствах | Приложение корректно работает в Firefox и Safari |
| Тестирование доступности (Accessibility) | Удобство для людей с ограниченными возможностями | Скринридер читает все элементы страницы |
Ключевые различия
| Аспект | Функциональное | Нефункциональное |
|---|---|---|
| Вопрос | Что делает? | Как делает? |
| Основа | Требования к функциям | Характеристики качества |
| Пример | Кнопка сохраняет данные | Кнопка сохраняет за 0.5 сек |
| Результат | Работает / не работает | Быстро/медленно, удобно/неудобно |
Когда что применяется
Функциональное тестирование начинается сразу, как только готова хоть какая-то функция. Его делают постоянно на протяжении всего цикла разработки.
Нефункциональное тестирование обычно проводится позже — когда основная функциональность уже реализована и стабилизирована. Исключение — требования к безопасности: их проверяют как можно раньше.
Распространённые ошибки
- Путать функцию с качеством. «Страница загружается» — функциональное. «Страница загружается за 2 секунды» — нефункциональное.
- Игнорировать нефункциональные требования. Продукт может работать «правильно», но быть медленным или небезопасным — и это тоже баг.
- Думать, что нефункциональное менее важно. Пользователи уходят с медленных сайтов быстрее, чем с неудобных.
Что запомнить
- Функциональное тестирование — что делает система (соответствие требованиям)
- Нефункциональное тестирование — как делает система (характеристики качества)
- Оба типа одинаково важны для качественного продукта
- Основные виды нефункционального: performance, usability, security, reliability, compatibility