Unit-тесты – тесты, проверяющие корректность работы отдельных модулей программы.
Плюсы unit-тестов
- Можно запустить сразу после внесения изменений в код – позволяют найти дефект сразу после его создания.
- Могут служить документацией к коду.
- Упрощают процесс рефакторинга.
Минусы unit-тестов
- Их надо писать.
- Их надо уметь писать.
- Их надо поддерживать.
Но даже если все компоненты по отдельности работают правильно, то это ещё ничего не значит.
Интеграционные тесты – тесты, проверяющие корректность взаимодействия отдельных модулей друг с другом.
Плюсы интеграционных тестов
- Находят баги, которые не могут быть обнаружены unit-тестами.
- Запускаются после сборки проекта и позволяют быстро обнаружить проблемы взаимодействия.
Минусы интеграционных тестов
- Все минусы unit-тестов
Приёмочные тесты – тесты, проверяющие работоспособность системы целиком. В реальном окружении, с реальными данными, на реальных сценариях.
Плюсы приёмочных тестов
- Находят баги, которые не могут быть обнаружены unit- и интеграционными тестами.
- Позволяют оценить работоспособность продукта целиком.
- На этом уровне с продуктом могут ознакомиться будущие пользователи.
Минусы приёмочных тестов
- Самые высокоуровневые – сложнее локализовывать проблему
- Занимают больше времени
- Обнаруживают проблемы с некоторой задержкой
Функциональное тестирование – проверка работы кода/продукта на соответствие требованиям. Проверка логики работы.
Конфигурационное тестирование на клиенте – проверка работоспособности на различных конфигурациях. Для веб-сайтов – в разных браузерах.
Конфигурационное тестирование сервер-сайда – проверка работоспособности в окружении, максимально идентичном продакшену (железка, OS, утилиты, библиотеки, конфиги, версии).
Нагрузочное тестирование – проверка работоспособности под нагрузкой (одновременная обработка большого потока запросов).
Тестирование производительности – проверка скорости работы системы.
Причём:
- Необходимо измерить длительность полного цикла «запрос-ответ». Оценить общее время, обратить внимание на отдельные этапы.
- То же самое – под нагрузкой
- В пользовательских условиях (сетевые условия).
Тестирование безопасности.
Тестирование юзабилити – тестирование удобства использования.
Тестирование стабильности – тестирование стабильности работы под нагрузкой, длительное время.
До кучи:
– Volume тестирование
– Stress/Recovery тестирование
– Spike тестирование
– Localization тестирование
– Compatibility тестирование
– и т. д. и т. п.
Способы тестирования
Ручное тестирование – выполнение тестов вручную или с помощью скриптов. Ручной анализ результатов.
Плюсы ручного подхода
- Более информативно – замечаются дефекты рядом
Минусы ручного подхода
- Долго
- Дорого
Автоматическое тестирование – выполнение с помощью скриптов или инструментов. Оценка результатов проводится автоматически.
Плюсы неручного подхода
- Удобно и легко
Минусы неручного подхода
- Тесты нужно писать и поддерживать
- Тесты выполняются «в лоб»
- Сами тесты/скрипты/инструменты могут содержать баги и порождать ложные результаты
Инструменты
Функциональное, приемочное тестирование:
- Selenium
- TestComplete
Функциональное, unit тестирование
- подбирается под используемый язык
Нагрузочное тестирование/тестирование производительности:
- Яндекс.Танк
- Jmeter:
Как сымитировать плохую сеть:
- Fiddler
- Charles
- Утилита tc: man tc
Комментариев нет:
Отправить комментарий