自动化测试高手课
柳胜
原甲骨文高级开发经理
16849 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 34 讲
开篇词 (1讲)
自动化测试高手课
15
15
1.0x
00:00/00:00
登录|注册

12|集成测试(一):一条Happy Path扫天下

你好,我是柳胜。
上一讲,我们学习了单元测试,在验证业务逻辑方面,它的优势在于速度又快,阶段又早。既然单元测试看起来是一个完美的自动化测试方案,那为什么还需要集成测试呢?
我在第二讲的 3KU 原则说过,测试需求首先要找 ROI 最高的截面来验证。在金字塔模型里,ROI 最高的就是单元测试,如果无法实现,才回退到 ROI 第二高的截面,一直到 ROI 最低的端到端测试。
那集成测试存在的价值,一定是做得了单元测试层面做不到的事,否则,集成测试这个概念就没必要存在。那这些事具体有哪些呢?你要是能找到这些事,就找到了集成测试省力又见效的窍门。今天咱们就一起寻找这个答案。

集成测试和单元测试

上一讲我们学过了代码四象限法则,产品的代码按照业务相关性和依赖程度,可以划分到下面四个象限里。
那集成测试和单元测试分别应该归到第几象限呢?
集成测试,顾名思义,是验证本服务代码和其他进程的服务能不能一起配合工作。在上面的四象限里,集成测试的活动领域就在“依赖代码”象限,而单元测试的活动领域是在“领域代码”象限。
我再用图解的方式划分一下地盘,你会看得更清楚。
这张图里的信息量很大,展示了单元测试和集成测试的各自战场,我来跟你细说一下。
单元测试掌管领域代码的测试,这些领域代码只是负责数据计算,并不会触及外部依赖。像上一讲的 changeEmail 方法,只是计算出一个新的餐馆数目,单元测试只需要验证这个计算逻辑是否正确就好了。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

集成测试是软件开发中至关重要的环节,本文深入探讨了集成测试的概念、特点和实践方法。作者首先从单元测试和集成测试的关系入手,阐述了集成测试的价值和特点。文章强调了集成测试相对于单元测试的两个特点:运行速度慢和需要测试的代码量多。在单元测试阶段,作者建议验证尽可能多的业务逻辑,让集成测试关注在外部依赖上,并强调了集成测试至少覆盖一条长路径案例,即“Happy Path”。此外,文章还讨论了集成测试中的Mock和Real测试策略,针对完全可控依赖和不可控依赖提出了不同的Mock策略。最后,通过示例代码展示了如何实现集成测试。总之,本文以深入浅出的方式介绍了集成测试的重要性和实践方法,对于软件开发人员具有一定的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《自动化测试高手课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(6)

  • 最新
  • 精选
  • 朝如青丝暮成雪
    老师有推荐的单元测试练手的项目嘛?看完文档觉得自己好像会了,但是实际上手可能差点意思

    作者回复: 是的。一讲的内容篇幅主要讲的是单元测试在整体中的位置,方向和关注点,相当于建立起一个架子。至于血肉的细节,可以参照我为本专栏创建的Github Repository,https://github.com/sheng-geek-zhuanlan/awesome-test-automation,这里搜集了一些很好的素材资料!

    2022-04-15
    4
  • swordman
    找到Happy Path,除了看代码以外,我想到的一个办法,是通过覆盖率把Happy path找出来。把这些测试案例都执行一遍,看依赖代码类的覆盖情况,如果能一个或几个的组合,能覆盖到所有的外部依赖交互点,就找到了Happy path。

    作者回复: 是的,黑盒方法,白盒方法,条条大路通罗马!

    2022-05-14
    1
  • 羊羊
    想问下老师,为什么测试用例需要“5. 检验 Mock 的 MessageBus 里的消息”?Moke 的 MessageBus 需要实现SendEmailChangedMessage的功能么?还是只需要按照 IMessageBus 中的定义返回期望结果?

    作者回复: | client | service sendEmailChangeMessage. |. recieveEmailChangeMessage Mock的是MessageBus的service,SendEmailChangeMessage是Message Bus的client。Mock MessageBus Service只需返回期望结果。

    2022-07-29归属地:日本
  • lisa
    我理解完全可控依赖和不完全可控依赖不是一个推荐策略或者二选一策略,他是一个组合策略。这个组合也是有技巧的,需要建立在对不完全可控依赖的对象的逻辑理解上吧?

    作者回复: 没错。可控还是不可控,是一个没有明确的分界线。可以加进技术,项目,团队的因素来综合考虑。

    2022-04-17
  • ifelse
    学习打卡
    2024-02-16归属地:浙江
  • Geek_2f2844
    老师您本章只讲了单元测试、集成测试和UI测试,没有讲到接口测试,是因为这块对测试来说最熟悉么。不过我理解集成测试也算是接口测试的一种吧,主要关注与外部服务交互的接口测试
    2022-09-05归属地:中国香港
收起评论
显示
设置
留言
6
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部