«Данный» описывает контекст, в котором происходит сценарий. Он либо описывает состояние , либо описывает что-то, что произошло . Так что произнесите это как в непрерывном, так и в прошедшем времени.
Given the invoice is two weeks late <-- continuous present
Given the invoice was submitted <-- past
Вы также заметите, что он ничего не говорит о том, кто отправил счет-фактуру. Это хорошо для контекста, потому что неважно, как он туда попал. Мы называем это «пассивным», а не «активным» голосом.
«Когда» описывает событие, которое происходит. Мне нравится говорить об этом в настоящем напряженном, активном голосе. «Собака укусила мальчика» - это активный голос. «Мальчик был укушен» пассивен, так как не упоминает, кто это сделал. Говоря о том, кто это делает, мы напоминаем людям, что есть пользователь, даже если этот пользователь является другой системой.
When I check my accounts
When the admin creates a new record
When the ETL begins
«Затем» описывает, что должно произойти в этом контексте для этого события. Мне нравится использовать слово «должно», которое является условным временем. Это также в пассивном голосе, потому что «когда» должно охватывать то, как это произошло.
Then the invoice should be marked as paid
Then I should receive an email <-- "I" am not the doer so this is still passive voice
Слово «должно» имеет дополнительное преимущество. Еще во времена развития водопада мы старались, чтобы все требования были правильными, но мы никогда не справлялись с этим.
Используя слово «должно», мы инкапсулируем идею о том, что неопределенность все еще существует. Это побуждает людей задаваться вопросом, являются ли требования точными, и перед лицом изменения технологий и инноваций, независимо от того, являются ли они по-прежнему точными.Легче изменить идею, когда она не использует «must» или «will», поскольку это слова, которые выражают определенность, и если вы убеждены в том, что кто-то уверен в чем-то, вы с меньшей вероятностью будете отступать ,
Отбрасывая назад и делая другие предложения, мы получаем «исследование по примеру», и оно является предшественником спецификации или теста на примере, которые являются хорошими побочными продуктами. В идеале вы будете обсуждать больше сценариев, чем вы на самом деле, и решать, какие из них находятся и вне сферы действия. Слово «должно» действительно помогает с этим и удерживать его, когда вы захватываете эти сценарии и записываете их, также помогает.
И, конечно же, это помогает дифференцировать «Дано» и «Затем» (но, надеюсь, не «Когда», так как это будет выражаться в активном голосе).
Так что, если бы я использовал свой пример «сделать что-то», я мог бы сказать:
Given something was done
When someone does something
Then something else should have happened.
Теперь ни один из ваших шагов сценария не похож, и вы уточнить, что вы на самом деле подразумеваете под ними, слишком.
Я написал a blog post на этом некоторое время назад, если это помогает в качестве ссылки.
Да, что сказала Лиз. –