我结束的大多数演出都很少或没有单元测试。通常,所谓的单元测试实际上是集成测试,很少从开发人员机器上运行。我通常通过宣传两者之间的差异来开始我的传福音,并试图让人们编写非常集中的单元测试,并在以后留下集成测试,即当有足够多的人编写单元测试时我们可以“继续”编写集成试验。验收或系统级测试通常由开发人员和QA部门手动处理。
我的问题是,在敏捷环境之外工作时,您在单元,集成和验收测试中投入了多少精力,以及您认为最有价值的是什么?
答案 0 :(得分:2)
我尝试从一开始就进行单元测试。我不是世界上最大的TDD粉丝,但我真的很喜欢单元测试。我不认为一些神奇的仙女会确保集成测试能够通过飞扬的颜色,因为所有的单元测试都有效,但它非常接近。
至于验收测试,在我看到单元测试通过(或失败,如果它们应该失败)之前,我甚至都不会去看东西。我想不出很多我接受完全缺乏单元测试的情况。如果应用程序中的某个核心库更新怎么办?
许多人认为单元测试是以开发人员为中心的,他们是正确的。但是,缺乏单元测试本身就是一个指标。特别是如果进行验收测试的人恰好是开发人员:)
修改强>
集成测试对我来说也很重要。我们通常将事物构建成一个非常严格的规范..当集成测试失败时(之前通过之后),它是范围蔓延的强烈指标。当发生这种情况时,有人需要在修复之前制造一些噪音。
答案 1 :(得分:1)
这个问题经常回答极端。就像你应该有几乎100%的覆盖率或单位测试是愚蠢....
我相信你必须找到平衡。
在合理怀疑类的逻辑可能失败的情况下使用单元测试。单元测试必须在隔离类上完成,这意味着您可能需要模拟类使用的服务。这样您就可以安全地执行重构,因为单元测试将确保类仍然按预期工作。
必须进行集成测试,以确保您的应用程序完全正常工作。您可以进行多项单元测试,但这并不意味着您的应用程序可以正常工作。
我完全同意你的验收测试。最后(冲刺)完成它们,部分必须手动完成。
答案 2 :(得分:1)
我听说比较单元测试就像测试墙上的各个砖块一样,功能/集成测试就像测试整个墙壁的稳定性一样。
开发人员必须进行单元测试,以确保课程正在按照他们的意愿行事。
功能/集成测试是必要的,以确保您不会错过实际提供某些功能的“全局”目标。
所以恕我直言,两者是绝对必要的,从投资回报率的角度来看,离开它们是个坏主意。
答案 3 :(得分:0)
我认为你不能混淆它。您描述的每个测试都有不同的目标。
单元测试是开发人员的目标。他们在模块实现之前或并行执行单元测试,以确保其正常工作或满足所有接口和要求。
从测试中心开发后进行集成测试。在开发期间,您不会像在单元测试中那样测试单个模块。集成测试涵盖了几个模块之间的交互。
验收测试通常涉及客户自己检查是否满足所有要求并按指定的方式实施功能。