Управление конфигурациями и тестовой средой,
или как вложить в руки тестировщиков холодное оружие.
Садовская Яна,АБАК-ПРЕСС
О нас
О чем доклад?● Почему нас перестало устраивать
текущее положение дел?● Как сделать новый легкий стенд?● Что мы для этого придумали?● Какие проблемы остались?
What do we have?
● 5 проектов;● scrum;● 2-3 потока задач к тестированию;● тяжелые тестовые стенды;● 6 машин на один стенд;● синхронизация с внешними сервисами.
Параллельная разработка
project
team #1
team #2
branch #1
branch #2
branch #3
branch #4
branch #5
P A I N
staging #1
staging #2
staging #3
Работа с громадной базой~ 25 млн. товаров~ 800 т. компаний
● дамп базы ~ до 14 ч.● деплой ~ 10 - 30 м.● операции с базой ~ 4 - 6 ч.
Что делать?
Ход работВсе компоненты — на одну виртуальную машину
db
script
front
cacheindex
job
mail knives
Ход работ● минимальный набор данных — в фикстуры;● латание дыр: данные для корректного
функционирования — в фикстуры;● простейший режим ножа: развертывание базы из
фикстур;
User.seed(:id, {:id => 1, :name => "Super User", :login => "blahblah", :password => "123456", :created_at => Datetime.now})
Эталонный #дампНужно работать с минимальным и достаточным набором данных. Кладем в sql файл.Как отбирали:● логика; ● техники тест-дизайна; ● накопленный опыт;● здравый смысл.
Режимы работы ножа● deploy● deploy:fixtures● deploy:dump
параметры:● название ветки с кодом● версия БД (только для deploy:dump)
Внедрение● у каждого тестировщика свой нож, с преферансом и
барышнями;● новая ветка — новый нож; ● отдельный сферический нож в вакууме для
автотестов;Как быть с данными?● если данные тестировщику больше не нужны —
дропаем;● если данные нужны — сохраняем дамп базы.
PROFIT!!!● количество потребляемого железа свели к
минимуму;● все операции на ноже ~ 2-5 минут;● пустая изолированная среда для автотестов;● каждому члену команды можно создать столько
ножей, сколько хочет, с какой хочет конфигурацией;● счастье тестировщика.
Целостность окруженияКак сохранить нужное нам окружение для ножа? Решение — Docker. Будем хранить в контейнерах.
Но это так, на будущее.
Нерешенные проблемы:( целостность окружения;
:\ необходимость обновления фикстур;
8( периодический мердж миграций, дампов;
;[ связи со сторонними сервисами.
Планы на будущее
● использование контейнеров (Docker);● нож для каждого проекта;● запилить красивый интерфейс
управления деплоями.
Спасибо за внимание!
Посмотреть всякое:О нас — railsc.ru О контейнерах — docker.ioО фикстурах — github.com/mbleigh/seed-fu
mailto: [email protected]