Огурец, повторяя шаги входа в систему во всех сценариях - PullRequest
0 голосов
/ 08 октября 2018

Я использую селен с огурцом (использую JAVA, но не очень актуально)

Допустим, у меня есть следующие сценарии:

Функция: Пример функции

Сценарий: выполнить действие A на веб-сайте. Данный веб-сайт открыт. Пользователь должен ввести правильный логин и ввести поля. И пользователь нажать логин
. Затем выполнить действие A

* 1010. * Сценарий: выполнить действие A на веб-сайте. Данный веб-сайт открыт.введите правильный логин и пропустите поля И пользователь нажмите логин

Затем выполните действие B

Теперь будут сотни сценариев, и веб-сайт всегда требует входа на веб-сайт, поэтому я предполагаю,для каждого сценария тестирования мне придется повторять шаги входа в систему (например, с помощью BACKGROUND или перед обработкой сценария)

Я читал, что такого рода тесты должны быть автономными, поэтому не должно быть совместного использования экземпляра webdriverмежду сценариями

Скажи:

Функция: Некоторая функция

Сценарий: Вход на сайт Первые шаги ...

Сценарий: Выполнить действие A (пока мы уже зарегистрированы. Шаги ...

Сценарий Выполнить действие B (все время в одном и том же экземпляре браузера, который мы использовали в шаге входа и действии A step Steps ...

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

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

В каждом сценарии, требующем входа пользователя в систему, необходимо, чтобы он вошел в систему. Это часть затрат на выполнение на уровне интеграции.Однако вход в систему не должен быть дорогостоящей операцией, занимающей много времени, вам нужно только заполнить два поля и отправить их.Для обработки входа в систему должно потребоваться <100 мс. </p>

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

Поскольку Cucumber работает на уровне интеграции, лучше не использовать его в качестве инструмента тестирования, скорее его следует использоватькак инструмент для развития.Вместо того, чтобы писать тысячи небольших утверждений (как вы могли бы при модульном тестировании), вам нужно писать меньше больших сценариев, то есть каждый сценарий должен делать больше.Поскольку каждый сценарий делает больше, необходимость того, чтобы каждый сценарий был полностью независимым от любого другого сценария, увеличивается (чем больше вы делаете, тем больше вероятность того, что вы окажетесь побочными эффектами на другие вещи, которые сделаны).Совместное использование сеансов и попытка избежать сброса БД и сеанса между каждым сценарием оказывается ложной оптимизацией, которая создает больше проблем, чем решает.

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

Scenario: Re-order favorite Given I have a favorite order When I view my orders And I re-order my favorite order Then I should be taken to the checkout And my favourite items should be in the basket

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

  • Мне нужно зарегистрироваться
  • Мне нужно сделать хотя бы один предыдущий заказ
  • Мне нужно выбрать любимый заказ

и, конечно, есть много другихтакие вещи, как

  • необходимо заказывать продукты

Все это означает, что запуск этого сценария займет время, но это нормально, потому что вы получаете многофункциональность от этого.(когда я написал нечто подобное давным-давно, сценарий запускался через 1-2 секунды).Время входа в систему для такого сценария тривиально по сравнению со временем, необходимым для выполнения остальной части настройки.

0 голосов
/ 09 октября 2018

Я ничего не знаю о Selenium с огурцом (но мне нравится огурец: -)

Я из Selenium для Python.Там я могу сделать следующее:

from selenium import webdriver

profile = webdriver.FirefoxProfile(your_path_to_local_firefox_profile)
# like C:/Users/<USERNAME>/AppData/Roaming/Mozilla/Firefox/Profiles/<PROFILE_FOLDER>
browser = webdriver.Firefox(profile)

Итак, теперь с помощью «[WIN] + [R]» -> Выполнить -> «firefox.exe -p» я могу создать дополнительный профиль для Selenium.чтобы использовать его в приведенном выше коде, чтобы я мог использовать Firefox, а также начать с профиля на пробной основе.ТАКЖЕ, если ваш сайт с логином, который вы хотите автоматизировать, куки, кеш и т. Д. Поддерживает, то может случиться так, что вам не нужно будет каждый раз входить в систему через профиль firefox, но что запуск Firefox каждый раз будет происходить автоматически, потому что он сохранилданные для входа.

Я не знаю, поможет ли это, но я хотел вам сказать.

...