单元测试 vs 集成测试,你该怎么选?( 二 )


单元测试:单元测试策略将以一种孤立的方式测试应用程序的逻辑 。这可能包括:

  • 测试税费计算逻辑是否正确地计算出各个司法管辖区的税费
  • 测试放置到购物车数据结构中的项目是否被正确添加
  • 测试折扣代码是否被正确使用
这些领域中的每一个都可能有几个测试 。每个测试将验证一小部分功能 。单元测试的能力来自它们的数量、简单性以及它们的执行速度和便捷性 。
集成测试:另一方面 , 你的集成测试将专注于测试你的电子商务代码与其它系统的交互 。这意味着不仅要测试与数据存储的集成 , 还要测试与邮件发送服务的集成、与支付服务的集成等等 。这些可能包括:
  • 测试是否可以从外部运输服务中检索运输费率
  • 测试发票是否可以生成并正确发送
  • 测试订单信息是否可以持久化并从数据存储中正确检索
  • 测试交易是否可以发送并被支付处理程序正确处理
这些功能中的每一个都可能需要一个或两个集成测试来验证 。这些测试运行起来会比较慢 , 可能涉及一些安装和拆卸步骤 。结果是 , 每个测试的代码覆盖率会相当大 。这些测试将通过捕获单元测试不能捕获的问题来产生价值 。然而 , 维护成本和执行时间可能会比较高 。
集成测试 vs 单元测试
单元测试 vs 集成测试,你该怎么选?

文章插图
是时候正面比较了
那么 , 应该首选哪种类型的测试呢?单靠两者中的任一个都是不够的 。这两者都是综合测试计划的一部分 。让我们直接比较一下:
单元测试 vs 集成测试,你该怎么选?

文章插图
 
基于理想化测试的工作软件
每种情况都是独特的 , 基于在其它情况下有效的建议不应盲目遵循 。
现在我们明白了 , 单元测试不应该触及文件系统 , 而集成测试应该只集成松散的组件 。但实际上 , 将测试划分为两个明确的类别有点太简单了 , 如果我们只关注定义 , 我们就会忽略目标 , 即正确的工作软件 。
一些非常有想法的开发者认为单元测试可以并且应该读写数据库 。其它人则认为单元测试是一种浪费 , 粗粒度的集成测试提供的价值最大 。
问题是 , 每种情况都是独特的 , 基于在其它情况下有效的建议不应盲目遵循 。需要牢记的一个问题是 , 这个测试要捕获什么类型的缺陷 。如果每个测试都是经过深思熟虑编写来提升软件可靠性的 , 如果测试在不再有价值时被删除 , 那么随着时间的推移 , 将发现为特定项目提供最大价值的特定测试方法 。
原文链接:
https://blog.earthly.dev/unit-vs-integration/

【单元测试 vs 集成测试,你该怎么选?】


推荐阅读