Применял следующие виды тестирования:
Функциональное тестирование:
- Модульное тестирование: Часто писал или пересматривал тесты в рамках разработческих задач, особенно когда команды придерживались TDD.
- Интеграционное тестирование: Тестировал взаимодействие между модулями, сервисами, базами данных.
- Системное тестирование: Тестировал систему в целом, проверяя соответствие требованиям.
- Приемочное тестирование: Совместно с бизнес-аналитиками или заказчиками проверял, соответствует ли продукт ожиданиям.
Нефункциональное тестирование:
- Нагрузочное тестирование: Проверял производительность системы при различных уровнях нагрузки, используя такие инструменты как JMeter, LoadRunner.
- Стресс-тестирование: Определял устойчивость системы к экстремальным нагрузкам.
- Тестирование стабильности (Endurance testing): Длительное тестирование для выявления проблем, связанных с утечками памяти или деградацией производительности со временем.
- Тестирование безопасности: Проводил статический и динамический анализ кода, fuzz testing, ручное тестирование на наличие XSS, SQL Injection и других уязвимостей.
- Тестирование удобства использования (Usability testing): Анализировал, насколько интуитивно понятен и удобен интерфейс для конечного пользователя.
- Тестирование совместимости: Проверял работу приложения в различных окружениях (браузеры, операционные системы, устройства).
Тестирование изменений:
- Регрессионное тестирование: Проверял, что новые изменения не нарушили существующую функциональность. Автоматизация этого вида тестирования была приоритетом.
- Дымовое тестирование (Sanity check / Smoke testing): Быстрое тестирование основных функций после сборки или деплоя.
Тестирование на основе структурного подхода (White-box):
- Тестирование покрытия (Coverage testing): Анализировал покрытие кода тестами (statement, branch, path coverage) для определения пробелов.
В зависимости от проекта и его специфики применялись и другие виды, например, a/b тестирование в рамках продуктовой аналитики. Основной упор делался на автоматизацию регрессионного и интеграционного тестирования для поддержания высокого качества продукта на протяжении всего жизненного цикла.