conhecendo property based testing
Post on 12-Apr-2017
403 Views
Preview:
TRANSCRIPT
Globalcode – Open4education
Property Based TestingMariane 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 !
top related