Описание доклада на сайте конференции Joker 2023
Этот проект используется в материалах самой презентации. В папке src лежат исходные коды, сама презентация, написанная с использованием Code Surfer находится в папке presentation.
В репозитории подготовлены конфигурации для запуска в IntellijIDEA Community:
- TimSort запускает фаззер для тестирования метода
TimSort#timsortвзятого из проекта sorting-algorithms. - Rotate запускает фаззер для метода
com.google.common.primitives.Ints#rotate(int[], int, int, int)из проекта guava. Фаззер запускается с использованием lib/guava-32.1.1-jre.jar в качестве classpath. - Parse Step 1, Parse Step 2, Parse Step 3, Parse запускает фаззер для метода
com.alibaba.fastjson2.JSON#parse(java.lang.String)из проекта fastjson2 с использованием lib/fastjson2-2.0.38.jar в качестве classpath.
Все файлы репортов сохраняются в корне проекта.
Запустите команду для сборки jar-файлов для запуска.
gradle jarПосле этого в папке lib/builds можно будет найти следующие файлы:
fuzzer-timsort.jarдля запуска примера сTimSort#timSort.fuzzer-rotate.jarдля запуска примера сInts#rotate.fuzzer-parse-step1.jarдля запуска примера сJSON#parseсо случайной генерацией строк.fuzzer-parse-step2.jarдля запуска примера сJSON#parseс использованием мутаций над строками, которые не приводят к ошибкам.fuzzer-parse-step3.jarдля запуска примера сJSON#parseс использованием мутаций и инструментацией кода.fuzzer-parse.jarдля запуска примера сJSON#parseс использованием мутаций и инструментацией кода, а также заранее подготовленной захардкоженной строке в формате json.
Для запуска из консоли нужно выполнить команду в таком виде:
java -jar build/libs/fuzzer-parse-step3.jar -c com.alibaba.fastjson2.JSON -m parse(java.lang.String) -cp lib/fastjson2-2.0.38.jarГде -c тестируемый класс, -m целевой тестируемый метод -cp classpath, содержащий тестируемый класс.
Для просмотра презентации из директории presentation выполните следующие команды:
npm install
npm startПосле чего презентация откроется в браузере по адресу localhost:8000. Управление презентацией описано на странице проекта mdx-deck#keyboard-shortcuts.