Как все тесты в
этом файле. Нечто среднее между unit-тестами и fuzz-тестами. Вот сравнительная таблица:
Параметр | Unit-тесты | Fuzz-тесты | Тесты по ссылке |
Охват | Конкретное условие в конкретной функции | Все функции | Большинство условий в некотором заранее определенном наборе функций |
Когда проваливаются | Не выполнено конкретное условие (Assert) | Только при вылете | Стоит несколько Assert, а также вылет |
Стохастичность | Абсолютно детерминированные | Абсолютно случайные входные данные | Псевдослучайные с заранее определенным seed |
Время выполнения | Десятки, максимум сотни миллисекунд | Годы на суперкомпьютере | Минуты или десятки минут |
Существуют ли такие тесты, или я реально изобрел новый тип тестов? И почему этим не пользуются массово? Мне вот, например, такие тесты реально помогают находить ошибки. И даже регрессии (а они, к сожалению, случаются). Традиционные unit-тесты мне не подходят, потому что у меня слишком "псевдослучайные" классы и функции (в значении - со слишком сложным, труднопредсказуемым поведением, которое "со стороны" похоже на псевдослучайное) и покрыть unit-тестами все мыслимые пути исполнения было бы экстремально сложно, а для полноценных fuzz-тестов 1 - нет суперкомпьютера, 2 - все еще слишком сырое, fuzz-тесты применяют, когда поведение программы приближается к стабильному, а у меня только альфа.