Аннотация:
С развитием современных информационных систем динамический анализ становится неотъемлемой частью процесса разработки программного обеспечения. Одной из самых эффективных и распространённых техник в этой области является фаззинг-тестирование (фаззинг). Суть этого метода состоит в передаче исследуемой программе большого количества случайных и неожиданных входных данных. Инструменты мутационного фаззинга генерируют тестовые данные, применяя модификации (мутации) к удачным из уже использованных вариантов, повышая таким образом число обнаруженных поведений и покрытие кода. Сами мутации при этом чаще всего выбираются случайным образом.
В данной работе предложен метод повышения эффективности мутационного фаззинга с помощью адаптивной стратегии выбора мутации. Предложенный метод апробирован на широко используемых Java-пакетах и продемонстрировал статистически значимый прирост количества найденных ошибок и числа различных поведений (трасс исполнения) тестируемых программ.
Ключевые слова:
динамический анализ, тестирование, фаззинг, структурный фаззинг, эволюционный фаззинг, задача о многоруком бандите