当前位置: 首页 > 后端技术 > PHP

MOCKAPI的定义与实践(eolinker实现)

时间:2023-03-29 17:00:52 PHP

MOCKAPI定义根据百度百科的定义,mock测试就是对测试过程中一些不易构造或获取的对象使用虚拟对象来进行创建用于测试的测试方法。这个虚拟对象就是mock对象,mock对象是调试时真实对象的替代品。在瀑布开发模式下,如果前端开发者需要与页面进行接口,后端需要先完成API开发。如果没有mock,前后端开发的进度会相互影响。API的数据生成规则通过MockAPI预先编写好,API的返回数据由工具动态生成。开发者可以通过访问MockAPI获取页面所需的数据,轻松完成对接工作。MOCKAPI可以用来解决什么问题?1.依赖接口没有开发。系统交互方定义好接口后,我们就可以提前进行开发和测试,而不依赖于上游系统的开发和实现。2、自定义返回测试结果(如HttpservletRequet、JDBC对象等)在测试时使用Mock自由方便的构造配置接口对象的信息参数;在测试过程中,需要第三方接口返回特定的数据来满足特定的需求。在测试场景中,这种情况往往需要跨线通信,协调测试数据,成本高,效率低;Mock可用于自定义测试结果的返回,支持手工构造依赖接口的返回值。(后面会提到这个功能。)3.自动化测试在自动化测试的概念和发展需求下,自动化测试的规模逐渐增加到一定程度;大型业务系统中有很多测试接口和测试用例,依赖环境的稳定性成为自动化测试执行的关键;在自动化测试过程中,经常会因为所依赖的第三方环境不稳定,导致测试执行失败,长期存在问题,导致测试人员失去维护自动化稳定运行的信心;使用Mock技术,在测试过程中,只关注被测业务逻辑,mock出无关的系统。在这种情况下,自动化测试失败肯定是由于被测系统本身的业务逻辑问题,而不是第三方系统和数据的问题;4.更多场景,欢迎大家补充。应用场景示例(自定义返回结果)接下来我们从测试层面来看一个场景:我的项??目是企业管理咨询,项目中最经常需要根据企业详情判断并返回不同的状态。其实涉及的数据很多,但是为了示例方便,我打算写三个接口来演示,第一个是登录,第二个是获取公司详情,简化了复杂的判断,直接使用判断corld(enterpriseID)to作为识别凭证,第三个是设置企业状态,有两种状态:logout和recovery。将根据企业的corpstatus进行判断。接下来带大家一一设置:登录界面不用说了,我们直接进入第二个界面,新建一个expectation,请求触发条件不写,将corpstatus加入返回数据,可能值为1或2。第三个接口是设置企业状态(注销/恢复)。这里需要两个请求参数。第一个是corpldenterpriseID,对应上一个界面的corpld;二是corpstatus企业状态,指的是全局变量。由两对大括号表示。或者进入mockapi创建新的expectation,因为有两种状态(logout/recovery),所以需要写两个expectation。当触发请求参数corpstatus=4条件时,返回参数content=logout成功;当请求参数corpstatus=2条件被触发时,返回参数content=enterprise已经恢复。由于这三个接口都是在一个场景下应用的,我们不妨用一个进程来测试。一共有三个测试用例:登录获取企业详情和设置企业状态(注销/恢复)。在测试之前,需要使用第二个用例需要写一个响应预处理,通过Javascript代码动态改变返回结果,实现corpstatus=2或4,从而对应前面的全局变量。然后点击测试。从测试记录可以看出,根据corpstatus的不同,返回的信息也不同。这是一个场景用例的简要而完整的设计。如果没有mockapi,等后端开发后corpstatus可能就拿不到了,进度难免会受到影响。为了模拟数据测试,这时候mockapi的优势就凸显出来了。接下来说一个使用mock自定义函数的项目场景:以前公司有很多子系统。为了降低集成和维护成本,我们采用了ESB架构。ESB架构可以解决多个应用系统互联所面临的复杂性。也正是因为子系统众多,导致整个业务系统的运行更加复杂,涉及到与多个外部系统的连接和数据交互,比如仓储、物流等,必然要和EMS进行数据交互,顺丰快递。当然,在与外部系统对接时,系统间的联调测试是必不可少的。有的外部系统提供测试环境,有的甚至不提供。即使是提供测试环境的外部系统,一般也只是在开发联调阶段提供联调测试对接服务,联调测试结束后不会继续提供测试服务。那么,当这些外部系统的联调测试环境不可用时,我们就需要模拟这些外部系统与我们自己的系统进行交互,以支撑整个业务测试流程的正常进行。在API开发层面,开发的API经常会遇到相同的URL,需要根据请求头或请求体的不同返回不同的测试结果。如果之前没有使用过mockapi的自定义函数,解决办法就是分别创建多个接口,非常麻烦。比如API文档建立好之后,在测试的时候,我的需求是在同一个URL的情况下,根据不同的请求头返回不同的结果。1.当标签头Contest-type=application/jsonClientld=purchase.consemerOperationCode=medicine.purchase.consemer.List时返回参数Floor=2Room=2Cabinet=22。当标签头Contest-type=application/json1Clientld=purchase。consemer1OperationCode=medicine.purchase.consemer.List1然后返回参数Floor=3Room=3Cabinet=3使用eolinker自定义MOCKAPI?eolinker是一个接口管理工具,提供API管理和测试功能。这次我们用它来模拟API。官网地址:https://www.eolinker.com1.先创建好文档2.建立测试期望3.写完,测试后返回的数据和我们想要的是一致的4.第二种情况是大同小异,就不细说了。本文主要从测试层面和角度介绍MOCKAPI,是对我上一篇文章内容的延伸。最近在研究API测试。在下一篇文章中,我将从开发层面介绍MOCKAPI的实际应用。我希望能有所帮助。eolinker官网:https://www.eolinker.com