Какие виды тестирования вы знаете?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
# Виды тестирования
За мою карьеру я работал с большинством видов тестирования. Расскажу о наиболее важных и часто используемых.
Классификация по уровню (Pyramid)
1. Unit тесты (основание пирамиды)
Определение: Тесты отдельных функций, методов, классов без зависимостей.
Характеристики:
- Очень быстрые (миллисекунды)
- Написаны разработчиками
- Используют mocks/stubs для зависимостей
- Легко дебажить
- Покрывают ~70% функционала
Инструменты: pytest, JUnit, Jest, NUnit
Пример: Тест функции calcDiscount(price, percentage)
2. Integration тесты (середина пирамиды)
Определение: Тесты взаимодействия нескольких компонентов, модулей, сервисов.
Характеристики:
- Медленнее unit тестов (может быть 1-10 сек)
- Проверяют реальные зависимости или их имитацию
- Проверяют database, API, file system
- Критичны для качества
- Покрывают ~20% функционала
Инструменты: pytest (с БД), RestAssured, Postman, testcontainers
Пример: Тест, где микросервис А вызывает микросервис Б через HTTP
3. E2E / UI тесты (верхушка пирамиды)
Определение: Тесты полного user journey от UI до БД.
Характеристики:
- Самые медленные (могут быть 30+ сек)
- Наиболее brittle (хрупкие)
- Тестируют реальный сценарий
- Требуют много настройки
- Покрывают ~10% функционала
Инструменты: Selenium, Cypress, Playwright, TestCafe
Пример: Пользователь логинится, добавляет товар в корзину, платит, получает заказ
Классификация по типу (Functional vs Non-Functional)
Функциональное тестирование
Smoke тесты
- Быстрая проверка критичного функционала
- Запускаются на каждой сборке
- Например: приложение запускается, user может залогиниться
Sanity тесты
- Проверка логичности после изменений
- Более детальные, чем smoke
- После патча проверяем, что функция работает
Regression тесты
- Проверка, что новые изменения не сломали старое
- Обычно это вся автоматизация
- Запускаются перед релизом
Exploratory тесты
- Ручное тестирование без сценариев
- Нужен опытный QA, который мыслит creatively
- Ловит неожиданные баги
Нефункциональное тестирование
Performance / Load тесты
- Проверка поведения под нагрузкой
- Количество пользователей: 100, 1000, 10000?
- Response time, throughput, resource consumption
- Инструменты: JMeter, Gatling, k6, LoadRunner
Stress тесты
- Что происходит за лимитами?
- Сервис падает gracefully или крашится?
- Recovery время?
Endurance / Soak тесты
- Работа приложения в течение длительного времени
- Выявляет memory leaks, connection pool issues
- Обычно 24+ часа
Security тесты
- SQL Injection, XSS, CSRF
- Authentication, authorization
- Data encryption, sensitive data handling
- Инструменты: OWASP ZAP, Burp Suite
Usability тесты
- Удобство интерфейса
- Нужны реальные пользователи
- Qualitative feedback
Compatibility / Cross-browser тесты
- Работает ли на Chrome, Firefox, Safari, Edge?
- Разные версии браузеров
- Разные ОС
- Инструменты: BrowserStack, Sauce Labs
Localization / i18n тесты
- Правильная локализация на разные языки
- Формат даты, валюты, времени
- Правильное отображение текста
Классификация по объекту
API тестирование
- REST, GraphQL, SOAP endpoints
- Status codes, response structure, data validation
- Boundary values, negative cases
- Инструменты: Postman, RestAssured, requests (Python)
Database тестирование
- Проверка data integrity
- Миграции
- Triggers, stored procedures
- Query performance
Mobile тестирование
- Native iOS/Android приложения
- Разные устройства, ОС версии
- Sensor тесты (GPS, ускорометр)
- Инструменты: Appium, Espresso (Android), XCTest (iOS)
Классификация по методу
Black-box
- Тестируем только input/output
- Не знаем внутреннюю реализацию
- Более realistic
White-box / Glass-box
- Знаем код, structure, logic
- Можем писать unit тесты
- Code coverage metrics
Grey-box
- Комбинация: знаем some internal structure
- Можем добавить instrumentation
Классификация по статике
Static тесты
- Code review
- Static code analysis (linters, SonarQube)
- Не запускаем код
- Ловит баги очень рано
Dynamic тесты
- Запускаем приложение
- Проверяем во время выполнения
Мой подход
В своей практике я использую Test Pyramid подход:
- 70% Unit тесты (быстро, дешево, много coverage)
- 20% Integration тесты (проверяют взаимодействие)
- 10% E2E тесты (критичные user journeys)
Это даёт хороший баланс между скоростью, надёжностью и покрытием.
Для non-functional: performance тесты делаю перед каждым крупным релизом, security тесты — минимум раз в квартал или перед критичными изменениям в области payments/auth.