Artykuł Dana Northa, o którym wspomniał Kiewin, jest świetny.
Pamiętaj jednak, że istnieją "historie użytkowników", które w rzeczywistości powinny być napisane lub przynajmniej zebrane od klienta/użytkowników. Są to bardziej "historie typu" jako, chcę, więc ".
Następnie są kryteria akceptacji, które określają, w jaki sposób i kiedy opowieść użytkownika zostanie uznana za spełnioną. To jest tak, jak napisałeś w swoim poście: "Kiedy x, powinno y."
Istnieje wiele pokryć się z tym, co nazywam "historiami systemowymi" w moim systemie zarządzania projektami i "specyfikacjami" w moich testach, które określają zachowania, których użytkownik może nie znać, ale opisują interakcję między twoimi klasami. Historia systemu: "Kiedy LoginHandler otrzyma login i hasło, powinien zweryfikować dane za pomocą LoginValidator." Specyfikacja:
[TestFixture]
public class When_the_login_handler_is_given_a_login_and_password
{
constant string login = "jdoe";
constant string password = "password";
static LoginValidator loginValidator;
context c =() => loginValidator = an<ILoginValidator>;
because b =() => sut.Validate(login, password);
it should_validate_the_data_with_a_LoginValidator =
() => loginValidator.was_told_to(x => x.DoValidation(login, password));
}
Nevermind składnia badania, można zobaczyć, że sam tekst specyfikacja zawarta jest w nazwie klasy testy i nazwy metody. Co więcej, test/spec testuje zachowanie klas. Kiedy takie testy przechodzą na proste historie użytkowników, spełnione są kryteria akceptacji.