QA Automation, часть 1: CI сервер наше все
January 10, 2012 | Posted by Andrey Rebrov under Практики, Статьи |
Часть первая
[Вводную часть можно прочитать здесь.]
Продолжаю серию постов про автоматизацию QA. Сегодня поговорим о CI серверах и как их можно необычно использовать. Рассмотрение пойдет больше под java-углом, но, думаю, может быть без проблем применено для любого языка. В статье я рассмотрю популярные сегодня CI сервера, их возможности по настройке и расширяемости и покажу какие плюшки можно получить от их грамотного использования. Поехали.
Итак, на сегодняшний день на рынке CI серверов для java-разработки есть следующие сервисы:
- TeamCity
- CruiseControl
- Apache Continuum
- Jenkins (он же Hudson)
Пройдемся по очереди по каждому из этих серверов.
TeamCity это продукт ребят из JetBrains, что уже говорит само себя, чего стоит только их IntelliJ IDEA. Сразу из коробки идет поддержка трех языков (Java, .NET, Ruby), само собой maven/ant + gradles, способна запускаться под Mac/Linux/Windows (хотя в свое время у меня были проблемы с запуском под винду). Есть два издания: бесплатное (20 конфигураций сборки и 3 агента) и платная (можно взять пробную лицензию на 60 дней). На данный момент уже сделано около 50 разнообразных плагинов, все лежат в одном месте и просто ставятся. Основные фишки:
- удаленная сборка и тестовый коммит (можно протестить локальную версию проекта из IDE);
- группировка тестов по уровню важности/риска;
- встроенная аналитика кода (Sonar становится не нужен);
- удобная работа с собранными артефактами на протяжении всей истории сборок;
- интеграция с amazon ec2;
- любители git/mercurial могут собирать прямо на своих ветках;
- и так далее.
- через веб-интерфейс сложно добавить / просмотреть / … и еще что-то сделать с проектом;
- плохая интеграция с тестовыми инструментами;
- проблемы с расширениями (хотя таки есть расширение для работы с php).
- очень большая аудитория и активное сообщество;
- гигантское количество плагинов (более 400);
- простая расширяемость под любой язык (Python? – нет проблем!);
- интеграция с невероятным количеством ПО (как насчет управления со своего iPhone?);
- предельно простая установка в один клик под ряд платформ;
- более чем удобный веб-интерфейс, через который можно настроить проект как только душа пожелает.
- советую поставить HTML publisher plugin, сможете публиковать собственные отчеты;
- Sonar plugin ставим однозначно – нам не нужен запах в коде;
- если есть возможность синтегрироваться с багтрекером, делайте это.
- можно настроить выполнение сборки не только на конкретном узле, но и на группе узлов через regexp;
- пользуйтесь сборкой по расписанию, чтобы сборка была доступна в нужные моменты (например, перед stand-up meeting);
- всегда выкачивайте полностью версию продукта и чистите репозиторий maven или любой другой среды, это сбережет вам массу времени;
- для каждого проекта лучше иметь свою версию maven репозитория, иначе будут зависимости;
- весь анализ кода оставьте на долю Sonar, так что смело ставьте галочку его использовать;
- не бойтесь иметь много задач на разные ветки и разные конфигурации сборок, вам это поможет, когда появится необходимость, что-то быстро протестировать или проверить.
- собрать версию приложения для установки;
- установить приложение на нужный сервер;
- запустить selenium тесты;
- получить актуальную информацию а базе данных и ее схему;
- получить актуальную UML-диаграмму.
- собрали приложение;
- скопировали на сервер;
- запустили сервер;
- выполнили нужные скрипты из консоли если нужно.
- базы, на которых работает приложение;
- параметры сборки (время, сервер, входящий конфиг);
- переменные окружения.
- в качестве процесса сборки вставляем строку запуска Schema Spy “java -jar …” не забыв указать, где у нас лежит он сам, драйвер базы данных и Graphviz, который построит нам замечательные схемы, на выходе имеем папку с index.html;
- в качестве html отчета данной сборки указываем как раз наш index.html;
- profit!
- рисование только диаграмм классов;
- встраивание полученных диаграмм в JavaDoc;
- cвязка с maven.
Использовать просто – подробный алгоритм есть тут.
Таким образом на выходе после всех сборок мы будем иметь набор отчетов:
- успешность сборки;
- документация к сборке;
- сборка, залитая на сервер;
- дистрибутив.
Pingback: QA Automation, часть вводная | AgileRussia()