我刚与我的首席开发人员进行过对话,他们不同意单元测试是必要或重要的。在他看来,具有足够高的代码覆盖率的功能测试应该足够,因为任何内部重构(接口更改等)都不会导致需要重写或重新检查测试。
我尝试了解释,但没有走得太远,并认为你们可以做得更好。 ;-)所以......
功能测试不提供的单元测试代码有什么好的理由?如果您只有功能测试,会有什么危险?
编辑#1 感谢所有出色的答案。我想通过功能测试补充一点,我并不仅仅意味着对整个产品进行测试,而是对产品中的模块进行测试,而不是在必要时进行模拟的单元测试的低级别等等。另请注意我们的功能测试是自动的,并且持续运行,但它们只需要比单元测试更长的时间(这是单元测试的一大优势)。
我喜欢砖与房子的例子。我想我的主要开发人员说的是测试房子的墙壁就足够了,你不需要测试单个砖......: - )
答案 0 :(得分:16)
脱离我的头顶
答案 1 :(得分:9)
单元测试是指开发人员查看代码失败的地方
功能测试是为了让企业查看代码是否符合他们的要求
答案 2 :(得分:5)
单元测试是指开发人员查看代码失败的地方
功能测试是为了让企业查看代码是否符合他们的要求
单元测试正在检查您是否正确制造了砖块
功能测试是检查房屋是否符合客户的需求。
它们是不同的东西,但如果前者已经实施,后者会更容易。
答案 3 :(得分:4)
如果功能测试失败,找到问题的根源可能会困难得多,因为您每次都在有效地测试整个代码库。相比之下,单元测试划分了潜在的问题区域。如果所有其他单元测试成功但这个,则可以确保问题出在您正在测试的代码中而不是其他地方。
答案 4 :(得分:1)
在开发周期中应尽快捕获错误 - 错误从设计转移到代码,或代码到测试,或者(希望不是)测试到生产会增加修复它所需的成本和时间。
我们的商店仅凭这个原因执行单元测试(我确信还有其他原因,但这对我们来说已经足够了。)
答案 5 :(得分:0)
如果您使用纯粹的极限编程/敏捷开发方法,则始终需要进行单元测试,因为它们是开发的要求。
在纯XP / Agile中,根据将要对应用程序执行的测试来制定所有要求
除此之外,单元测试可用于持续跟踪功能要求。
即。如果您需要更改函数的工作方式,但输入字段和输出保持不变。然后,单元测试是跟踪可能出现问题的最佳方法,因为您只需要运行测试。
答案 6 :(得分:0)
在TDD/BDD中,编写程序需要进行单元测试。这个过程
测试失败 - >代码 - >通过测试 - >重构 - >重复
链接的文章还提到了TDD / BDD的好处。总结:
该链接还有一个(愚蠢的)TDD / BDD示例,但它是PowerPoint(ew),所以here是一个HTML版本。
答案 7 :(得分:0)
假设您已经一整套功能测试,检查每个可用的用例,并考虑添加单元测试。由于功能测试将捕获所有可能的错误,因此单元测试无法帮助捕获错误。然而,与单元测试,集成测试和功能测试的组合相比,使用功能测试存在一些权衡。
另一方面,假设您决定只保留功能测试而不添加任何单元测试