Максим Казанцев — Fuzzing для тестирования JVM: зачем и как

Описание к видео Максим Казанцев — Fuzzing для тестирования JVM: зачем и как

Ближайшая конференция — Joker 2024, 9 октября (Online), 15–16 октября (Санкт-Петербург + трансляция).
Подробности и билеты: https://jrg.su/Ypf1HW
— —
. . . . Полезная идея фаззинга, которую нужно нести в массы. Макс занял первое место на JBreak, и его будет интересно послушать.

Пользователи ждут от Java-машин в первую очередь корректной и стабильной работы. Наша компания занимается разработкой собственной VM и активно развивает оптимизирующий JIT-компилятор, основанный на LLVM. При этом каждая новая оптимизация несёт в себе опасность внесения новых функциональных багов, а также может привести к тому, что начнут проявлять себя древние проблемы, спрятанные в старом коде и до сих пор не дававшие о себе знать.

Так как же обеспечить своевременный поиск таких багов в условиях, когда в наш компилятор еженедельно интегрируются десятки и сотни тысяч строк кода? Абсолютного ответа на этот вопрос не знает никто, но у нас есть успешный опыт использования Fuzzer — генератора случайных тестов, которые сконструированы таким образом, чтобы с хорошей вероятностью находить возможные проблемы в компиляторе. При этом мы получаем стабильный детерминированный способ воспроизводить проблемы на тесте, для которого у нас есть исходники.

В этом докладе мы расскажем о том, как и почему используем генератор случайных Java-программ, об устройстве таких генераторов, а также о дальнейших шагах по генерации программ на Scala, Kotlin и других языках, компилируемых в Java-байткод.

Комментарии

Информация по комментариям в разработке