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

Номер 10 2022 год

DOI: 10.17587/prin.13.483-496
УДК: 004.05
Reanimator: from Test Data to Code and Back
A. М. Абдуллин, аспирант, ст. преподаватель, azat.aam@gmail.com, B.М. Ицыксон, канд. техн. наук, доц., vlad@icc.spbstu.ru, Санкт-Петербургский политехнический университет Петра Великого

Современные инструментальные средства для автоматической генерации тестов способны эффективно находить различные виды ошибок в программном обеспечении. Однако эти ошибки зачастую не могут быть автоматически преобразованы в воспроизводимый тестовый пример. Такое преобразование позволило бы значительно упростить процесс поддержки разрабатываемого программного обеспечения. Наибольшее сложным вопросом решения этой задачи является восстановление экземпляров классов, так как в силу принципа инкапсуляции очень сложно сгенерировать программный код, который позволяет воспроизвести необходимое состояние объекта. В статье описан оригинальный, именуемый Реаниматором, авторский подход, который, получив описание необходимого состояния экземпляра класса в каком-либо формате, формирует программный код, результатом которого является создание необходимого экземпляра в нужном состоянии с использованием исключительно публичного интерфейса класса. Такой подход может быть использован для создания тестов в любом инструментарии для автоматической генерации тестов, воспроизводящих найденные ошибки. Предлагаемый подход был разработан и реализован в составе инструментального средства Kex для автоматической генерации тестов и протестирован на наборе проектов с открытым исходным кодом. Тестирование показало применимость и конкурентоспособность предлагаемого подхода в сравнении с современными методами генерации тестовых примеров.

Ключевые слова: автоматическая генерация тестов, символьное исполнение, тестирование программного обеспечения
Стр. 483—496