mdd:jpet

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
mdd:jpet [2014/06/07 19:42] – created andrewlmdd:jpet [2026/08/29 07:59] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +====== jPET: система автоматической генерации контрольных примеров для Java ======
  
 +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|http://dx.doi.org/10.1109/WCRE.2011.67]]
 +
 +===== Введение =====
 +
 +jPET — это инструмент для автоматической генерации контрольных примеров для Java в среде Eclipse. jPET работает поверх PET, генератора контрольных примеров, который автоматически получает их из байт-кода программы на Java. 
 +
 +Тестирование сегодня признано одной из самых важных дисциплин в области разработки программного обеспечения. По временным и материальным затратам равных ей уже не найти, ведь с ростом сложности систем все труднее покрыть тестами все строки кода и все возможные пути выполнения. В связи с этим набирают популярность системы автоматической генерации контрольных данных. Стандартный подход к решению проблемы — так называемое «символьное выполнение» программы, когда содержимым переменных являются выражения, а не конкретные значения. PET работает как раз в этой парадигме: он получает на вход байт-код программы и множество выбранных критериев покрытия, таких как покрытие по инструкциям, по путям выполнения, с ограничениями по глубине стека вызовов. На выходе имеем множество контрольных примеров с указанием соответствующей ветви выполнения. PET работает из командной строки и из веб-интерфейса, однако ни то, ни другое не удобно для разработки. 
 +
 +jPET, будучи реализован в виде плагина для Eclipse, решает сразу две проблемы: он интегрирован со средой разработки и отображаемая информация представлена в человекочитаемом виде — исходном коде программы на Java. jPET состоит из
 +
 +  - просмотрщика контрольных примеров (The test-case viewer),
 +  - просмотрщика соответствующей тесту ветви выполнения программы — последовательности инструкций, на которых тест выполнялся (test-case traces)
 +  - парсера предусловий методов на языке JML.
 +
 +===== Обзор основных возможностей =====
 +
 +==== The test-case viewer ====
 +
 +jPET предоставляет более удобный, по сравнению с PET, интерфейс для просмотра множества контрольных примеров, куч ввода и вывода. Модуль состоит из трех подсистем:
 +
 +  - подсистема экспорта данных PET в XML
 +  - Graph Manager, который позволяет просматривать кучу в удобном графическом интерфейсе.
 +  - Пользовательские настройки Graph Manager (на основе Swing).
 +
 +==== Отображение ветвей выполнения ====
 +
 +jPET, будучи интегрирован с Eclipse, умеет:
 +
 +  - Подсвечивать все строки, которые работали на данном контрольном наборе.
 +  - Пошагово выполненять код с использованием отладчика Eclipse.
 +
 +==== Описание предусловий методов ====
 +
 +Известной проблемой методов символьного выполнения является огромное количество возможных наборов данных и путей ветвления. Одним из решений проблемы является использование предусловий методов. Предусловия позволяют разработчику указать ограничения на множество входных параметров, это может в значительной степени упростить итоговое дерево вызовов, отсеять ненужные и уделить внимание интересующим наборам контрольных данных. Для описания предусловий можно использовать JML.
 +
 +====== Заключение ======
 +
 +Существует множество инструментов для генерации контрольных примеров, однако очень немногие из них поддерживают полноценную интеграцию со средой разработки. В качестве примеров можно привести PEX (интеграция с VS) и KeY (наиболее полный аналог). Ключевыми же особенностями jPET являются интеграция с Eclipse, визуализатор кучи и просмотрщик ветви выполнения — функционал, который играет ключевую роль в тестировании ПО.