• 8
  • 8
分享

 

前言

一大早测试部的老大就召集我们开了个会——原因是我们组负责的业务除了个线上漏测,用户的投诉跟雪花似的纷至杳来。

公司门口那个巨大的显示屏就在那轮播着用户反馈,好几屏都是用户在吐槽这个bug。

没啥可说的,该背的锅还是要背的,那个漏测也不算冤,测试同事造不出那个异常场景,心中侥幸,觉得不至于异常会导致客户端出现啥问题。偏偏它就出了问题!

后来组里开会复盘了下,决定以后在测试环节里引入mock测试工具协助测试。

主要为了解决我们测试过程中遇到的以下问题:

  • 代码存在多个接口依赖的问题,造出测试场景费时费力,且有时由于代码设计和业务隔离的问题无法造出来

  • 涉及到外部第三方资源,无法调试外部代码内部情况,无法造出特定场景

  • 后台开发还没有完成,由于进度赶,需要提前测试前端问业务

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,地址等,下图是目前无须配置可直接使用的数据类型:

1.png

如何构造数据: 在接口设计tab,直接在返回参数的mock选项框里选择与参数匹配的数据类型

2.png

3.png

自定义mock规则 如果你的项目里需要用到不怎么常见的数据类型,可以自定义mock规则。

4.png

定义完成之后可以在接口设计>response 参数里直接调用改mock规则。

构造异常测试场景

为了提高测试覆盖率,测试童鞋需要验证当接口返回 异常时客户端是否有容错机制,会不会出现崩溃。

这可以利用mock功能来协助测试。

5.png

接口管理
一个测试需求/项目常常包含多个测试接口,在Apifox里面可以以项目的形式,通过不同层级的文件夹来对接口进行管理。

6.png

总结 造测试数据是每个测试童鞋无法避免的一项事务,如果能借助工具,快速地构造测试场景进行用例测试,就能够极大地提高我们的测试效率。


  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 我选择的想要做研究的网站是:宜家(https://www.ikea.cn/)宜家家居背景:宜家家居于1943年创建于瑞典,“为大多数人创造更加美好的日常生活”是宜家公司自创立以来一直努力的方向。宜家将主要消费群体瞄准为25-35岁的“新中产阶层”,因为年轻化和时尚化,决定了他们对家具和家居产品的要求是强调设计以及能够体现流行的不同搭配。这种定位是十分巧妙准确的,IKEA抓住了这个新生消费层,向他们提供设计精良、功能完善、价格相对低廉的家居产品,来迎合他们注重品质和品位、并兼顾价格的消费习惯,网站的整体风格和设计也都明显偏向于白领阶层的喜好。随着互联网的无孔不入,越来越多的人开始使用互联网作为信...
            0 0 2766
            分享
          •   背景  性能是网站和应用的支柱,网站性能高,用户体验会更好,同时,网站速度也是搜索引擎排名的一个因素。因此,好的网站性能直接影响我们的收益指标,因此有必要提高网站的性能,从而从技术角度拿到业务收益。  性能优化的指标  RAIL模型是Google给出的一套以用户为中心的性能模型,它提供了一种考虑性能的结构。 该模型将用户体验分解为关键操作(例如,点击、滚动、加载)并帮助您为每个操作定义性能目标。 RAIL分别代表:  · Response:响应  · Animation:动画  · Idle:空闲  · Load:加载 如下图所示:  响应  在 100 毫秒...
            0 1 244
            分享
          •   最近,YouTube Music与双子座聊天机器人(Gemini chatbot)进行了整合,这款音乐流媒体应用程序正在特斯拉电动汽车中找到新家,从而扩大其覆盖范围。最新的特斯拉软件更新版本 2024.26 包括对 YouTube Music 应用程序的支持等多项功能。  在特斯拉中使用 YouTube 音乐应用程序需要向汽车制造商订购每月 10 美元的高级连接服务。根据发布说明,另一种方法是使用手机创建 Wi-Fi 热点。  使用 YouTube Music Premium 收听超过 1 亿首歌曲。访问你的资料库,查看你喜欢和添加的所有歌曲、你创建的播放列表以及你订阅的艺术家和播客。  ...
            0 0 275
            分享
          • 小屌丝:鱼哥,我想写一个接口订单并发性能,能不能给我讲一下小鱼:接口订单并发?我前篇文章不是写过常见并发框架然后你在追加一个创建订单和生成订单不就可以了?小屌丝:鱼哥,你说的可轻松,那你能不能来一个?小鱼:好吧,那我就以我某个项目为例,我们实际的看一下,都需要哪些步骤。小屌丝: 鱼哥,就你这一点,最招人稀罕。哈哈!小鱼:挖草了~~那么我们就来分析一下,订单并发性能,我们想要什么:    >>1.订单并发数    >>2.成功订单数    >>...
            1 0 17443
            分享
          •   日本的一个城市正在为在家学习增添新意,在教室里使用头像机器人,让孩子们远程参与学校生活。此举正值日本努力应对因大流行病而加剧的学生旷课率飙升之际。日本《每日新闻》写道,日本西南部城市熊本的教育委员会正在发起这项倡议,以减少缺课儿童的焦虑,希望能把他们哄回教室。  这些机器人还能让那些因为COVID-19大流行结束后计划重返课堂的学生更轻松地过渡。  这些机器人只有三英尺多高,附带一个配有麦克风和摄像头的平板电脑(上图仅供参考)。它们还可以自行移动,学生可以用笔记本电脑控制机器人,在学校里自由走动。  与通过静态摄像头观看讲师授课不同,这些机器人意味着远程学生可以获得完整的学校体验,例如参与...
            0 0 618
            分享
      • 51testing软件测试圈微信