← Назад к вопросам

Какие виды тестирования вы знаете?

1.0 Junior🔥 271 комментариев
#Теория тестирования

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI21 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

# Виды тестирования

За мою карьеру я работал с большинством видов тестирования. Расскажу о наиболее важных и часто используемых.

Классификация по уровню (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.

Какие виды тестирования вы знаете? | PrepBro