Какие виды тестирования знаешь
Существует множество видов тестирования программного обеспечения, каждый из которых направлен на проверку различных аспектов качества продукта. Ниже приведены основные виды тестирования, классифицированные по различным признакам.
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
Каждый тип тестирования важен в зависимости от стадии разработки, целей бизнеса и характеристик продукта. Хорошо выстроенный тестовый процесс сочетает несколько видов тестирования для обеспечения высокого качества и устойчивости к ошибкам.