单元测试的新名称[关闭]


9

我从不喜欢单元测试。我一直认为这增加了我要做的工作量。
事实证明,仅就您编写的实际代码行数而言,这是正确的,此外,您可以在一小时内通过测试和测试驱动的开发编写的有用代码的行数增加完全抵消了这一点。

现在,我喜欢单元测试,因为它们允许我编写有用的代码,而这些代码通常在第一次使用时就可以使用!(敲木头)

我发现,如果人们在严格的时间表内或在其他人不这样做的环境中,他们不愿意进行单元测试或以测试驱动的开发开始项目。有点喜欢,一种文化拒绝甚至尝试。

我认为关于单元测试的最强大的功能之一就是它给您进行重构的信心。这也给我带来了新的希望,我可以将我的代码提供给其他人进行重构/改进,并且如果我的单元测试仍然有效,那么我可以使用他们修改过的新版本的库,几乎不用担心。

我认为这是单元测试的最后一个方面,需要一个新名称。单元测试更像是该代码现在和将来应该做什么的合同。
当我听到“测试”一词时,我想到了关在笼子里的老鼠,并对其进行了多次实验,以观察化合物的有效性。这不是单元测试,我们不是在尝试不同的代码来了解什么是最有影响力的方法,而是在定义我们期望的输出和输入。在老鼠的例子中,单元测试更像是宇宙如何工作的定义,而不是在老鼠身上进行的实验。

我是处于崩溃状态还是其他人看到拒绝进行测试,他们是否认为这是他们不想这样做的类似原因?
您/其他人给出不测试的原因是什么?
您认为他们的动机不是单元测试吗?

作为单元测试的新名称,它可以克服某些异议,jContract呢?(我知道一点Java中心:)还是单位合同?


14
名字叫什么?我们称之为玫瑰的名字,闻起来会很甜;-莎士比亚,罗密欧与朱丽叶,摄于1600
史蒂文·罗伊

8
我不知道你是否处于困境。我从未尝试过破解或成为您。
Tim Post

1
我认为,想法之所以与单词相关,主要是因为它们所附带的想法和态度,而非单词。我记得当时发现痉挛协会已将其名称更改为Scope,因为该名称与偏见有关。我记得是因为它解释了为什么那天早些时候我听到孩子们互相称呼“范围”。如果您想改变态度,请关注态度而不是名字-痴迷名字只是浪费时间。
Steve314,2011年

2
按合同设计:en.wikipedia.org/wiki/Design_by_contract 具有特定意义,不是单元测试。如果我看到名称中带有Contract的东西,那就是我的大脑与之相关联的东西。
Berin Loritsch 2011年

@ Steve314 Scopey。喜欢它。:)我认为在这种情况下,已经定义了测试一词,因此将单元测试重命名为未定义的术语会更好。由于提到了“接口”,因此合同不能成立。如何“更快地创建更好的程序”或CBPF。
威尔

Answers:


5

我是处于崩溃状态还是其他人看到拒绝进行测试,他们是否认为这是他们不想这样做的类似原因?

单元测试中的测试一词使人们认为这是集成测试或用户界面测试,因为那是他们做过的唯一测试。就像将Java放入javascript中一样。

当某件商品的名称不好并影响人们对其的思考时,这称为成帧错误。取景错误往往是肤浅的-人们很聪明,可以看穿各种不良名称,不良隐喻。

您/其他人给出不测试的原因是什么?

难以模拟/伪造/

您认为他们的动机不是单元测试吗?

单元测试的概念数量很少,在停止编写不良的单元测试并开始编写好的单元测试之前,需要完成大量的工作。随着人们更好地解释什么是单元测试,采用率将会增加。以我的经验,单元测试对生产力和代码质量几乎具有神奇的影响。但这并不是从那开始的。我最初使用单元测试框架作为编写集成测试的便捷方法。


好点。试图解释为什么要“测试”一个简单的get方法很困难,解释为什么为什么get方法总是返回您期望的结果对所有其余代码的稳定性具有合同上的重要性,这是更容易理解的参数
Will

3

已经提出了更改名称的概念。这就是所谓的行为驱动开发。提出这一点的家伙注意到了很多相同的论点,加上不自然地适合测试尚未创建的东西。相反,他们的概念是编写一个可执行规范(无论如何,TDD实际上就是该规范)。

我注意到了同样的回推。我还注意到,许多人只是不知道如何编写单元测试。他们缺乏科学的过程学科,仅使用单元测试框架作为将所有内容连接在一起并启动调试器的方式。简而言之,他们并没有真正改善时间的利用。我无法告诉您,我已经看到多少个单元测试是几十行长(30多个行),而不是一个assert语句。当我看到这一点时,我知道是时候与开发人员合作,并教他们什么是断言,以及如何编写实际测试的单元测试。


2
可执行规范可能早于TDD / BDD / Agile / XP。它可能与CMMI一样古老。当人们认为UML是编写ES的语言时,它曾经与UML共同流行。
rwong 2011年

与TDD一样,BDD是一种测试方法,而不是一种测试(功能v集成v单位v接受)。作者专门询问有关单元测试的“更好”的名称。
ybakos 2012年

0

在大多数情况下,合同被称为“接口”。进行单元测试并不能保证合同本身,因为您也可以更改测试,因此您实际上并不知道可以仅仅因为测试了库就使用新版本的库。您还需要测试使用该库的代码。这与其他任何单元测试都没有什么不同,所以我不明白为什么这需要一个新名称。

我认为,像您一样,大多数人都不愿意进行测试,因为他们认为这是更多的工作,没有用。


0

我将告诉您为什么不喜欢TDD:不是因为我看不到TDD的价值,还是因为我认识到测试套件的好处,我可以在每次修改后运行该套件来验证所有代码。

这是因为我不需要它。我是一个非常老派的开发人员,当我还是个小伙子的时候,我们没有像花哨的集成调试器那样可以编辑并继续编写代码,而且编译可能要花很长时间,所以我们不得不做些事情对,从一开始就对。经过这样的培训,我真的看不到编写大量的单元测试会提高我的生产力,也不会使我的代码更没有错误。

我确实测试了我的代码,但是正如我一直所做的那样,这是整个问题的一部分,而不是各个部分。因此,也许我确实有“单元测试”,但它们的粒度更粗。

这就是我的原因。我看不到我需要这样做。我生成的代码足够好,如果是这种情况,为什么我应该更改流程以修复未损坏的内容?


然后,您必须编写非常简单的代码。在大多数现代系统中,可到达状态的数量意味着进行端到端测试将占用整个宇宙的生命期-测试两个具有4位状态的片段需要16个案例进行测试,或总共32个测试案例。制成端到端系统可提供8位状态或256个测试用例,以覆盖所有状态。就个人而言,我宁愿做1/8的工作。
皮特·柯坎

1
@PeteKirkham的必然结果是,您需要编写大量的单元测试,然后还要编写集成测试,以确保单元仍然可以正常工作。我工作过的非常喜欢单元测试的地方花了很多时间来编写(和维护)它们,以至于使代码库相形见,,与我在那个环境之外所取得的成果相比,他们所做的工作量很小。没有什么是万能的,我建议尝试找到一种更实用的方法,既可以测试重要部分的内容,又可以产生一些东西。
gbjbaanb
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.