【发明授权】一种模拟服务的方法、装置及集中管理平台_广州品唯软件有限公司_201611152472.4 

申请/专利权人:广州品唯软件有限公司

申请日:2016-12-13

发明/设计人:马家麒;梁议尹;黄嵘

公开(公告)日:2020-06-23

代理机构:深圳市世纪恒程知识产权代理事务所

公开(公告)号:CN106776313B

代理人:胡海国

主分类号:G06F11/36(20060101)

地址:510000 广东省广州市荔湾区芳村大道中314号自编之一

分类号:G06F11/36(20060101)

优先权:

专利状态码:有效-授权

法律状态:2020.06.23#授权;2017.12.29#专利申请权的转移;2017.06.23#实质审查的生效;2017.05.31#公开

摘要:本发明公开一种模拟服务的方法,包括步骤:模拟外部服务行为启动模拟器初始化操作,在初始化后的模拟器的桩匹配器中编辑模拟匹配条件及预设响应;与被测服务同一IP的模拟器启动的监听链路拦截由被测服务发出的请求;解析所拦截的请求并将解析后的请求传送至模拟器的桩匹配器;模拟器的桩匹配器接收解析后的请求,根据模拟匹配条件执行匹配命令;若匹配成功,模拟器的桩匹配器发送预设响应至被测服务。本发明还公开了一种模拟服务的装置及集中管理平台,本发明旨在简化测试人员的联调测试、开发联调、异常场景及复杂测场景的模拟服务,简化压测数据和测试环境,以提高模拟服务的工作效率。

主权项:1.一种模拟服务的方法,其特征在于,包括步骤:模拟外部服务行为启动模拟器初始化操作,在初始化后的模拟器的桩匹配器中编辑模拟匹配条件及预设响应;模拟器启动的与被测服务同一IP的监听链路拦截由被测服务发出的请求;解析所拦截的请求并将解析后的请求传送至模拟器的桩匹配器;模拟器的桩匹配器接收解析后的请求,根据模拟匹配条件执行匹配命令;在所述模拟器的监听链路拦截由同一IP的被测服务发出的请求的步骤和所述解析拦截的请求并将解析后的请求传送至模拟器的桩匹配器的步骤之间还包括:模拟器的监听链路监测所拦截的请求;若监测所拦截的请求不需要返回预设响应时,暂停所述监听链路,直接转发被测服务发出的请求至外部服务,并接收外部服务对请求的真实响应返回至被测服务;若监测所拦截的请求不需要使用模拟器时,停止所述监听链路,模拟服务关闭监听端口,返回报错信息。

全文数据:一种模拟服务的方法、装置及集中管理平台技术领域[0001]本发明涉及测试领域,特别涉及一种模拟服务的方法、装置及集中管理平台。背景技术[0002]随着社会科学技术的发展,企业的管理内部服务的系统涉及到的业务场景和联调测试数据非常复杂,企业应用的系统很少孤立存在,大部分系统都是依赖于不同软件供应商提供的服务拼装到一起。而现有多种服务模拟框架或者系统基本都是需要编写代码而且主要是研发仅限于单元测试或者集成测试,且只支持HTTP、S0CKS等通用协议的模拟。而对于测试人员主要做是是黑盒测试,但编码能力有限制和业务压力,其要编写一个mock去模拟外部服务困难重重,非常影响工作效率。特别是,一些大型互联网公司,一个系统往往是依赖多个外部系统,涉及到的业务场景和联调测试数据非常复杂,常常会遇到以下几种情况:1、A服务调B服务,B服务由于某些原因不可用或不稳定(例如登陆页面调一个登陆的passport·api,但是passport·api连不上导致无法登陆);2、A服务调B服务,B服务的数据或场景难以构造例如登陆页面调一个登陆的passport.api,passport.api会在某些极端情况下返回一些错误码;3、自动化测试时,A服务调B服务,由于B服务不可控,数据经常变动导致测试数据经常变化。[0003]因为以上原因,导致因依赖外部服务而无法进行服务操作,影响工作效率。发明内容[0004]本发明的主要目的是提出一种模拟服务的方法、装置及集中管理平台,旨在提高模拟服务的工作效率。[0005]为实现上述目的,本发明提出的一种模拟服务的方法,包括步骤:[0006]模拟外部服务行为启动模拟器初始化操作,在初始化后的模拟器的粧匹配器中编辑模拟匹配条件及预设响应;[0007]模拟器启动的与被测服务同一IP的监听链路拦截由被测服务发出的请求;[0008]解析所拦截的请求并将解析后的请求传送至模拟器的粧匹配器;[0009]模拟器的粧匹配器接收解析后的请求,根据模拟匹配条件执行匹配命令。[0010]优选地,所述模拟外部服务行为启动模拟器初始化操作,在初始化后的模拟器的粧匹配器中编辑模拟匹配条件及预设响应的步骤包括:[0011]根据被测服务的请求选择模拟测试架构,且在所选择的模拟测试架构中,模拟外部服务行为启动一个或多个不同协议服务的模拟器;[0012]根据被测服务的当前协议服务请求选择模拟器当前协议链路的配置,将被测服务请求的IP修改为模拟器的IP,以将被测服务的请求指向模拟器启动的监听链路的端口;[0013]根据模拟外部服务行为的意图,在模拟器的粧匹配器中编辑模拟匹配条件及预设响应为粧,参数化粧生成粧参数。[0014]优选地,所述根据被测服务的当前协议服务请求选择模拟器当前协议链路的配置的步骤包括:若被测服务的当前协议服务为通用协议服务,则修改DNS配置,把被测服务请求的IP指向模拟器的IP,配置Nginx,利用Nginx的端口映射,把被测服务的请求指向模拟器启动的监听链路的端口;若被测服务的当前协议服务为自定义协议服务,通过OSP的静态路由的IP和端口,把被测服务请求的IP直接指向模拟器的IP和对应OSP链路的监听链路的端□〇[0015]优选地,所述解析拦截的请求并将解析后的请求传送至模拟器的粧匹配器的步骤包括:解析所拦截的请求生成请求参数;将请求参数转换为统一的封装不同协议的请求对象;传送请求对象至模拟器的粧匹配器。[0016]优选地,所述模拟器的粧匹配器接收解析后的请求,根据模拟匹配条件执行匹配命令的步骤包括:粧匹配器接收解析后的请求;调用粧参数;解析粧参数,以释放模拟匹配条件和预设响应;调用模拟匹配条件,执行匹配命令。[0017]优选地,所述模拟器的粧匹配器接收解析后的请求,根据模拟匹配条件执行匹配命令的步骤之后包括:若匹配成功,模拟器的粧匹配器发送预设响应至被测服务;若匹配失败,模拟器的粧匹配器转发解析后的请求至外部服务,并接收外部服务发出的对请求的真实响应,传送至被测服务。[0018]优选地,在所述模拟器的监听链路拦截由同一IP的被测服务发出的请求的步骤和所述解析拦截的请求并将解析后的请求传送至模拟器的粧匹配器的步骤之间还包括:模拟器的监听链路监测所拦截的请求;若监测所拦截的请求不需要返回预设响应时,暂停所述监听链路,直接转发被测服务发出的请求至外部服务,并接收外部服务对请求的真实响应返回至被测服务;若监测所拦截的请求不需要使用模拟器时,停止所述监听链路,模拟服务关闭监听端口,返回报错信息。[0019]优选地,所述模拟外部服务行为启动模拟器初始化操作,在初始化后的模拟器的粧匹配器中编辑模拟匹配条件及预设响应的步骤之前包括:呈现解耦依赖的执行情况时,执行解耦依赖。[0020]本申请还提供了一种模拟服务的装置,包括:初始化模块,用于模拟外部服务行为启动模拟器初始化操作,在初始化后的模拟器的粧匹配器中编辑模拟匹配条件及预设响应;监听模块,用于与被测服务同一IP的模拟器启动的监听链路拦截由被测服务发出的请求;报文解析模块,用于解析所拦截的请求并将解析后的请求传送至模拟器的粧匹配器;执行模块,用于模拟器的粧匹配器接收解析后的请求,根据模拟匹配条件执行匹配命令。[0021]优选地,还包括响应模块,用于若匹配成功,模拟器的粧匹配器发送预设响应至被测服务;还用于若匹配失败,接收外部服务发出的对请求的真实响应,传送至被测服务;转发模块,用于若匹配失败,模拟器的粧匹配器转发解析后的请求至外部服务;解耦依赖模块,用于呈现解耦依赖的执行情况时,执行解耦依赖;监测模块,用于模拟器的监听链路监测所拦截的请求;监测执行模块,用于若监测所拦截的请求不需要返回预设响应时,暂停模拟器的链路,直接转发被测服务发出的请求至外部服务,并接收外部服务对请求的真实响应返回至被测服务;还用于若监测所拦截的请求不需要使用模拟器时,停止模拟器的链路,模拟服务关闭监听端口,返回报错信息。[0022]优选地,所述初始化模块包括:模拟测试架构单元,用于根据被测服务的请求选择模拟测试架构,且在在所选择的模拟测试架构中,模拟外部服务行为启动一个或多个不同协议服务的模拟器;模拟多种协议服务单元,用于模拟外部服务行为启动一个或多个不同协议服务的模拟器;服务端口配置单元,用于根据被测服务的当前协议服务请求选择模拟器当前协议链路的配置,以修改被测服务请求的IP为模拟器的IP,将被测服务的请求指向模拟器启动的监听链路的端口;粧单元,用于根据模拟外部服务行为的意图,在模拟器的粧匹配器中编辑模拟匹配条件及预设响应为粧,参数化粧生成粧参数。[0023]优选地,所述服务端口配置单元包括:通用协议配置子单元,用于若被测服务的当前协议服务为通用协议服务,则修改DNS配置,把被测服务请求的IP指向模拟器的IP,配置Nginx,利用Nginx的端口映射,把被测服务的请求指向模拟器启动的监听链路的端口;自定义协议配置子单元,用于若被测服务的当前协议服务为自定义协议服务,通过OSP的静态路由的IP和端口,把被测服务请求的IP直接指向模拟器的IP和对应OSP链路的监听链路的端□〇[0024]优选地,所述报文解析模块包括:解析单元,用于解析所拦截的请求生成请求参数;封装单元,用于将请求参数转换为统一的封装不同协议的请求对象;传送单元,用于传送请求对象至模拟器的粧匹配器。[0025]优选地,所述执行模块包括:接收单元,用于粧匹配器接收解析后的请求;调用单元,用于调用粧参数;释放单元,用于解析粧参数,以释放模拟匹配条件和预设响应;执行单元,用于调用模拟匹配条件,执行匹配命令。[0026]本发明还公开了一种模拟服务的集中管理平台,包括:一个或多个不同协议的如上所述的模拟服务的装置;及UI交互模块,用于建立UI交互测试模型及交互规范,编辑静态HTML,以负责所有模拟服务的交互对接;及日志管理模块,用于提供日志管理功能,可对模拟测试的结果进行日志的记录、查看、下载及清理;及模拟数据库,用于存储模拟服务的所有数据。[0027]在本发明中,通过采用简单的配置操作,如NGINX配置、模拟器的多种协议链路配置及粧配置,和丰富智能匹配规则,如包含、相等、正则表达式匹配和外部传参等完成模拟服务的自动化配置,实现了一种智能化匹配,简化工作程序,提高模拟服务的工作效率。附图说明[0028]为了更清楚地说明本发明实施例或现有技术中的技术配置,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。[0029]图1为本发明模拟服务的方法第一实施例的流程示意图;[0030]图2为本发明一实施例中模拟外部服务行为启动模拟器初始化操作,在初始化后的模拟器的粧匹配器中编辑模拟匹配条件及预设响应的流程示意图;[0031]图3为本发明一实施例中根据被测服务的当前协议服务请求选择模拟器当前协议链路的配置的流程示意图;[0032]图4为本发明一实施例中解析拦截的请求并将解析后的请求传送至模拟器的粧匹配器的步流程示意图;[0033]图5为本发明一实施例中模拟器的粧匹配器接收解析后的请求,根据模拟匹配条件执行匹配命令的流程示意图;[0034]图6为本发明模拟服务的方法第二实施例的流程示意图;[0035]图7为本发明模拟服务的方法第三实施例的流程示意图;[0036]图8为本发明模拟服务的装置的第一实施例的功能模块示意图;[0037]图9为本发明模拟服务的装置的第二实施例的功能模块示意图[0038]图10为本发明一实施例中初始化模块的细化功能模块示意图;[0039]图11为本发明一实施例中服务端口配置单元的细化功能模块示意图;[0040]图12为本发明一实施例中报文解析模块的细化功能模块示意图;[0041]图13为本发明一实施例中执行模块的细化功能模块示意图。[0042]本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式[0043]下面将结合本发明实施例中的附图,对本发明实施例中的技术配置进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。[0044]需要说明,若本发明实施例中有涉及方向性指示诸如上、下、左、右、前、后……),则该方向性指示仅用于解释在某一特定姿态如附图所示下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。[0045]参照图1,图1为本申请实施例提供的一种模拟服务的方法的流程示意图,本发明提供了一种模拟服务的方法,步骤如下:[0046]步骤S10,模拟外部服务行为启动模拟器初始化操作,在初始化后的模拟器的粧匹配器中编辑模拟匹配条件及预设响应;[0047]在步骤SlO中,模拟器初始化操作需要完成两个方面的预备,第一,需要部署测试环境主要指硬件环境),以为模拟器的模拟服务提供稳定而可控的环境,提高模拟器的工作质量和效率。预先运行构建或部署与被测服务和外部服务之间网络通信服务接口的对接、建立WEBUI交互测试模型、构建多种测试类型框架、封装有不同协议的链路配置,根据被测服务的协议服务部署被测服务的服务端口配置及呈现解耦依赖情况时,执行解耦依赖,以绕开所依赖的外部服务的端口。而这些测试环境的部署均有一个集中管理数个模拟器的模拟服务平台来完成,首先建立模拟器与被测服务和外部服务之间的网络通信;接着建立WEBUI界面交互测试模型及交互规范,以下的步骤均在界面操作,而无需编码;再针对被测服务的需求构建多种测试类型的框架,比如:单元测试、集成测试、自动化测试、功能测试及压力测试,每种测试类型的框架内存储有模拟外部服务行为的测试用例的测试模块;根据不同协议服务给每个模拟器封装不同协议的链路配置;根据被测服务的协议服务修改被测服务的目标服务端口配置,被测的A服务(即被测服务原来是依赖外部的B服务(即外部服务),现在A服务的目标服务不指向B服务而改为指向模拟器。第二,需要部署测试服务主要指软件环境),以为本发明的测试方法提供测试对象。测试服务包括测试管理单元和测试执行单元,模拟器等同于测试管理单元,所述模拟器管理单次模拟测试的运行,而模拟器中虚拟一个粧匹配器StubMatcher等同于测试执行单元,所述粧匹配器实行模拟测试执行控制,具体来说是,模拟器中的测试模块存储模拟外部服务行为的测试用例,粧匹配器用于模拟测试模块的调用条件的元件,以代替测试模块的接口,接受或传递测试模块的数据,其中,所述测试模块的调用条件即为在粧匹配器中编辑的模拟匹配条件,或者是,通过注册自定义服务事件的API函数编辑自定义服务的模拟测试匹配条件。粧匹配器根据模拟测试匹配条件实行测试控制。[0048]特别说明地是,构建功能测试框架时,是单独启动的平台提供的压测包,所述的压测包支持通用协议和自定义协议,通用协议如HTTP协议超文本传输协议和自定义协议如OSP协议一种网域间授权、路由和计费的国际标准协议),场景事例:0SP协议的压测服务模拟,而且压测包也是使用Web界面指定链路的粧设置,无需重复配置。步骤为:首先一键下载平台提供的压测包,启动压测模拟器,进行压力模拟测试,通过界面直接查看测试结果。[0049]本申请模拟器的初始化还包括创建模拟器,所述模拟器用于模拟与被测的A服务进行真实交互的外部B服务。所述模拟器可以采用JETTY服务器,该JETTY服务器为一个开源的servelet容器(servelet是用JAVA编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态WEB内容),是基于JAVA的WEB容器。JETTY服务器可以作为嵌入式服务器使用,JETTY服务器的运行速度较快,而且是轻量级的,JETTY服务器是使用Java语言编写的,它的API以一组JAR包的形式发布。JAR包JAVA的封装包管理用于RPC协议模拟RemoteProcedureCallProtocol—远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议),统一管理客户端的JAR包,可以理解地,JAR包可用于解析不同协议服务。则测试中当被测的A服务通过接口调用外部的B服务进行交互时,改为调用模拟器模拟该交互,即把原本被测的A服务请求修改指向,不再指向B服务而改为指向模拟器。[0050]步骤S20,模拟器启动的与被测服务同一IP的监听链路拦截由被测服务发出的请求;[0051]在步骤S20中,模拟器的初始化完成后会启动所有的链路监听,当模拟器启动的监听链路监听到与被测服务同一IP的请求,才会拦截该所监听到的请求,即被测服务的发出的请求。本申请中的“IP”即为IP地址(InternetProtocolAddress,又译为网际协议地址。[0052]步骤S30,解析所拦截的请求并将解析后的请求传送至模拟器的粧匹配器;[0053]在步骤S30中,对所拦截的请求进行报文解析,将请求的报文数据按照系统内定义规则解析,解析后的请求生成请求的相关数据,再将请求的相关数据传送至模拟器的粧匹配器。所述步骤S30实际是模拟器普通模拟匹配执行之前被测服务请求接收的过程[0054]步骤S40,模拟器的粧匹配器接收解析后的请求,根据模拟匹配条件执行匹配命令。[0055]在步骤S40中,所述模拟器的粧匹配器接收解析后的请求的步骤应该理解地是模拟器的粧匹配一旦接收请求就意味着模拟匹配的启动执行,所述粧匹配器开始实行模拟测试执行控制。所述模拟测试执行控制包括模拟匹配条件的调用、模拟匹配的运行判断及判断后的响应执行等。所述的步骤S40实际是模拟器普通模拟匹配执行之前的粧参数化相呼应的解参过程,[0056]参照图2,具体地,在本实施例中,步骤SlO包括:[0057]步骤SlOl,根据被测服务的请求选择模拟测试架构,且在所选择的模拟测试架构中,模拟外部服务行为启动一个或多个不同协议服务的模拟器;[0058]在步骤SlOl中,外部服务行为可能是一种协议服务的测试用例,也可能是多种协议服务的测试用例,而一个被测服务可能同时依赖多个不同的外部服务,预先存储模拟所述外部服务行为的测试用例于测试管理单元一一模拟器,所以模拟器的初始化操作的启动时,需要启动一个或多个与外部服务相对应的模拟器。[0059]所述模拟测试架构是提供模拟测试用例的模拟测试分析工具,它包括模拟测试的测试模块、管理模块和统计分析模块,所述测试模块用于执行不同测试类型的模拟匹配命令时,提供所调用的模拟测试用例,且所述的模拟测试用例是可反复使用的;所述管理模块用于管理不同模拟测试类型的模拟测试用例的调用;所述统计分析模块用于统计且分析所述模拟测试的结果。所述模拟测试架构根据模拟测试预期的不同区分为不同的测试类型,再模拟不同的测试类型建立的模拟测试架构,所述模拟测试架构包括单元测试架构、集成测试架构、功能测试架构和压力测试架构,每种所述模拟测试架构是提取每种测试类型的共性部分组成的独立的体系结构。[0060]步骤S102,根据被测服务的当前协议服务请求选择模拟器当前协议链路的配置,以修改被测服务请求的IP为模拟器的IP,将被测服务的请求指向模拟器启动的监听链路的端口;[0061]在步骤S102中,模拟服务的集中管理平台接收请求后,获取请求URLUniformResourceLocator,统一资源定位符地址上的协议类型,转交给适配协议类型的模拟器进行处理,应该理解地是,模拟服务的集中管理平台有模拟通用协议服务和模拟自定义协议服务之分,所以服务端口配置单元根据不同协议服务修改被测服务、外部服务和模拟器的端口配置,以便模拟器进入代理服务器的角色。[0062]步骤S103,根据模拟外部服务行为的意图,在模拟器的粧匹配器中编辑模拟匹配条件及预设响应为粧,参数化粧生成粧参数。[0063]在步骤S103中,所述根据模拟外部服务行为的意图,即为模拟外部服务行为的测试用例的调用条件,也就是说,所述调用条件与所述外部服务行为的意图是相对应。而在计算机系统中,将所述调用条件函数化生成为模拟匹配条件。所述函数化即把模拟匹配条件由系统内定规则定义为函数式,而预设响定义为函数式的返回值,而由模拟匹配条件及预设响应编辑成的粧即为由两者组成的计算式。所述参数化粧生成粧参数,又是计算机运行中另一技巧,所述参数化粧就是在函数定义时候传入形参,而相对地,解析参数就是调用函数时传入实参。粧参数化的过程是:配置粧的参数的格式,添加粧参数,完成参数化,生成粧参数。粧的参数化用以适配多种协议的不同外部服务。应该理解地是,粧函数可以自动生成,也可自定义,但自动生成的粧函数与自定义的粧函数其主要差别在于:自定义的粧函数调用优先级别高于原函数,原函数的优先级别高于自动生成的粧函数。举个例子,假定在代码中能够找到某个函数的原本定义,此时自动生成的粧函数是无效的,因为原函数优先级别高于自动生成的粧函数。而自定义粧函数可以带来的好处在于:调用原函数可能其返回值为一个固定值,不能返回一个期望值,以使得测试不同的代码分支。而粧函数的返回值,可由用户自由控制,因而具备更大的灵活性。[0064]所述的模拟匹配具有丰富的匹配规则,粧的匹配条件逻辑上支持多个粧之间的AND,OR和NOT关系;匹配的操作符支持equals值相等),contains值包含),regex值正则表达式匹配)。而所述的预设响应根据不同的模拟匹配条件,通过beanshel—种JAVA源码解释器动态生成。[0065]需要说明的是,粧根据测试用例数据中的特定数据的不同,而区分为公共粧和私有粧,所述公共粧即可在该链路里新建并被调用,也可以是抓取redisedis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API的数据自动生成,可被与公共粧关联于同一个IP下的链路调用,所述私有粧只能在该链路里新建,并只为该链路私有。这里所说的新建粧包括自定义粧函数和原函数。[0066]特别需要说明地是,公共粧还具有录制规则,所述公共粧的录制途径有两种:1、从外部服务系统抓取流量进行录制,场景:平台与ApiTester接口测试平台)和DCT造数据平台)对接时,因为ApiTester和DCT的测试时,所有正常的接口请求和响应会发送一个公共的redis做缓存,平台会定时从redis提取这些数据自动生成公共粧;2、当模拟器不匹配请求时,通过粧录制器StubRecorder录制模拟器拦截且不匹配直接转发的请求和响应生成为公共粧。所述公共粧录制规则可以由内部代码预先建立默认规则后自动生成录制规则,也可以在页面人为设置。[0067]而本发明的参数化粧也是智能匹配功能的一种体现。粧的匹配条件和模拟响应也都随之参数化,应该理解地是,如果粧配置的参数格式是${参数名},当设置了参数格式后,粧参数也必须设置,否则被测服务请求均会匹配不成功,只有重新设置了粧参数,让粧参数替换掉匹配条件和模拟响应的格式化参数,这时再请求一次,才可以看到应该得到的响应。[0068]参照图3,在本实施例中,所述步骤S102具体来说包括以下步骤:[0069]步骤S1021,若被测服务的当前协议服务为通用协议服务,则修改DNS配置,把被测服务请求的IP指向模拟器的IP,配置Nginx,利用Nginx的端口映射,把被测服务的请求指向模拟器启动的监听链路的端口;[0070]步骤S1022,若被测服务的当前协议服务为自定义协议服务,通过OSP的静态路由的IP和端口,把被测服务请求的IP直接指向模拟器的IP和对应OSP链路的监听链路的端口。[0071]应该理解地是,本实施例中,把协议服务分为通用协议服务和自定义协议服务,具体地,服务模拟平台针对不同协议服务有以下几种模拟的方案:[0072]IHTTPThrift协议模拟:[0073]用户通过修改DNS配置全名DomainNameSystem,域名系统,因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串),把B服务的IP指向平台模拟器的IP,通过平台内置的Nginx把A服务的请求指向模拟器启动的监听链路的端口。[0074]2OSP协议模拟:[0075]用户把B服务的IP通过OSP的静态路由的IP和端口直接指向模拟器的IP和对应OSP链路的监听链路的端口。[0076]需要补充说明的是,Nginx是一个高性能的HTTP和反向代理服务器,本发明只是用了Nginx的端口映射功能,用于HTTP协议或Thrift协议模拟Thrift是一个服务端和客户端的架构体系,使不同语言开发的系统可以通过该框架进行通信),平台内置Nginx,用户无需再使用服务器操作Nginx,只需在页面上配置。如在Nginx配置页面配置是:ServerName:cart.api.vip.comlistenPort:80默认监听端口:1234,实际会在Nginx生成一个配置文件内容如下:[0078]表示cart.api.vip.com域的请求并且端口是80的,统一转发到监听端口是1234的链路。例如请求是http:cart·api·vip·com:80xxx,通过Nginx转发后变为http:127.0.0.1:1234〇[0079]Nginx反向代理的原理是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。[0080]具体地,参照图4,步骤S30包括:[0081]步骤S301,解析所拦截的请求生成请求参数;[0082]在步骤S301中,所述链路启动的时候会启动一个InboundChannelInboundChannel专门用于A服务和模拟器间通信的通道),用于监听收到的来自A服务的请求。[0083]步骤S302,将请求参数转换为统一的封装不同协议的请求对象;[0084]在步骤S302中,收到请求后,通过RequestExtrator请求出口)对请求的参数进行提取如uri,body的参数),转为一个RequestElement请求对象),如:HTTP,0SP等不同协议的请求内容统一转换为RequestElement请求对象),即封装有不同协议的请求参数)。[0085]步骤S303,传送请求对象至模拟器的粧匹配器。[0086]在步骤S303中,模拟器再把RequestElement传入粧匹配器(StubMatcher与用户预设的粧进行匹配。应该理解地是,整个把请求解析为RequestElement的操作均是由模拟器的内部代码实现。[0087]具体地,参照图5,步骤S40包括:[0088]步骤S401,粧匹配器接收解析后的请求;[0089]步骤S402,调用粧参数;[0090]步骤S403,解析粧参数,以释放模拟匹配条件和预设响应;[0091]步骤S404,调用模拟匹配条件,执行匹配命令。[0092]粧可以是一个常量,也可以是一个变量,这样,把粧定义为一个函数,函数定义时候传入的参数叫形参,而调用函数时传入的参数叫实参,模拟器先替换掉粧里区配条件和预设响应的参数,释放出模拟匹配条件和预设响应的原函数,然后再调用模拟匹配条件,执行匹配命令。[0093]参照图6,在第二实施例中,在步骤S40之后还包括:[0094]步骤S50,若匹配成功,模拟器的粧匹配器发送预设响应至被测服务;[0095]步骤S60,若匹配失败,模拟器的粧匹配器转发解析后的请求至外部服务,并接收外部服务发出的对请求的真实响应,传送至被测服务。[0096]在第二实施例中,步骤S50和步骤S60是步骤S40之后还包括响应措施,即当匹配成功,模拟器的粧匹配器发送预设响应至被测服务;当匹配失败时,模拟器转发请求至外部服务,并接收外部服务发出的对请求的真实响应,传送至被测服务。此时,所述的粧匹配器仅做为一个中转站,转发请求并接收外部服务对请求的真实响应,再转发至被测服务。[0097]参照图7,在第三实施例中,在步骤S20与步骤S30之间还包括:[0098]步骤S70,模拟器的监听链路监测所拦截的请求;[0099]步骤S80,若监测所拦截的请求不需要返回预设响应时,暂停模拟器的链路,直接转发被测服务发出的请求至外部服务,并接收外部服务对请求的真实响应返回至被测服务;[0100]步骤S90,若监测所拦截的请求不需要使用模拟器时,停止模拟器的链路,模拟服务关闭监听端口,返回报错信息。[0101]在本实施例中,考虑到企业用户业务的复杂性,为了满足用户各种业务的需求不同,所述模拟器通过链路状态的控制来完成监测请求的功能,应该理解地是,监测请求的同时是结合业务的需求,如果业务不需要匹配直接转发的时候可以暂停模拟器的链路,如果业务不使用模拟器,可以停止模拟器的链路,模拟服务关闭监听端口,被测服务再发起请求到模拟器,会收到连接失败的报错信息。[0102]在第四实施例中,步骤SlO之前还包括:[0103]呈现解耦依赖的情况时,执行解耦依赖,以绕开所依赖外部服务的接口。[0104]在本实施例中,被测的A服务原来是依赖外部的B服务,现在在被测的A服务和外部的B服务之间建立一个开放式的集中管理诸多所述模拟器的平台,而平台通过接口与不同的外部服务器协同交互来处理被测服务的业务。应当理解地是,计算中的耦合偏向于两者或多者的彼此影响,解耦就是要解除这种影响,增强各自的独立存在能力,可以无限降低存在的耦合度,但不能根除,否则就失去了彼此的关联,失去了存在意义。[0105]服务模拟平台的作用是服务解耦,可用于研发或测试人员绕开外部服务单独测试自己负责的服务。服务解耦场景:DA服务调B服务,B服务由于某些原因不可用或不稳定,例如登陆页面调一个登陆的passport·api,但是passport·api连不上导致无法登陆;2A服务调B服务,B服务的数据或场景难以构造,例如登陆页面调一个登陆的passport,api,passport.api会在某些极端情况下返回一些错误码;3自动化测试时,A服务调B服务,由于B服务不可控,数据经常变动导致测试数据经常变化。比如=Jetty可以从testcase中控制其运行,从而可以使自动化测试不再依赖外部环境,顺利实现自动化测试。[0106]参照图8,本发明还公开了一种模拟服务的装置,该装置包括:[0107]初始化模块10,用于模拟外部服务行为启动模拟器初始化操作,在初始化后的模拟器的粧匹配器中编辑模拟匹配条件及预设响应;[0108]监听模块20,用于与被测服务同一IP的模拟器启动的监听链路拦截由被测服务发出的请求;[0109]报文解析模块30,用于解析所拦截的请求并将解析后的请求传送至模拟器的粧匹配器;[0110]执行模块40,用于模拟器的粧匹配器接收解析后的请求,根据模拟匹配条件执行匹配命令。[0111]在本实施例中,模拟器初始化操作需要完成两个方面的预备,第一,需要部署测试环境主要指硬件环境),以为模拟器的模拟服务提供稳定而可控的环境,提高模拟器的工作质量和效率。预先运行构建或部署与被测服务和外部服务之间网络通信服务接口的对接、建立WEBUI交互测试模型、构建多种测试类型框架、封装有不同协议的链路配置,根据被测服务的协议服务部署被测服务的服务端口配置及呈现解耦依赖情况时,执行解耦依赖,以绕开所依赖的外部服务的端口。而这些测试环境的部署均有一个集中管理数个模拟器的模拟服务平台来完成,首先建立模拟器与被测服务和外部服务之间的网络通信;接着建立WEBUI界面交互测试模型及交互规范,以下的步骤均在界面操作,而无需编码;再针对被测服务的需求构建多种测试类型的框架,比如:单元测试、集成测试、自动化测试、功能测试及压力测试;根据不同协议服务给每个模拟器封装不同协议的链路配置;根据被测服务的协议服务修改被测服务的目标服务端口配置,被测的A服务(即被测服务原来是依赖外部的B服务(即外部服务),现在A服务的目标服务不指向B服务而改为指向模拟器。第二,需要部署测试服务主要指软件环境),以为本发明的测试方法提供测试对象。测试服务包括测试管理单元和测试执行单元,模拟器等同于测试管理单元,而模拟器中虚拟一个粧匹配器等同于测试执行单元,具体来说是,在模拟器中预先存储模拟外部服务行为的测试用例,在模拟器的粧匹配器中编辑模拟测试的匹配条件及预设响应,或者是,通过注册自定义服务事件的API函数编辑自定义服务的模拟测试匹配条件及预设响应,在模拟器中的粧匹配器里将模拟测试匹配条件及预设响应编辑为粧,且将粧参数化生成粧参数,粧匹配器根据模拟测试匹配条件实行测试控制。[0112]特别说明地是,构建功能测试框架时,是单独启动的平台提供的压测包,所述的压测包支持通用协议,比如HTTP协议和自定义协议,比如OSP协议的压测时的服务模拟,而且压测包也是使用Web界面指定链路的粧设置,无需重复配置。步骤为:首先一键下载平台提供的压测包,启动压测模拟器,进行压力模拟测试,通过界面直接查看测试结果。[0113]本发明所述的方法完全采用WEBUI的可视化操作界面,配置共享,用户使用时无需任何技能,也不需了解技术细节也就是说无需自己编码,就能实现服务的摸拟,大大地提高了联调测试的效率。[0114]本申请模拟器的初始化还包括创建模拟器,所述模拟器用于模拟与被测的A服务进行真实交互的外部B服务。所述模拟器可以采用JETTY服务器,该JETTY服务器为一个开源的servelet容器,是基于JAVA的WEB容器。Jetty可以作为嵌入式服务器使用Jetty的运行速度较快,而且是轻量级的,Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。JAR包管理用于RPC协议模拟,统一管理客户端的JAR包,可以理解地,JAR包可用于解析不同协议服务。则测试中当被测的A服务通过接口调用外部的B服务进行交互时,改为调用模拟器模拟该交互,即把原本被测的A服务请求修改指向,不再指向B服务而改为指向模拟器。[0115]本申请模拟器启动后,模拟器启动的监听链路的端口开始监听,当监听到具有与模拟器相同IP的请求时,拦截该请求,报文解析请求,并将解析后的请求发送至粧匹配器。粧匹配器接收请求后,根据模拟匹配条件执行匹配命令,粧匹配器开始测试控制,若匹配成功,粧匹配器推出模拟测试的预设响应返回至被测服务。[0116]参照图8,本发明提供的一种模拟服务的装置的第二实施例,所述的模拟服务的装置还包括:[0117]响应模块50,用于若匹配成功,模拟器的粧匹配器发送预设响应至被测服务;还用于接收外部服务发出的对请求的真实响应,传送至被测服务;[0118]转发模块60,用于若匹配失败,模拟器的粧匹配器转发解析后的请求至外部服务;[0119]解耦依赖模块70,用于呈现解耦依赖的执行情况时,执行解耦依赖;[0120]监测模块80,用于模拟器的监听链路监测所拦截的请求;[0121]监测执行模块90,用于若监测所拦截的请求不需要返回预设响应时,暂停模拟器的链路,直接转发被测服务发出的请求至外部服务,并接收外部服务对请求的真实响应返回至被测服务;还用于若监测所拦截的请求不需要使用模拟器时,停止模拟器的链路,模拟服务关闭监听端口,返回报错信息。[0122]在第二实施例中,还包括响应模块50,即当匹配成功,模拟器的粧匹配器发送预设响应至被测服务;当匹配失败时,模拟器转发请求至外部服务,并接收外部服务发出的对请求的真实响应,传送至被测服务。匹配失败时,所述的粧匹配器仅做为一个中转站,转发请求并接收外部服务对请求的真实响应,再转发至被测服务。[0123]在第三实施例中,还包括监测模块80和监测执行模块90,考虑到企业用户业务的复杂性,为了满足用户各种业务的需求不同,所述模拟器通过链路状态的控制来完成监测请求的功能,应该理解地是,监测请求的同时是结合业务的需求,如果业务不需要匹配直接转发的时候可以暂停模拟器的链路,如果业务不使用模拟器,可以停止模拟器的链路,模拟服务关闭监听端口,被测服务再发起请求到模拟器,会收到连接失败的报错信息。[0124]在第四实施例中,还包括解耦依赖模块70,被测的A服务原来是依赖外部的B服务,现在在被测的A服务和外部的B服务之间建立一个开放式的集中管理诸多所述模拟器的平台,而平台通过接口与不同的外部服务器协同交互来处理被测服务的业务。应当理解地是,计算中的耦合偏向于两者或多者的彼此影响,解耦就是要解除这种影响,增强各自的独立存在能力,可以无限降低存在的耦合度,但不能根除,否则就失去了彼此的关联,失去了存在意义。[0125]服务模拟平台的作用是服务解耦,可用于研发或测试人员绕开外部服务单独测试自己负责的服务。服务解耦场景:DA服务调B服务,B服务由于某些原因不可用或不稳定,例如登陆页面调一个登陆的passport·api,但是passport·api连不上导致无法登陆;2A服务调B服务,B服务的数据或场景难以构造,例如登陆页面调一个登陆的passport,api,passport.api会在某些极端情况下返回一些错误码;3自动化测试时,A服务调B服务,由于B服务不可控,数据经常变动导致测试数据经常变化。比如=Jetty可以从testcase中控制其运行,从而可以使自动化测试不再依赖外部环境,顺利实现自动化测试。[0126]参照图9,所述初始化模块10包括:[0127]模拟测试架构单元101,用于根据被测服务的请求选择模拟测试架构,且在所选择的模拟测试架构中,模拟外部服务行为启动一个或多个不同协议服务的模拟器;[0128]模拟多种协议服务单元102,用于接收请求后,获取请求URL地址上的协议类型,转交给适配协议类型的模拟服务的装置进行处理,以根据被测服务的当前协议服务请求选择模拟器当前协议链路的配置;[0129]服务端口配置单元103,用于根据被测服务的当前协议服务请求选择模拟器当前协议链路的配置,以修改被测服务请求的IP为模拟器的IP,将被测服务的请求指向模拟器启动的监听链路的端口;[0130]粧单元104,用于根据模拟外部服务行为的意图,在模拟器的粧匹配器中编辑模拟匹配条件及预设响应为粧,参数化粧生成粧参数。[0131]具体地,所述模拟测试架构101是提供模拟测试用例的模拟测试分析工具,它包括模拟测试的测试模块、管理模块和统计分析模块,所述测试模块用于执行不同测试类型的模拟匹配命令时,提供所调用的模拟测试用例,且所述的模拟测试用例是可反复使用的;所述管理模块用于管理不同模拟测试类型的模拟测试用例的调用;所述统计分析模块用于统计且分析所述模拟测试的结果。所述模拟测试架构根据模拟测试预期的不同区分为不同的测试类型,再模拟不同的测试类型建立的模拟测试架构,所述模拟测试架构包括单元测试架构、集成测试架构、功能测试架构和压力测试架构,每种所述模拟测试架构是提取每种测试类型的共性部分组成的独立的体系结构。[0132]所述模拟多种协议服务单元102用于接收请求后,获取请求URL地址上的协议类型,转交给适配协议类型的模拟器进行处理,它又包括模拟通用协议服务和模拟自定义协议服务。[0133]所述服务端口配置单元103用于根据不同协议服务修改被测服务、外部服务和模拟器的端口配置,以便模拟器进入代理服务器的角色。[0134]所述的粧单元104用于模拟测试用例的调用条件的单元,以代替测试用例的接口,接受或者传递测试用例的数据,其中,所述测试模块的调用条件,即为模拟匹配条件。[0135]外部服务行为可能是一种协议服务的测试用例,也可能是多种协议服务的测试用例,而一个被测服务可能同时依赖多个不同的外部服务,预先存储模拟所述外部服务行为的测试用例于测试管理单元一一模拟器,所以模拟器的初始化操作的启动时,需要启动一个或多个与外部服务相对应的模拟器。[0136]在模拟器初始化的过程中,模拟器中的粧匹配器用于模拟测试用例的调用条件的元件,以代替测试用例的接口,接受或者传递测试用例的数据,其中,所述测试模块的调用条件,即为模拟匹配条件。判断所调用的测试用例数据的意图,并依据该测试用例数据中的特定数据编辑模拟的匹配条件及预设响应生成为粧;进一步地,为了提高匹配的智能化,所述参数化粧,应该理解的是,外部服务的多变性决定了模拟匹配条件及预设响应的多变,即粧可以是一个常量,也可以是一个变量,这样,把粧理解为一个粧函数,模拟的匹配条件为计算式,预设响应为返回值,而参数化粧就是在函数定义时候传入形参,而相对地,解析参数就是调用函数时传入实参。粧参数化的过程是:配置粧的参数的格式,添加粧参数,完成参数化,生成粧参数。粧的参数化用以适配多种协议的不同外部服务,故粧函数可以自动生成,也可自定义,但自动生的粧函数与自定义的粧函数其主要差别在于:自定义的粧函数调用优先级别高于原函数,原函数的优先级别高于自动生成的粧函数。举个例子,假定在代码中能够找到某个函数的原本定义,此时自动生成的粧函数是无效的,因为原函数优先级别高于自动生成的粧函数。而自定义粧函数可以带来的好处在于:调用原函数可能其返回值为一个固定值,不能返回一个期望值,以使得测试不同的代码分支。而粧函数的返回值,可由用户自由控制,因而具备更大的灵活性。故在本实施例中,这个粧函数的返回值即预设响应,采用beanshell动态生成。[0137]而本发明的参数化粧也是智能匹配功能的一种体现。粧的匹配条件和模拟响应也都随之参数化,应该理解地是,如果粧配置的参数格式是${参数名},当设置了参数格式后,粧参数也必须设置,否则被测服务请求均会匹配不成功,只有重新设置了粧参数,让粧参数替换掉匹配条件和模拟响应的格式化参数,这时再请求一次,才可以看到应该得到的响应。[0138]在本实施例中,需要说明的是粧包括公共粧和私有粧,它们根据测试用例数据中的特定数据的不同而不同,所述公共粧即可在该链路里新建并被调用,也可以是抓取redis的数据自动生成,可被与公共粧关联于同一个IP下的链路调用,所述私有粧只能在该链路里新建,并只为该链路私有。这里所说的新建粧包括自定义粧函数和原函数。[0139]特别需要说明地是,公共粧还具有录制规则,所述公共粧的录制途径有两种:1、从外部服务系统抓取流量进行录制,场景:平台与ApiTester接口测试平台)和DCT造数据平台)对接时,因为ApiTester和DCT的测试时,所有正常的接口请求和响应会发送一个公共的redis做缓存,平台会定时从redis提取这些数据自动生成公共粧;2、当模拟器不匹配请求时,通过粧录制器StubRecorder录制模拟器拦截且不匹配直接转发的请求和响应生成为公共粧。所述公共粧录制规则可以由内部代码预先建立默认规则后自动生成录制规则,也可以在页面人为设置。[0140]所述的模拟匹配具有丰富的匹配规则,粧的匹配条件逻辑上支持多个粧之间的AND,OR和NOT关系;匹配的操作符支持equals值相等),contains值包含),regex值正则表达式匹配)。而所述的预设响应根据不同的模拟匹配条件,通过beanshel1动态生成。[0141]参照图10,所述服务端口配置单元103包括:[0142]通用协议配置子单元1031,用于若被测服务的当前协议服务为通用协议服务,则修改DNS配置,把被测服务请求的IP指向模拟器的IP,配置Nginx,利用Nginx的端口映射,把被测服务的请求指向模拟器启动的监听链路的端口;[0143]自定义协议配置子单元1032,用于若被测服务的当前协议服务为自定义协议服务,通过OSP的静态路由的IP和端口,把被测服务请求的IP直接指向模拟器的IP和对应OSP链路的监听链路的端口。[0144]应该理解地是,本实施例中,把协议服务分为通用协议服务和自定义协议服务,具体地,服务模拟平台针对不同协议服务有以下几种模拟的方案:[0145]IHTTPThrift协议模拟通用协议模拟):[0146]用户把B服务的IP通过修改DNS配置)地址指向平台模拟器,通过平台内置的Nginx把A服务的请求指向模拟器启动的监听链路的端口。[0147]2OSP协议模拟(自定义协议模拟):[0148]用户把B服务的IP通过OSP的静态路由的IP和端口直接指向模拟器的IP和对应OSP链路的监听链路的端口。[0149]需要补充说明的是,Nginx是一个开源的反向代理服务器,平台只是用了Nginx的端口映射功能,用于HTTP协议或Thrift协议模拟,平台内置Nginx,用户无需再使用服务器操作Nginx,只需在页面上配置。如在Nginx配置页面配置是:ServerName:cart.api.vip.comlistenPort:80默认监听端口:1234,实际会在Nginx生成一个配置文件内容如下:[0151]表示cart.api.vip.com域的请求并且端口是80的,统一转发到监听端口是1234的链路。例如请求是http:cart·api·vip·com:80xxx,通过Nginx转发后变为http:127.0.0.1:1234〇[0152]Nginx反向代理的原理是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。[0153]参照图11,所述报文解析模块30包括:[0154]解析单元301,用于解析所拦截的请求生成请求参数;[0155]封装单元302,用于将请求参数转换为统一的封装不同协议的请求对象;[0156]传送单元303,用于传送请求对象至模拟器的粧匹配器。[0157]在本实施例中,所述报文解析模块实际上完成的是模拟器普通模拟匹配执行之前被测服务请求接收的过程,链路启动的时候会启动一个InboundChanneIInboundChanne1专门用于A服务和模拟器间通信的通道),用于监听收到的来自A服务的请求,收到请求后,通过RequestExtrator对请求的参数进行提取(如uri,body的参数),转为一个RequestElement请求对象HTTP,OSP等不同协议的请求内容统一转换为RequestElement请求对象即封装有不同协议的请求参数)。模拟器再把RequestElement传入StubMatcher粧匹配器)与用户预设的粧进行匹配。整个把请求解析为RequestElement的操作均是由模拟器的内部代码实现。[0158]参照图12,所述执行模块40包括:[0159]接收单元401,用于粧匹配器接收解析后的请求;[0160]调用单元402,用于调用粧参数;[0161]释放单元403,用于解析粧参数,以释放模拟匹配条件和预设响应;[0162]执行单元404,用于调用模拟匹配条件,执行匹配命令。[0163]在本实施例中,所述执行模块实际上完成的是模拟器普通模拟匹配执行之前的粧参数化相呼应的解参过程,粧可以是一个常量,也可以是一个变量,这样,把粧定义为一个函数,函数定义时候传入的参数叫形参,而调用函数时传入的参数叫实参,模拟器先替换掉粧里区配条件和预设响应的参数,释放出模拟匹配条件和预设响应的原函数,然后再调用模拟匹配条件,执行匹配命令。[0164]本发明还公开了一种模拟服务的集中管理平台,包括:[0165]—个或多个不同协议的如上所述的模拟服务的装置;及[0166]UI交互模块,用于建立UI交互测试模型及交互规范,编辑静态HTML,以负责所有模拟服务的交互对接;及[0167]日志管理模块,用于提供日志管理功能,可对模拟测试的结果进行日志的记录、查看、下载及清理;及[0168]模拟数据库,用于存储模拟服务的所有数据。[0169]在本发明中,所述的模拟服务的集中管理平台完全采用WEBUI的可视化操作界面,配置共享,用户使用时无需任何技能,也不需了解技术细节也就是说无需自己编码,就能实现服务的摸拟,大大地提高了联调测试的效率。[0170]在实际应用中,模拟服务的集中管理平台就是对上述一个或多个不同协议服务的所述模拟器进行集中管理的平台,模拟服务平台的核心原理是一个代理服务平台,为进行模拟服务的模拟器构建适配的测试环境;根据被测服务的请求类型寻找合适的模拟器及不同协议的链路配置,以提供相对应的服务;对多个模拟器的集中管理,配置共享,提高联调测试工作效率;日志记录及数据库提供集中管理的常规服务;呈现解耦依赖情况时,执行解耦依赖,以绕开所依赖外部服务的接口,方便测试人员进行自己负责的测试服务。[0171]所述的模拟服务的集中管理平台使得测试人员的联调测试、开发联调、异常场景及复杂测试场景的测试更趋简化,还使得压测数据及环境的简化[0172]在实际应用中,本发明提供的一种模拟服务的方法及装置的实际操作过程如下:[0173]一、模拟服务的方法[0174]以HTTP协议模拟为例:[0175]1.模拟器自带一个Nginx接收请求,Nginx根据用户的配置的转发端口,Nginx收到请求后,把转发到对应链路启动的监听端口。[0176]2.链路启动的时候会启动一个InboundChannelInboundChannel专门用于A服务和模拟器间通信的通道),用于监听收到的来自A服务的请求。收到请求后,通过RequestExtrator对请求的参数进行提取如uri,body的参数),转为一个RequestElement请求对象HTTP,0SP等不同协议的请求内容统一转换为RequestElement请求对象)。[0177]3.模拟器再把RequestElement传入StubMatcher粧匹配器)与用户预设的粧进行匹配。[0178]4.匹配失败就会通过OutboundChannelOutboundChannel是专门用于模拟器和B服务通信的通道,只在转发时才建立)转发到真实服务并接收响应,并且通过StubRecorder粧录制器,专门用于把录制模拟器拦截且转发的响应录制为公共粧录制响应,然后把真实响应通过InBoundChannel返回给请求方A服务)。[0179]5.匹配成功后,会把预设响应通过InBoundChannel直接返回给请求方A服务)。[0180]所述的模拟器实现模拟服务的普通匹配过程实际操作流程:[0181]1、模拟器的链路配置,包括:链路ID、链路IP、链路名称、链路监听端口、是否使用匹配、目标服务目标IP、目标服务HostURL、目标服务端口及协议类型,其中,第一个链路都会起一个监听端口,目标服务设置用户匹配失败后的转发,支持协议类型包括:HTTP、DSP、Thrift等;[0182]2、链路列表及状态控制,链路状态包括:启动、暂停(只转发不匹配使用)和停止;[0183]3、Nginx配置,用于HTTP协议或Thrift协议模拟,平台内置Nginx,用户无需再在服务器上操作Nginx,只需在页面上配置;[0184]4、JAR包管理,用于RPC协议模拟,统一管理客户端的JAR包,便于解析不同协议服务。[0185]5、粧配置,指定模拟匹配规则、预设响应、粧参数等设置,每个链路可设置多个粧;[0186]6、公共粧录制规则设置,公共粧的录制途径有两种:1、从外部服务系统抓取流量进行录制;2、当模拟器不匹配请求时,通过粧录制器StubRecorder录制模拟器拦截且不匹配直接转发的请求和响应生成为公共粧。所述公共粧录制规则可以手工设置,如果有不存在的条件,还可以自动生成录制规则;[0187]7、日志记录,模拟匹配失败时记录转发的日志,模拟匹配成功时记录反回预设响应的日志;[0188]8、单独启动的服务压测包进行压力测试,支持HTTP和DSP协议的压测时服务模拟,一键下载压测包,启动压测模拟器,压测模拟器自身进行压力测试,查看测试结果。[0189]二、模拟服务的集中管理平台[0190]所述的模拟服务的集中管理平台就是对所述模拟器进行集中管理的平台,模拟服务平台的核心原理是一个代理服务平台,所述平台的工作内容包括为进行模拟服务的模拟器构建适配的测试环境;根据被测服务的请求类型寻找合适的模拟器及链路配置,以提供相对应的服务;对多个模拟器的集中管理,配置共享,提高联调测试工作效率;日志记录及存储模拟服务的数据等等,平台的操作步骤:[0191]步骤一,建立UI交互测试模型,以使用户所有的操作基本都是从平台的WEB界面进行,无需编码;[0192]步骤二,利用测试模型,生成测试框架,包括:单元测试框架、集成测试框架、功能测试框架及压力测试框架;[0193]步骤三,呈现解耦依赖的情况时执行解耦依赖,以绕开所依赖外部服务的接口;[0194]步骤四,编写测试事件,通过模拟外部服务的测试用例或注册自定义服务事件的API函数,将已编写好的脚本编辑到测试框架中相应的模拟器中;[0195]步骤五,在模拟器中,实施模拟测试匹配,返回相对应的响应;[0196]步骤六,日志记录,可进行日志的记录、查看、下载及清理,若匹配成功,返回预设响应的日志;若匹配失败,返回转发的日志;[0197]步骤七,模拟数据库收集测试数据,存储并管理,[0198]所述测试框架是提供模拟测试用例的模拟测试分析工具,它包括模拟测试的基础模块、管理模块和统计分析模块,所述基础模块用于执行不同测试类型的模拟匹配命令时,提供所调用的模拟测试用例,且所述的模拟测试用例是可重用的;所述管理模块用于管理不同模拟测试类型的模拟测试用例的调用;所述统计分析模块用于统计且分析所述模拟测试的结果。所述测试架构根据模拟测试预期的不同区分为不同的测试类型,再模拟不同的测试类型建立的模拟测试架构,所述模拟测试架构包括单元测试架构、集成测试架构、功能测试架构和压力测试架构,每种所述模拟测试架构是提取每种测试类型的共性部分组成的独立的体系结构。适用场景:[0199]1功能测试、集成测试和单元测试[0200]测试或研发人员在做功能测试、集成测试、单元测试甚至功能开发的时候,通过把自身服务对接到平台模拟器,可以简单的绕开外部不稳定、不可用、复杂的外部服务服务绕开掉并可以模拟外部服务的任意返回。用户只需要关注自身服务的功能和逻辑从而实现对外部服务的解耦依赖。[0201]2性能测试[0202]测试人员做压测的时候,把平台提供的压测包下载到压测机上并启动。压测包是可独立启动的高性能模拟服务,和平台本身通过接口对接并在启动时获取粧和链路相关数据。用户压测的时候无需部署外部依赖服务和造大批量外部压测数据,只要简单的把外部依赖改为连接模拟器并关注被测服务本身的性能和压测数据。所述平台提供的压测包,支持通用协议和自定义协议的压测时服务模拟,而且压测包也是使用Web界面指定链路的粧设置,无需重复配置。步骤为:首先一键下载平台提供的压测包,启动压测模拟器,进行压力模拟测试,通过界面直接查看测试结果。[0203]需要说明的是,在本文中,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件系统的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术配置本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质如R0MRAM、磁碟、光盘中,包括若干指令用以使得一台终端设备可以是手机,计算机,服务器或者网络设备等电子设备执行本发明各个实施例所述的方法。[0204]以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是在本发明的发明构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接间接运用在其他相关的技术领域均包括在本发明的专利保护范围内。

权利要求:1.一种模拟服务的方法,其特征在于,包括步骤:模拟外部服务行为启动模拟器初始化操作,在初始化后的模拟器的粧匹配器中编辑模拟匹配条件及预设响应;模拟器启动的与被测服务同一IP的监听链路拦截由被测服务发出的请求;解析所拦截的请求并将解析后的请求传送至模拟器的粧匹配器;模拟器的粧匹配器接收解析后的请求,根据模拟匹配条件执行匹配命令。2.如权利要求1所述的模拟服务的方法,其特征在于,所述模拟外部服务行为启动模拟器初始化操作,在初始化后的模拟器的粧匹配器中编辑模拟匹配条件及预设响应的步骤包括:根据被测服务的请求选择模拟测试架构,且在所选择的模拟测试架构中,模拟外部服务行为启动一个或多个不同协议服务的模拟器;根据被测服务的当前协议服务请求选择模拟器当前协议链路的配置,将被测服务请求的IP修改为模拟器的IP,以将被测服务的请求指向模拟器启动的监听链路的端口;根据模拟外部服务行为的意图,在模拟器的粧匹配器中编辑模拟匹配条件及预设响应为粧,参数化粧生成粧参数。3.如权利要求2所述的模拟服务的方法,其特征在于,所述根据被测服务的当前协议服务请求选择模拟器当前协议链路的配置的步骤包括:若被测服务的当前协议服务为通用协议服务,则修改DNS配置,把被测服务请求的IP指向模拟器的IP,配置Nginx,利用Nginx的端口映射,把被测服务的请求指向模拟器启动的监听链路的端口;若被测服务的当前协议服务为自定义协议服务,通过OSP的静态路由的IP和端口,把被测服务请求的IP直接指向模拟器的IP和对应OSP链路的监听链路的端口。4.如权利要求1所述的模拟服务的方法,其特征在于,所述解析拦截的请求并将解析后的请求传送至模拟器的粧匹配器的步骤包括:解析所拦截的请求生成请求参数;将请求参数转换为统一的封装不同协议的请求对象;传送请求对象至模拟器的粧匹配器。5.如权利要求1所述的模拟服务的方法,其特征在于,所述模拟器的粧匹配器接收解析后的请求,根据模拟匹配条件执行匹配命令的步骤包括:粧匹配器接收解析后的请求;调用粧参数;解析粧参数,以释放模拟匹配条件和预设响应;调用模拟匹配条件,执行匹配命令。6.如权利要求1所述的模拟服务的方法,其特征在于,所述模拟器的粧匹配器接收解析后的请求,根据模拟匹配条件执行匹配命令的步骤之后包括:若匹配成功,模拟器的粧匹配器发送预设响应至被测服务;若匹配失败,模拟器的粧匹配器转发解析后的请求至外部服务,并接收外部服务发出的对请求的真实响应,传送至被测服务。7.如权利要求1至6任一项所述的模拟服务的方法,其特征在于,在所述模拟器的监听链路拦截由同一IP的被测服务发出的请求的步骤和所述解析拦截的请求并将解析后的请求传送至模拟器的粧匹配器的步骤之间还包括:模拟器的监听链路监测所拦截的请求;若监测所拦截的请求不需要返回预设响应时,暂停所述监听链路,直接转发被测服务发出的请求至外部服务,并接收外部服务对请求的真实响应返回至被测服务;若监测所拦截的请求不需要使用模拟器时,停止所述监听链路,模拟服务关闭监听端口,返回报错信息。8.如权利要求1至6任一项所述的模拟服务的方法,其特征在于,所述模拟外部服务行为启动模拟器初始化操作,在初始化后的模拟器的粧匹配器中编辑模拟匹配条件及预设响应的步骤之前包括:呈现解耦依赖的执行情况时,执行解耦依赖。9.一种模拟服务的装置,其特征在于,包括:初始化模块,用于模拟外部服务行为启动模拟器初始化操作,在初始化后的模拟器的粧匹配器中编辑模拟匹配条件及预设响应;监听模块,用于与被测服务同一IP的模拟器启动的监听链路拦截由被测服务发出的请求;报文解析模块,用于解析所拦截的请求并将解析后的请求传送至模拟器的粧匹配器;执行模块,用于模拟器的粧匹配器接收解析后的请求,根据模拟匹配条件执行匹配命令。10.如权利要求9所述的模拟服务的装置,其特征在于,还包括:响应模块,用于若匹配成功,模拟器的粧匹配器发送预设响应至被测服务;还用于若匹配失败,接收外部服务发出的对请求的真实响应,传送至被测服务;转发模块,用于若匹配失败,模拟器的粧匹配器转发解析后的请求至外部服务;解耦依赖模块,用于呈现解耦依赖的执行情况时,执行解耦依赖;监测模块,用于模拟器的监听链路监测所拦截的请求;监测执行模块,用于若监测所拦截的请求不需要返回预设响应时,暂停模拟器的链路,直接转发被测服务发出的请求至外部服务,并接收外部服务对请求的真实响应返回至被测服务;还用于若监测所拦截的请求不需要使用模拟器时,停止模拟器的链路,模拟服务关闭监听端口,返回报错信息。11.如权利要求9所述的模拟服务的装置,其特征在于,所述初始化模块包括:模拟测试架构单元,用于根据被测服务的请求选择模拟测试架构,且在在所选择的模拟测试架构中,模拟外部服务行为启动一个或多个不同协议服务的模拟器;模拟多种协议服务单元,用于接收请求后,获取请求URL地址上的协议类型,转交给适配协议类型的模拟服务的装置进行处理,以根据被测服务的当前协议服务请求选择模拟器当前协议链路的配置;服务端口配置单元,用于所选择模拟器当前协议链路的配置,修改被测服务请求的IP为模拟器的IP,将被测服务的请求指向模拟器启动的监听链路的端口;粧单元,用于根据模拟外部服务行为的意图,在模拟器的粧匹配器中编辑模拟匹配条件及预设响应为粧,参数化粧生成粧参数。12.如权利要求11所述的模拟服务的装置,其特征在于,所述服务端口配置单元包括:通用协议配置子单元,用于若被测服务的当前协议服务为通用协议服务,则修改DNS配置,把被测服务请求的IP指向模拟器的IP,配置Nginx,利用Nginx的端口映射,把被测服务的请求指向模拟器启动的监听链路的端口;自定义协议配置子单元,用于若被测服务的当前协议服务为自定义协议服务,通过OSP的静态路由的IP和端口,把被测服务请求的IP直接指向模拟器的IP和对应OSP链路的监听链路的端口。13.如权利要求9所述的模拟服务的装置,其特征在于,所述报文解析模块包括:解析单元,用于解析所拦截的请求生成请求参数;封装单元,用于将请求参数转换为统一的封装不同协议的请求对象;传送单元,用于传送请求对象至模拟器的粧匹配器。14.如权利要求9所述的模拟服务的装置,其特征在于,所述执行模块包括:接收单元,用于粧匹配器接收解析后的请求;调用单元,用于调用粧参数;释放单元,用于解析粧参数,以释放模拟匹配条件和预设响应;执行单元,用于调用模拟匹配条件,执行匹配命令。15.—种模拟服务的集中管理平台,其特征在于,包括:一个或多个不同协议的如权利要求9-14任一项所述的模拟服务的装置;及UI交互模块,用于建立UI交互测试模型及交互规范,编辑静态HTML,以负责所有模拟服务的交互对接;及日志管理模块,用于提供日志管理功能,可对模拟测试的结果进行日志记录、查看、下载及清理;及模拟数据库,用于存储模拟服务的所有数据。

百度查询: 广州品唯软件有限公司 一种模拟服务的方法、装置及集中管理平台

vip会员权益升级
价格优惠/年费监控/专利管家/定制微网站 关闭