前言: 关于Mock测试

客户要求进行完整的产品展示,人员和时间都有限,来不及开发后端服务。

工期比较紧的项目,前端已开发完成,需要调试,后端接口还未开发完成。

公司某个项目依赖于第三方服务,但是第三方服务不方便频繁调用。

实际工作中,从业务到开发到测试,经常会遇到上述的情况,如此反复造成了项目的进度受限。此时,Mock框架可以很好的解决这些问题。

一、什么是Mock测试

Mock 测试就是在测试活动中,对于某些不容易构造或者不容易获取的比较复杂的数据/场景,用一个虚拟的对象(Mock对象)来创建用于测试的测试方法。

二、为什么要进行Mock测试?

Mock是为了解决不同的单元之间由于耦合而难于开发、测试的问题。

所以,Mock既能出现在单元测试中,也会出现在集成测试、系统测试过程中。

Mock 最大的功能是帮你把单元测试的耦合分解开,如果你的代码对另一个类或者接口有依赖,它能够帮你模拟这些依赖,并帮你验证所调用的依赖的行为。

三、Mock适用场景

1. 需要将当前被测单元和其依赖模块独立开来,构造一个独立的测试环境,不关注被测单元的依赖对象,只关注被测单元的功能逻辑。

2. 被测单元依赖的模块尚未开发完成,而被测单元需要依赖模块的返回值进行后续处理。

2.1 前后端项目中,后端接口开发完成之前,接口联调

2.2 依赖的上游项目的接口尚未开发完成,需要接口联调测试

3. 被测单元依赖的对象较难模拟或者构造比较复杂

如: 支付业务的异常条件很多,但是模拟这种异常条件很复杂或者无法模拟

四、 Mock测试的优势

1. 团队可以并行工作

有了Mock,前后端人员只需要定义好接口文档就可以开始并行工作,互不影响,只在最后的联调阶段往来密切;后端与后端之间如果有接口耦合,也同样能被Mock解决;测试过程中如果遇到依赖接口没有准备好,同样可以借助Mock;不会出现一个团队等待另一个团队的情况

2. 开启测试驱动开发模式

当接口定义好后,测试人员就可以创建一个Mock,把接口添加到自动化测试环境,提前创建测试。

3. 可以模拟那些无法访问的资源

比如说,你需要调用一个“墙”外的资源来方便自己调试,就可以自己Mock一个。

4. 避免脏数据产生

我们需要调用一个post请求,为了获得某个响应,来看当前系统是否能正确处理返回的“响应”,但是这个post请求会造成数据库产生脏数据,那么就可以充分利用Mock,构造一个虚拟的post请求,我们给他指定返回就好了。

5. 可以用来演示

比如你已经做好了一个系统,并且需要给客户进行演示,但是里面有些真实数据并不想让用户看到,那么同样,你可以用Mock接口把这些敏感信息接口全部替换。

五、Mock测试存在的问题

使用Mock测试有时可以提高团队的开发效率,但当前后端都开发完成代码后,这时应该把自动化测试代码从使用Mock测试改为调用真实的接口数据,以避免出现模块之间集成部分漏测的问题。这里说Mock存在的问题,主要是让开发和测试不要过分的依赖/相信mock接口。

六、使用mock时,切记的几点:

1. 测试人员不应该被覆盖率高的自动化测试所迷惑,覆盖率高不代表没有问题。

2. 当把mock接口换成实际接口后,测试/开发也必须把之前的测试重新做一遍。

建议: mock接口只能主流程联调返回测试,不要过分依赖mock接口进行测试。

3. 测试完毕,上线前,请一定确保为Mock而做的相关代码/配置文件的修改,已经完全恢复了

建议:上线checklist中条条列出,并上线前review

七. 以Mock Server-Moco为例

下面来看下载地址:

https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/

这是一个jar包,只要执行该jar包,指定配置文件,就可开启一个http服务器提供服务,并且修改配置文件后也无需重启服务,支持动态加载。我使用的是moco-runner-1.1.0-standalone.jar,运行方式如下:

java -jar moco-runner-1.1.0-standalone.jar start -p 8089 -c auth_res.json

-p  指定端口号, 端口号可以进行修改

auth_res.json就是我们的mock配置文件,比如:

[    {        "description":"授权接口",            "request":{                "method":"post",                "uri":"/qf-test/auth1"                },            "response":{                "headers":{                    "Content-Type":"application/json"                    },                "json":{                    "status":200,                    "msg":"success",                    "token":"69996f84db2a4f21b9d1fdfec905735e"                    }            }    }]

以上就可以实现当我们访问127.0.0.0:8080/auth时,返回一个auth_res.json中的内容。

需要相关学习资料的可以找小姐姐领取哈!

一文带你读懂Mock测试相关推荐

  1. 带你读懂mock测试——单元测试实践篇

    1.什么是mock测试? Mock 测试就是在测试过程中,对于某些不容易构造或者不容易获取的比较复杂的对象,用一个虚拟的对象(Mock 对象)来创建以便测试的测试方法. 2.为什么要进行Mock测试? ...

  2. 一文带你读懂SDK测试

    一.什么是SDK SDK,全称:software development kit, 软件开发工具包. 软件开发工具包一般都是一些软件工程师为特定的软件包.软件框架.硬件平台.操作系统等建立应用软件时的 ...

  3. 一文带您读懂FCC、CE、CCC认证的区别

    一文带您读懂FCC.CE.CCC认证的区别 参考资料:https://3g.k.sohu.com/t/n411629823 FCC认证,CE认证,CCC认证是产品认证中比较常见的几个认证,前两者经常有 ...

  4. DNN、RNN、CNN.…..一文带你读懂这些绕晕人的名词

    DNN.RNN.CNN.-..一文带你读懂这些绕晕人的名词 https://mp.weixin.qq.com/s/-A9UVk0O0oDMavywRGIKyQ 「撞脸」一直都是娱乐圈一大笑梗. 要是买 ...

  5. 机器学习中为什么需要梯度下降_机器学习101:一文带你读懂梯度下降

    原标题 | Machine Learning 101: An Intuitive Introduction to Gradient Descent 作者 | Thalles Silva 译者 | 汪鹏 ...

  6. 一文带你读懂HTTP协议的前世今生

    点击上方蓝字关注我们 HTTP,Hypertext Transfer Protocol,超文本协议,是在万维网上传输文件(如文本.图形图像.声音.视频和其他多媒体文件)的规则集.如果web用户打开他们 ...

  7. 用程序员计算机算进制,一文带你读懂计算机进制

    hi,大家好,我是开发者FTD.在我们的学习和工作中少不了与进制打交道,从出生开始上学,最早接触的就是十进制,当大家学习和使用计算机时候,我们又接触到了二进制.八进制以及十六进制.那么大家对进制的认识 ...

  8. 一文带你读懂“经典TRIZ”

    本文承接上文<一文带第读懂TRIZ>,下面开始看第二个问题:什么是"经典TRIZ"? 很多书里都有对TRIZ的产生与发展的描述. 我个人在看了很多的书和文献以后,认为: ...

  9. 简单一文带你读懂Java变量的作用和三要素

    Java变量的作用 不只是java,在其他的编程语言中变量的作用只有一个:存储值(数据) 在java中,变量本质上是一块内存区域,数据存储在java虚拟机(JVM)内存中 变量的三要素 变量的三要素分 ...

最新文章

  1. 刷个B站的功夫就能把Python学了,微软放出短视频入门课,资料登上GitHub热榜第一...
  2. 图像控制点 形变_基于控制点的图象变形方法及其应用
  3. python输入hello输出olleh_Python小试牛刀(经典例题)[连载中]
  4. axios的介绍与页面配置---axios工作笔记003
  5. Android--Activity的跳转及Activity之间的数据传递
  6. springboot项目发布到独立的tomcat中运行
  7. MAC地址批量生成器
  8. 修改Windows系统管理员Administrator的名称
  9. Spring+Quartz实现文件中转站
  10. Qt:45---QPainter绘图
  11. 秋天的第一杯奶茶刷屏互联网,其背后又蕴含着哪些营销逻辑呢?
  12. ORACLE 8023学习总结
  13. 绿色软件联盟:杀毒软件已经进入空前弱智与混沌状态
  14. 程序员养生书单,九本必读养生书籍,颈椎按摩,脊椎按摩,脱发植发
  15. CodeForces 1463 C. Busy Robot 模拟
  16. Snipaste截图贴图软件安装包下载免费的超级强大截图软件
  17. 阿里云服务器的网站被提示该内容禁止访问的解决办法
  18. 【已解决】vue安装项目的时候出现了 command failed: pnpm install --reporter silent --shamefully-hoist 很有趣的解密过程
  19. Error: This old version of 'S8051.DLL' is incompatibl 解决办法
  20. 动态vlan和静态vlan

热门文章

  1. 网络——传输层(详细版)
  2. C/C++数组初始化的总结
  3. Microsoft Azure Administrator AZ-104 AZ-103笔记/考点总结
  4. Sharepoint 2013 页面置顶(Topbar)小插件
  5. 使用GitBook编写文档书籍
  6. 题目:L1-079 天梯赛的善良
  7. 纯 CSS3 实现漂亮的 input 输入框
  8. Adobe国际认证的脱颖而出,让摸鱼、秃头小宝贝不再是宿命?
  9. 科学家提激进研究理论:人类世界或为虚拟空间
  10. 城市燃气价格体系及计量、计费