Понимание инструментария непрерывной автоматизации Trade Me, используемого для нашего приложения Angular, и моего пути к изучению всего этого.

Пришел (Pro) трактор

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

Новый веб-сайт представляет собой приложение Angular, и мы решили написать сквозную автоматизацию (E2E) с помощью Protractor. Protractor - это тестовая среда E2E для приложений Angular и AngularJS, которая запускает тесты для вашего приложения в реальном браузере. По сути, он точно проверяет, что ваши пользователи будут испытывать при использовании вашего приложения.

В Trade Me мы уже широко использовали инструменты тестирования API Automation, но в целом мы были менее знакомы с UI Automation. Я сам не имел опыта работы с UI Automation. Даже работа на 100% над Front-end была для меня в новинку. Однако я всегда был готов принять вызов, поэтому я воспользовался этим как прекрасной возможностью узнать как об автоматизации пользовательского интерфейса, так и о транспортире… Я был в восторге!

Некоторое представление об инструментах

В Trade Me мы используем Protractor, смешанный с Tractor, который представляет собой инструмент пользовательского интерфейса, созданный замечательным Craig Spence и созданный поверх Protractor. Как указано в репозитории Tractor на github, Tractor - это пользовательский интерфейс на основе Protractor, помогающий писать тесты E2E для приложений Angular без необходимости знания JavaScript.

Таким образом, у вас есть полный доступ к коду и 99% доступ к использованию «чистого» транспортира. Одним из преимуществ пользовательского интерфейса для Protractor является то, что любой может легко приступить к созданию тестов, не зная Javascript. Все, что вам нужно знать, это немного CSS, немного об автоматизации и немного о том, как объекты страницы, макетные запросы и спецификации mocha работают вместе, и вы получили блестящий тест e2e.

Вы можете сделать все это с помощью пользовательского интерфейса трактора, как показано ниже:

Под капотом Tractor переводит то, что вы создаете, на JavaScript. Например, вы можете поместить свои Элементы и Действия в объекты своей страницы, как показано ниже:

И Tractor переведет это в код следующим образом:

this.refinementOptionAccordion = function (groupSelector) {
            return new Tgbutton2(findAll(by.css('.tm-refine-menu__reveal-accordion-item')).getFromGroup(groupSelector));
        };
    };
    TmRefineMenu.prototype.clickRefinementOption = function (nameOfRefinement) {
        var self = this;
        var result = Promise.resolve();
        result = result.then(function () {
            return self.refinementOption.clickRefineItem(nameOfRefinement);
        });
        return result;

У вас также есть вкладки для Mocha Specs и Mock Requests. На каждой из этих вкладок вы можете выполнять все перечисленное ниже и многое другое:

  • Создать новые файлы
  • Создавать элементы в файлах объектов страницы
  • Добавить действия к файлам объектов страницы
  • Вставьте свой json для файлов фиктивных запросов
  • Вытяните его полностью в файлы спецификации Mocha, чтобы создать тесты e2e

Как это началось

Я прыгнул в голову первым. Пока разработчики повышали квалификацию в Angular и TypeScript, я использовал дополнительное время для повышения квалификации в Protractor и Tractor.

Я начал с того, что узнал, как все это работает и каковы все части головоломки; объекты страницы, макетные запросы, спецификации мокко. Затем я вскочил, взглянул на сотню или около того тестов, которые мы уже прошли, и подумал:

  • Где я могу повысить ценность наших тестов?
  • Все ли эти тесты по-прежнему ценны?
  • Могу ли я улучшить какие-либо из наших текущих тестов?
  • Нужно ли нам больше охвата приложения?

Учитывая все вышеперечисленное, у меня был бесконечный запас способов повышения навыков в Транспортире.

Развитие моих навыков JavaScript

У меня был бесконечный запас шансов повысить квалификацию и изучить Транспортир. Однако для меня Tractor UI был лишь шагом на пути к тому, чтобы стать более техничным. В частности, это был большой шаг к изучению JavaScript.

Для себя я сделал это, открыв свою IDE вместе с Tractor. Я вносил изменения в пользовательский интерфейс и смотрел, что происходило в исходном коде, чтобы лучше понимать, что происходит.

Затем я немного активизировал работу и начал изучать JavaScript, чтобы я мог начать вносить изменения непосредственно в код, а не полагаться на оболочку пользовательского интерфейса, предлагаемую Tractor. Я все еще учусь, но сейчас я чувствую себя более комфортно с написанием тестов на JavaScript и еще более комфортным с просмотром изменений кода других людей!

Тренировочная часть всего этого

Я, будучи самим собой, вскоре хорошо познакомился как с инструментами, так и с авторством автоматических тестов. Так что в конечном итоге я стал специалистом по всем вопросам, связанным с транспортиром и трактором. Затем меня попросили проводить тренинги, которые, по моему мнению, стали отличным дополнением ко всему моему обучению. С тех пор я делал все больше и больше вещей, поэтому теперь у меня была возможность:

  • Улучшаем наш инструментарий и как мы проводим тесты
  • Отладка и исправление тестов
  • Наставляйте других в использовании транспортира и трактора
  • Проводите тренинги для повышения квалификации других
  • Просмотрите несколько изменений кода
  • Развиваю свои навыки JavaScript

Никогда бы не подумал, что в конечном итоге стану тем, кто обучал других искусству транспортира, но все возможно, если вы задумаетесь. Лучше всего то, что я улучшил и ряд других навыков, таких как общение, документирование, публичные выступления, влияние на других и наставничество.

Что дальше

Из всего этого я понял, что мне очень нравится автоматизация моей роли. Кроме того, возможность делиться тем, что я узнал, и обучать других тоже очень полезно.

Больше всего мне нравится, как автоматизация дает вам возможность проникнуть в код, изучить его, понять и написать. Мне очень интересно знать, как все работает от нижних слоев до самых верхних.

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