Mock测试-优缺点分析

1、什么是Mock ?

In object-oriented programming,mock objects are simulated objects that mimic the behavior. of real objects in controlled ways. A computer programmer typically creates a mock object to test the behavior. of some other object, in much the same way that a car designer uses a crash test dummy to simulate the dynamic behavior. of a human in vehicle impacts.  ---From Wikepedia

用一句通俗的语言来说: Mock就是一种可以模拟系统中依赖其他第三方接口的一种技术。 

2、为什么要做Mock ? 

在我们分布式服务的环境中,服务的粒度非常细。
一个业务条线,甚至一个在业务上提供一个完整功能的系统都有非常多的独立部署的接口和服务,如何保证研发、测试时自己依赖的服务都可用,是一个很 难的问题,尤其在我们公司体量这么大的情况下,这个问题的难度就被放大了很多倍。
Mock 技术的存在,在很大程度上解决了以下问题:

2.1 环境不稳定

使用Mock, 相当于在开发、测试过程中降级了对外部接口的依赖。

2.2 数据准备难

在某些测试过程中,需要第三方接口返回特定的数据以符合特定的测试场景,这种情况往往需要跨条线的沟通协调测试数据,成本高,效率低。利用Mock可以自定义返回测试结果,支持手动构造依赖接口的返回值。

2.3 大规模自动化的先决条件

在自动化测试规模逐渐增大到一定程度,测试的接口多,测试用例也曾都增多,依赖的环境的稳定就成为了自动化测试用例稳定的关键所在,往往会因为依赖的第三方环境不稳定导致测试执行大规模失败,导致对自动化的稳定运行失去信心,最终导致自动化测试难以维护,不了了之。利用Mock技术,在测试过程中,只关注被测业务逻辑,忽略不相关的系统,自动化测试运行失败,就一定是被测系统本身的业务逻辑问题,而不是其他第三方系统、数据的问题。


3、Mock的优缺点分析

3.1 Mock的好处

第一、隔绝 其他 模块出错引起本模块的测试错误。

第二、隔绝其他模块的开发状态,只要定义好接口,不用管他们开发有没有完成。

第三、一些速度较慢的操作,可以用 mock Object 代替,快速返回。

3.2 Mock 使用可能存在的风险

There's no silver bullet (没有银弹) Mock 也不是 silver bullet ,所以根据项目实际情况和具体需要来使用 Mock

测试时如果使用 Mock 太多,可能会导致在联调测试中才发现 bug ,这样缺陷发现的时间较晚,可能会造成 bug 修复成本增大。

好的建议:在联调测试接口稳定后,就尽可能地使用真实测试环境接口;在接口不稳定时,建议使用 Mock 方式。开发联调自测时也能使用。

所以在自动化测试系统的设计也可以考虑以下逻辑: 依赖接口好用的情况下就调用依赖接口,依赖接口不能提供服务,自动切换至Mock状态执行。

猜你喜欢

转载自blog.csdn.net/weixin_42343424/article/details/80564365
今日推荐