图书馆多久改变一次?库是否像程序一样需要回归测试?

How often do Libraries change? Do Libraries need regression testing as much as programs do?

我在 IEEE 上发表的一篇研究论文中读到它说库不经常更改,因此不需要太多回归测试。我希望有人验证该声明。 此外,它说 Randoop 是早期在库上开发和评估的。有人可以验证吗?

[The paper] said that Randoop was earlier developed and evaluated on libraries.

这不仅适用于 Randoop,也适用于其他测试生成工具,例如 ARTOO、Check 'n' Crash、EvoSuite、GRT、QuickCheck 等

这篇论文是 "Scaling up automated test generation: Automatically generating maintainable regression unit tests for programs"(ASE 2011)。它的问题陈述是测试生成工具经常被应用到库中,库比程序更容易处理。它的贡献是展示了如何将测试生成工具 (Randoop) 扩展到程序。

将 Randoop 应用于图书馆的早期论文的一个示例是 "Feedback-directed random test generation" (ICSE 2007)。它报告发现了许多以前未知的重要错误。

I read it in a research paper published on IEEE which said that libraries dont change often and hence dont need much of regression testing.

这篇论文没有说图书馆"don't need much regression testing"。它实际上说, "A library is less likely to be in need of a regression test suite. Libraries rarely change, and a library is likely to already have some tests." 重点是Randoop工具生成测试,对于没有测试的组件更需要这样的工具。作为一般规则,图书馆通常已经有一个人工编写的测试套件。每个使用它的程序也会使用该库。相比之下,存在许多没有测试套件的程序,或者其测试套件省略了程序行为的大部分。此类组件更需要测试生成。

这是激励将 Randoop 扩展到程序的 6 个原因列表末尾的第 5 点。该评论在该上下文中有意义,但在断章取意或被错误引用时则不然。该列表以

开头

Randoop was originally targeted toward detecting existing bugs in data structure libraries libraries such as the JDK's java.util. Instead, we want to extend Randoop to generate maintainable regression tests for complex industrial software systems.

Data structure libraries tend to be easier for tools to handle in several ways. ...

回到你的一个问题,每个软件组件——无论是程序还是库——都需要一个回归测试套件,以便在它发生变化时 运行。 运行 测试让您确信您的更改没有破坏其功能。如果您从不更改组件,那么您就不需要它的回归测试套件。

一些库永远不会改变(因为政策原因,或者因为没有必要改变它们),而其他的则在不断更新。