Существует множество видов тестирования программного обеспечения, каждый из которых направлен на проверку различных аспектов качества продукта. Ниже приведены основные виды тестирования, классифицированные по различным признакам.
1. По уровню тестирования
● Юнит-тестирование (Unit Testing)
Проверка отдельных функций, методов или классов в изоляции от остальной системы. Используется для раннего выявления ошибок. Обычно пишется разработчиками.
- Примеры: JUnit, NUnit, PyTest
● Интеграционное тестирование (Integration Testing)
Проверка взаимодействия между модулями или компонентами. Цель — выявить ошибки в точках стыка.
- Подходы: Big Bang, Top Down, Bottom Up, Sandwich
● Системное тестирование (System Testing)
Полное тестирование всей системы на соответствие требованиям. Производится на собранной и развернутой системе.
- Пример: проверка, что пользователь может пройти путь от регистрации до оформления заказа.
● Приёмочное тестирование (Acceptance Testing)
Проводится заказчиком или пользователями, чтобы подтвердить, что система соответствует бизнес-требованиям.
- Варианты: Alpha (внутри компании), Beta (внешними пользователями)
2. По степени автоматизации
● Ручное тестирование (Manual Testing)
Проверка вручную без использования автоматизированных скриптов. Полезно при тестировании UI, exploratory-тестах, кроссбраузерных проверках.
● Автоматизированное тестирование (Automated Testing)
Использует скрипты и инструменты для автоматической проверки. Повышает скорость и повторяемость.
- Примеры: Selenium, Cypress, Appium
3. По степени знания о системе
● White-box testing (Тестирование «белого ящика»)
Тестировщик имеет доступ к внутренней структуре кода. Используется для юнит- и модульного тестирования.
- Проверяет: ветвления, циклы, покрытие кода
● Black-box testing (Тестирование «чёрного ящика»)
Тестировщик не знает внутренней реализации, оценивает только входы и выходы. Используется при системном и приёмочном тестировании.
- Техники: эквивалентное разбиение, анализ граничных значений
● Gray-box testing
Комбинация black-box и white-box. Частичный доступ к внутренней логике, но основной фокус — на внешнем поведении системы.
4. По цели тестирования
● Функциональное тестирование
Проверка, что система выполняет свои функции в соответствии с требованиями.
- Примеры: проверка логина, регистрации, бизнес-логики
● Нефункциональное тестирование
Проверяет аспекты, не связанные напрямую с функциональностью.
-
Виды:
-
Производительность (Performance Testing): скорость ответа, нагрузка, стресс
-
Юзабилити (Usability Testing): удобство интерфейса
-
Безопасность (Security Testing): защита от атак, SQL-инъекций, XSS
-
Надежность (Reliability Testing): устойчивость к сбоям
-
Совместимость (Compatibility Testing): проверка на разных ОС, устройствах, браузерах
-
Масштабируемость (Scalability Testing): рост нагрузки и системы
-
5. По фазе жизненного цикла разработки
● Регрессионное тестирование (Regression Testing)
Проверка, что новый код не повлиял на старый функционал. Часто автоматизируется.
● Smoke-тестирование
Поверхностная проверка, что система запускается и ключевые функции работают. Применяется перед углублённым тестированием.
● Sanity-тестирование
Фокусная проверка отдельных участков после фиксов или незначительных изменений.
6. Специальные виды
● Exploratory Testing (Исследовательское тестирование)
Без заранее написанных тест-кейсов. Тестировщик исследует продукт в процессе работы с ним.
● A/B-тестирование
Сравнение двух или более вариантов интерфейса или логики с целью определить, что работает лучше.
● Monkey Testing
Случайные клики и действия в приложении, имитирующие поведение «непредсказуемого пользователя».
● Accessibility Testing
Проверка доступности для людей с ограниченными возможностями (например, поддержка экранных читалок).
● Cross-browser и Cross-platform Testing
Проверка одинаковой работы продукта в разных браузерах и на разных устройствах.
● Static Testing
Анализ артефактов (код, документация) без запуска программы. Пример — code review или линтеры.
7. Тестирование по типу приложения
● Web-тестирование
Фокус на веб-интерфейсах, HTML/CSS/JS, кроссбраузерность, безопасность веба.
● Mobile-тестирование
Проверка приложений на Android/iOS. Включает тестирование под разные разрешения, сенсорное управление, энергопотребление.
● Desktop-тестирование
Проверка настольных приложений. Часто сложнее автоматизировать из-за специфичных UI-библиотек.
● API-тестирование
Проверка REST, SOAP или GraphQL API. Включает валидацию статуса, формата, схемы, логики.
8. По отношению к пользователю
● Пользовательское тестирование (User Testing)
С участием реальных пользователей. Смотрят, как они взаимодействуют с системой, и собирают обратную связь.
● End-to-End (E2E) тестирование
Проверка всего пользовательского пути, включая фронтенд, бэкенд и базы данных. Симулируется поведение реального пользователя.
Инструменты, применяемые в тестировании
-
UI/Browser: Selenium, Cypress, TestCafe
-
Unit: JUnit, NUnit, PyTest, Mocha
-
Mobile: Appium, Espresso, XCUITest
-
API: Postman, REST Assured, Swagger
-
Load Testing: JMeter, Gatling, k6
-
Security: OWASP ZAP, Burp Suite
Каждый тип тестирования важен в зависимости от стадии разработки, целей бизнеса и характеристик продукта. Хорошо выстроенный тестовый процесс сочетает несколько видов тестирования для обеспечения высокого качества и устойчивости к ошибкам.