当前位置:  开发笔记 > 人工智能 > 正文

你怎么知道你的单元测试是否正确?

如何解决《你怎么知道你的单元测试是否正确?》经验,为你挑选了3个好方法。

我在职业生涯的不同阶段只进行过小型单元测试.每当我再次开始潜入它时,总是让我感到麻烦,如何证明我的测试是正确的.我如何判断我的单元测试中没有错误?通常我最终运行应用程序,证明它有效,然后使用单元测试作为一种回归测试.建议的方法是什么和/或您对此问题采取的方法是什么?

编辑:我也意识到你可以编写易于理解的小型粒度单元测试.但是,如果您认为小巧,精细的代码完美无缺,那么您可以编写小型,精细的程序而不需要进行单元测试.

Edit2:对于参数"单元测试是为了确保你的更改不会破坏任何东西"和"只有在测试与代码具有完全相同的缺陷时才会发生这种情况",如果测试过度适用怎么办?通过错误的测试可以传递好的和坏的代码.我的主要问题是单元测试有什么用处,因为如果您的测试存在缺陷,您无法真正提高您对代码的信心,无法真正证明您的重构有效,并且无法真正证明您符合规范?



1> DevSolar..:

单元测试应该表达您正在测试的任何"合同".它或多或少是放入代码的单元规范.因此,根据规范,单元测试是否"正确"应该或多或少显而易见.

但我不会过分担心单元测试的"正确性".它们是软件的一部分,因此它们也可能是不正确的.单元测试的重点 - 来自我的POV - 是他们确保软件的"合同"不会被意外破坏.这就是使单元测试如此有价值的原因:您可以在软件中进行挖掘,重构某些部分,更改其他部分的算法,并且您的单元测试会告诉您是否有任何损坏.即使是不正确的单元测试也会告诉你.

如果您的单元测试中存在错误,您会发现 - 因为单元测试失败而测试的代码证明是正确的.那么,修复单元测试.没什么大不了.



2> Assaf Lavie..:

好吧,Dijkstra有名的说:

"测试显示存在,而不是没有错误"

IOW,你会如何编写函数add(int,int)的单元测试?

IOW,这是一个艰难的.



3> jalf..:

有两种方法可以帮助确保单元测试的正确性:

TDD:首先编写测试,然后编写它要测试的代码.这意味着你会看到它们失败.如果你知道它至少检测到一些类错误(例如"我还没有在我想要测试的函数中实现任何功能"),那么你知道它并非完全没用.它可能仍然会让其他一些错误消失,但我们知道测试并不完全错误.

有很多测试.如果一个测试允许一些错误滑过,它们很可能会导致错误进一步下行,导致其他测试失败.当您注意到并修复有问题的代码时,您有机会检查第一个测试未按预期捕获错误的原因.

最后,当然,保持单元测试非常简单,以至于它们不太可能包含错误.

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有