Журнал "Программная инженерия"
Теоретический и прикладной научно-технический журнал
ISSN 2220-3397

Номер 4 2023 год

DOI: 10.17587/prin.14.165-174
УДК: 004.052.4
Поиск дубликатов ошибок компиляторов методом генерации программ-свидетелей
Д. С. Степанов, ст. препод., stepanov0995@gmail.com, В. М. Ицыксон, канд. техн. наук, доц., itsykson@yandex.ru Санкт-Петербургский политехнический университет Петра Великого

Компиляторы языков программирования — сложнейшие программные системы, от качества которых напрямую зависит качество создаваемых с их помощью программ. Поэтому предъявляются повышенные требования к таким характеристикам качества, как функциональная пригодность, надежность, производительность, безопасность и т. д. Для обеспечения качества используются различные средства: пользовательское и ручное тестирование, средства для автоматического поиска ошибок. При этом очень часто возникают ситуации, когда одна и та же ошибка обнаруживается многократно, а тестовые примеры, на которых она проявляется, друг на друга совсем не похожи. Такие тестовые примеры называют дубликатами, их определение — актуальная и острая проблема, так как их ручной поиск требует больших человеческих ресурсов. Алгоритмы автоматического поиска дубликатов помогли бы значительно упростить процесс поддержки компилятора. Основная идея представленного в статье подхода для поиска дубликатов заключается в том, что причины возникновения одинаковых ошибок находятся в одном и том же месте исходного кода компилятора. Для поиска этого места используется метод генерации программ-свидетелей. Он состоит в том, что для каждой тестовой программы, содержащей ошибку, происходит генерация похожих программ, которые ее не содержат. После этого вычисляются метрики, основанные на покрытии исходного кода компилятора, и формируется список файлов, которые потенциально содержат причину неисправности компилятора. Если эти списки для двух тестовых программ похожи с точки зрения метрики близости, то тестовые программы считаются дубликатами. Предлагаемый подход был разработан и реализован для компилятора языка программирования Kotlin. Тестирование показало применимость предлагаемого подхода для решения задачи поиска дубликатов ошибок компиляторов языков программирования.

Ключевые слова: тестирование компиляторов, определение дубликатов ошибок, изоляция ошибок
Стр. 165–174
Ссылка для цитирования:
Степанов Д. С., Ицыксон В. М. Поиск дубликатов ошибок компиляторов методом генерации программ-свидетелей // Программная инженерия. 2023. Том 14, № 4. С. 165—174. DOI: 10.17587/prin.14.165-174.