Сравните следующее из вашего примера:
Учитывая, что Скотт является руководителем проекта, и проект интеграции stackoverflow никогда не регистрировался в системе. Когда Скотт регистрирует проект интеграции stackoverflow, указав Джейн в качестве участника проекта, тогда проект интеграции stackoverflow должен появиться в списке проектов Джейн
VS:
Учитывая руководителя проекта и незарегистрированный проект, когда менеджер проекта регистрирует проект и указывает члена команды, тогда проект должен появиться в списке проектов члена команды.
Обратите внимание, что формулировка второго примера выше не слишком отличается от первого примера, который вы дали в своем вопросе, но все же немного отличается, так что он выглядит так, как будто он немного более полон. Я думаю, что это то, чего вы, возможно, чувствуете, не хватает, и если бы это было так, я бы отнесся к этому как к «историческому запаху», и если это так, я бы продолжал задавать вопросы и переписывать до история / сценарий кажется более полной.
Лично я нахожу, что использование persona отвлекает меня от поставленной задачи, и мне не нравится заканчивать тем, что мой тестовый код завален текстом, который не читается так, как если бы он принадлежал тому, что я тестирую. Если, с другой стороны, вы используете подход, основанный на данных, и для этой цели определяете какую-то структуру данных, то имеет смысл заполнить эту структуру именами, которые могут иметь смысл в той области, где они тестируются.
Я думаю, что один из рисков при использовании персон - это то, что они иногда могут заменить ленивые имена методов или, что еще хуже, как средство для скучающих программистов, чтобы попытаться внести немного юмора в свой код. Не то, чтобы я думал, что это плохо - развлекаться с вашими именами, но если они не обеспечивают ценность для заинтересованных сторон, то их не следует использовать.
Мне приходит в голову еще одна мысль, что вы можете получить лучшее из обоих миров. Если вы укажете личность своего пользователя в качестве данных для подачи в сценарий вашей истории, вы получите преимущество в том, что ваш код будет чистым и точным, но вы можете сделать вывод более конкретным с точки зрения фактического выполнения теста. Например:
new Story("Project Registration")
.InOrderTo("allow project members to collaborate over a project")
.AsA("project manager")
.IWant("to be able to register new projects")
.WithScenario("New Project Registration")
.Given(AProjectManager, "Scott")
.And(AnUnRegisteredProject, "Stack Overflow Integration")
.When(TheProjectManagerRegistersTheProject)
.And(TheProjectManagerSpecifiesATeamMember, "Jane")
.Then(ThenTheProjectShouldAppearInTheTeamMembersListOfProjects)
.Execute();