当前位置:网站首页>使用Mock技术帮助提升测试效率的小tips,你知道几个?
使用Mock技术帮助提升测试效率的小tips,你知道几个?
2022-07-28 20:05:00 【叶赫那拉 赫敏】
Mock是什么?
我给你描述一下这几个场景,你看看是不是熟悉的呢?
测试一个业务模块,这个业务模块中有几个接口对接到了第三方,因为第三方延期交付,导致项目延期,我又背锅了
我想测试前端页面字体是不是有做兼容性处理,需要改相关字段的数据库,但是我又没有修改数据库的权限,我好愁呀
领导让我测试部署在某个机器上的软件,可是。。。机器都没有部署好,没办法测试呀
我测试的模块严重和其他模块有耦合,其他模块还没开发完成,我只能干等,导致最后测试延期了…绩效又打C了
这些都是我们在平时测试过程中,经常碰到的阻塞测试进度的问题,那有什么技术手段,可以解决这些问题,提升我们的测试效率呢?
先不要着急知道答案,大家可以看一下上面的这四个过程,其实都是我们的被测模块在向某一个依赖环境(第三方服务、后端接口、硬件设备、其他服务)发送请求的过程中,依赖环境出现了问题,导致影响我们的测试效率。
那如果我们把这个“拖后腿”的依赖环境直接替换,改成我们自己的一个服务接口,我们想让它返回什么就返回什么,测试起来,是不是就轻松多了?

那上面的这个场景,其实所使用的,就是我们接下来要教给大家的Mock技术。
如何使用Mock技术?
Mock的实现有多种方式,可以通过mitmproxy+python 实现深度定制的Mock,也可以通过fiddler或Charles这种比较简单的工具实现一些基础的Mock。
首先,我们先来看如何通过Charles实现Mock。在实现之前,先简单介绍一下Charles这个工具。Charles本身是一个很强大的代理工具, Charles 主要的功能包括:
支持SSL代理。可以抓取分析https的请求。
支持流量控制。可以模拟慢速网络以及等待时间(latency)较长的请求。
支持重发网络请求,方便后端调试。
支持修改网络请求参数。
支持网络请求的截获并动态修改。
可以自动将json或xml数据格式化,方便查看。
当然了,本文的重点是在讲Mock技术,那接下来就看一下,Charles是如何实现Mock的吧。
通过Mock技术修改百度页面的效果
1.先保存接口返回数据,右键单击某接口->点击 SaveResponse ->文件后缀写上 .html



2.对本地的 html 进行修改,将“百度一下”改为“霍格沃兹”


3.设置 Charles 进行 map local,右键点击 Map Local->进入 Edit Mapping ->点击 choose ->选择修改后的 html->点击 OK



4.此时再次请求百度,则可以看到“百度一下”变为了“霍格沃兹”


通过Mock技术修改股票的展示效果
上面这个案例是 Mock 技术相对比较简单的一个应用场景,那 Mock 技术是否可以在App应用上取得同样的效果呢?比如下图,我们要去测试雪球股票界面的列表展示颜色是否会跟随股价的涨跌停进行变化。

可能到这里,很多同学说,改数据库就可以实现了呀,但是改数据库有可能存在两个问题:
1、不是所有的测试都有数据库的修改权限。
2、有一些数据信息是直接从第三方接口获取的,测试也不可能有改第三方服务数据库的权限。
其实要实现上面这个测试需求是非常简单的,只要善用Mock工具,了解Mock的实现与配置原理,就能够轻松完成雪球股票界面的列表展示颜色是否会跟随股价的涨跌停进行变化,从而提升测试效率。

总结
当然,以上的小练习只是实现了Mock技术中的一个简单应用场景,至于如何解决第三方服务的依赖等其他更多的Mock技术的使用场景,以及更进阶的如何结合Mock技术实现一个数据工厂,大家可以来我们的《3天接口自动化测试实战训练营》试听了解哦~
边栏推荐
- 不用Swagger,那我用啥?
- 株洲市九方中学开展防溺水、消防安全教育培训活动
- 提前布局6G赛道!紫光展锐发布《6G无界 有AI》白皮书
- 基于Xception-TD的中华传统刺绣分类模型构建
- ST法国三座工厂大罢工,芯片缺货情况或将更加严重!
- How is nanoid faster and more secure than UUID implemented? (glory Collection Edition)
- 标准C语言学习总结10
- LeetCode链表问题——142.环形链表II(一题一文学会链表)
- 纳米金偶联抗体/蛋白试剂盒(20nm,1mg/100μg/500 μg偶联量)的制备
- Cy3/Cy5/Cy5.5/Cy7荧光标记抗体/蛋白试剂盒(10~100mg标记量)
猜你喜欢

Log slimming operation: how to optimize from 5g to 1g! (glory Collection Edition)

微信小程序开发公司你懂得选择吗?
![[英雄星球七月集训LeetCode解题日报] 第28日 动态规划](/img/79/bc763bb6f12c525454abda18be4265.png)
[英雄星球七月集训LeetCode解题日报] 第28日 动态规划

Adventures of little mouse: behind the scenes gags of moss 2

The University was abandoned for three years, the senior taught himself for seven months, and found a 12K job

Uncaught Error:Invalid geoJson format Cannot read property ‘length‘ of undefind

怎样巧用断言+异常处理类,使代码更简洁!(荣耀典藏版)

Knowledge description framework of foreign patent documents based on knowledge elements

大学荒废三年,大四自学7个月测试,找到了12K的工作

数据插值——对不同量级的数据进行归一化
随机推荐
C process control statement
Why on earth is it not recommended to use select *?
Priced at 1.15 billion yuan, 1206 pieces of equipment were injected into the joint venture! Sk Hynix grabs the mainland wafer foundry market!
[brother hero July training] day 28: dynamic planning
Query Oracle view creation statement and how to insert data into the view [easy to understand]
实现瀑布流效果
Explain C language 12 in detail (C language series)
JVM 内存布局详解(荣耀典藏版)
Achieve waterfall effect
Vimtutor编辑
Detailed explanation of JVM memory layout (glory collection version)
将字符串指针赋值给数组[通俗易懂]
Leetcode 19. delete the penultimate node of the linked list [knowledge points: speed pointer, recursion, stack]
Bully is filed for bankruptcy! The company has become a "Lao Lai", and the legal person is restricted from high consumption
Coolpad voluntarily terminated the patent infringement lawsuit against Xiaomi
Adventures of little mouse: behind the scenes gags of moss 2
磷脂偶联抗体/蛋白试剂盒的存储与步骤
Have you ever seen this kind of dynamic programming -- the stock problem of state machine dynamic programming (Part 2)
Mysql的B+树高度计算
华为发布首款电驱动系统DriveONE:充电10分钟续航200km



