В старой версии библиотеки regex выражение .abb|b находило в строке zabb только b, хотя совпадала вся строка. Автор собрал фаззер, тест, который генерирует случайные входные данные, и нашёл ещё одну ошибку, прежде чем воспроизвести искомую.
В разборе с кодом автор сравнивает результаты regex и regex_lite на одинаковых выражениях и строках. Вместо огромных входных данных генерирует короткие строки, меняет набор букв и частоту операторов. Так проверяет сочетания нескольких возможностей, на которых могут возникать ошибки.
В последней версии ошибок не нашлось. Автор заранее знал искомый баг, поэтому эксперимент не доказывает превосходство случайных тестов над модульными. Зато показывает приёмы проверки алгоритмов через сравнение реализаций.
#инструменты