3. О чем доклад?
● Почему нас перестало устраивать
текущее положение дел?
● Как сделать новый легкий стенд?
● Что мы для этого придумали?
● Какие проблемы остались?
4. What do we have?
● 5 проектов;
● scrum;
● 2-3 потока задач к тестированию;
● тяжелые тестовые стенды;
● 6 машин на один стенд;
● синхронизация с внешними сервисами.
8. Ход работ
Все компоненты — на одну виртуальную машину
db
script
front
cacheindex
job
mail knives
mail
9. Ход работ
● минимальный набор данных — в фикстуры;
● латание дыр: данные для корректного
функционирования — в фикстуры;
● простейший режим ножа: развертывание базы из
фикстур;
User.seed(:id,
{:id => 1, :name => "Super User", :login => "blahblah",
:password => "123456", :created_at => Datetime.now}
)
10. Эталонный #дамп
Нужно работать с минимальным и достаточным
набором данных. Кладем в sql файл.
Как отбирали:
● логика;
● техники тест-дизайна;
● накопленный опыт;
● здравый смысл.
11. Режимы работы ножа
● deploy
● deploy:fixtures
● deploy:dump
параметры:
● название ветки с кодом
● версия БД (только для deploy:dump)
12. Внедрение
● у каждого тестировщика свой нож, с преферансом и
барышнями;
● новая ветка — новый нож;
● отдельный сферический нож в вакууме для
автотестов;
Как быть с данными?
● если данные тестировщику больше не нужны —
дропаем;
● если данные нужны — сохраняем дамп базы.
13. PROFIT!!!
● количество потребляемого железа свели к
минимуму;
● все операции на ноже ~ 2-5 минут;
● пустая изолированная среда для автотестов;
● каждому члену команды можно создать столько
ножей, сколько хочет, с какой хочет конфигурацией;
● счастье тестировщика.
15. Нерешенные проблемы
:( целостность окружения;
: необходимость обновления фикстур;
8( периодический мердж миграций,
дампов;
;[ связи со сторонними сервисами.
16. Планы на будущее
● использование контейнеров (Docker);
● нож для каждого проекта;
● запилить красивый интерфейс
управления деплоями.
17. Спасибо за внимание!
Посмотреть всякое:
О нас — railsc.ru
О контейнерах — docker.io
О фикстурах — github.com/mbleigh/seed-fu
mailto: sadovskaya@ek.apress.ru