Carregar apresentação
A apresentação está carregando. Por favor, espere
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!
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”)
25
Testes de Aceitação Integridade Externa Mais lentos
Mais difícil detectar causa de erros Escrito para clientes Não indicam integridade interna
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
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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.