SlideShare uma empresa Scribd logo
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
 
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
Wagner Luiz Cambruzzi
 
TDC 2015 Big Data - Modelos Preditivos
TDC 2015 Big Data - Modelos PreditivosTDC 2015 Big Data - Modelos Preditivos
TDC 2015 Big Data - Modelos Preditivos
Rodrigo Moraes
 
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
Katiana Maia
 
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...
José Correia
 
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
Gabriel Schade Cardoso
 
TDC2013 Otimizando-C
TDC2013 Otimizando-CTDC2013 Otimizando-C
TDC2013 Otimizando-C
osmarcf
 
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
Sandro Giacomozzi
 
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#
tdc-globalcode
 
Programação Funcional usando C#
Programação Funcional usando C#Programação Funcional usando C#
Programação Funcional usando C#
Gabriel Schade Cardoso
 
Testes Unitários/Integrados
Testes Unitários/IntegradosTestes Unitários/Integrados
Testes Unitários/Integrados
Giovanni Bassi
 
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
Rodrigo Vieira
 
Tdc2015 bigdata-mpias-final-pdf
Tdc2015 bigdata-mpias-final-pdfTdc2015 bigdata-mpias-final-pdf
Tdc2015 bigdata-mpias-final-pdf
Ministry of Data
 
Desenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitDesenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com Junit
Adolfo Neto
 
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
Gabriel Oliveira
 
Clean code part 2
Clean code   part 2Clean code   part 2
Clean code part 2
clauvane1708
 
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
Gabriel Schade Cardoso
 
Tdc2016 gustavofonseca
Tdc2016 gustavofonsecaTdc2016 gustavofonseca
Tdc2016 gustavofonseca
Gustavo Fonseca
 
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
Alan Jose
 
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
tdc-globalcode
 

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
 

Último

Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
Momento da Informática
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 

Último (6)

Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 

Property Based Testing