• 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

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


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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 硬件兼容性测试一般考虑两个方面的内容:一是不同的硬件配置可能影响软件的性能,二是软件若使用了某些硬件的特定功能,就要对此进行兼容性测试。硬件兼容性测试具体内容如下:1、与整机的兼容性测试考虑到软件的运行情况,需要对常见的硬件配置进行测试,从而确定软件能够在多种硬件配置环境下运行。如果软件对硬件的配置要求比较高还要测试它的敏感度。2、与板卡和外设的兼容性测试如果软件需要直接访问某类板卡和外部设备,通常需要对这些板卡和外设的接口调用进行测试,以确保对这些接口的访问适用于所有型号的板卡和外设。软件兼容性测试软件兼容性测试主要考虑以下问题:1、与操作系统的兼容性如果一个软件可以在多种操作系统上运行,就...
            0 0 877
            分享
          • 1、MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛,本文简单介绍下怎么使用JMeter对MQTT协议做性能测试2、要对MQTT协议进行测试,需要下载一个mqtt-xmeter-jar-with-dependencies.jar插件,放置在JMeter的lib/ext目录下一、添加线程组1. 添加线程组,Jmeter执行是通过线程组进行驱动的,测试计划必须最少有一个线程组,选中测试计划,点击右键,添加》线程》线程组二、依次添加如下请求1.  添加创建连接请求-选中线程组,点击右键,添加》取样器》MQTT...
            0 0 2585
            分享
          •   在ui自动化测试领域,会遇到这样的情形:发布一张图片或上传一个头像,如何通过自动化测试的方式判定发布后的图片是否正确呢?又或者,我们如何通过自动化测试的方式判定某网页的某个logo是否与预期的一致呢?也许,你会想,要是能够自动比对图片,将差异化的点在图片上圈出来就好了。相信我,只要你想,就会有。  试想一下,上述情形,像不像我们常玩的“一起来找茬”呢?让我们以具体案例展示如何以自动化的方式“找茬”。  如下所示,图1、图2是我们两张相似图片(暂定图1名为img1,图2名为img2)。我们以图1、图2为例,使用自动化的方法找出两张图片中差异之处。  方案设计  对于比较图片差异性,我们经常使...
            0 0 976
            分享
          •   这家公司是做证券项目的,约的9点钟,路程还是有点遥远,转了一趟公交两趟地铁,精力都花在了路上,感觉有点累,以下是今天得面试流程。  到公司前台给我了一张面试表,写完之后就是等待面试。一共面试了两轮,第一轮面试官是测试主管,第二轮测试经理(负责人)。  第一轮  自我介绍。  根据自己的情况扩展。  你是怎么理解软件测试的?  我觉得软件测试是很重要的岗位,如果一个系统开发完后不通过测试去产品质量把关,产品不能正常运行可能造成的后果,损失钱财、损失时间、损失客户等等,所以我个人觉得测试是不可缺少的一部分。  为什么转测试?  我觉得测试的发展空间很大, 而且薪资也比较可观,发展方向也会我想要...
            0 0 1176
            分享
          •   EasyModeling 是我在2021年圣诞假期期间开发的一个 Java 注解处理器,采用 Apache-2.0 开源协议。它可以帮助 Java 单元测试的编写者快速构造用于测试的数据模型实例,简化 Java 项目在单元测试中准备测试数据的工作,在提高编写效率的同时,使单元测试更加整洁易读。经过一年的维护,EasyModeling 已经在几个 Thoughtworks 内部的项目上得到了应用,并迭代发布了几个版本。  单元测试中的数据准备的困难  在企业级应用软件开发项目中编写测试代码时,针对特定的测试场景,我们需要准备相应的测试数据,以验证被测组件在给定输入下的行为。在使用 Java ...
            0 0 544
            分享
      • 51testing软件测试圈微信