测试 如何通过 Mock API 提高 App 开发效率?

qaz1 · April 04, 2018 · Last by victor replied at April 08, 2018 · 6881 hits

APP 开发过程中,如果可以在客户端的正常项目代码中,自然地(不影响最终 apk)添加一种模拟服务器数据返回的功能,这样就可以很方便的在不依赖服务器的情况下展开客户端的开发。

Mock API 提供了这一问题的解决方案,通过事先定义好的接数据生成规则,让 APP 功能能 够快速测试,便于前后端开发同时进行。

一,什么是 Mock?

在软件测试领域,Mock 的意思是模拟,简单来说,就是通过某种技术手段模拟测试对象的 行为,返回预先设计的结果。

二,Mock 有什么用?

首先,Mock 可以用来解除测试对象对外部服务的依赖(比如数据库,第三方接口等),使 得测试用例可以独立运行。

不管是传统的单体应用,还是现在流行的微服务,这点都特别重要,因为任何外部依赖的 存在都会极大的限制测试用例的可迁移性和稳定性。通过 Mock 去除外部依赖之后,不管 是测试用例的可迁移性还是稳定性,都能够上一个台阶。

三,如何创建 Mock API 服务?

针对不同的测试场景,可以选择不同的 Mock 框架和工具。

1.Mockito

国外知名的基于对象层的单元测试框架,通过 MockIto,可以编写大量的项目测试配置来 实现全面的项目测试服务。但是其功能过于庞杂,不一定适用于所有的项目。

2.WireMock

同样是国外接口测试领域的知名工具。和处在对象层的 Mockito 不同,WireMock 针对的是 API 的 Mock 测试工具,如果说 Mocketo 是单元测试的瑞士军刀,可以 Mock Everything,那 么 WireMock 就是专为小型项目而生的,支持 HTTP 响应存根、请求验证、代理/拦截、记 录和回放。但是仍然需要编写大量的 Mock API 规则,无法自动生成数据,在易用性上稍有 不足。

3.eoLinker

eoLinker 是目前国内最大的在线接口管理平台,不仅拥有非常全面的接口管理功能,并且 可以通过 UI 界面来设定 Mock 的规则,支持 Mock JS 和原生 js 的函数方法,简化 Mock API 的编写操作。

值得注意的是,eoLinker 是一个在线的 SaaS 服务,用户无需任何部署,只需要写明 Mock 的规则,就可以通过 eoLinker 提供的 URL 来访问 Mock 服务,从使用门槛上来说是最低 的,推荐使用。

其他类似的 Mock API 的框架还有 OkHttp 的 mockwebserver,moco 和 mockserver。 mockwebserver 也属于嵌入式 Mock 框架的范畴,但功能过于简单。moco,mockserver 虽 然功能完善,但需要独立部署,和以上产品相比不具有明显优势。

小结:自上世纪末 Kent Beck 提出 TDD(Test-Driven Development) 开发理念以来,开发和测试 的边界变的越来越模糊,从原本上下游的依赖关系,逐步演变成你中有我、我中有你的互 赖关系,Mock API 的出现让这种依赖关系在测试中暂时分开,让开发更高效。

You need to Sign in before reply, if you don't have an account, please Sign up first.