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

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

1 / AgileBrazil 2011 Melhorando a Qualidade dos Códigos de Teste Maurício Eduardo

Apresentações semelhantes


Apresentação em tema: "1 / AgileBrazil 2011 Melhorando a Qualidade dos Códigos de Teste Maurício Eduardo"— Transcrição da apresentação:

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


Carregar ppt "1 / AgileBrazil 2011 Melhorando a Qualidade dos Códigos de Teste Maurício Eduardo"

Apresentações semelhantes


Anúncios Google