Живой опыт построения фреймвока от А до Я

Большая редкость попасть/быть на проекте, где будет создаватся фреймовок с чистого листа (и вас при этом не ограничивают в выборе стратегии). В реалиях мы приходим на проекты где уже что-то существует, что-то нужно переделать или есть готовая картина автоматизационного процесса, который нужно имплементировать. 

Мне посчастливилось только один раз внедрить автоматизацию начиная с составления критериев по выбору инструмента и заканчивая анализом проделаной работы. В этом материале я пропущу фазу оценки инструментария, в будущем я отдельно рассмотрю свое видение данного процесса. 

В моем случае тесты должны запускаться автоматически с билд системы, проганятся, результаты интегрироваться и отображаться на дашборде. Эта конкретная задача включала в себя интеграцию с менеджмент центром. Авто тесты должны полностью покрывать регрессионный сценарий для десктоп приложения (поддерживаются почти все виндовс ос). Само приложение логически можно разбить на несколько модулей.

При построении каркаса фреймворка у меня есть 3 разных задачи, тестирование, мост коммуникации с CI и менеджмент центром. Начну с взаимодействия CI-тесты. Во-первых, тесты надо запускать. Создаем батч файл который стартанет тестирование. Так как у разных инструментов разные механизмы то никакой конкретики. Laughing Во-вторых, результаты тестов надо интегрировать с билд системой. Система на моем проекте может принимать результаты тестирования в виде xml файла. Все что требуется, это по ходу тестирования наполнять файл(ы) содержимым и выкладывать в доступную для билда директорию (дальше уже чужой огород). Проект мы поделили на модули, а значит на дашборде сможем увидеть результаты по каждому отдельно. 

Идем дальше, коммуникация тестов с менеджмент центром. Тест у нас один, статус соответственно тоже. Тестируем билд на всех поддерживаемых системах, для этого на начальном этапе создаем только рутовые тесты. Копаясь в документации/интернете нахожу API используемого менеджмент центра. Раз "легкий" путь существует создаю код который позволит создавать/изменять тесты в менеджмент центре. 

Ну и наконец то, ради чего все это было проделано - тестирование. Задача стоит вполне конкретно и без выхода за рамки скоупа, тоесть пакет тестов известен и изменяться не будет. Все приложение состоит с набора DevExpress компонент. Значит для покрытия достаточно нескольких кейвордов для обработки конкретного типа компонента. Остается только построить регресионный сценарий вызовом нужных процедур.