Как часто меняются библиотеки? Нужны ли библиотекам регрессионное тестирование так же, как программы?

Я читал об этом в исследовательской работе, опубликованной на IEEE, в которой говорилось, что библиотеки не меняются часто и, следовательно, не нуждаются в большом количестве регрессионного тестирования. Я хотел, чтобы кто-то проверил утверждение. Также сказано, что Randoop был ранее разработан и оценен в библиотеках. Кто-нибудь может это проверить?

1 ответ

Решение

[В документе] говорится, что Randoop был ранее разработан и оценен в библиотеках.

Это в значительной степени относится не только к Randoop, но и к другим инструментам генерации тестов, таким как ARTOO, Check 'n' Crash, EvoSuite, GRT, QuickCheck и т. Д.

Статья "Масштабирование автоматической генерации тестов: автоматическая генерация поддерживаемых регрессионных модульных тестов для программ" (ASE 2011). Его проблема заключается в том, что инструменты генерации тестов часто применяются к библиотекам, с которыми проще работать, чем с программами. Его вклад показывает, как расширить инструмент генерации тестов (Randoop) для программ.

Примером более ранней статьи, в которой Randoop применялся к библиотекам, является "Генерация случайных тестов с обратной связью" (ICSE 2007). В нем сообщается о выявлении десятков важных, ранее неизвестных ошибок.

Я читал об этом в исследовательской работе, опубликованной на IEEE, в которой говорилось, что библиотеки не меняются часто и, следовательно, не нуждаются в большом количестве регрессионного тестирования.

В статье не сказано, что библиотекам "не нужно много регрессионного тестирования". На самом деле говорится: "Скорее всего, библиотека не нуждается в наборе регрессионных тестов. Библиотеки редко меняются, и у библиотеки, скорее всего, уже есть некоторые тесты". Суть в том, что инструмент Randoop генерирует тесты, и такой инструмент больше нужен для компонентов, которые не имеют тестов. Как правило, в библиотеках обычно уже есть набор тестов, написанный человеком. Библиотека также используется каждой программой, которая ее использует. Напротив, существует много программ, которые не имеют набора тестов, или набор тестов которого не учитывает большую часть поведения программы. Генерация тестов более необходима для таких компонентов.

Это пункт № 5 в конце списка из 6 причин, побуждающих расширение Randoop к программам. Комментарий имеет смысл в этом контексте, но не когда он вырван из контекста или неверно цитирован. Список начинается с,

Randoop изначально был нацелен на обнаружение существующих ошибок в библиотеках библиотек структур данных, таких как JDK java.util, Вместо этого мы хотим расширить Randoop для создания поддерживаемых регрессионных тестов для сложных промышленных программных систем.

Библиотеки структуры данных, как правило, проще для инструментов обрабатывать несколькими способами....

Возвращаясь к одному из ваших вопросов, каждый программный компонент - будь то программа или библиотека - нуждается в наборе регрессионных тестов для запуска при его изменении. Запуск тестов дает вам уверенность в том, что ваши изменения не нарушили его функциональность. Если вы никогда не меняете компонент, вам не нужен набор регрессионных тестов.

Некоторые библиотеки никогда не меняются (из-за политики или из-за того, что нет необходимости их менять), а другие постоянно обновляются.

Другие вопросы по тегам