最全字节8年经验之谈 —— 如何编写出色的接口测试用例?,冲刺7天拿下Offer

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】


![](https://img-blog.csdnimg.cn/direct/30e5635aa48a426b8defbdfca15bd79c.png)


#### 二 测试原则


基础原则:


* 自动化:接口测试是非交互式的自动化执行,不需要人参与。
* 独立性:接口测试之间不应该相互依赖。
* 可重复:接口测试可重复执行,不受环境影响。
* 接口测试遵守BCDE原则,保障接口交付质量。


	+ Border:边界测试。
	+ Correct:正确的输入,正确的预期输出。
	+ Design:按照需求和设计文档编写测试逻辑。
	+ Error:错误输入,预期输出。
* 数据准备:数据准备通过系统服务进行,不能通过直接插入db方式。
* 可测性:对于不可测的代码需要进行重构成合理的结构。
* 覆盖性:接口测试需要覆盖所有UC,同时代码覆盖率和分支覆盖率应达到一定标准,新增代码必须被覆盖。
* 持续性:如果代码修改导致已有接口测试执行失败,必须修复代码问题或者测试代码逻辑。
* 时间要求:接口测试应该在项目发布之前完成,不应放到项目发布之后补充。


以上的基本原则应适用于所有层的自动化测试用例,在编写接口测试时,除了上面这些原则,还有其他原则需要遵守,先看一张图:




![image.png](https://img-blog.csdnimg.cn/img_convert/21f31a13ae6c4a17ff5fbb9a00aa7877.png)



从系统角度来分析入口调用,以HSF服务为例:


* 外围系统调用由我们系统提供的服务。
* 系统执行了一堆代码逻辑,其中包含有分支逻辑。
* 系统执行过程中依赖外部HSF服务,进行了调用,并得到了返回值。
* 系统执行过程中依赖DB查询或者落地了数据,依赖缓存查询或者落地了数据。
* 系统执行过程中对外发送了消息。
* 给上游系统返回HSF执行结果。


有效接口测试的关键原则是要覆盖所有入口,mock所有依赖,校验执行过程中所留下的痕迹,总结如下:


* 入口覆盖:接口测试用例必须覆盖HSF服务入口、消息入口、定时任务入口。
* 依赖mock:在基本原则中,有可重复这个原则,即接口测试不能受环境依赖,需要mock掉对外依赖。但对于db依赖,不建议完全mock掉,一方面mock成本高,另外可能覆盖不到sql和表约束逻辑。
* 校验完整:有效的接口测试,应该具备完整的校验,没有校验的接口测试是没有意义的。只要执行过程中,留下的痕迹对业务有影响,都要进行完整校验,方能保障接口测试的有效性。


	+ HSF接口返回值校验:按照场景和接口约定进行HSF返回参数校验。
	+ DB校验:校验落地数据的正确性。
	+ 缓存校验:校验存入缓存中数据的正确性。
	+ HSF依赖入参校验:通过mock工具获得依赖HSF调用的入参,进行入参校验。
	+ 消息校验:通过mock工具获得发送的消息对象,进行消息体校验。


#### 三 测试代码结构


在编写测试代码的时候,也应跟写业务代码一样,考虑代码的可读、可扩展、可复用性。同时也可以根据系统的业务特性,在测试框架的基础上封装适合当前系统的测试组件,提高测试代码编写效率,规范测试代码结构。


一个接口的测试代码,大概的结构如下:


##### 1 测试准备


**依赖数据准备**


很多时候,我们的测试有数据依赖,可能是配置数据,也有可能是业务数据(例如退款需要依赖支付数据)。


* 配置数据:可以通过定义配置文件来初始化配置。
* 业务数据:这类数据,禁止通过直接插入数据方式产生,而是应通过调用业务服务产生。


**依赖mock**


对于外部依赖,需要对被依赖的服务进行mock,避免真实调用。


**接口测试入参准备**


准备接口方面的入参。


##### 2 测试执行


调用接口方法,执行业务逻辑。


##### 3 测试校验


* 返回参数校验:校验接口的返回参数。
* DB:校验DB落地数据。
* 缓存数据校验:校验落地到缓存中的数据。
* 消息校验:校验对外发送的消息对象。
* 对外HSF调用校验:校验对外HSF调用的入参。


#### 四 实践技巧


##### 1 执行效率


对于接口测试,执行效率是不得不关注的一个点,若一个接口测试执行3分钟以上才能看到结果,会大大降低开发同学编写接口测试的热情。对于测试执行效率提高,建议的方案为:


* 最小化启动测试上下文,例如spring boot的应用,启动spring就可以了
* 使用内存数据库,例如h2
* 将中间件依赖mock掉


##### 2 测试框架选择




![img](https://img-blog.csdnimg.cn/img_convert/6b2ec52a2f2fd945412bf1842600e73c.png)
![img](https://img-blog.csdnimg.cn/img_convert/4779a07067a0dac4204f3218ebbf6b50.png)
![img](https://img-blog.csdnimg.cn/img_convert/eee8521063051841951b3ddc1ce3c5a6.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值