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