Опыт создания системы управления сборкой и тестированиемЧасть 0 - теоретическаяОлег Ладыгинoladygin@gmail.com
О чем речь вообще?Где взять дистрибутив?Что реализовано?Что делает этот тест?Тест валиден для этой версии?Когда тестировать?Какая сборка стабильная?… кто здесь?!…А если сотни подсистем?А если тысячи тестов?Как этим управлять?Модель «Организационная жаба»
Сначала надо подуматьПрежде чем что-то разработать, надо определить: кто этим будет пользоваться;
 с чем он уже работает;
 какую часть можно улучшить.В итоге – надо подумать.
артефактыДистрибутив
Исходный код
Сборка
Тест
Стабильная сборка
Тип теста
Дефекты
Bug-tracking
Система управления версиями (CVS)
Регулярная сборка и тестирование
…
Отгрузка
Сервера и платформы
Ресурсы
ОтчетыАвтоматизируем? Надо формально описать.Как выглядит сборкаКак выглядит тестирование
Вариант описания - деревоКак еще выглядит сборкаКак еще выглядит тестированиеЧто значит «ВЗЯТЬ»?Только последний?Где-то конкретно указанный?Стабильную сборку?
Что внутри прямоугольничков?Блоки сборки, теста, подготовки среды можно описать единообразно.Так как все эти действия совершаются не просто так,а преследуют некоторую цель, назовем это все Целью,которая либо достигается, либо используются ее результаты.Происходит выполнение какой-то команды
Зачем нужна структура?Автоматический поиск и выбор необходимых методов и данных.
Объединим все в сложную схему….Если совместить предыдущие слайды, получится очень большая и красивая схема. При наличии бинокля ее можно будет разглядеть. Или можно порисовать самостоятельно вместо перекура….Цели либо выполняются, либо доставляются ее результаты.
Если одновременно есть и выполнение, и использование, то создаются связи.
Как действовать, если цель не выполнилась, и какие результаты какого именно выполнения надо использовать?Превратим дерево в графЕсли множество целей выполняются в едином пространстве – то свяжем все одинаковые цели между собой, и будем использовать именно их результаты.
Иначе будем использовать на выбор: самые достоверныерезультаты,  последние, заданные вручную.Что получим в переводе «на пожрать»?При одиночном запуске теста берутся стабильные дистрибутивы.
При запуске теста и сборки тестируется только эта сборкаОпционально можно сделать и так:При запуске теста выбирается дистрибутив из списка успешных
Если стадия разработки – берется последний, если в тестировании – переданный на тестирование.Связи - автоматические Билд 3 Билд 2 Билд 1Некоторое пространство 2Пространство 3
Управление ресурсамиНе хватает одной детали – управления последовательностью запуска тестов и подготовкой среды их выполнения.Ресурс – это БД, общие файлы, данные, схемы, сервера и т.д.
Цель требует ресурсы для запуска, в Exclusive или Shared режиме.

"Опыт создания системы управления сборкой и тестированием" (полная)