Суть property-based testing проста: мы тестируем не отдельные примеры, а общие свойства. Инструмент генерирует случайные данные и ищет ошибки там, где обычные тесты молчат.
Почему важно:
➖ Находит баги, которые не покрывают обычные тесты
➖ Автоматически проверяет граничные и случайные значения
➖ Полезно для алгоритмов, API и бизнес-логики
Пример:
import { testProp, fc } from 'fast-check';
testProp(
'reverse(reverse(arr)) === arr',
[fc.array(fc.integer())],
(arr) => {
expect(arr.reverse().reverse()).toEqual(arr);
}
);
Инструменты:
— JS: fast-check
— Python: Hypothesis
— Java: jqwik, JUnit-Quickcheck
💡 PBT не заменяет обычные тесты, но усиливает их и помогает найти баги, о которых вы даже не подозревали.
🐸 Библиотека тестировщика
#буст
