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.
14. O que eu realmente queria
$ cd locadora
$ jake test
.....
--> success!
10/11/2013Rodrigo Dumont 14
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. A velha questão do custo
10/11/2013Rodrigo Dumont 16
projeto desenvolvimento integração entrega
$$custo
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. 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
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
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. 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
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. 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. 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. Testes de Sistema
Geralmente são manuais
Podem ser automatizados
Testam interações completas
10/11/2013Rodrigo Dumont 29
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
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