Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouBianca Tavares Beltrão Alterado mais de 7 anos atrás
1
1 / AgileBrazil 2011 Melhorando a Qualidade dos Códigos de Teste Maurício Eduardo Szabo mauricio.szabo@gmail.com @mauricio_szabo http://mauricioszabo.wordpress.com http://github.com/mauricioszabo/AgileBrazil2011
2
2 / about:me Programador Ruby, Java, Python, Scala, C/C++, etc... Scrum Master Test-Addicted Clean-Code Addicted Enfim...
3
3 / Intro Agilidade, mudanças contínuas, requisitos mutantes Garantia de estabilidade – testes ”Dedo duro” - sempre saber o estado de seu sistema Confiabilidade no código, acabar com o ”medo de mudar” Requisitos mudam == testes mudam
4
4 / Intro – Testes se Pagam Testes demoram para ser escritos?
5
5 / Mudança - Exemplo Parsing de HTML Quero uma lista de todos os homens na página Para saber se o Ariovaldo está aparecendo na listagem de homens
6
6 / Minha Abordagem: BDD Testes x Comportamento Deixa eu ver se isso funciona... assert(this, works()); Deixa eu ver se está fazendo isso mesmo... assertThat(this, isDoing(right)); Assert x Should (Assert x Matcher) Big Picture – Small Picture – Smaller Picture – Unit Test
7
7 / Primeiros Exemplos Situação: elemento está verde?
8
8 / Mudança de ”Estilo” Situação: salário válido deve calcular IRPF
9
9 / (Evitar Cometer) Erros Comuns
10
10 / JAMAIS!!!
11
11 / Oops... Certos testes não dizem NADA Certos testes dizem DEMAIS
12
12 / Framework de Testes O que usar, como usar, por que usar?
13
13 / Framework de Testes Test/Unit, JBehave, RSpec, ScalaTest, JUnit, Jasminne, JSpec... Mocks: Mocha, FlexMock, Mockito, JMock, etc... Escolha corretamente: Um framework de testes: Deve ser extensível Deve ser flexível Um framework de mocks: Deve refletir a forma como você pensa
14
14 / Framework de Testes
15
15 / Codebase Comparação entre código e linhas de teste 1:1 (se possível) Testes devem crescer junto com seu código Classes auxiliares, métodos, custom matchers, etc Conforme seu projeto vai crescendo, a dificuldade de escrever novos testes deve ficar constante ou diminuir!
16
16 / Mocks Expectations: antes do teste, o define-se o que esperamos que o mock receba (Mocha, RSpec, FlexMock, JMock) Assertions: depois do teste, vemos o que o mock recebeu (Mockito)
17
17 / Eu uso... Para Ruby: RSpec, e às vezes, Mocha Para Scala: ScalaTest com Mockito Para Java: JUnit (com os Hamcrest matchers) e Mockito Para JavaScript: Jasminne
18
18 / Primeiro, resolva o problema Represente! A vida é um teatro! Não escreva NADA antes de resolver o problema Protótipos são válidos, mas devem ser descartados
19
19 / Então, escreva o código Teste vem PRIMEIRO Código vem DEPOIS Somente um teste deve falhar por vez Quer dizer...
20
20 / Somente um teste falhando? Mini-integrações
21
21 / Ambiente Isolado Todo teste, no BDD, é um cenário Pensar num teatro: Montar o cenário (Setup) Apresentação (para o código) Aceitação do público Desmontar tudo Peça foi um fracasso: ainda assim, desmontar tudo TearDown Infra-Estrutura do Teatro Setup Apresentação Aceitação
22
22 / Preparação não pode ficar implícita (Muito comum no RSpec / Ruby)
23
23 / Mas também, nada de explícita (Comum com situações que exigem muito ”setup”)
24
24 / Meio-Termo Métodos que ajudam a construir o cenário ideal
25
25 / Métricas (LOC) Setup (montar o cenário): Ideal: de 1 a 4 linhas Ruim: de 5 a 7 linhas Maior que 7: Rever a preparação do Cenário Chamada de método: Ideal: 1 linha Péssimo: maior que 2 linhas JAMAIS: Use IF, CASE, ou qualquer condicional!
26
26 / Estilo de Teste Como fazer seu teste ter menos cara de código e mais cara de texto.
27
27 / Bee English Dê sentido para as coisas!
28
28 / Bee English Falta de Sentido: ”que é que isso fazia mesmo???”
29
29 / Bee English Pense em como você descreveria aquele pedaço Adapte o texto até chegar à linguagem de teste
30
30 / Bee English Monte sua ”história” baseando-se na linguagem
31
31 / Uma Última Coisa Mocks e Stubs
32
32 / Stub! Stub como forma de ”controle” Programação Funcional Stub em algum lugar aqui dentro...
33
33 / Devil's Advocate Mas... e com a correria? Mas... você não demora mais pra fazer isso? Mas... a empresa (coloque aqui sua empresa favorita) não usa isso... Mas... meu código sequer tem testes, como eu vou aplicar isso?
34
34 / That's It Perguntas? Idéias? Contato: mauricio.szabo@gmail.com @mauricio_szabo http://mauricioszabo.wordpress.com http://github.com/mauricioszabo/AgileBrazil2011
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.