Разработан новый инструмент для умного тестирования программ
Мутация, скрещивание и естественный отбор — теперь это не только про биологию, но и про код.

В XIX веке Чарльз Дарвин описал принцип «выживает сильнейший» — и теперь его применили к тестированию программ. Исследователи из CISPA разработали FANDANGO, инструмент для фаззинга, который создает тестовые данные по законам эволюции. Это не просто случайные входные значения, а кастомизированные параметры, учитывающие и структуру, и логику программы.
Фаззинг — метод тестирования ПО, при котором программа «бомбардируется» случайными или полу-случайными данными, чтобы найти уязвимости или сбои. FANDANGO делает это интеллектуально, учитывая заданные разработчиком правила.
Подробности опубликованы в издании Proceedings of the ACM on Software Engineering.
Вот как это работает: представьте естественный отбор, но для кода. FANDANGO берет набор исходных данных (например, параметры мебели в интернет-магазине) и начинает их «эволюционировать»:
- Мутирует — меняет значения (длина стула = -5 метров?).
- Скрещивает — комбинирует части разных входных данных.
- Отбирает — оставляет только те варианты, которые соответствуют заданным условиям.
Цель — найти баги в неочевидных сценариях. Например, если нужно проверить, как программа обрабатывает «стол площадью в квадратный километр», FANDANGO автоматически подберет подходящие высоту, ширину и глубину.
Почему это прорыв
- Контроль: тестировщик задает и синтаксис (формат данных), и семантику (логику).
- Гибкость: можно «прицельно» проверять уязвимые места, а не надеяться на случайность.
- Открытый код: инструмент доступен всем.
Мы не просто генерируем хаотичные данные — мы даем тестировщику власть над процессом, — объясняет Андреас Целлер.
Польза исследования
- Для разработчиков: Ускорение тестирования сложных систем (например, банковских приложений), где критична корректность входных данных.
- Для безопасности: Поиск уязвимостей в условиях, которые человек мог бы упустить (например, обработка отрицательных значений).
- Для искусственного интеллекта: Метод можно адаптировать для тренировки ИИ, чтобы он учился на «естественном отборе» данных.
Отметим, что эволюционные алгоритмы требуют больших вычислительных ресурсов — процесс мутации и отбора может быть медленным для сверхсложных систем. Кроме того, успех зависит от качества начальных данных: если тестировщик ошибется в спецификациях, FANDANGO будет оптимизировать ошибочные условия.
Ранее стало известно о создании первого в России ИИ-ассистента для защиты кода.



















