O documento discute desenvolvimento guiado por comportamento (BDD) e desenvolvimento orientado a testes (TDD) como abordagens para especificar, projetar e implementar software de forma incremental através da descrição e verificação de seu comportamento. Ele explica como BDD e TDD permitem a evolução do projeto, documentação e validação de estado e interações. Também discute como começar o desenvolvimento "de fora para dentro", com histórias de usuário e cenários executáveis.
16. Validação de Estado @Test publicvoid OrderIsFilledIfEnoughInWarehouse() { Warehouse warehouse = new WarehouseImpl(); warehouse.add(“TALISKER”, 50); Order order = new Order(“TALISKER”, 50); order.fill(warehouse); assertTrue(order.isFilled()); assertEquals(0,warehouse.getInventory(“TALISKER”)); }
17. Validação de Interação @Test publicvoid fillingDoesNotRemoveIfNotEnoughInStock() { Order order = new Order(“TALISKER”, 51); Mock warehouse = mock(Warehouse.class); warehouse.expects(once()).method("hasInventory”) .will(returnValue(false)); order.fill((Warehouse) warehouse.proxy()); assertFalse(order.isFilled()); }
24. Soluções PorondecomeçarO quetestar O quenãotestar Outside-in User stories Quantotestar Como nomearos testes Porque um testefalha Mínimopossível Intenção Documentação http://www.slideshare.net/bmabey/the-why-behind-tddbdd-and-the-how-with-rspec
25. Trocar de senha Para que eu possa garantir minha segurança Como usuário registrado Eu quero poder trocar de senha
26. Trocar de senha Funcionalidade Então... Dado... Quando... Cenário 1 Um usuário logado Solicito a troca de senha A senha é alterada E a nova senha é válida E ativo Cenário 2 Um usuário logado Solicito a troca de senha A senha não é alterada E a nova senha é inválida E ativo Cenário 3 Um usuário anônimo Solicito a troca de senha Um erro é lançado