Понимание инструментария непрерывной автоматизации 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
Никогда бы не подумал, что в конечном итоге стану тем, кто обучал других искусству транспортира, но все возможно, если вы задумаетесь. Лучше всего то, что я улучшил и ряд других навыков, таких как общение, документирование, публичные выступления, влияние на других и наставничество.
Что дальше
Из всего этого я понял, что мне очень нравится автоматизация моей роли. Кроме того, возможность делиться тем, что я узнал, и обучать других тоже очень полезно.
Больше всего мне нравится, как автоматизация дает вам возможность проникнуть в код, изучить его, понять и написать. Мне очень интересно знать, как все работает от нижних слоев до самых верхних.
Так что на данный момент я почти уверен, что автоматизация - это область, в которой я хочу специализироваться в какой-то момент в будущем. На данный момент мне еще предстоит многому научиться, так что отсюда только вперед и вверх.