Центр обработки телекоммуникационных данных
Краткое описание проекта: внедрение, разработка и поддержка Continuous Integration для крупного, динамично меняющегося, многокомпонентного веб-приложения в сфере телекоммуникаций. Создание автоматизированных тестов для сложного web-интерфейса и покрытие REST сервисов. Создание инфраструктуры для автоматической сборки и тестирования приложения, использование Jenkins и большого количества плагинов к нему, Linux администрирование и автоматизирование администрирования. Выстраивание процессов управления тестами. Стабилизация CI.
Технологии: Linux, NAT, Bash; Jenkins; Maven, Ant, Ivy; TestLink; Jira, Greenhopper; ClearCase, Perforce, GIT, GitLab; TestNG, HtmlUnit, Sikuli, Selenium, WebDriver, JavaScript (Java Applet testing); WireShark; Java, Spring LDAP, ActiveDirectory, Apache POI, Jsoup, PdfBox, XPath, Groovy; HTTPS, SSL.
Особенности проекта:
- Интерфейс написан с использованием библиотеки GWT, и был неудобен с точки зрения его тестирования, например, id для веб-элементов генерировались автоматически.
- Использовались сложные компоненты, которые невозможно было протестировать с помощью Selenium, в таких случаях использовалась библиотека Sikuli.
- Использование DDT тестов – вся информация для заполнения модели для тестов бралась из xls-файла.
- Создание полного набора скриптов для сборки и установки компонентов приложения.
- Установка и настройка Jenkins и необходимого окружения для сборки и работы приложения.
- Тестируемое веб-приложение разворачивалось на нескольких серверах, часть сервисов приложения представлены отдельными серверами со своими специфическими настройками. Одно из требований заказчика – возможность быстрой инсталляции приложения на серверах клиента.
- Создание Pipelines на Jenkins’e для прохождения полного цикла: обновление исходников, сборка, установка, тестирование. Параллелизация билдов.
- Распределённая команда разработчиков (англо и русскоязычная), участники которой находятся в разных часовых поясах (максимальная разница составляла 11 часов).
Результат проекта:
- Continuous Integration успешно внедрён во все фазы проекта.
- Команда установила хорошее взаимопонимание с заказчиком, все претензии, проблемы и несостыковки обсуждались открыто и решение всегда принималось во внимание всеми членами команды.
- Восстановлена работа старых тестов.
- Установлено и настроено окружение для автоматизации сборки и тестирования приложения.
- Написаны тесты для web и REST частей приложения, так же тесты для сложных визуальных компонентов с использованием библиотеки Sikuli. Новые тесты написаны с более детальной проверкой.
- Были созданы кастомизированные Groovy шаблоны писем для Jenkins, которые заполнялись информацией о результатах сборки.
- Заказчик остался очень доволен результатами взаимодействия с нашей компанией.
Достижения компании на проекте:
- Посредством создания карт памяти в краткие сроки была освоена новая предметная область.
- Практически все итерации были признаны заказчиком успешными.
- На проекте было применено большое количество ранее не использовавшихся технологий и библиотек.
- Была изменена структура тестов. Тесты разбиты на независимые друг от друга группы, что уменьшило зависимость между результатами прохождения тестов и исключило дублирование кода. Мы смогли осуществить глубокий рефакторинг существующих тестов, применили ООП. Отчёты тестов стали более информативными и структурированными. Расширена система логгирования, улучшена обработка исключений. Это позволило быстрее вносить изменения в существующие тесты, поддерживать их в актуальном состоянии.
- С помощью Sikuli был протестирован интерфейс, который представляет собой изображение диаграммы, взаимодействие с которой обрабатываются через JavaScript (пользователь совершает действие > JavaScript отправляет данные на сервер > сервер генерирует новое изображение и отправляет его пользователю)