Как структурировать тесты E2E с помощью Appium / Cucumber для форм Xamarin? - PullRequest
0 голосов
/ 04 июля 2018

Мы начинаем структурировать наши тесты пользовательского интерфейса e2e, используя стек Appium / Cucumber / Ruby. Поскольку мы используем Xamarin Forms, мы, очевидно, хотим протестировать iOS и Android. В конце мы хотим загрузить тесты в App Center для запуска на нескольких устройствах, получить отчеты и т. Д.

Огурец обычно использует эту структуру каталогов:

Е2Е

---- ОСОБЕННОСТИ

-------- ПОДДЕРЖКА

------------ env.rb

------------ hooks.rb

-------- STEP_DEFINITIONS

------------ home_steps.rb

-------- Home.feature

Проблема начинается с файла env.rb, который содержит все требуемые возможности Appium, и они совершенно разные или iOS и Android.

1 - Как мы могли бы практично переключать env.rb с одной платформы на другую?

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

2 - Можем ли мы создать какую-то глобальную переменную PLATFORM и создать условия, например, IF PLATFORM = ANDROID THEN ... в наших определениях шагов и функциях?

Другой подход заключается в том, чтобы полностью отделить исходный код для каждой платформы, примерно так:

Е2Е

---- IOS

-------- ОСОБЕННОСТИ

------------ ПОДДЕРЖКА

---------------- env.rb

---------------- hooks.rb

------------ STEP_DEFINITIONS

---------------- home_steps.rb

------------ Home.feature

---- ANDROID

-------- ОСОБЕННОСТИ

------------ ПОДДЕРЖКА

---------------- env.rb

---------------- hooks.rb

------------ STEP_DEFINITIONS

---------------- home_steps.rb

------------ Home.feature

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

3 - Какой подход, по вашему мнению, лучше?

Спасибо

1 Ответ

0 голосов
/ 04 июля 2018

На самом деле вопрос не в Cucumber, а в том, что касается вашего приложения / организации, а также того, насколько материал специфичен для конкретной платформы. Если у вас есть много вещей, которые по-разному работают на IOS против Android, и вы разрабатываете их по одной платформе за раз (например, у вас есть отдельные команды IOS / Android), то лучше всего использовать отдельные наборы функций.

Если подавляющее большинство элементов одинаковы, то будет работать одна папка, настраиваемая для работы на разных платформах (возможно, с использованием переменной среды для выбора). Или вы можете объединить два, имея features ios-features android-features.

Cucumber имеет ряд инструментов, которые поддерживают работу с различными конфигурациями в одной папке. Помните, что env.rb - это просто файл ruby, поэтому он может загружать переменные окружения и использовать их для изменения конфигурации. Кроме того, у вас есть теги и хуки, так что вы можете, например, иметь сценарии @ ios и иметь профили.

...