共计 1886 个字符,预计需要花费 5 分钟才能阅读完成。
前言
一大早测试部的老大就招集咱们开了个会——起因是咱们组负责的业务除了个线上漏测,用户的投诉跟雪花似的纷至杳来。
公司门口那个微小的显示屏就在那轮播着用户反馈,好几屏都是用户在吐槽这个 bug。
没啥可说的,该背的锅还是要背的,那个漏测也不算冤,测试共事造不出那个异样场景,心中幸运,感觉不至于异样会导致客户端呈现啥问题。偏偏它就出了问题!
起初组里散会复盘了下,决定当前在测试环节里引入 mock 测试工具帮助测试。
次要为了解决咱们测试过程中遇到的以下问题:
a. 代码存在多个接口依赖的问题,造出测试场景费时费力,且有时因为代码设计和业务隔离的问题无奈造出来
b. 波及到内部第三方资源,无奈调试内部代码外部状况,无奈造出特定场景
c. 后盾开发还没有实现,因为进度赶,须要提前测试前端问业务
mock 测试是个啥
mock 这个英文单词的意思是模仿,在测试流程中指的是对不容易结构或不容易获取的对象,用一个虚构的对象来创立以便测试。大抵可分为两类:
客户端 Mock:在被测服务外部工作,间接拦挡被测服务的 API 申请办法,间接从办法外部返回预约义的 Mock 响应。
服务端 Mock:在被测服务内部工作,作为 HTTP 服务器接管被测服务发送的 API 申请,并返回预约义的 Mock 响应。
到底要怎么搞
1. 间接写代码
python中有个 mock 模块,反对用 mock 对象替换掉指定的 python 对象,达到模仿返回值的成果;
Java中也有 jar 包——mock server moco,它反对指定配置文件就可开启一个 http 服务器,反对动静加载。
写代码的长处在于能够齐全服务于你所在我的项目的需要,毛病也很显著,一个迭代版本的需要往往给到的测试工夫只有几天,没有工夫给测试童鞋写代码来 mock。何况代码也不能保障一次性跑得通,往往调试也要花去很多的工夫。
我的想法是——“不要反复造轮子”。市面上其实不乏好些收费的 mock 工具能够用,只有可能满足咱们的目标——可模仿多种异样测试场景,mock 配置疾速简略。
2. 应用 mock 工具
(1)mock 工具的选用准则
接口治理方面: 接口测试个别会波及数十个甚至上百个接口,这个接口前面还波及到重构或者版本迭代的问题,因而 mock 工具须要具备接口治理的性能,可能治理多个版本的接口数据,不要一堆文件胡乱堆着无奈解决。
数据结构方面: 接口返回的数据类型和测试数据须要可能做到尽可能少的配置工具和高度仿真,以达到在实在业务场景中测试的成果
场景模仿方面: 能模仿各种异样返回,以及因为接口依赖和资源隔离,业务隔离等起因在测试环境内无奈结构进去的场景。
(2)场景 Mock 工具举荐
a.Fiddler
工具简介:Web 调试工具,它能记录所有客户端和服务器的 http 和 https 申请。容许你监督、设置断点、甚至批改输入输出数据。
Fiddler 在测试中次要用于拦挡接口,篡改接口返回值,来对前端进行调试。
但拦挡接口须要设置正则表达式,一个个接口捕获并批改返回值,对于接口数量少,只须要用到大量接口的测试需要,这个工具还是蛮好用的。
但如果是频繁迭代的需要,一个需要里有上百个接口,那么用 Fiddler 的效率则不高。
另一个问题是接口返回的数据须要本人手工填入,简略数据还行,简单数据如 base64 编码,哈希值等等,那么结构起来十分费时费力。
b.Apifox
工具简介 :Apifox 提供了接口设计,调试,测试,治理等性能。咱们这里只须要用到它的 mock 性能。
零配置 mock
Apifox 外面事后设置了常见数据类型的 mock 规定,不须要用户本人配置,间接抉择就能够用,目前曾经反对十分多罕用的数据类型,包含头像,手机号,邮箱,url,地址等,下图是目前毋庸配置可间接应用的数据类型:
如何结构数据 :
在接口设计 tab,间接在返回参数的 mock 选项框里抉择与参数匹配的数据类型
自定义 mock 规定
如果你的我的项目里须要用到不怎么常见的数据类型,能够自定义 mock 规定。
定义实现之后能够在接口设计 >response 参数里间接调用改 mock 规定。
结构异样测试场景
为了进步测试覆盖率,测试童鞋须要验证当接口返回 异样时客户端是否有容错机制,会不会呈现解体。
这能够利用 mock 性能来帮助测试。
接口治理
一个测试需要 / 我的项目经常蕴含多个测试接口,在 Apifox 外面能够以我的项目的模式,通过不同层级的文件夹来对接口进行治理。
总结
造测试数据是每个测试童鞋无奈防止的一项事务,如果能借助工具,疾速地结构测试场景进行用例测试,就可能极大地提高咱们的测试效率。
下载地址:
http://www.apifox.cn
软件 SAAS 版收费,私有化部署才免费,释怀用。