Elvira Albert, Israel Cabanas, Antonio Flores-Montoya, Miguel Gomez-Zamalloa, and Sergio Gutierrez. 2011. jPET: An Automatic Test-Case Generator for Java. In Proceedings of the 2011 18th Working Conference on Reverse Engineering (WCRE '11). IEEE Computer Society, Washington, DC, USA, 441-442. DOI=10.1109/WCRE.2011.67 http://dx.doi.org/10.1109/WCRE.2011.67
jPET — это инструмент для автоматической генерации контрольных примеров для Java в среде Eclipse. jPET работает поверх PET, генератора контрольных примеров, который автоматически получает их из байт-кода программы на Java.
Тестирование сегодня признано одной из самых важных дисциплин в области разработки программного обеспечения. По временным и материальным затратам равных ей уже не найти, ведь с ростом сложности систем все труднее покрыть тестами все строки кода и все возможные пути выполнения. В связи с этим набирают популярность системы автоматической генерации контрольных данных. Стандартный подход к решению проблемы — так называемое «символьное выполнение» программы, когда содержимым переменных являются выражения, а не конкретные значения. PET работает как раз в этой парадигме: он получает на вход байт-код программы и множество выбранных критериев покрытия, таких как покрытие по инструкциям, по путям выполнения, с ограничениями по глубине стека вызовов. На выходе имеем множество контрольных примеров с указанием соответствующей ветви выполнения. PET работает из командной строки и из веб-интерфейса, однако ни то, ни другое не удобно для разработки.
jPET, будучи реализован в виде плагина для Eclipse, решает сразу две проблемы: он интегрирован со средой разработки и отображаемая информация представлена в человекочитаемом виде — исходном коде программы на Java. jPET состоит из
jPET предоставляет более удобный, по сравнению с PET, интерфейс для просмотра множества контрольных примеров, куч ввода и вывода. Модуль состоит из трех подсистем:
jPET, будучи интегрирован с Eclipse, умеет:
Известной проблемой методов символьного выполнения является огромное количество возможных наборов данных и путей ветвления. Одним из решений проблемы является использование предусловий методов. Предусловия позволяют разработчику указать ограничения на множество входных параметров, это может в значительной степени упростить итоговое дерево вызовов, отсеять ненужные и уделить внимание интересующим наборам контрольных данных. Для описания предусловий можно использовать JML.
Существует множество инструментов для генерации контрольных примеров, однако очень немногие из них поддерживают полноценную интеграцию со средой разработки. В качестве примеров можно привести PEX (интеграция с VS) и KeY (наиболее полный аналог). Ключевыми же особенностями jPET являются интеграция с Eclipse, визуализатор кучи и просмотрщик ветви выполнения — функционал, который играет ключевую роль в тестировании ПО.