Инструмент / Техника для автоматического создания модульных испытаний на основе метода до / после условия
Интересно, есть ли какой-либо инструмент, который автоматически генерирует модульные тесты на основе предварительных и постусловий метода (и инварианта класса).
Чтобы быть точным, предположим, что нам даны предварительные и постусловия (и, вероятно, инвариант класса) для метода, и мы хотим создать модульные тесты на основе этой информации. Я ищу практический инструмент для этой цели.
Я знаю Корат и TestWizard. Не могли бы вы назвать еще несколько методов / инструментов?
PS: Язык программирования или язык, на котором мы указываем методы контрактов, не так важен. Я просто хочу знать о методах.
Спасибо.
2 ответа
Рэндоп делает это. В его руководстве рассказывается, как указать предварительные и последующие условия.
В комментарии вы сделали различие между "генерацией" и "направлением"; Я не уверен, что именно вы подразумеваете под этим, но вы можете считать, что Randoop использует спецификации для руководства.
Одна из исследовательских работ в этой области была проведена в ETH в 2005-2011 гг. С целью создания "Контрактного инструмента случайного тестирования", известного как AutoTest. Он был разработан для Eiffel, где предусловия, постусловия и классовые инварианты являются частью языка. Инструмент использует их в качестве спецификации для автоматической генерации тестов. Инструмент был интегрирован со средой разработки EiffelStudio, где он использует контракты на 3 вида тестов:
- руководство - хороший "олдскульный" подход путем написания тестов разработчиками;
- извлечено - как только происходит нарушение договора, инструмент может генерировать соответствующий контрольный пример;
- сгенерированный - инструмент автоматически синтезирует новые тесты, проверяя, выполняются ли предварительные условия и инварианты классов при входе в подпрограмму, и проверяя, нет ли ошибок при возврате, в частности, что нет постусловий или нарушений инвариантов классов.