SlideShare uma empresa Scribd logo
1 de 17
Baixar para ler offline
Globalcode – Open4education
Property Based Testing
Mariane Machado
Globalcode – Open4education
Quem sou eu
Desenvolvedora
@mariane_sm
mariane.machado@gmail.com
Globalcode – Open4education
Antes de começar …
Como nós testamos normalmente? Casos de teste.
boolean isPositive(int n)
Globalcode – Open4education
Pensando além
O que nos levou a escolher esses casos de teste?
Por que não -2, 0, 2 e 5?
Example based testing
Globalcode – Open4education
Vida real
Nem sempre é fácil achar os casos de teste
Globalcode – Open4education
Outro exemplo
Dado 3 lados (a,b,c), dizer se eles formam um
triângulo.
boolean isTriangle(int a, int b, int c)
Globalcode – Open4education
Condição de existência do Triângulo
|b - c| < a < b + c
|a - c| < b < a + c
|a - b| < c < a + b
Globalcode – Open4education
Vamos escolher casos de teste
EQUILÁTERO: a=2 b=2 c=2
ISÓSCELES: a=2 b=2 c=3
ESCALENO: a=2 b=3 c=4
NÃO FORMA TRIÂNGULO: a=1 b=2 c=3
Globalcode – Open4education
Código foi pra produção …
Quebrou com o input: a=3 b=1 c=2
Globalcode – Open4education
Implementação
if (a > |b - c|) and (a <= b+c) {
return true
}
return false
Retorna false pra (1,2,3) mas true pra (3,1,2)
Globalcode – Open4education
Problema (e solução)
Fato: normalmente não é fácil achar
todos os casos de teste
Às vezes ficamos enviesados: difícil
pensar “fora da caixa”
Property based testing ao resgate!
Globalcode – Open4education
Testando propriedades
Triângulo (1,2,3) == (3,2,1)
Condição de existência do triângulo é COMUTATIVA
Como colocar isso num teste?
Globalcode – Open4education
Property based testing
Globalcode – Open4education
Property based testing
Ajuda a encontrar casos de teste que não são tão
óbvios ou que esquecemos.
Complementar ao example based testing
Globalcode – Open4education
Várias linguagens
Haskell: Quickcheck
Scala: Scalacheck
Java: JUnit Quickcheck
Javascript: JSVerify
Python: Hypothesis
Globalcode – Open4education
Trending topic
Globalcode – Open4education
Era isso !

Mais conteúdo relacionado

Semelhante a Property Based Testing

Atividades de Teste e Cobertura de Código em Java
Atividades de Teste e Cobertura de Código em JavaAtividades de Teste e Cobertura de Código em Java
Atividades de Teste e Cobertura de Código em Java
aceiro
 

Semelhante a Property Based Testing (20)

Atividades de Teste e Cobertura de Código em Java
Atividades de Teste e Cobertura de Código em JavaAtividades de Teste e Cobertura de Código em Java
Atividades de Teste e Cobertura de Código em Java
 
TDC 2015 - Conceitos e Práticas no Desenvolvimento de Sistemas Preditivos
TDC 2015 - Conceitos e Práticas no Desenvolvimento de Sistemas PreditivosTDC 2015 - Conceitos e Práticas no Desenvolvimento de Sistemas Preditivos
TDC 2015 - Conceitos e Práticas no Desenvolvimento de Sistemas Preditivos
 
TDC 2015 Big Data - Modelos Preditivos
TDC 2015 Big Data - Modelos PreditivosTDC 2015 Big Data - Modelos Preditivos
TDC 2015 Big Data - Modelos Preditivos
 
Page Object para Testers - The Developers Conference 2017
Page Object para Testers - The Developers Conference 2017Page Object para Testers - The Developers Conference 2017
Page Object para Testers - The Developers Conference 2017
 
TDC2013 - Trilha de Testes - Iterasys - José Correia - Testar em Multiplos A...
TDC2013  - Trilha de Testes - Iterasys - José Correia - Testar em Multiplos A...TDC2013  - Trilha de Testes - Iterasys - José Correia - Testar em Multiplos A...
TDC2013 - Trilha de Testes - Iterasys - José Correia - Testar em Multiplos A...
 
Usando Visão Computacional para Identificar Letras em Libras
Usando Visão Computacional para Identificar Letras em LibrasUsando Visão Computacional para Identificar Letras em Libras
Usando Visão Computacional para Identificar Letras em Libras
 
TDC2013 Otimizando-C
TDC2013 Otimizando-CTDC2013 Otimizando-C
TDC2013 Otimizando-C
 
TDC Florianópolis 2019. Trilha Java - Arquitetura de Testes
TDC Florianópolis 2019. Trilha Java - Arquitetura de TestesTDC Florianópolis 2019. Trilha Java - Arquitetura de Testes
TDC Florianópolis 2019. Trilha Java - Arquitetura de Testes
 
TDC2018SP | Trilha .Net - Programacao Funcional com C#
TDC2018SP | Trilha .Net - Programacao Funcional com C#TDC2018SP | Trilha .Net - Programacao Funcional com C#
TDC2018SP | Trilha .Net - Programacao Funcional com C#
 
Programação Funcional usando C#
Programação Funcional usando C#Programação Funcional usando C#
Programação Funcional usando C#
 
Testes Unitários/Integrados
Testes Unitários/IntegradosTestes Unitários/Integrados
Testes Unitários/Integrados
 
Palestra TDC 2016: 3 Lições que Aprendi em Data Science
Palestra TDC 2016: 3 Lições que Aprendi em Data SciencePalestra TDC 2016: 3 Lições que Aprendi em Data Science
Palestra TDC 2016: 3 Lições que Aprendi em Data Science
 
Tdc2015 bigdata-mpias-final-pdf
Tdc2015 bigdata-mpias-final-pdfTdc2015 bigdata-mpias-final-pdf
Tdc2015 bigdata-mpias-final-pdf
 
Desenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitDesenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com Junit
 
Usando mind maps no planejamento de testes - TDC 2015
Usando mind maps no planejamento de testes - TDC 2015Usando mind maps no planejamento de testes - TDC 2015
Usando mind maps no planejamento de testes - TDC 2015
 
Clean code part 2
Clean code   part 2Clean code   part 2
Clean code part 2
 
Aplicações inteligentes com o Azure Cognitive Services
Aplicações inteligentes com o Azure Cognitive ServicesAplicações inteligentes com o Azure Cognitive Services
Aplicações inteligentes com o Azure Cognitive Services
 
Tdc2016 gustavofonseca
Tdc2016 gustavofonsecaTdc2016 gustavofonseca
Tdc2016 gustavofonseca
 
Palestra eu testo voce testa ninguem testa- TDC2012 - Goiânia
Palestra   eu testo voce testa ninguem testa- TDC2012 - GoiâniaPalestra   eu testo voce testa ninguem testa- TDC2012 - Goiânia
Palestra eu testo voce testa ninguem testa- TDC2012 - Goiânia
 
TDC2016SP - Dicas para as provas de certificação Java Programmer
TDC2016SP - Dicas para as provas de certificação Java ProgrammerTDC2016SP - Dicas para as provas de certificação Java Programmer
TDC2016SP - Dicas para as provas de certificação Java Programmer
 

Property Based Testing