我在 IEEE 上发表的一篇研究论文中读到它说库不会经常更改,因此不需要太多的回归测试。我希望有人来验证该声明。此外,它说 Randoop 是在图书馆早期开发和评估的。有人可以验证吗?
1 回答
[论文] 说 Randoop 是在图书馆早期开发和评估的。
这不仅适用于 Randoop,而且适用于其他测试生成工具,例如 ARTOO、Check 'n' Crash、EvoSuite、GRT、QuickCheck 等。
这篇论文是“扩大自动化测试生成:自动为程序生成可维护的回归单元测试”(ASE 2011)。它的问题是测试生成工具经常被应用到库中,这些库比程序更容易处理。它的贡献是展示了如何将测试生成工具 (Randoop) 扩展到程序。
将 Randoop 应用于图书馆的早期论文的一个例子是“反馈导向随机测试生成”(ICSE 2007)。它报告发现了许多重要的、以前未知的错误。
我在 IEEE 上发表的一篇研究论文中读到它说库不会经常更改,因此不需要太多的回归测试。
该论文并没有说图书馆“不需要太多的回归测试”。它实际上说,“库不太可能需要回归测试套件。库很少更改,库可能已经进行了一些测试。” 重点是Randoop工具生成测试,没有测试的组件更需要这样的工具。作为一般规则,库通常已经有一个人工编写的测试套件。每个使用它的程序也会使用该库。相比之下,存在许多没有测试套件的程序,或者其测试套件忽略了程序的大部分行为。此类组件更需要测试生成。
这是激励将 Randoop 扩展到程序的 6 个原因列表末尾附近的第 5 点。该评论在这种情况下是有意义的,但在脱离上下文或被错误引用时就没有意义。清单以,
Randoop 最初的目标是检测数据结构库库(例如 JDK 的
java.util
. 相反,我们希望扩展 Randoop 来为复杂的工业软件系统生成可维护的回归测试。数据结构库往往更易于工具以多种方式处理。...
回到你的一个问题,每个软件组件——无论是程序还是库——都需要一个回归测试套件,以便在它发生变化时运行。运行测试让您确信您的更改没有破坏其功能。如果您从不更改组件,那么您不需要回归测试套件。
有些图书馆永远不会改变(因为政策,或者因为没有必要改变它们),而其他图书馆则在不断更新。