Автоматизированный синтез тестов для Java-программ на основе анализа программ и учета контрактов

Андрианова А., Ицыксон В.

Санкт-Петербургский государственный политехнический университет, Санкт-Петербург, Россия

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

Ключевые слова: автоматизированное тестирование программ, синтез тестов, контрактное программирование, анализ кода, SMT-solver.