Автоматизированное Тестирование Веб-Интерфейсов В Virto Commerce

На ранних этапах разработки можно обойтись ручным тестированием по заданному плану тестирования.

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

Запускать их вручную становится все сложнее.



Автоматизированное тестирование веб-интерфейсов в Virto Commerce

В этой статье мы поговорим о том, как мы в Virto Commerce автоматизируем тестирование важных бизнес-сценариев.



Для чего все это?

Приведу пример из нашего опыта: небольшая правка в стиле CSS привела к тому, что кнопка «Добавить товар в корзину» стала невидимой на мобильном устройстве.

К сожалению, в таком виде он был протестирован и выпущен.

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

К сожалению, мы часто узнаем о них после релизов и от клиентов.

Чтобы этого избежать, более двух лет назад мы начали внедрять E2E-тестирование в процесс разработки.

После этого большинство ошибок были выявлены на этапе разработки, а не на этапе производства.

E2E тестирует бизнес-сценарий от начала до конца.

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

Мы используем E2E-тесты:

  1. Чтобы контролировать регрессию
  2. Чтобы описать систему
  3. Для интеграции в CI/CD
Это включает в себя обеспечение того, чтобы все модули функционировали и работали вместе правильно и предсказуемо.

E2E-тесты позволяют нам охватить те части приложения, которые не охвачены модульными и интеграционными тестами.

Это связано с тем, что Unit-тесты и интеграционные тесты охватывают отдельные части приложения и тестируют изолированную часть функциональности.

Даже если эти части хорошо работают по отдельности, вы не можете быть полностью уверены, будут ли они работать вместе.

Таким образом, наличие набора E2E-тестов поверх Unit и интеграции позволяет нам наиболее полно протестировать все решение.



Автоматизированное тестирование веб-интерфейсов в Virto Commerce

Написание и запуск тестов E2E требует времени и ресурсов.

Google, например, предлагает разделение 70/20/10: 70% модульных тестов, 20% интеграционных тестов и 10% E2E-тестов.

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

E2E-тесты непросты, и на первый взгляд их разработка и поддержка кажутся дорогостоящими.

В Virto Commerce мы постоянно работаем над упрощением разработки и снижением затрат на поддержку E2E-тестов при выходе новых выпусков.

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



Хорошая пользовательская история — это почти законченный E2E-тест.

Часто можно услышать, что написание E2E-тестов требует времени и их сложно поддерживать.

Да, это правда, их нелегко поддерживать так же, как документацию.

Почему бы не сделать их частью процесса разработки и написания документации, записывая тем самым сделанные бизнес-сценарии.

Создание E2E начинается с пользовательской истории.

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

Пример пользовательской истории для кнопки добавления товара в корзину:

  
  
  
  
   

GIVEN I am signed in to the storefront AND Some product page is open (/product-name) AND my cart is empty WHEN I click to the "Add" button on the item with the following parameters: THEN I should see a dropdown menu where I can choose from 1 to 10+

который затем превращается в следующий тест:

Автоматизированное тестирование веб-интерфейсов в Virto Commerce

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



Это просто – установка и настройка Protractor

Нашим инструментом тестирования был Protractor, система автоматизации E2E-тестирования с открытым исходным кодом, разработанная специально для веб-приложений AngularJS. Protractor — это программа Node.js, созданная на основе WebDriverJS. Protractor работает как интегратор решений, сочетающий в себе мощные технологии, такие как Node.js, Jasmine, Selenium, Mocha, Cucumber и Web.

Автоматизированное тестирование веб-интерфейсов в Virto Commerce

Protractor знает об AngularJS, что позволяет проще писать тесты, не тратя внимания на ожидание запуска проекта AngularJS, обновление страницы и т. д. Опыт показывает, что входной барьер для разработчика очень низок.

Используйте npm для глобальной установки Protractor:

npm install -g protractor

веб-драйвер-менеджер — это утилита, которая позволяет легко настроить экземпляр Selenium Server. Selenium Server — будет использоваться для передачи команд между тестовой и реальной средой.

Запустите эту команду для установки или загрузки:

webdriver-manager update

И запустите:

webdriver-manager start

Эта команда запустит Selenium Server и откроет окно для отображения журнала.

Protractor будет отправлять запросы на этот сервер для управления браузером.

Транспортир готов к работе.

Более подробное описание основных шагов по написанию тестов можно найти по адресу главный сайт .



Правильная структура проекта

Тесты E2E должны находиться в том же репозитории, что и приложение или тема.

Мы отказались от использования внешних сервисов E2E-тестирования, поскольку, несмотря на кажущуюся простоту, сервисы усложняют запуск тестов на локальной машине и последующее обслуживание.

Код и тесты находятся в разных физических местах, из-за чего разработчики забывают их обновлять.

Нахождение приложения и тестового кода в одном репозитории упрощает сопровождение и сопровождение проекта.

Базовым примером может быть Смотри сюда .

В проекте создается папка E2E со следующей структурой, в которой для организации тестов используются объекты страницы.



E2E/ |--cart |

Теги: #Тестирование ИТ-систем #E2E #транспортир #angularjs #Тестирование ИТ-систем #Тестирование веб-сервисов

Вместе с данным постом часто просматривают: