Одной из задач тестировщика является работа по минимизации тесткейса для воспроизведения бага. Это и минимальный набор шагов и минимальный набор данных для воспроизведения. Потому что в таком случае и работа по исправлению бага становится проще и регресионный тест проще добавить. В случае использования тестов на основе свойств (property-based) мы самостоятельно генерируем тесткейсы и в случае проблем всегда можно получить минимальный тесткейс, это один из плюсов PBT. Но часто приходится работать и c не минимизированными данными, например в случае воспроизведения проблем от пользователя. В таких случаях помогают инструменты для минимизации неструктурированных данных. Классической публикацией по этой теме является статья Андреаса Зеллера Simplifying and Isolating Failure-Inducing Input, в которой он описывает потребность в минимизации тесткейсов для браузера Mozilla и описывает алгоритм, см. графическое представление на картинке. Потом в Mozilla стали использовать lithium, который использует улучшенный алгоритм минимизации, а для компиляторов появился creduce. Я в своей работе пользуюсь halfempty, который написан небезызвестным Tavis Ormandy из Гугла. halfempty написан на Си и работает очень быстро. Посмотрите примеры использования halfempty - https://github.com/googleprojectzero/halfempty/wiki/Examples