Ответ
Среда состояла из нескольких изолированных окружений, развернутых в облаке AWS:
Иерархия окружений:
- DEV (Development): Для разработчиков и раннего smoke-тестирования. Нестабильно, частые деплои.
- QA (Testing): Основное окружение для командного тестирования (ручного и автоматизированного). Конфигурация максимально полная.
- Staging/Pre-Prod: Почти полная копия production. Использовалось для:
- Финального приемочного тестирования (UAT).
- Проверки миграций БД.
- Performance-тестов.
Конфигурация и данные:
- Базы данных синхронизировались с production еженедельно с обязательной маскировкой персональных данных (PII).
- Конфигурационные файлы для автотестов управлялись через переменные окружения.
# config_qa.py BASE_URL = os.getenv("QA_API_URL", "https://api-qa.example.com") API_KEY = os.getenv("QA_API_KEY") HEADERS = {"Authorization": f"Bearer {API_KEY}"} - Для нагрузочного тестирования разворачивался отдельный инстанс с JMeter, чтобы не создавать нагрузку на QA-сервисы.
Ответ 18+ 🔞
Вот, представляешь, эта вся наша среда была разбита на несколько отдельных песочниц, которые болтались где-то в облаках AWS. Как будто несколько квартир в одном доме, но соседи друг к другу не ходят, блядь.
Так, смотри, как это всё было устроено:
-
DEV (Development): Это типа общага для разработчиков. Там постоянно кто-то орёт, музыка играет, а стены шатаются. Деплоят туда по десять раз на дню, всё падает, всё нестабильно. Нормальный человек там долго не выдержит, но для быстрого "а работает ли оно вообще?" — самое то.
-
QA (Testing): А это уже съёмная квартира, где живёт вся команда тестирования. Всё более-менее прибрано, мебель есть, конфигурация почти как у людей. Тут уже и ручные тесты гоняют, и автотесты ночами орут. Основная рабочая площадка, можно сказать.
-
Staging/Pre-Prod: О, а это уже почти точная копия квартиры босса (production), только без его коллекции дорогого виски. Использовали её для всяких серьёзных дел:
- Для последнего "ну всё, клиент, заходи, смотри, тестируй" (UAT, блядь).
- Чтобы проверить, не сломаем ли мы всё к хуям, когда будем мигрировать базу данных.
- Чтобы устроить перформанс-тест и понять, выдержит ли система, если на неё набегут десять тысяч пользователей разом.
А теперь про данные и настройки, тут отдельный цирк:
- Базы данных нам подливали из продакшена раз в неделю. Но, естественно, перед этим всю личную инфу (PII) замазывали, как будто лицо в паспорте. Чтобы какой-нибудь тестировщик не увидел, что у Василия Пупкина номер карты 1234 и он любит аниме, ёпта.
- Все настройки для автотестов тащились из переменных окружения. Чисто, аккуратно, не надо в коде ничего править.
# config_qa.py
BASE_URL = os.getenv("QA_API_URL", "https://api-qa.example.com")
API_KEY = os.getenv("QA_API_KEY")
HEADERS = {"Authorization": f"Bearer {API_KEY}"}
- И отдельная песня — нагрузочное тестирование. Для него поднимали специальный, отдельный инстанс с JMeter. Потому что если начать ебашить нагрузкой по основному QA-окружению, то тестировщики просто взвоют, у них всё поплывёт, и они придут к тебе с вилами. А так — пусть себе JMeter в углу орёт, никому не мешает.