Mock测试是什么?为什么要进行Mock测试?

知梧 376 2022-09-08


本文关于Mock测试是什么?为什么要进行Mock测试?

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

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

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

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


一、什么是Mock测试

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


image.png

二、为什么要进行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测试是什么?为什么要进行Mock测试?

国内(北京、上海、广州、深圳、成都、重庆、杭州、西安、武汉、苏州、郑州、南京、天津、长沙、东莞、宁波、佛山、合肥、青岛)eolink软件分析、比较及推荐。



版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:未来智安联合创始人兼CTO陈毓端受邀央广网采访,未来智安XDR携手麒麟软件推动信创操作系统创新发展
下一篇:基于SpringMVC实现网页登录拦截
相关文章

 发表评论

暂时没有评论,来抢沙发吧~