Desmistificando Testes de Software

376 visualizações

Publicada em

Apresentação feita em 10 de outubro de 2013 na PUC-Rio, Rio de Janeiro, Brasil.
Aborda as diferentes formas de testes de software e como elas se aplicam no desenvolvimento do dia a dia. O objetivo é fazer com que conceitos antes abstratos e acadêmicos sejam compreendidos em contextos mais próximos da realidade dos desenvolvedores.

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
376
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
10
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Desmistificando Testes de Software

  1. 1. Desmistificando Testes de Software 10/11/2013Rodrigo Dumont 1
  2. 2. Sobre mim Rodrigo Dumont  Engenheiro de Software  Trabalho na VTEX rodrigodumont.com rdumont 10/11/2013Rodrigo Dumont 2
  3. 3. 10/11/2013Rodrigo Dumont 3 Seu sistema tem testes automatizados?
  4. 4. 10/11/2013Rodrigo Dumont 4 Claro! Em poucos passos você garante que tudo está funcionando
  5. 5. 10/11/2013Rodrigo Dumont 5 Criar um site no servidor Web apontadndo para a aplicação 1.
  6. 6. 10/11/2013Rodrigo Dumont 6 Criar o banco de dados de acordo com o esquema na pasta docs 2.
  7. 7. 10/11/2013Rodrigo Dumont 7 Abrir o projeto na IDE 3.
  8. 8. 10/11/2013Rodrigo Dumont 8 Tentar executar os testes 4.
  9. 9. 10/11/2013Rodrigo Dumont 9 Passar duas horas encontrando o que foi configurado errado 5.
  10. 10. 10/11/2013Rodrigo Dumont 10 Executar os testes novamente 6.
  11. 11. 10/11/2013Rodrigo Dumont 11 Perceber que ainda faltou instalar um componente 7.
  12. 12. 10/11/2013Rodrigo Dumont 12 8
  13. 13. 10/11/2013Rodrigo Dumont 13
  14. 14. O que eu realmente queria $ cd locadora $ jake test ..... --> success! 10/11/2013Rodrigo Dumont 14
  15. 15. Motivação  Se testes forem difíceis:  Eu não vou testar tanto  Não vou saber saber se algo quebrou  Feedback demorado … ou pior: código em produção com erros 10/11/2013Rodrigo Dumont 15
  16. 16. A velha questão do custo 10/11/2013Rodrigo Dumont 16 projeto desenvolvimento integração entrega $$custo
  17. 17. Testes automatizados devem:  Ter pré-requisitos sucintos  Ser facilmente executáveis  Ser legíveis  Ter resultado legível 10/11/2013Rodrigo Dumont 17
  18. 18. Estrutura de um teste 10/11/2013Rodrigo Dumont 18  Pré-condição  Teste  Pós-condição  Contexto  Ação  Verificação  Arrumar  Agir  Afirmar
  19. 19. Conhecem isso? == Inicializar valores =declararparm baralho1 int 1 =declararparm baralho2 int 2 =declararparm AsOur int 0 =declararparm DoisOur int 1 =declararparm TresOur int 2 =declararparm QuatroOur int 3 == Comparar naipes =compararnaipe baralho2 AsOur CincoOur NpIgual =compararnaipe baralho2 AsPau SeisCop NpDifer == Comparar valores =compararvalor baralho2 TresPau TresOur VlIgual =compararvalor baralho2 AsPau SeisCop VlDifer 10/11/2013Rodrigo Dumont 19 Contexto Ação Verificação
  20. 20. Testes unitários  São muito rápidos ( < 30s)  Testam unidades de código isoladamente  Parte do processo de Test- Driven Development 10/11/2013Rodrigo Dumont 20 Funcionalidade OK OK OK OK OK OK FAIL OK OK OK OK OK OK OK FAIL OK OK OK
  21. 21. Exemplo de teste unitário 10/11/2013Rodrigo Dumont 21
  22. 22. Frameworks de testes unitários 10/11/2013Rodrigo Dumont 22 JavaScript  Qunit  Mocha  Jasmine .NET  NUnit  MSTest  xUnit.Net Python  unittest Java  JUnit
  23. 23. Testes de integração  São rápidos ( < 2min)  Testam a integração dos componentes em cada funcionalidade  Costuma integrar o processo de Behaviour- Driven Development 10/11/2013Rodrigo Dumont 23 Funcionalidade OK ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
  24. 24. Behaviour Driven Development  Artigo publicado por Dan North em 2006 Introducing BDD  Inspirou o projeto Cucumber  E, portanto, a linguagem Gherkin “Acceptance criteria should be executable” “Critérios de aceitação devem ser executáveis” Dan North
  25. 25. Exemplo de especificação executável 10/11/2013Rodrigo Dumont 25 specflow
  26. 26. Gherkin suporta vários idiomas Inglês Feature: Sum Scenario: Add two numbers Given I have entered 50 into the calculator And I have entered 70 into the calculator When I press add Then the result should be 120 on the screen
  27. 27. Gherkin suporta vários idiomas Português Funcionalidade: Sum Cenário: Somar dois números Dado que escrevi 50 na calculadora E que escrevi 70 na calculadora Quando pressionar o botão de somar Então o resultado na tela deverá ser 120
  28. 28. Gherkin suporta vários idiomas LOLCAT OH HAI: Sum MUSHUN: Add two numbers I CAN HAZ entered 50 into the calculator AN entered 70 into the calculator WEN I press add DEN the result should be 120 on the screen
  29. 29. Testes de Sistema  Geralmente são manuais  Podem ser automatizados  Testam interações completas 10/11/2013Rodrigo Dumont 29
  30. 30. Testando interfaces gráficas  Testes naturalmente frágeis  Selenium Web Driver 10/11/2013Rodrigo Dumont 30
  31. 31. Recapitulando  Execute o tempo todo os testes unitários! Eles devem:  Ser muito rápidos  Ser uito fáceis de executar  Ter grande cobertura do seu código  Não suba nada sem executar os testes de integração  Eles não devem demorar  Devem apontar problemas não cobertos pelos testes unitários  Observe atentamente os resultados dos testes de Sistema  Se houver falhas, volte à versão anterior 10/11/2013Rodrigo Dumont 31
  32. 32. Obrigado! 10/11/2013Rodrigo Dumont 32
  33. 33. Referências The Art of Unit Testing Ray Osherove  List of unit testing frameworks (http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks)  Introducing BDD | Dan North (http://dannorth.net/introducing-bdd/)  Cucumber – Making BDD fun (http://cukes.info/)  Gherkin – Tool Support (https://github.com/cucumber/gherkin/wiki/Tool-Support)  Selenium – Web Browser Automation (http://www.seleniumhq.org/) 10/11/2013Rodrigo Dumont 33

×