В каждом сценарии, требующем входа пользователя в систему, необходимо, чтобы он вошел в систему. Это часть затрат на выполнение на уровне интеграции.Однако вход в систему не должен быть дорогостоящей операцией, занимающей много времени, вам нужно только заполнить два поля и отправить их.Для обработки входа в систему должно потребоваться <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 секунды).Время входа в систему для такого сценария тривиально по сравнению со временем, необходимым для выполнения остальной части настройки.