A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Behaviour-Driven Development em Ruby

Apresentações semelhantes


Apresentação em tema: "Behaviour-Driven Development em Ruby"— Transcrição da apresentação:

1 Behaviour-Driven Development em Ruby
BDD com RSpec Behaviour-Driven Development em Ruby Danilo Sato ThoughtWorks UK

2 Duas Perspectivas

3 TDD / Test::Unit

4 DSL para BDD Quanta sigla…

5 Test::Unit Classe estende Test::Unit::TestCase
Métodos devem começar com “test” Assertions: assert(bool) assert_equal(expected, actual) assert_raise(args, blk) assert_nil(actual)

6 Class Herança Nomes dos testes Assert

7 Describe/it Should + matchers Agrupa mais de 1 ‘assertion’ por teste Descreve comportamento!

8

9

10 setup/teardown

11 Simple Custom Matcher

12 Custom Matcher

13 Custom Matcher

14 Reaproveitamento

15 Pendente…

16 Test-Driven Development
1. Escreva um teste que falha 2. Faça o teste passar 3. Refatore!

17 Feedback Confiança Erros são detectados rapidamente
Ajudam a saber quando terminamos Pensar no design antes de implementar Evita generalização desnecessária Regressão automatizada

18 Testes Unitários Integridade Interna Rápidos Independentes
Escrito por e para desenvolvedores Não indicam integridade externa Interna: qualidade dos componentes Externa: qualidade do ponto de vista do sistema (clientes e usuários)

19 Visão mais ampla

20 Histórias Como <papel/usuário>
Eu gostaria de <funcionalidade> Pois <valor de negócio>

21 Cenários (exemplos) Dado <contexto> Quando <evento>
Então <consequência>

22 SMART Specific Measurable Achievable Relevant Time-boxed
* Specific - no generalizations (”It must be quick enough” vs. “It must load 90% of the time within 1 second”) Measurable - nothing that can’t be given a quantative measurement (”Users are happy” vs. “Users who express their level of happiness should give us at least 7/10″) Achievable - nothing that can’t be done (”I want my site emblazoned on the side of the moon”) Relevant - keep it related to the story at hand (”I want the three latest blog posts and a pony”) Timeboxed- work out when it needs to happen (”I want to be able to duplicate the works of Shakespeare using the random word generator”)

23

24

25 Testes de Aceitação Integridade Externa Mais lentos
Mais difícil detectar causa de erros Escrito para clientes Não indicam integridade interna

26

27 No mundo real as coisas são mais complicadas
Rails: Model / View / Controller / Helpers/ Plugins / Módulos / …

28 Testes Unitários

29 Testes de Aceitação

30

31

32 ?

33 Integração

34 Mocks Permitem especificar interações entre objetos
Trocam o objeto real por um dublê Verificam que as expectativas foram atendidas Substituem: Objetos “gordos” Serviços externos Bibliotecas (não quero testar se o gem funciona)

35 Mocks

36 Criando um mock

37 Gravando Expectativas

38 Verificar Expectativas
Automático! O teste vai falhar se: Método esperado não foi chamado Método foi chamado com argumentos diferentes Método foi chamado mais ou menos vezes Método não esperado foi chamado

39 Stubs Mocks que não verificam expectativas
Servem como dublês mas não se importam com o que aconteceu

40 RSpec on Rails Permite testar camadas isoladas:
Model Controller View Helper Testes de aceitação com Histórias

41 Model

42 Controller

43 View

44 Muito mais…

45 De volta ao BDD…

46 Normalmente…

47 BDD

48 BDD Feedback Outside-in

49 Resumindo Behaviour-Driven Development RSpec
Um processo ponta-a-ponta de desenvolvimento Independente de ferramenta “Outside-in” RSpec Ferramental completo para BDD ponta-a-ponta Histórias -> Mocks -> Specs

50 Coisas legais (Ruby) Autotest Synthesis Webrat Cucumber Selenium

51 Behaviour-Driven Development em Ruby
BDD com RSpec Behaviour-Driven Development em Ruby Danilo Sato ThoughtWorks UK


Carregar ppt "Behaviour-Driven Development em Ruby"

Apresentações semelhantes


Anúncios Google