许可单元测试是否有意义?


12

我想知道(不)在主要由单元测试组成的测试代码上放一个许可证是否有任何好处/风险?你怎么看?

我对(L)GPL,Apache,MIT和BSD下的许可特别感兴趣。

编辑:假设非测试代码已经根据某种许可证发布,但是测试代码尚未发布,因此问题是是否发布它,以及是否发布相同的许可证。


测试不会被视为事实/数据吗?这些事实/数据一开始就不受版权或许可的约束吗?复制API合法的,我想使用相同的测试来验证实现是否正确也是合法的?
endlith 2013年

Answers:


10

令人惊讶的是,还没有人提到这一点,但是,如果您没有在代码中附加许可证,无论是产品代码还是测试代码,那么其他人就没有对该代码的权利

许可代码是关于授予他人通常不会拥有的权利。即使您未明确附加版权声明,测试代码也会自动受到版权保护(在世界上大多数国家/地区)。获得版权保护的其他人不能使用,分发或从该代码中获取。

通过将许可证附加到您的测试代码,您授予人们根据许可证条款使用,分发和/或修改该代码的权利。

我建议您在同一许可证下将测试代码与产品代码一起分发。这对每个人来说都是最简单的。这也意味着,如果人们想向您提交补丁程序,那么他们可以在向您发送补丁程序之前运行您的单元测试,这应该有助于清除会破坏功能的补丁程序。


15

在商业世界中,大多数公司不仅为核心产品收费,而且为支持收费。通常,支持涉及通过工具或个人协助的任何形式的帮助,以使产品可用或解决与产品有关的任何问题。

因此,用于测试产品的代码同样具有支持工具的资格,并且本身就是知识产权。因此,它的确值得拥有自己的许可证。


9

为什么要分离代码并进行测试?

我更喜欢一堆代码和测试。并且此捆绑包应获得相同的许可证。

如果有人想得到两倍的钱,那么您可以制作两个包裹-每个都有许可证。对于免费软件,我认为没有理由要两个软件包(除非这是一个大小问题)。


6

测试代码具有很大的价值,因为它允许用户检查您的解决方案是否在给定的环境中工作。在我的工作(嵌入式软件)中,测试套件是合同的一部分。您应该以相同的许可证发布它,因为用法类似:

  • 如果有人只是使用您的代码,那么他将运行测试

  • 如果有人想修改代码,那么他可能还必须修改一些测试


2

IANAL,但是:

  1. 如果您是根据GPL许可代码,那么实际上您的单元测试也是GPL,因为如果没有主代码,它们就毫无用处
  2. 如果您使用的是Apache / BSD,请遵循“自担风险使用”条款。我会在整个项目中拍一个许可证文件,然后让用户确定是用于代码还是用于测试代码。
  3. 如果您使用商业许可证并限制对代码的访问,那么为什么要首先发布测试?如果您想确定的话,请输入“通过阅读测试代码,就可以同意使用眼睛”的许可证,您就可以了。

1

GCC编译器(主要是GPLv3的许可)具有相当广泛的测试套件,其分布的源代码。(也许有些测试文件在公共领域,我真的不知道它们的法律地位)。

您为什么要与产品分开分发测试套件?


0

这可能是一种可能的商业模式,因此请以自由软件(GPL或其他任何一种)的形式发布程序,但相关的单元将根据商业许可进行测试。这样,如果有人要发布软件的改进版本(例如,嵌入在设备中),则可能会激励他购买单元测试许可证,以便更快,更安全地进行开发。


0

如果您的单元测试做得很好,那么它们就是复制您的软件的蓝图。如果您没有以等同于代码的方式许可它们,则是在邀请某人随便重新执行您所做的任何事情。如果您对此感到满意,那么就不必再给他们许可了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.