Тестовые окружения

Тестовые окружения

Введение

Представь, что ты тестируешь фичу на своём ноутбуке, всё работает. А в продакшне — падает. Почему? Потому что разные окружения. Понимание того, что такое тестовое окружение и как правильно с ним работать — это базовый навык любого тестировщика.

Что такое тестовое окружение

Тестовое окружение (test environment) — это совокупность программного обеспечения, аппаратного обеспечения, конфигурации и тестовых данных, в которой выполняется тестирование.

Окружение включает:

  • Сервер (физический или виртуальный)
  • Операционная система
  • База данных (версия, конфигурация)
  • Приложение (конкретная версия)
  • Браузер/клиент
  • Сетевые настройки
  • Тестовые данные

Типичные окружения в компании

Development (Dev)

Рабочее окружение разработчиков. Код меняется постоянно, стабильность низкая.

  • Кто работает: разработчики
  • Стабильность: низкая
  • Тестировщик: обычно не тестирует здесь

Testing / QA

Окружение для тестирования. Сюда деплоят версию, которую нужно протестировать.

  • Кто работает: тестировщики
  • Стабильность: средняя
  • Тестировщик: основное рабочее место

Staging / Pre-production / UAT

Максимально близкая к продакшну копия. Финальная проверка перед релизом.

  • Кто работает: QA + бизнес-пользователи (UAT)
  • Стабильность: высокая
  • Тестировщик: финальная проверка перед релизом

Production (Prod)

Боевое окружение — реальные пользователи, реальные данные.

  • Кто работает: пользователи
  • Стабильность: критически важна
  • Тестировщик: никогда не тестирует намеренно (только мониторинг)

Путь от разработки до продакшна

Pipeline окружений: Dev → QA → Staging → Production

Dev → Testing/QA → Staging → Production
 ↑                                 ↑
 Разработчик                   Пользователи

Код движется слева направо. Каждый переход — это деплой новой версии в следующее окружение.

Почему нельзя тестировать сразу в продакшне

  1. Реальные данные. Случайный тест может изменить данные реальных пользователей
  2. Доступность. Падение продакшна = убытки и недовольные пользователи
  3. Необратимость. Некоторые действия нельзя откатить (отправленное письмо, списанные деньги)
  4. Репутация. Пользователи видят «сырые» фичи

Проблемы с окружением как баги

Важный момент: проблемы окружения — это тоже дефекты, и их нужно документировать.

Примеры:

  • На staging другая версия базы данных — тест падает
  • В тестовом окружении отключены email-уведомления — поведение отличается
  • Dev и QA используют разные версии сторонних API

Если тест падает из-за проблемы окружения, а не из-за бага в коде — это называется environment issue, и это тоже нужно репортить, просто иначе.

Управление тестовыми данными

Тестовые данные — это данные, которые используются для выполнения тестов.

Проблемы, которые возникают:

  • В QA-окружении нет данных для тестирования (пустая база)
  • Тестовые данные не соответствуют реальным (слишком простые)
  • Тесты зависят от конкретных данных, которые кто-то удалил

Хорошие практики:

  • Создавай нужные данные в начале теста, удаляй в конце
  • Используй seed-скрипты для заполнения тестовой базы стандартными данными
  • Не полагайся на то, что какие-то данные «всегда там будут»

Конфигурационные различия как источник багов

Очень частая ситуация: «У меня на машине работает!»

Причина — конфигурационные различия:

ПараметрDevQAProduction
База данныхSQLitePostgreSQL 14PostgreSQL 15
КэшированиеВыключеноВключеноВключено
ЛогиДетальныеСредниеМинимальные
Внешние APIМокиТестовые ключиБоевые ключи

Тестировщик должен знать, чем его окружение отличается от продакшна, чтобы понимать — баг везде, или только в конкретном окружении.

Распространённые ошибки

  • «Я протестировал на своём ноутбуке». Локальное окружение разработчика — не QA-окружение.
  • «В QA работает, значит и в prod будет работать». Staging максимально близок к prod — именно там финальная проверка.
  • «Проблема окружения — не наш баг». Документируй environment issues так же тщательно.
  • Ручные изменения в тестовой базе без документирования. Завтра никто не вспомнит, что было изменено.

Что запомнить

  • Тестовое окружение — это вся инфраструктура (сервер, БД, конфигурация, данные), в которой выполняется тест
  • Типичная цепочка: Dev → QA → Staging → Production
  • В продакшне намеренно не тестируют — там реальные пользователи и данные
  • Проблемы окружения — это тоже дефекты, их нужно документировать
  • Управляй тестовыми данными: создавай, используй, убирай за собой

Попробуйте интерактивную версию

Практические задачи, квизы и AI-наставник — бесплатный старт без карты

Перейти к практике