SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
Desmistificando
Testes de Software
10/11/2013Rodrigo Dumont 1
Sobre mim
Rodrigo Dumont
 Engenheiro de Software
 Trabalho na VTEX
rodrigodumont.com
rdumont
10/11/2013Rodrigo Dumont 2
10/11/2013Rodrigo Dumont 3
Seu sistema tem testes
automatizados?
10/11/2013Rodrigo Dumont 4
Claro!
Em poucos passos você garante que tudo está
funcionando
10/11/2013Rodrigo Dumont 5
Criar um site no servidor Web
apontadndo para a
aplicação
1.
10/11/2013Rodrigo Dumont 6
Criar o banco de dados de
acordo com o esquema na
pasta docs
2.
10/11/2013Rodrigo Dumont 7
Abrir o projeto na IDE
3.
10/11/2013Rodrigo Dumont 8
Tentar executar os testes
4.
10/11/2013Rodrigo Dumont 9
Passar duas horas
encontrando o que foi
configurado errado
5.
10/11/2013Rodrigo Dumont 10
Executar os testes
novamente
6.
10/11/2013Rodrigo Dumont 11
Perceber que ainda faltou
instalar um componente
7.
10/11/2013Rodrigo Dumont 12
8
10/11/2013Rodrigo Dumont 13
O que eu realmente queria
$ cd locadora
$ jake test
.....
--> success!
10/11/2013Rodrigo Dumont 14
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
A velha questão do custo
10/11/2013Rodrigo Dumont 16
projeto desenvolvimento integração entrega
$$custo
Testes automatizados devem:
 Ter pré-requisitos sucintos
 Ser facilmente executáveis
 Ser legíveis
 Ter resultado legível
10/11/2013Rodrigo Dumont 17
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
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
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
Exemplo de teste unitário
10/11/2013Rodrigo Dumont 21
Frameworks de testes
unitários
10/11/2013Rodrigo Dumont 22
JavaScript
 Qunit
 Mocha
 Jasmine
.NET
 NUnit
 MSTest
 xUnit.Net
Python
 unittest
Java
 JUnit
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 ? ? ?
? ? ? ? ?
? ? ? ? ?
? ? ? ? ?
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
Exemplo de especificação
executável
10/11/2013Rodrigo Dumont 25
specflow
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
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
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
Testes de Sistema
 Geralmente são manuais
 Podem ser automatizados
 Testam interações completas
10/11/2013Rodrigo Dumont 29
Testando interfaces gráficas
 Testes naturalmente frágeis
 Selenium Web Driver
10/11/2013Rodrigo Dumont 30
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
Obrigado!
10/11/2013Rodrigo Dumont 32
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

Mais conteúdo relacionado

Semelhante a Desmistificando Testes de Software

Automacao de Testes - do zero ao clean code
Automacao de Testes - do zero ao clean codeAutomacao de Testes - do zero ao clean code
Automacao de Testes - do zero ao clean codeJoyce Bastos
 
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaAutomação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaGabriela Patuci
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Luís Cobucci
 
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...Bruno Tanoue
 
Boas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDBoas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDJony Ferreira dos Santos
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Luís Cobucci
 
Selenium Workshop
Selenium Workshop Selenium Workshop
Selenium Workshop Thoughtworks
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Claudinei Brito Junior
 
Ágil na Prática
Ágil na PráticaÁgil na Prática
Ágil na PráticaIgo Coelho
 
Testes Unitários: Começando a escrever testes no seu dia-a-dia
Testes Unitários: Começando a escrever testes no seu dia-a-diaTestes Unitários: Começando a escrever testes no seu dia-a-dia
Testes Unitários: Começando a escrever testes no seu dia-a-diaAlex Tercete
 
Testes e depuração de código com Python
Testes e depuração de código com PythonTestes e depuração de código com Python
Testes e depuração de código com PythonDorneles Treméa
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junitcejug
 
Design for change: Fatores que influenciam na longevidade de um Software PHP
Design for change: Fatores que influenciam na longevidade de um Software PHPDesign for change: Fatores que influenciam na longevidade de um Software PHP
Design for change: Fatores que influenciam na longevidade de um Software PHPPablo Dall'Oglio
 
Por que automatizar testes de software?
Por que automatizar testes de software?Por que automatizar testes de software?
Por que automatizar testes de software?Samuel Lourenço
 
TDC 2014 Floripa - Melhorando sua Estratégia de Testes Automatizados
TDC 2014 Floripa - Melhorando sua Estratégia de Testes AutomatizadosTDC 2014 Floripa - Melhorando sua Estratégia de Testes Automatizados
TDC 2014 Floripa - Melhorando sua Estratégia de Testes AutomatizadosStefan Teixeira
 
Por quê você deve utilizar TDD?
Por quê você deve utilizar TDD?Por quê você deve utilizar TDD?
Por quê você deve utilizar TDD?Wellington Moreira
 
Tdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalTdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalAdriano Petrich
 

Semelhante a Desmistificando Testes de Software (20)

Debugging node
Debugging nodeDebugging node
Debugging node
 
Automacao de Testes - do zero ao clean code
Automacao de Testes - do zero ao clean codeAutomacao de Testes - do zero ao clean code
Automacao de Testes - do zero ao clean code
 
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaAutomação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
 
ATDD Android
ATDD AndroidATDD Android
ATDD Android
 
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
 
Boas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDBoas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDD
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011
 
Selenium Workshop
Selenium Workshop Selenium Workshop
Selenium Workshop
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
 
Ágil na Prática
Ágil na PráticaÁgil na Prática
Ágil na Prática
 
Testes Unitários: Começando a escrever testes no seu dia-a-dia
Testes Unitários: Começando a escrever testes no seu dia-a-diaTestes Unitários: Começando a escrever testes no seu dia-a-dia
Testes Unitários: Começando a escrever testes no seu dia-a-dia
 
Testes e depuração de código com Python
Testes e depuração de código com PythonTestes e depuração de código com Python
Testes e depuração de código com Python
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junit
 
Desenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por TestesDesenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por Testes
 
Design for change: Fatores que influenciam na longevidade de um Software PHP
Design for change: Fatores que influenciam na longevidade de um Software PHPDesign for change: Fatores que influenciam na longevidade de um Software PHP
Design for change: Fatores que influenciam na longevidade de um Software PHP
 
Por que automatizar testes de software?
Por que automatizar testes de software?Por que automatizar testes de software?
Por que automatizar testes de software?
 
TDC 2014 Floripa - Melhorando sua Estratégia de Testes Automatizados
TDC 2014 Floripa - Melhorando sua Estratégia de Testes AutomatizadosTDC 2014 Floripa - Melhorando sua Estratégia de Testes Automatizados
TDC 2014 Floripa - Melhorando sua Estratégia de Testes Automatizados
 
Por quê você deve utilizar TDD?
Por quê você deve utilizar TDD?Por quê você deve utilizar TDD?
Por quê você deve utilizar TDD?
 
Tdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalTdd em django sem desculpas versao final
Tdd em django sem desculpas versao final
 

Desmistificando Testes de Software