当前位置:网站首页>使用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天接口自动化测试实战训练营》试听了解哦~
边栏推荐
- Why on earth is it not recommended to use select *?
- 入行4年,跳槽2次,我摸透了软件测试这一行~
- Vimtutor编辑
- 瑞典法院取消对华为和中兴的5G频谱拍卖禁令
- Information fusion method and application of expert opinion and trust in large group emergency decision-making based on complex network
- Record some small requirements in the form of cases
- How Oracle exports data (how Oracle backs up databases)
- The 35 required questions in MySQL interview are illustrated, which is too easy to understand
- Meeting notice of OA project (Query & whether to attend the meeting & feedback details)
- Leetcode 19. delete the penultimate node of the linked list [knowledge points: speed pointer, recursion, stack]
猜你喜欢
入行4年,跳槽2次,我摸透了软件测试这一行~
小程序开发需要什么技术
【Bluetooth蓝牙开发】八、BLE协议之传输层
凡尔赛天花板:“毕业两年月薪才35K,真是没出息啊~~”
Knowledge description framework of foreign patent documents based on knowledge elements
8、 QoS queue scheduling and message discarding
Discussion: if you want to land Devops, is it enough to only consider a good PAAS container platform?
中国农业工程学会农业水土工程专业委员会-第十二届-笔记
MySQL 是如何归档数据的呢?
openEuler Embedded SIG | 分布式软总线
随机推荐
Layout the 6G track in advance! Ziguang zhanrui released the white paper "6G unbounded AI"
Object based real-time spatial audio rendering - Dev for dev column
Cross domain transfer learning of professional skill word extraction in Chinese recruitment documents
Research on weapon equipment attribute extraction based on attribute word completion
Priced at 1.15 billion yuan, 1206 pieces of equipment were injected into the joint venture! Sk Hynix grabs the mainland wafer foundry market!
标准C语言学习总结10
微星宝安工厂失火!官方回应:无人员受伤,产线不受影响!
基于属性词补全的武器装备属性抽取研究
网格数据生成函数meshgrid
Meta opens the project aria pilot dataset and will develop real-time 3D maps in the future
关于一些小需求,用案例方式记录
Leetcode linked list problem -- 142. circular linked list II (learn the linked list by one question and one article)
Coolpad voluntarily terminated the patent infringement lawsuit against Xiaomi
纳米金偶联抗体/蛋白试剂盒(20nm,1mg/100μg/500 μg偶联量)的制备
华为发布首款电驱动系统DriveONE:充电10分钟续航200km
Edited by vimtutor
Using El date picker to report errors in sub components
Matlab|基础知识总结一
Log slimming operation: how to optimize from 5g to 1g! (glory Collection Edition)
Assign a string pointer to an array [easy to understand]