Исследователи представили метод генерации исполняемых тестов для конкурентных Rust API с использованием сетей Петри. Подход решает проблему нарушения предусловий API и поверхностного тестирования, характерных для стандартных LLM. Интеграция формальных моделей позволяет контролировать жизненный цикл ресурсов и состояние системы, обеспечивая генерацию глубоких сценариев конкурентного взаимодействия, которые ранее были недоступны для автоматизированных систем.
Традиционные методы генерации кода на базе LLM часто упрощают конкурентные процессы до последовательных цепочек, игнорируя сложные состояния ресурсов. Новый подход использует сети Петри как направляющую структуру, которая задает правила переходов и допустимые состояния API. Это позволяет модели генерировать тесты, которые не только проходят компиляцию, но и эффективно проверяют корректность работы конкурентных библиотек в условиях борьбы за ресурсы.
В ходе экспериментов метод продемонстрировал способность создавать более сложные и семантически верные тесты по сравнению с базовыми моделями. Использование формальной спецификации в качестве промпта или контекста для LLM позволяет существенно снизить количество ошибок при тестировании stateful-систем, где критически важна последовательность операций и владение объектами в многопоточной среде.
Ключевые факты
- Метод ориентирован на тестирование конкурентных (concurrent) и stateful API на языке Rust.
- Сети Петри используются для формального моделирования жизненного цикла ресурсов и состояний API.
- Подход устраняет проблему «случайной сериализации», когда LLM игнорируют конкурентную природу кода.
- Технология обеспечивает семантический контроль над генерацией тестов, предотвращая нарушение предусловий API.
- Исследование направлено на повышение надежности системного программирования за счет автоматизации глубокого тестирования.