O Que É um Teste Baseado em Propriedades?
Um teste baseado em propriedades declara uma propriedade geral que o código deve sempre satisfazer e então faz um framework gerar muitas entradas aleatórias para tentar falsificá-la. Em vez de testar add(2, 3) == 5, ele pode afirmar que a adição é comutativa para todos os pares de inteiros gerados. Quando encontra um caso que falha, ele o reduz (shrink) a um contraexemplo mínimo.
Por que isso importa
Exemplos escritos a mão testam apenas os casos em que o desenvolvedor pensou, deixando passar edge cases que quebram o código. O teste baseado em propriedades explora um vasto espaço de entradas automaticamente e revela falhas surpreendentes, com o shrinking transformando uma entrada de falha bagunçada na menor reprodução. As ferramentas incluem QuickCheck, Hypothesis e fast-check.
Conceitos relacionados
- Gera muitas entradas para falsificar uma propriedade
- O shrinking minimiza um contraexemplo que falha
- Fuzzing é um primo relacionado, voltado à segurança