Когда мне нужно выйти из системы, если я использую Specflow и Selenium (BDD)

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

  • When should I log out the test user?
    • Before each scenario?
    • После каждого сценария?
  • Могут ли specflow и selenium терять состояние после каждого сценария?
  • Должен ли я звонить page.Logout() каждый раз?

person GraDea    schedule 27.01.2014    source источник


Ответы (2)


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

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

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

Specflow и Selenium не хранят состояние, это делает система, которую вы тестируете. Например, если ваш сеанс хранится в файлах cookie, вы можете очистить указанные файлы cookie, и это приведет к выходу из системы. Но это не тестирование системы, поскольку конечный пользователь должен ее использовать, поэтому он просто сокращает углы и тестирует различные области системы (авторизация неаутентифицированных пользователей) и, таким образом, не очень хорошо коррелирует с реальным случаем. Просто используйте кнопку / ссылку выхода на странице, поскольку вы пишете тесты для браузера.

person t0mppa    schedule 27.01.2014
comment
Feature: User Dashboard As a user I want see dashboard and my info Scenario: Getting list of question Given Open user profile When I click by Reputation Then Open list of changes my reputation Scenario: Getting list of question Given Open user profile When I click by Questions Then Open list my questions Пользователь должен войти в систему для обоих сценариев. И я хочу войти в систему своего пользователя в Given. Теперь я выхожу из системы после каждой функции [AfterScenario] public void ScenarioTearDown() { Pages.Logout.Invoke(); } Это правильно? - person GraDea; 28.01.2014
comment
Это нормально, но если вы хотите сократить количество входов в систему и ни одна из ваших функций не зависит от пользователя, как насчет: Feature X Scenario: Log in [...] Scenario: do #1 [...] Scenario: do #2 [...] Scenario: do #3 [. ..] Scenario: log out [...]? Будет ли конечный пользователь вашей системы выходить из системы и входить в систему между открытием списка изменений репутации и открытием профиля пользователя? - person t0mppa; 28.01.2014
comment
Должны ли сценарии быть независимыми? - person GraDea; 29.01.2014
comment
Для крупномасштабных действий (например, для заполнения различных типов форм претензий, содержащих от 5 до 9 страниц вопросов), я бы порекомендовал множество модульных сценариев, которые вы можете комбинировать и сочетать в своих функциях и не пытайтесь войти в систему и войти в систему. выходить после каждого сценария, так как это не имело бы никакого смысла. Для действий меньшего масштаба (скажем, ответа на запрос каракули) вы можете использовать независимые сценарии, которые включают вход и выход. Таким образом, еще раз, это зависит от вашего тестируемого случая, универсального ответа не существует. :) - person t0mppa; 29.01.2014

I think you should make your test feature wise or module wise.
  • если вы рассматриваете все процессы в функции и в соответствии с потоком, вам нужно будет только выйти из системы в конце.

  • Если вы сделаете модуль мудрым, после процесса вы можете каждый раз выходить из системы и снова входить в систему в новом модуле.

person Arpan Buch    schedule 27.01.2014