CN103297475B - Mock服务系统及Mock服务的处理方法 - Google Patents

Mock服务系统及Mock服务的处理方法 Download PDF

Info

Publication number
CN103297475B
CN103297475B CN201210052142.3A CN201210052142A CN103297475B CN 103297475 B CN103297475 B CN 103297475B CN 201210052142 A CN201210052142 A CN 201210052142A CN 103297475 B CN103297475 B CN 103297475B
Authority
CN
China
Prior art keywords
service
mock
mock service
client
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201210052142.3A
Other languages
English (en)
Other versions
CN103297475A (zh
Inventor
王兴勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201210052142.3A priority Critical patent/CN103297475B/zh
Publication of CN103297475A publication Critical patent/CN103297475A/zh
Application granted granted Critical
Publication of CN103297475B publication Critical patent/CN103297475B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本申请公开了一种Mock服务系统及Mock服务的处理方法。其中,该Mock服务系统包括:接收模块,用于接收来自客户端的请求;查找模块,用于查找与请求对应的Mock服务,其中,在Mock服务系统中存储有多个Mock服务;以及关联模块,用于建立客户端与所查找到的Mock服务的关联关系以便为客户端提供Mock服务。由于该Mock服务系统对所提供的Mock服务进行统一管理,因此,解决现有技术中无法在同一个Mock服务系统中对不同的客户端提供Mock服务的问题,使得Mock服务系统能够为不同的客户端提供Mock服务。

Description

Mock服务系统及Mock服务的处理方法
技术领域
本申请涉及数据处理领域,具体而言,涉及一种Mock服务系统及Mock服务的处理方法。
背景技术
随着软件系统越来越复杂,大多数企业都采用面向服务的体系架构(Service-Oriented Architecture,简称为SOA)来降低系统间的耦合度,提高服务组件的可重用性。然而,在开发和测试过程中,搭建外部服务系统,与外部服务系统联调,准备服务的测试数据就可能会成为瓶颈,而且可能需要多个人配合,严重浪费人力。其中,SOA是一个组件模型,其将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以一种统一和通用的方式进行交互。
图1是根据现有技术的Mock服务系统的示意图。
如图1所示,图中每个小框都代表一个服务,它们可能部署在同一计算机上,也可能部署在不同的计算机上,对外提供服务,如果“应用1”需要对“客户端1”,“客户端2”提供正常的服务,那么“应用1”依赖的所有服务都必须正常工作,紧密配合,任何一方出了问题,都可能导致客户端的请求处理失败。正因为这样,在开发和测试过程中,为了搭建“应用1”,所依赖的服务才是一个相当麻烦或者困难的事情。
在图1所示的Mock服务系统中,在“应用1”的内部,直接隐藏掉与服务端的通信模块,改为一个假的通信端,在假的通信端内,不直接通过网络请求远程方法调用(RemoteMethod Invocation,简称为RMI)服务,而是返回指定的数据给上层模块。
Mock服务是指虚假的服务程序,其同样接收客户端的请求,并返回结果,对客户端程序来说,与真实服务是一样的。Mock服务与真实服务的唯一差别是:Mock服务不执行具体的业务逻辑,只根据输入参数不同,返回事先已经准备好的结果数据。
在该方案中,服务组1Mock与服务组2Mock等是需要单独开发的,开发工作量大;其次,如果新的服务需要Mock,则需要针对新的服务进行开发,因而Mock服务组的重用性不高,且每个Mock服务都需要单独部署,所以整个Mock服务系统搭建工作繁琐,管理困难,同时,由于服务的返回值基本固定为同一个,修改困难,或者客户端变化后需要重新准备数据,不能满足多种测试场景的需要,此外,现有的Mock服务可能比较简单,不能区分用户,即,同样的请求参数,A用户由于测试需要希望返回成功(即,希望Mock服务的返回值为成功),B用户希望返回失败(即,希望Mock服务的返回值为失败),现有的Mock也无法做到。
针对现有技术中无法在同一个Mock服务系统中对不同的客户端提供Mock服务的问题,目前尚未提出有效的解决方案。
发明内容
为此,本申请的主要目的在于提供一种Mock服务系统及Mock服务的处理方法,以解决现有技术中无法在同一个Mock服务系统中对不同的客户端提供Mock服务的问题。
为了实现上述目的,根据本申请的一个方面,提供了一种Mock服务系统。该Mock服务系统包括:接收模块,用于接收来自客户端的请求,其中,客户端为用于调用MOCK服务的装置;查找模块,用于查找与请求对应的Mock服务,其中,在Mock服务系统中存储有多个Mock服务;以及关联模块,用于建立客户端与查找到的Mock服务的关联关系以便为客户端提供Mock服务。
进一步地,查找模块包括:获取子模块,用于获取客户端的IP地址以及请求的路径;第一列出子模块,用于列出与路径匹配的Mock服务方式列表;第二列出子模块,用于列出Mock服务方式中的数据提取方式列表;以及匹配子模块,用于根据客户端的IP地址与数据提取方式列表中的数据提取方式进行匹配以查找与客户端的IP地址对应的数据提取方式。
进一步地,多个Mock服务包括第一Mock服务,且多个Mock服务中的每个Mock服务均包括服务接口和服务版本,其中,接收模块还用于接收用户上传的第一服务版本,其中,第一服务版本为第一Mock服务的服务版本,Mock服务系统还包括:映射模块,用于建立第一服务版本和第一服务接口的映射关系,其中,第一服务接口为第一Mock服务的服务接口。
进一步地,接收模块用于通过不同的通信方式接收不同的请求。
进一步地,接收模块用于接收来自多个客户端的请求;查找模块用于分别查找与多个客户端的请求对应的Mock服务;以及关联模块用于分别建立多个客户端与查找到的Mock服务的关联关系以便为多个客户端分别提供Mock服务。
为了实现上述目的,根据本申请的一个方面,提供了一种Mock服务的处理方法。该Mock服务的处理方法包括:接收来自客户端的请求,其中,客户端为用于调用MOCK服务的装置;查找与请求对应的Mock服务,其中,在Mock服务系统中存储有多个Mock服务;以及建立客户端与所查找到的Mock服务的关联关系以便为客户端提供Mock服务。
进一步地,查找与请求对应的Mock服务包括:获取客户端的IP地址以及请求的路径;列出与路径匹配的Mock服务方式列表;列出Mock服务方式中的数据提取方式列表;以及根据客户端的IP地址与数据提取方式列表中的数据提取方式进行匹配以查找与客户端的IP地址对应的数据提取方式。
进一步地,在客户端的IP地址改变时,方法还包括:修改客户端的IP地址与数据提取方式的对应关系。
进一步地,接收来自客户端的请求包括:通过不同的通信方式接收不同的请求。
进一步地,多个Mock服务包括第一Mock服务,且多个Mock服务中的每个Mock服务均包括服务接口和服务版本,上述方法还包括:接收用户上传的第一服务版本,其中,第一服务版本为第一Mock服务的服务版本;以及建立第一服务版本和第一服务接口的映射关系,其中,第一服务接口为第一Mock服务的服务接口。
进一步地,一个服务接口中包括一个或多个方法,其中,在Mock服务系统内部,将所有的远程调用都映射为一个方法的调用。
进一步地,接收来自客户端的请求包括:接收来自多个客户端的请求,查找与请求对应的Mock服务,其中,在Mock服务系统中存储有多个Mock服务包括:分别查找与多个客户端的请求对应的Mock服务,建立客户端与所查找到的Mock服务的关联关系以便为客户端提供Mock服务包括:分别建立多个客户端与查找到的Mock服务的关联关系以便为多个客户端分别提供Mock服务。
通过本申请,采用包括以下部分的Mock服务系统:接收模块,用于接收来自客户端的请求;查找模块,用于查找与请求对应的Mock服务,其中,在Mock服务系统中存储有多个Mock服务;以及关联模块,用于建立客户端与所查找到的Mock服务的关联关系以便为客户端提供Mock服务,由于在该Mock服务系统中存储有多个Mock服务,且该Mock服务系统能够根据客户端的请求查找相应的Mock服务以便为客户端提供Mock服务,因而实现了对Mock服务的统一管理,能够使得同一个Mock服务系统对不同的客户端提供Mock服务,解决了现有技术中无法在同一个Mock服务系统中对不同的客户端提供Mock服务的问题。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据现有技术的Mock服务系统的示意图;
图2是根据本申请实施例的Mock服务系统提供Mock服务的示意图;
图3是根据本申请第一实施例的Mock服务系统的结构示意图;
图4是根据本申请第二实施例的Mock服务系统的结构示意图;
图5是根据本申请实施例的Mock服务系统的核心对象的示意图;
图6是根据本申请实施例的Mock服务系统的服务注册流程图;
图7是根据本申请实施例的Mock服务的处理方法的流程图;以及
图8是根据本申请实施例的Mock服务系统对请求的处理流程图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图2是根据本申请实施例的Mock服务系统提供Mock服务的示意图。
如图2所示,该Mock服务系统包括服务组1、服务组2至服务组n多个Mock服务组。该Mock服务系统中的服务都是Mock的,不再依赖下层的所有基础服务,当客户端调用时,直接返回某个给定的结果。
本申请所提到的客户端是相对于服务端来说的,即,客户端为用于调用MOCK服务的装置,服务端为用于提供MOCK服务的装置,在本申请中,Mock服务系统即作为服务端,用于给客户端提供MOCK服务,比如,A装置调用B装置的MOCK服务,B装置又调用C装置的MOCK服务,这时,B装置是A装置的服务端,A装置是客户端,而C装置又是B装置的服务端,B装置是C的客户端。举例而言,A装置需要经过B装置查询第三方所提供的天气服务,而B装置本身又不想联系第三方,则A装置可以通过调用B装置的MOCK服务来实现查询天气服务的目的,其中,B装置不再依赖下层所提供的基础服务,直接根据A装置的查询请求返回一个预先存储的给定结果,即,给A装置提供MOCK服务。
本申请中的服务是指运行在计算机上面的程序,该程序接收客户端程序通过网络发送的参数,然后执行业务逻辑,最后又通过网络将执行结果返回给客户端程序。
该Mock服务系统提供了一个统一的服务Mock平台,将所有需要Mock的服务都纳入这个平台,方便统一管理。应用只需要依赖这一个Mock服务系统即可,用户可以在Mock服务系统上一起设置各个服务的返回值,方便管理,同时,也可以设置为代理调用真实服务,即先调用真实服务,然后把数据保存下来,应用下次访问时,直接返回保存的数据。
由于该Mock服务系统是一个统一的Mock服务系统,因而所有需要Mock的服务不再需要开发,只要在Mock服务系统中注册一个服务,设置服务的提供方式即可(如RMI服务,Webservice服务,Http服务)。其中,Webservice是由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。
Mock服务的返回值也可以自由定义。需要使用Mock服务的用户,可以添加多组测试数据,并设置相应的参数匹配规则,当客户端发送的参数满足用户设置的规则时,则返回对应的返回值。
所有Mock服务的期望数据准备的方式都是统一的,用户的使用成本降低。
不同用户准备的期望数据是相互独立的,可以满足不同的测试人员对不同测试场景的需求。
以下对本申请实施例所提供的Mock服务系统20的结构进行介绍。
图3是根据本申请第一实施例的Mock服务系统20的结构示意图。
如图3所示,该统一的Mock服务系统20包括以下结构:
服务Mock单元21,用于提供Mock服务;
具体地,该服务Mock单元21在接收到客户端的请求后,用于对请求进行处理,并返回用户准备的期望数据。
后台管理单元22,用于对Mock服务进行统一管理。
具体地,对Mock服务进行统一管理可以包括:提供Mock服务的注册,修改,删除功能,以及期望数据新增,修改,删除功能。
优选地,服务Mock单元21包括以下部分:
远程通信模块211:这个模块支持不同的通信方式,比如基于http协议的服务,基于RMI的服务,基于socket的服务等等。这些通信方式是所有服务共享的。
数据协议解析模块212:这个模块主要负责解析通信数据,将他转换为服务接口能够识别的对象。比如Hessian服务,Webservice服务就是基于http协议的,这时就需要提供相应的协议解析模块对http中的数据流进行解析,反序列化里面的java对象,然后封装为一个远程调用,包括接口,方法名,参数等信息。
请求处理模块213:这个模块就相当于真实服务的一个代理实现,它的输入是请求参数,输出是对应的返回值。在这个模块中可以执行用户自定义的代码,然后调用数据提取模块215取得这次请求应该返回的结果数据。
数据提取模块215:负责从用户准备的期望数据集里找出满足与参数匹配的返回值。它调用数据匹配模块214对期望数据进行匹配。
数据匹配模块214:执行用户准备的期望数据匹配规则,满足则返回true,否则返回false。当用户设置所有参数的匹配都满足时,数据提取模块215就会返回这组参数对应的返回值。
后台管理单元22包括:
Mock服务管理模块221:用户可以注册,修改,删除Mock服务。
期望数据管理模块222:对期望数据新增,修改,删除。
图4是根据本申请第二实施例的Mock服务系统20的结构示意图。
如图4所示,该Mock服务系统20包括:
接收模块2111,用于接收来自客户端的请求;优选地,接收模块2111用于通过不同的通信方式接收不同的请求,即,接收模块2111可以支持不同的通信方式,此时,同一Mock服务系统可以接收不同的请求,实现了能够同时为多个客户端或用户提供服务。
查找模块2112,用于查找与请求对应的Mock服务,其中,在Mock服务系统中存储有多个Mock服务;
该查找模块2112还可以包括:
获取子模块2a,用于获取客户端的IP地址以及请求的路径;
第一列出子模块2b,用于列出与路径匹配的Mock服务方式列表;
第二列出子模块2c,用于列出Mock服务方式中的数据提取方式列表;以及
匹配子模块2d,用于根据客户端的IP地址与数据提取方式列表中的数据提取方式进行匹配以查找与客户端的IP地址对应的数据提取方式。
关联模块2113,用于建立客户端与Mock服务的关联关系以便为客户端提供Mock服务。由于在该Mock服务系统中存储有多个Mock服务,且该Mock服务系统能够根据客户端的请求查找相应的Mock服务以便为客户端提供Mock服务,因而实现了对Mock服务的统一管理,能够对不同的客户端提供Mock服务。
优选地,Mock服务系统中存储的多个Mock服务包括第一Mock服务,且多个Mock服务中的每个Mock服务均包括服务接口和服务版本,其中,接收模块2111还用于接收用户上传的第一服务版本,其中,第一服务版本为第一Mock服务的服务版本,
Mock服务系统还包括:
映射模块216,用于建立第一服务版本和第一服务接口的映射关系,其中,第一服务接口为第一Mock服务的服务接口。
通过在增加新的版本时,建立新增加版本与服务接口的映射关系,相比于重新部署Mock服务,可以更容易地实现Mock服务的升级处理。
优选地,接收模块2111用于接收来自多个客户端的请求;
查找模块2112用于分别查找与多个客户端的请求对应的Mock服务;以及
关联模块2113用于分别建立多个客户端与查找到的Mock服务的关联关系以便为多个客户端分别提供Mock服务。
此时,通过同时接收多个客户端的请求以及同时为多个客户端提供Mock服务,提高了Mock服务系统的通用性,使得Mock服务系统能够适用于不同的应用场景。
需要说明的是,上述的接收模块2111至关联模块2113可以是上述实施例中远程通信模块211的组成部分。
以下对上述实施例中提到的Mock服务系统的核心对象进行介绍:
图5是根据本申请实施例的Mock服务系统的核心对象的示意图,在该图中,“1”和“*”表示关系的数量,具体地,“1”对“*”表示1对多的关系。
用户(user):包括用户名和角色,本系统是支持多用户的Mock服务系统,用户可以包括多个角色,同一角色的期望数据是可以共享的,其中,该图中的Mock服务以及Mock服务方式等中的创建人属性以及数据提取方式中的用户名即对应于用户对象。
Mock服务(Mock Service):是对所有远程服务的抽象,其中,每个服务都有一个服务接口,以及服务的版本,服务接口名与服务的版本组合起来代表一个唯一的服务。一个服务接口中包括一个或多个方法。在本申请实施例的Mock服务系统内部,将所有的远程调用都映射为一个方法的调用,比如,对于http的get请求,同样映射到一个接口和一个方法。这样在请求处理与期望数据准备时,都是针对一个具体的方法,从而,统一了所有的远程服务到这一个Mock服务系统。
期望数据(ExpectData):是指用户准备的服务参数匹配规则以及对应的返回值。用户可以准备任意多组期望数据,当客户端请求Mock服务时,Mock服务将实际的输入参数与用户准备的参数匹配规则进行匹配,如果满足规则,则返回对应的返回值,否则继续匹配下一条期望数据,一个Mock服务的每个方法都可以有多组期望数据,期望数据包括方法中每个参数的匹配规则和对应的返回值。当这组期望数据的所有参数匹配规则都与实际参数匹配时,就返回这组期望数据的返回值。
参数匹配器(ArgumentMatcher)是一个匹配接口,负责根据用户设置的匹配规则与调用时的时间参数进行匹配,并返回匹配成功或失败。
Mock服务方式(Exporter)与Mock服务是一对多的关系,即一个Mock服务可以有多种对外提供服务的方式,比如,同一个服务接口可以同时通过Webservice,Hessian和RMI等方式对外提供服务,客户端可以通过任意一种方式请求Mock服务。
远程通信协议(RPCExporter)负责接收客户端的请求与响应。一个远程通信通道上,可以承载多个服务方式,比如,对于http的url:http://Mock.alibaba.com/MockServiceTest,对于A用户定义Webservice服务,所以通过Webservice客户端调用该服务;对于B用户定义它为Hessian服务,所以通过Hessian的客户端调用该服务,对于C用户定义它为一个普通的http页面,所以直接通过http get请求就可以调用该服务。这也是本申请Mock服务系统特有的解决方案。实现方式是,根据客户端的IP去匹配到不同的Mock服务方式,然后采用不同的协议解析数据。
数据提取方式(UserInvoker):本申请Mock服务系统的数据提取方式可以包括:
方式1,从用户自己准备的期望数据集里查找匹配的数据。
方式2,访问真实的服务端,将真实服务的返回结果返回给调用者,同时把返回的结果保存的用户的期望数据集里,下次在有相同的请求直接返回给客户端。
在调用真实服务时,也支持协议的转换,比如客户端在请求Mock系统时使用的是Hessian协议,而真实服务现在是通过RMI方式提供的服务,这时,Mock系统可以通过RMI方式调用真实服务取回数据,然后把数据通过Hessian协议返回给客户端。
方式3,用户自己实现数据提取接口,扩展平台的功能。
需要说明的是,本申请Mock服务系统的数据提取方式也可以是以上方式1至方式3的任意组合。
总之,不同用户可以设置不同的数据提取方式,这也体现了本申请Mock服务系统在数据提取方式上的优越性。
在上述实施例中通过核心对象对Mock服务进行了介绍,以下对Mock服务的配置进行介绍,具体地,一个Mock服务包括一个服务接口、一个服务版本和多个方法,这些信息均在配置文件中进行定义。
图6是根据本申请实施例的Mock服务系统的服务注册流程图。
如图6所示,Mock服务系统的服务注册流程包括以下步骤:
步骤S51,配置Mock服务(MockService)
具体地,该步骤S51还可以包括以下步骤:
步骤S511,用户上传配置文件,在该配置文件中定义服务的接口,版本,以及所有方法名,参数,返回值类型。由于本申请实施例的Mock服务系统定义了一个通用的服务配置文件,通过该服务配置文件,可以实现服务统一配置,注册。具体格式可以如下所示:
服务配置文件:
步骤S512,上传接口依赖的class文件或者jar包。
步骤S513,系统自动创建一个classloader,用来加载该Service的相关class文件。实现多个服务之间的隔离,从而在一个平台上支持多个服务的Mock。
步骤S52,配置Mock服务的方式(Exporter)
具体地,该步骤S52还可以包括以下步骤:
步骤S521,选择提供服务的方式:即设置服务使用的远程通信协议,以及
数据协议,比如:http,http(webservice),rmi
步骤S522,设置服务的路径,即,设置服务对应的URL地址或者服务名称
步骤S523,指定服务的端口,即,对提供给客户端访问的端口,比如web服务一般是80端口.RMI服务默认是1099端口等等。
此外,还可以设置拦截器(Filter),对请求进行拦截处理。这里的拦截器是针对当前的Mock服务方式的。只要客户端调用的是这个服务,都会执行这个拦截器。
一个Mock服务可以支持多种方式输出,比如rmi,webservice。当选择一种方式后,系统自动生成一个Exporter对象,注册到相应的RPCExporter中。
步骤S53,准备期望数据(ExpectData),这时本系统实现服务数据灵活配置,支持复杂的服务接口Mock的关键。
步骤S531,设置方法里每个参数的匹配器,系统支持多种参数匹配器,比如:
断言脚本:assert(“hello Mock”,ARG);表示当参数是string,且值为helloMock时才匹配成功。ARG代表当前参数。
javascript脚本:if(ARG==“hello Mock”)return true;else return false;
每个参数都可以设置这样的匹配规则。
步骤S532,设置方法返回值,系统支持多种设置方法:比如:
a,java脚本:m=new MemberDO();m.name=“Mock”return m;表示返回一个MemberDO对象,Mock服务系统会执行这句代码,构造一个MemberDO对象,返回给客户端。
b,json格式的数据:{‘name’:’Mock’},Mock服务系统会根据服务配置文件里的类型定义,将json串转换为对应的MemberDO对象,返回给客户端。
</com.alibaba.Domain.MemberDO>Mock服务系统会将这个xml串反序列化为MemberDO对象,返回给客户端。
步骤S533,数据提取模块215在提取数据时,首先列出用户准备的期望数据,然后依次将每个实际的参数与设置的匹配规则进行匹配。当发现一组数据的所有参数规则都匹配成功时,则返回对应的返回值。
步骤S54,配置数据提取方式(UserInvoker)
这时Mock服务系统支持多用户数据隔离以及“核心对象介绍”中提到的一个远程通信通道上,可以承载多个服务方式”的关键。实现方式是做了两层映射。第一层,根据客户端IP找到匹配的UserInvoker,第二层,根据UserInvoker对应的用户,找到用户准备的数据以及数据提取方式。及时客户端IP变了,只要修改第一层的对应关系即可,从而保持了用户期望数据的稳定性,可重用性。这里有几个属性设置:
步骤S541,设置数据提取方式:首先选择一个Mock服务方式,一个用户对一个Mock服务方式只能设置一个数据提取方式。数据提取方式有多种见图5所示的“核心对象介绍”。
步骤S542,设置客户端IP地址规则,当某个客户端请求Mock服务时,系统会取出客户端的IP,与所有用户设置的IP规则进行匹配,如果匹配成功则找到了用户以及数据提取方式。所以,这里的IP规则具有排他性,在同一个服务方式下,多个用户设置的IP规则不能有交叉,系统可以通过校验来完成。
步骤S543,设置拦截器(Filter),对请求进行拦截处理。这里的拦截器是针对当前用户的,只有匹配到当前用户的执行方式时,才会执行拦截器。
需要说明的是,上述的步骤S53和步骤S54可以先后执行,也可以同时执行,不分先后。
图7是根据本申请实施例的Mock服务的处理方法的流程图。
如图7所示,该方法包括以下步骤:
步骤S61,接收来自客户端的请求;
例如,通过远程通信模块211接收来自客户端的请求。
优选地,为了能够同时服务于不同通信类型的用户,在该步骤中,可以通过不同的通信方式接收不同的请求。
优选地,为了能够同时为多个客户端提供服务,在该步骤中,可以是同时接收来自多个客户端的请求。
步骤S62,查找与请求对应的Mock服务,其中,在Mock服务系统中存储有多个Mock服务;
例如,通过远程通信模块211在Mock服务系统中查找与请求对应的Mock服务。
该步骤S62还可以包括:
步骤S621,获取客户端的IP地址以及请求的路径;
步骤S622,列出与路径匹配的Mock服务方式列表;
步骤S623,列出Mock服务方式中的数据提取方式列表;以及
步骤S624,根据客户端的IP地址与数据提取方式列表中的数据提取方式进行匹配以查找与客户端的IP地址对应的数据提取方式。
相应于步骤S62中可以是同时接收来自多个客户端的请求,在该步骤中,可以分别查找与多个客户端的请求对应的Mock服务
步骤S63,建立客户端与所查找到的Mock服务的关联关系以便为客户端提供Mock服务。
例如,通过远程通信模块211建立客户端与Mock服务的关联关系以便为客户端提供Mock服务。
相应于步骤S62中可以是同时接收来自多个客户端的请求,在该步骤中,分别建立多个客户端与查找到的Mock服务的关联关系以便为多个客户端分别提供Mock服务。
在该Mock服务的处理方法中,在接收到客户端的请求后,在Mock服务系统中查找相应的Mock服务,可以看出,在Mock服务系统中实现了对Mock服务的统一管理,各个Mock服务不再是仅仅只能服务于唯一的应用。
优选地,在客户端的IP地址改变时,该Mock服务的处理方法还可以包括:
步骤S64,修改客户端的IP地址与数据提取方式的对应关系。
通过步骤S64,在客户端IP变化时,只要修改IP地址与数据提取方式的对应关系即可,无需修改期望数据,从而保持了用户期望数据的稳定性,可重用性。
Mock服务系统中的多个Mock服务可以包括第一Mock服务,且多个Mock服务中的每个Mock服务均包括服务接口和服务版本,优选地,该Mock服务的处理方法还包括:
步骤S65,接收用户上传的第一服务版本,其中,第一服务版本为第一Mock服务的服务版本;以及
步骤S66,建立第一服务版本和第一服务接口的映射关系,其中,第一服务接口为第一Mock服务的服务接口。
通过步骤S65和步骤S66,在增加新的版本,即第一服务版本时,通过建立新增加版本与服务接口的映射关系,相比于重新部署Mock服务,可以更容易地实现Mock服务的升级处理。
优选地,一个服务接口中包括一个或多个方法,其中,在Mock服务系统内部,将所有的远程调用都映射为一个方法的调用。
图8是根据本申请实施例的Mock服务系统对请求的处理流程图。
如图8所示,Mock服务系统对请求的处理流程如下:
步骤S1,客户端发起请求
客户端调用Mock服务的方式与调用真实服务的方式是一样的,只需修改服务地址为Mock服务的地址即可。
步骤S2,接收请求
远程通信模块211接收到客户端的请求,取得客户端的IP地址与请求服务的地址,比如Http请求的路径是什么,RMI请求对应的服务名称(简称路径)是什么。
步骤S3,查找当前请求对应的服务方式,用户以及数据提取方式
具体地,步骤S3还可以包括以下步骤:
步骤S31,远程通信模块211取得客户端的IP地址以及被请求服务的路径;
步骤S32,远程通信模块211根据服务请求路径,列出登记在该远程通信协议上的与服务路径匹配的“Mock服务方式”列表;
步骤S33,远程通信模块211依次列出Mock服务方式中的数据提取方式列表;
步骤S34,远程通信模块211根据客户端的IP地址,与数据提取方式中设置的IP匹配规则进行匹配,如果不匹配则继续匹配,直到找到一个匹配的数据提取方式位置;
步骤S35,远程通信模块211将匹配到的Mock服务方式,以及对应的数据提取方式,以及对应的用户即为当前这次客户端请求所对应的服务与用户。
步骤S4,委托解析数据
远程通信模块211将请求转交给协议数据解析模块212。
步骤S5,解析请求的方法与参数
数据解析模块212根据当前Mock服务方式所指定的数据协议,解析数据流,得到这次远程调用的方法和参数列表。将所有远程调用都统一起来,即使对Http服务也映射为一个方法调用。
步骤S6,委托处理请求
远程通信模块211将请求的参数封装,委托给请求处理模块213处理请求。
步骤S7,构造请求处理链
请求处理模块213采用责任链模式,处理请求,用户可以设置自己的拦截器(Filter)加入请求到处理链中,对请求进行处理,从而扩展平台的功能。
这里的拦截器也体现了用户的之间的隔离性,在Mock服务方式与数据提取方式两个地方配置的拦截器的作用范围是不一样的,前者是对该Mock服务方式的所有请求都会拦截,后者是指定的客户端IP发出的请求才会执行,从而提高系统的可扩展性或灵活性。提高不同用户对Mock服务的可定制功能。
步骤S8,执行请求
请求处理模块213执行请求处理链。
步骤S9,提取用户数据
处理链的最后一步就是提取用户数据。
步骤S10,委托提取数据
是根据当前用户设置的数据提取方式委托给具体的提取测试模块通过数据提取策略来完成的。
步骤S11,获取期望数据
每种策略的功能就是根据请求的方法参数,返回对应的服务结果。策略分类见“数据提取方式(UserInvoker)”。
步骤S12,返回数据
执行策略将服务的返回值返回给数据提取模块215。
步骤S13,返回数据
数据提取模块215将服务的返回值,返回给请求处理模块213。
步骤S14,返回数据
请求处理模块213将服务的返回值,返回给数据协议模块。
步骤S15,将数据按协议格式封装
数据协议模块将返回值按照指定的协议对数据进行封装,就像tcp/ip协议族一样,每个层次都有相应的数据包装。
步骤S16,返回服务结果
数据协议模块将数据返回给远程通信模块211。
步骤S17,对数据进行封装:远程通信模块211对数据进行封装,加上数据包头。同14的原理
步骤S18,返回给客户端
这时Mock服务系统就将用户的这次请求的期望结果返回给了客户端。由于Mock服务所使用的协议是与真实服务一样的,所以对客户端来说是区分不出来的,做到了对客户端的完全透明。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种Mock服务的处理方法,其特征在于包括:
接收来自客户端的请求,其中,所述客户端为用于调用MOCK服务的装置;
查找与所述请求对应的Mock服务,其中,在Mock服务系统中存储有多个Mock服务;
建立所述客户端与所查找到的Mock服务的关联关系以便为所述客户端提供Mock服务,
其中,所述多个Mock服务包括第一Mock服务,且所述多个Mock服务中的每个Mock服务均包括服务接口和服务版本,所述方法还包括:
接收用户上传的第一服务版本,其中,所述第一服务版本为所述第一Mock服务的服务版本;以及
建立所述第一服务版本和第一服务接口的映射关系,其中,所述第一服务接口为所述第一Mock服务的服务接口。
2.根据权利要求1所述的Mock服务的处理方法,其特征在于,查找与所述请求对应的Mock服务包括:
获取所述客户端的IP地址以及所述请求的路径;
列出与所述路径匹配的Mock服务方式列表;
列出所述Mock服务方式中的数据提取方式列表;以及
根据所述客户端的IP地址与所述数据提取方式列表中的数据提取方式进行匹配以查找与所述客户端的IP地址对应的数据提取方式。
3.根据权利要求2所述的Mock服务的处理方法,其特征在于,在所述客户端的IP地址改变时,所述方法还包括:
修改所述客户端的IP地址与所述数据提取方式的对应关系。
4.根据权利要求1所述的Mock服务的处理方法,其特征在于,接收来自客户端的请求包括:
通过不同的通信方式接收不同的请求。
5.根据权利要求1所述的Mock服务的处理方法,其特征在于,一个所述服务接口中包括一个或多个方法,其中,在所述Mock服务系统内部,将所有的远程调用都映射为一个方法的调用。
6.根据权利要求1所述的Mock服务的处理方法,其特征在于,
接收来自客户端的请求包括:
接收来自多个客户端的请求,
查找与所述请求对应的Mock服务,其中,在Mock服务系统中存储有多个Mock服务包括:
分别查找与所述多个客户端的请求对应的Mock服务,
建立所述客户端与所查找到的Mock服务的关联关系以便为所述客户端提供Mock服务包括:
分别建立所述多个客户端与查找到的Mock服务的关联关系以便为所述多个客户端分别提供Mock服务。
7.一种Mock服务系统,其特征在于包括:
接收模块,用于接收来自客户端的请求,其中,所述客户端为用于调用MOCK服务的装置;
查找模块,用于查找与所述请求对应的Mock服务,其中,在所述Mock服务系统中存储有多个Mock服务;
关联模块,用于建立所述客户端与所查找到的Mock服务的关联关系以便为所述客户端提供Mock服务,
其中,所述多个Mock服务包括第一Mock服务,且所述多个Mock服务中的每个Mock服务均包括服务接口和服务版本,
其中,所述接收模块还用于接收用户上传的第一服务版本,其中,所述第一服务版本为所述第一Mock服务的服务版本,
所述Mock服务系统还包括:
映射模块,用于建立所述第一服务版本和第一服务接口的映射关系,其中,所述第一服务接口为所述第一Mock服务的服务接口。
8.根据权利要求7所述的Mock服务系统,其特征在于,所述查找模块包括:
获取子模块,用于获取所述客户端的IP地址以及所述请求的路径;
第一列出子模块,用于列出与所述路径匹配的Mock服务方式列表;
第二列出子模块,用于列出所述Mock服务方式中的数据提取方式列表;以及
匹配子模块,用于根据所述客户端的IP地址与所述数据提取方式列表中的数据提取方式进行匹配以查找与所述客户端的IP地址对应的数据提取方式。
9.根据权利要求7所述的Mock服务系统,其特征在于,所述接收模块用于通过不同的通信方式接收不同的请求。
10.根据权利要求7所述的Mock服务系统,其特征在于,
所述接收模块用于接收来自多个客户端的请求;
所述查找模块用于分别查找与所述多个客户端的请求对应的Mock服务;以及
所述关联模块用于分别建立所述多个客户端与查找到的Mock服务的关联关系以便为所述多个客户端分别提供Mock服务。
CN201210052142.3A 2012-03-01 2012-03-01 Mock服务系统及Mock服务的处理方法 Active CN103297475B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210052142.3A CN103297475B (zh) 2012-03-01 2012-03-01 Mock服务系统及Mock服务的处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210052142.3A CN103297475B (zh) 2012-03-01 2012-03-01 Mock服务系统及Mock服务的处理方法

Publications (2)

Publication Number Publication Date
CN103297475A CN103297475A (zh) 2013-09-11
CN103297475B true CN103297475B (zh) 2017-03-01

Family

ID=49097787

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210052142.3A Active CN103297475B (zh) 2012-03-01 2012-03-01 Mock服务系统及Mock服务的处理方法

Country Status (1)

Country Link
CN (1) CN103297475B (zh)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105988922B (zh) * 2015-02-06 2018-11-06 阿里巴巴集团控股有限公司 应用程序的测试方法、装置及服务器
CN106294106B (zh) * 2015-05-27 2019-03-22 航天信息股份有限公司 Web应用系统的测试方法及装置
CN104899142B (zh) * 2015-06-10 2018-04-27 北京嘀嘀无限科技发展有限公司 一种远程mock测试方法及装置
CN106528393A (zh) * 2015-09-09 2017-03-22 北京京东尚科信息技术有限公司 一种WebService的Mock测试的方法及装置
CN107179984A (zh) * 2016-03-10 2017-09-19 北京京东尚科信息技术有限公司 一种接口mock方法及接口测试方法
CN105975393B (zh) * 2016-05-04 2020-09-15 腾讯科技(深圳)有限公司 一种页面显示的检测方法及系统
CN106528400A (zh) * 2016-09-22 2017-03-22 深圳峰创智诚科技有限公司 Mock测试方法和装置
CN107122292A (zh) * 2016-10-21 2017-09-01 北京小度信息科技有限公司 一种模拟服务的方法及系统
CN108347356B (zh) * 2017-01-24 2020-12-22 北京京东尚科信息技术有限公司 一种多协议单元测试方法、装置、电子设备和存储介质
CN109271310B (zh) * 2017-07-18 2022-07-05 北京京东尚科信息技术有限公司 移动应用程序网络功能的开发测试方法和装置
CN107729163B (zh) * 2017-09-30 2021-06-15 上海高顿教育培训有限公司 一种基于不同后台的统一交互方法
CN107659455B (zh) * 2017-10-16 2020-01-03 武汉斗鱼网络科技有限公司 一种iOS端Mock数据的方法、存储介质、设备及系统
CN108345535B (zh) * 2017-12-26 2022-03-04 创新先进技术有限公司 mock测试方法、装置及设备
CN108427635A (zh) * 2018-01-03 2018-08-21 深圳壹账通智能科技有限公司 快速测试web页面的方法、服务器及计算机可读存储介质
CN108446225A (zh) * 2018-03-06 2018-08-24 平安科技(深圳)有限公司 模拟接口的创建装置、方法及计算机可读存储介质
CN108388519A (zh) * 2018-03-19 2018-08-10 车智互联(北京)科技有限公司 基于SpringBoot服务的Mock测试方法
CN108519948A (zh) * 2018-04-04 2018-09-11 上海携程商务有限公司 日志驱动的接口自动化测试方法及系统
CN108563567B (zh) * 2018-04-09 2023-07-14 绍兴君鸿智能科技有限公司 自动化测试方法、装置、设备及计算机可读存储介质
CN108600255B (zh) * 2018-05-07 2022-02-01 平安普惠企业管理有限公司 Mock服务管理方法、装置、计算机设备以及存储介质
CN109768951A (zh) * 2018-08-17 2019-05-17 付东光 远程模拟数据方法及远程虚拟服务器
CN109491905A (zh) * 2018-11-02 2019-03-19 北京金山云网络技术有限公司 前端测试方法、装置及电子设备
CN109522094A (zh) * 2018-11-20 2019-03-26 郑州云海信息技术有限公司 一种软件演示方法、系统和计算机设备
CN109688202B (zh) * 2018-12-04 2021-07-02 北京腾云天下科技有限公司 一种接口数据的处理方法、装置、计算设备及存储介质
CN111324525A (zh) * 2018-12-14 2020-06-23 北京奇虎科技有限公司 一种Mock服务处理方法、装置及Mock服务系统
CN110727524A (zh) * 2019-10-17 2020-01-24 广州欢聊网络科技有限公司 一种实现远程过程调用的方法及装置
CN111858083A (zh) * 2019-12-30 2020-10-30 北京嘀嘀无限科技发展有限公司 一种远程服务的调用方法、装置、电子设备及存储介质
CN111143224A (zh) * 2019-12-30 2020-05-12 广州酷狗计算机科技有限公司 桩服务的实现方法、装置、设备及计算机存储介质
CN111600928B (zh) * 2020-04-07 2022-11-22 深圳震有科技股份有限公司 一种模拟服务控制方法、智能终端及存储介质
CN111596910A (zh) * 2020-04-20 2020-08-28 微梦创科网络科技(中国)有限公司 一种Mock服务平台及方法
CN111752625A (zh) * 2020-06-23 2020-10-09 京东数字科技控股有限公司 用于接口mock的方法和装置
CN112329854B (zh) * 2020-11-05 2023-07-28 上海哔哩哔哩科技有限公司 广告素材图片裁剪校验方法、装置
CN112383434B (zh) * 2020-11-17 2023-08-08 Oppo广东移动通信有限公司 网络请求的接口模拟方法、装置、电子设备和存储介质
CN113342667A (zh) * 2021-06-18 2021-09-03 杭州网易再顾科技有限公司 数据处理方法、装置、电子设备以及计算机可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101286131A (zh) * 2007-04-09 2008-10-15 国际商业机器公司 服务测试方法和服务测试系统
CN101398779A (zh) * 2007-09-26 2009-04-01 国际商业机器公司 测试逻辑与服务器端对象的松耦合式测试方法和系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6889160B2 (en) * 2003-05-30 2005-05-03 Hewlett-Packard Development Company, L.P. Simulation of network service test environments

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101286131A (zh) * 2007-04-09 2008-10-15 国际商业机器公司 服务测试方法和服务测试系统
CN101398779A (zh) * 2007-09-26 2009-04-01 国际商业机器公司 测试逻辑与服务器端对象的松耦合式测试方法和系统

Also Published As

Publication number Publication date
CN103297475A (zh) 2013-09-11

Similar Documents

Publication Publication Date Title
CN103297475B (zh) Mock服务系统及Mock服务的处理方法
US7219350B2 (en) Dynamic server page meta-engines with data sharing for dynamic content and non-JSP segments rendered through other engines
CN102916995B (zh) 应用托管方法及系统
CN107179984A (zh) 一种接口mock方法及接口测试方法
CN106161399B (zh) 一种安全服务交付方法及系统
US20070245013A1 (en) Cross domain provisioning methodology and apparatus
KR20080111005A (ko) 서비스를 생성, 수행 및 매핑하는 시스템 및 방법
US9037695B2 (en) Management of networked resources on different platforms with a common interface
CN102055813A (zh) 一种网络应用的访问控制方法及其装置
CN112541190B (zh) 基于统一用户信息的地图分权控制方法及控制系统
WO2019119322A1 (zh) 检测系统、方法及相关装置
CN109474936A (zh) 应用于多个lora网关之间的物联网通讯方法及系统
CN112039868A (zh) 防火墙策略验证方法、装置、设备及存储介质
CN104363251A (zh) 网站安全检测方法与装置
CN104378389A (zh) 网站安全检测方法与装置
CN105282128A (zh) 一种基于长连接的双向调用方法及系统
CN105893055A (zh) 流程引擎平台化触发方法
CN104363252A (zh) 网站安全检测方法与装置
CN104811922A (zh) 一种相邻节点注册方法和装置、跨节点注册方法和系统
CN104991817A (zh) 一种信息系统可配置集成方法及系统
CN109343983A (zh) 功能模块间的信息交互方法、装置、设备及存储介质
CA2248634C (en) Common connector framework
CN105516269A (zh) 应用的配置方法和应用的配置装置
CN107105004B (zh) 跨平台的服务调用方法及装置
WO2023125773A1 (zh) 大规模微服务集群场景下的全局异常处理方法和平台

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1184611

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1184611

Country of ref document: HK