1.mock是什么?mock
测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。在具体的测试过程中,我们经常会碰到需要模拟数据或者接口的情况,因为环境问题或者系统复杂度的问题,我们需要使用 Mock 方式进行数据的模拟
2 .mock应用场景
对象信息难构建:在测试过程中,需要第三方接口返回特定的数据以符合特定的测试场景,这种情况往往需要跨条线的沟通协调测试数据,成本高,效率低;
利用Mock可以自定义返回测试结果,支持手动构造依赖接口的返回值。
依赖的接口尚未开发完成:依赖接口性能参数无法保障。在对接口性能压测的时候,需要下游接口及时返回数据,满足上游接口的调用 频度。在依赖接口多的情况下,如何减轻工作量?
异常场景(连接异常、超时异常等):当需要测试接口一些异常数据,接口正常情况是否无法提供异常数据的。那么如何简便地构造接口的异常数据?
3.mock优缺点分析
优点:
团队可以并行工作:有了Mock,前后端人员只需要定义好接口文档就可以开始并行工作,互不影响,这样的话,开发自测阶段就可以及早开展,从而发现缺陷的时机也提前了,有利于整个产品质量以及进度的保证。
隔离系统:由于其他系统模块出错引起本模块的测试错误,我们可以采用mock隔离,避免干预
测试覆盖度:异常条件很复杂或者无法模拟,使用mock,这一切就都好办了,想要什么返回就模拟什么返回,提高测试覆盖度。
缺点:
覆盖率高不代表没有问题,测试过程中如果大量使用Mock,mock测试的场景失去了真实性,可能会导致在后续的系统性测试时才发现bug,使得缺陷发现的较晚,可能
会造成后续修复成本更大。
建议:mock接口只能主流程联调/ 异常返回测试,不要过分依赖mock接口进行测试。
4.接口mock工具moco的简单例子
4.1.下载moco jar包moco-runner-0.10.0-standalone.jar
下载地址:https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/0.10.0/
选择点击下图所示下载:
4.2 编写json格式的文件
[{
"description":"第一个mock例子",
"request":{
"uri":"/demo"
},
"response":{
"text":"第一个moco框架demo"
}
}]
4.3.运行moco
java -Dfile.encoding=编码 moco的jar包路径 http -p 端口号 -c json文件路径
例子: java -Dfile.encoding=UTF-8 -jar moco-runner-0.10.0-standalone.jar http -p 8888 -c startupPost.json
4.4.访问接口
打开浏览器,输入 ip地址:端口号/路径
例子:localhost:8888/demo