CN104683386B - 可定制响应的桩服务实现方法及装置 - Google Patents
可定制响应的桩服务实现方法及装置 Download PDFInfo
- Publication number
- CN104683386B CN104683386B CN201310615914.4A CN201310615914A CN104683386B CN 104683386 B CN104683386 B CN 104683386B CN 201310615914 A CN201310615914 A CN 201310615914A CN 104683386 B CN104683386 B CN 104683386B
- Authority
- CN
- China
- Prior art keywords
- response
- request message
- title
- message title
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3414—Workload generation, e.g. scripts, playback
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开一种可定制响应的桩服务实现方法及装置,本发明实施例从协议定义文件中获取请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系;接收到测试请求后,得到该测试请求对应的请求消息名称,按照获取的所述映射关系,查找与该请求消息名称对应的响应消息名称;根据获取的响应消息名称,动态生成所述响应消息名称对应的响应消息对象;根据动态生成的所述响应消息对象,按照预设的规则配置文件,动态设置所述响应消息对象对应的响应字段值;具有通过定义规则配置文件自动生成定制的桩服务,无需编写与条件逻辑无关代码,极大地减小了构建桩服务的开发的工作量。
Description
技术领域
本发明涉及计算机技术,尤其涉及一种可定制响应的桩服务实现方法及装置。
背景技术
Protobuf即Google Proto Buffers,是由google开发并开源的一种数据交互格式,可用于结构化数据串行化,按照其定义的接口语言对消息结构定义,利用其提供的编译器protoc生成对消息结构进行访问的接口代码。
如图1所示,图1是现有的打桩测试模型一实施例功能模块示意图;图1所示的“驱动模块+被测模块+桩服务”是目前比较成熟的基于Protobuf的服务器模块测试模式之一,驱动模块发送请求驱动被测模块和后端交互,桩服务模拟真实后端服务并返回响应。在具体的测试场景中,通常需要构建桩服务以模拟后端依赖模块进行测试。基于Protobuf,利用现有方式创建的桩服务中,为了适用不同的被测系统,每个桩服务对每一种请求都要写一套请求解析、响应封装的方法,实现过程十分繁琐,且在对象的响应字段较多时,需要编写大量重复的代码,消息对象的请求和响应的逻辑关系并不突出;这是由于现有技术通常将消息对象的请求和响应的关系静态地写在代码中,不容易扩展。
发明内容
鉴于此,有必要提供一种可定制响应的桩服务实现方法及装置,以解决将桩服务的消息对象的请求和响应的关系静态地写在代码中的问题。
本发明实施例公开了一种可定制响应的桩服务实现方法,包括以下步骤:
从协议定义文件中获取请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系;
接收到测试请求后,得到该测试请求对应的请求消息名称,按照获取的所述映射关系,查找与该请求消息名称对应的响应消息名称;
根据获取的响应消息名称,动态生成所述响应消息名称对应的响应消息对象;
根据动态生成的所述响应消息对象,按照预设的规则配置文件,动态设置所述响应消息对象对应的响应字段值。
本发明实施例还公开一种可定制响应的桩服务实现装置,包括:
参数获取模块,用于从协议定义文件中获取请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系;
响应生成模块,用于接收到测试请求后,得到该测试请求对应的请求消息名称,按照获取的所述映射关系,查找与该请求消息名称对应的响应消息名称;根据获取的响应消息名称,动态生成所述响应消息名称对应的响应消息对象;
第一设置模块,用于根据动态生成的所述响应消息对象,按照预设的规则配置文件,动态设置所述响应消息对象对应的响应字段值。
本发明实施例从协议定义文件中获取请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系;接收到测试请求后,得到该测试请求对应的请求消息名称,按照获取的所述映射关系,查找与该请求消息名称对应的响应消息名称;根据获取的响应消息名称,动态生成所述响应消息名称对应的响应消息对象;根据动态生成的所述响应消息对象,按照预设的规则配置文件,动态设置所述响应消息对象对应的响应字段值;相较于现有技术中,将消息对象的请求和响应的关系静态地写在代码中的方法,本发明实施例具有通过定义规则配置文件自动生成定制的桩服务,无需编写与条件逻辑无关代码,极大地减小了构建桩服务的开发的工作量。
附图说明
图1是现有的打桩测试模型一实施例功能模块示意图;
图2是本发明可定制响应的桩服务实现方法第一实施例流程示意图;
图3是本发明可定制响应的桩服务实现方法第二实施例流程示意图;
图4是本发明可定制响应的桩服务实现方法第三实施例流程示意图;
图5是本发明可定制响应的桩服务实现装置第一实施例功能模块示意图;
图6是本发明可定制响应的桩服务实现装置第二实施例功能模块示意图;
图7是本发明可定制响应的桩服务实现装置第三实施例功能模块示意图。
本发明实施例目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
以下结合说明书附图及具体实施例进一步说明本发明的技术方案。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。本发明下述的具体实施方式中,仅以Protobuf为例来描述本发明可定制响应的桩服务实现方法及装置的实施过程;当然,其他序列化协议也可以按照本发明实施例的思想来执行对应操作,在此不再一一穷举和赘述。
图2是本发明可定制响应的桩服务实现方法第一实施例流程示意图;如图2所示,本发明可定制响应的桩服务实现方法包括以下步骤:
步骤S01、从协议定义文件中获取请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系;
服务器从协议定义文件如proto定义文件中获取请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系,其获取方式包括:
在协议定义文件如proto定义文件中定义服务接口,基于定义的服务接口增加类服务编译选项,得到请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系;在具体的应用场景中,比如利用protoc编译生成的python代码提供的反射机制,得到请求消息名称;并利用python代码,在proto中定义service接口,增加py_generic_services=true编译选项后生成的代码中便带有请求消息名称和响应消息名称的对应关系,即上述的请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系;
或者,直接对proto定义文件进行解析,从对proto定义文件的文本分析结果中,获取请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系。
步骤S02、接收到测试请求后,得到该测试请求对应的请求消息名称,按照获取的所述映射关系,查找与该请求消息名称对应的响应消息名称;
步骤S03、根据获取的响应消息名称,动态生成所述响应消息名称对应的响应消息对象;
接收到测试请求后,得到该测试请求对应的请求消息名称;利用序列化协议如protobuf提供的自省特性,可以根据请求消息名称动态创建对应的消息对象;比如,根据请求消息名称和请求消息体,获得请求消息对应的消息对象:
msg=google.protobuf.reflection.ParseMessage(pb2.DESCRIPTOR.message_types_by_name[消息名称],消息体)。
根据获取的请求消息名称及请求消息名称与响应消息名称的映射关系,查找与该请求消息名称对应的响应消息名称,并获取与该请求消息名称对应的响应消息名称。
根据获取的响应消息名称,动态生成该响应消息名称对应的响应消息对象:
desc=pb2.DESCRIPTOR.message_types_by_name[self.respname]
class RespClass(google.protobuf.message.Message):
__metaclass__=google.protobuf.reflection.GeneratedProtocolMessageType
DESCRIPTOR=desc
msg=RespClass()。
步骤S04、根据动态生成的所述响应消息对象,按照预设的规则配置文件,动态设置所述响应消息对象对应的响应字段值。
本实施例中,引入规则配置文件,即根据请求数据是否满足规则配置的条件来返回不同的数据。规则配置文件静态地定义了桩服务的行为,通过编写配置文件能快速构建一个满足预期逻辑的桩逻辑,适用于不同的测试场景。该规则配置文件中包含了对应的规则,即不同的请求对应着不同的响应,当接收到测试请求时,查找规则配置文件中对应于该测试请求的响应消息名称;根据查找到的响应消息名称,动态生成响应消息对象;从而根据消息对象及规则配置文件,动态设置所述响应消息对象对应的响应字段值。
本实施例中,在规则配置文件中引入规则(rule)的概念,每条规则有其触发的条件(Trigger)如上述的测试请求和满足条件时相应的动作(Action),如上述动态设置的响应字段值。比如,Trigger的描述对象为请求反序列化后的各字段值,Action的执行对象为响应字段,利用动态语言可执行字符串形式的代码的特性,可直接用代码的形式描述这些条件和动作。在接收到每个测试请求时,服务器反序列化后依次检查每条规则,如果满足Trigger则触发相应的Action执行,否则跳过检查下面的规则,直到规则检查完毕。在一优选的实施例中,当第一个rule的Trigger为True(真)时,相应的Action一定被触发,相当于为响应设置了默认值,如果后面的规则都不满足,则返回各字段为默认值的响应数据包。
本发明实施例从协议定义文件中获取请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系;接收到测试请求后,得到该测试请求对应的请求消息名称,按照获取的所述映射关系,查找与该请求消息名称对应的响应消息名称;根据获取的响应消息名称,动态生成所述响应消息名称对应的响应消息对象;根据动态生成的所述响应消息对象,按照预设的规则配置文件,动态设置所述响应消息对象对应的响应字段值;相较于现有技术中,将消息对象的请求和响应的关系静态地写在代码中的方法,本发明实施例具有通过定义规则配置文件自动生成定制的桩服务,无需编写与条件逻辑无关代码,极大地减小了构建桩服务的开发的工作量。
图3是本发明可定制响应的桩服务实现方法第二实施例流程示意图;本实施例与图2所述实施例的区别是,除了通过规则配置文件中配置的规则来控制响应消息对应的字段值外,本发明实施例还提供了远程调用接口供自动化测试用例使用。本发明实施例利用RPC(Remote Procedure Call,远程过程调用)远程控制技术驱动客户端动态控制桩服务,可以令桩服务返回任意数据。旁路控制桩服务是对规则配置文件的补充,因为在自动化场景下,不同的测试用例需要桩服务返回不同的值,比如正常用例响应中某字段应该是非空字符串,异常用例可能需要该字段为空字符串,这就需要桩服务的响应字段能动态更改。
如图3所示,本发明可定制响应的桩服务实现方法包括以下步骤:
步骤S01、从协议定义文件中获取请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系;
服务器从协议定义文件如proto定义文件中获取请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系,其获取方式包括:
在协议定义文件如proto定义文件中定义服务接口,基于定义的服务接口增加类服务编译选项,得到请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系;在具体的应用场景中,比如利用protoc编译生成的python代码提供的反射机制,得到请求消息名称;并利用python代码,在proto中定义service接口,增加py_generic_services=true编译选项后生成的代码中便带有请求消息名称和响应消息名称的对应关系,即上述的请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系;
或者,直接对proto定义文件进行解析,从对proto定义文件的文本分析结果中,获取请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系。
步骤S12、调用可更改响应字段值的远程调用接口;
步骤S13、接收到测试请求后,得到该测试请求对应的请求消息名称,根据所述测试请求对应的测试规则,动态更改与所述请求消息名称映射的响应消息名称对应的响应字段值。
RPC即远程过程调用,是一种通过网络从远程服务程序上请求服务,而不需要了解底层网络技术的协议。RPC使用C/S(Client/Server,客户端/服务器)模型,客户端可以像一般的本地过程一样调用远程服务接口;本发明实施例中,可以采用RPYC(Remote PythonCall,远程Python调用)框架或者RPC对应的其他形式的框架来提供远程调用接口。
在接收到测试请求之前调用该远程调用接口对应的响应字段的值,则在下次接收到测试请求时,下次接收到测试请求获取的就是该远程调用接口所对应的响应字段的值。本实施例中,服务器调用该可更改响应字段值的远程调用接口,在接收到测试请求后,得到该测试请求对应的请求消息名称,根据该测试请求对应的测试规则,动态更改与该请求消息名称映射的响应消息名称对应的响应字段值。可以理解为,服务器能够根据该测试请求所对应的测试规则的具体需求,动态返回与该请求消息名称映射的响应消息名称对应的响应字段值。
本实施例中,服务器调用的该可更改响应字段值的远程调用接口,可以提供在不重启桩程序的情况下控制响应字段,其优先级高于图2所述实施例中的,按照预设的规则配置文件动态设置响应消息对象对应的响应字段值。
本发明实施例从协议定义文件中获取请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系,调用可更改响应字段值的远程调用接口;接收到测试请求后,得到该测试请求对应的请求消息名称,根据所述测试请求对应的测试规则,动态更改与所述请求消息名称映射的响应消息名称对应的响应字段值;具有根据测试对象及具体的测试用例,灵活更改响应字段的有益效果;另外,由于桩服务的测试请求和响应字段没有确定的关系,且桩服务经常需要设置异常的响应字段来测试被测对象的异常处理能力,本发明实施例能够根据各测试用例的具体情况,动态更改返回的响应字段值;本发明实施例通过旁路动态控制返回响应字段的方式,应用于自动化用例中按用例要求控制返回响应数据的场景中,其有益效果将更为显著。
图4是本发明可定制响应的桩服务实现方法第三实施例流程示意图;本发明实施例与图2所述实施例的区别是,增加了步骤S10、设置规则配置文件;本发明实施例仅对步骤S10进行具体描述,有关本发明可定制响应的桩服务实现方法所涉及的其他步骤请参照相关实施例的具体描述,在此不再赘述。
如图4所示,本发明可定制响应的桩服务实现方法在步骤S01、从协议定义文件中获取请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系,之前还包括:
步骤S10、设置规则配置文件。
本发明实施例引入了规则配置文件,比如设置根据请求数据是否满足规则配置的条件来返回不同的数据这一规则。本实施例中,设置规则配置文件可以理解为静态的定义了桩服务的行为,通过编写配置文件能快速构建一个满足预期逻辑的桩逻辑,适用于不同的测试场景。
本实施例中,利用proto的自省机制,得到各请求消息类型中分别对应的所有字段名;对所述请求消息进行反序列化处理后,遍历这些字段的值,得到所述请求消息中各字段名分别对应的字段值,并建立各字段名与对应的字段值的映射关系并保存,可以用建立的这个映射关系作为判断是否满足Trigger的依据;同时,消息类型中的消息字段作为消息类的一个属性,可以通过动态语言提供的方式比如set_attr()的方法来进行设置;Action对局部变量的设置通过动态语言提供的方式比如set_attr()的方法将对变量值的改变映射到响应字段上。
本发明实施例设置规则配置文件静态地定义了桩服务的行为,为后续桩服务应用不同的测试场景提供了必要条件,提高了桩服务应用的灵活性。
图5是本发明可定制响应的桩服务实现装置第一实施例功能模块示意图;如图5所示,本发明可定制响应的桩服务实现装置包括:参数获取模块01、响应生成模块02和第一设置模块03。
参数获取模块01,用于从协议定义文件中获取请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系;
参数获取模块01从协议定义文件如proto定义文件中获取请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系,其获取方式包括:
在协议定义文件如proto定义文件中定义服务接口,基于定义的服务接口增加类服务编译选项,参数获取模块01得到请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系;在具体的应用场景中,比如参数获取模块01利用protoc编译生成的python代码提供的反射机制,得到请求消息名称;并利用python代码,在proto中定义service接口,增加py_generic_services=true编译选项后生成的代码中便带有请求消息名称和响应消息名称的对应关系,即上述的请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系;
或者,参数获取模块01直接对proto定义文件进行解析,从对proto定义文件的文本分析结果中,获取请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系。
响应生成模块02,用于接收到测试请求后,得到该测试请求对应的请求消息名称,按照获取的所述映射关系,查找与该请求消息名称对应的响应消息名称;根据获取的响应消息名称,动态生成所述响应消息名称对应的响应消息对象;
响应生成模块02接收到测试请求后,得到该测试请求对应的请求消息名称;利用序列化协议如protobuf提供的自省特性,响应生成模块02可以根据请求消息名称动态创建对应的消息对象;比如,响应生成模块02根据请求消息名称和请求消息体,获得请求消息对应的消息对象:
msg=google.protobuf.reflection.ParseMessage(pb2.DESCRIPTOR.message_types_by_name[消息名称],消息体)。
根据获取的请求消息名称及请求消息名称与响应消息名称的映射关系,响应生成模块02查找与该请求消息名称对应的响应消息名称,并获取与该请求消息名称对应的响应消息名称。
响应生成模块02根据获取的响应消息名称,动态生成该响应消息名称对应的响应消息对象:
desc=pb2.DESCRIPTOR.message_types_by_name[self.respname]
class RespClass(google.protobuf.message.Message):
__metaclass__=google.protobuf.reflection.GeneratedProtocolMessageType
DESCRIPTOR=desc
msg=RespClass()。
第一设置模块03,用于根据动态生成的所述响应消息对象,按照预设的规则配置文件,动态设置所述响应消息对象对应的响应字段值。
本实施例中,引入规则配置文件,即根据请求数据是否满足规则配置的条件来返回不同的数据。规则配置文件静态地定义了桩服务的行为,通过编写配置文件能快速构建一个满足预期逻辑的桩逻辑,适用于不同的测试场景。该规则配置文件中包含了对应的规则,即不同的请求对应着不同的响应,当响应生成模块02接收到测试请求时,第一设置模块03查找规则配置文件中对应于该测试请求的响应消息名称;根据查找到的响应消息名称,第一设置模块03动态生成响应消息对象;从而根据消息对象及规则配置文件,第一设置模块03动态设置所述响应消息对象对应的响应字段值。
本实施例中,在规则配置文件中引入规则(rule)的概念,每条规则有其触发的条件(Trigger)如上述的测试请求和满足条件时相应的动作(Action),如上述动态设置的响应字段值。比如,Trigger的描述对象为请求反序列化后的各字段值,Action的执行对象为响应字段,利用动态语言可执行字符串形式的代码的特性,可直接用代码的形式描述这些条件和动作。在响应生成模块02接收到每个测试请求时,第一设置模块03反序列化后依次检查每条规则,如果满足Trigger则触发相应的Action执行,否则跳过检查下面的规则,直到规则检查完毕。在一优选的实施例中,当第一个rule的Trigger为True(真)时,相应的Action一定被触发,相当于为响应设置了默认值,如果后面的规则都不满足,则第一设置模块03返回各字段为默认值的响应数据包。
本发明实施例从协议定义文件中获取请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系;接收到测试请求后,得到该测试请求对应的请求消息名称,按照获取的所述映射关系,查找与该请求消息名称对应的响应消息名称;根据获取的响应消息名称,动态生成所述响应消息名称对应的响应消息对象;根据动态生成的所述响应消息对象,按照预设的规则配置文件,动态设置所述响应消息对象对应的响应字段值;相较于现有技术中,将消息对象的请求和响应的关系静态地写在代码中的方法,本发明实施例具有通过定义规则配置文件自动生成定制的桩服务,无需编写与条件逻辑无关代码,极大地减小了构建桩服务的开发的工作量。
图6是本发明可定制响应的桩服务实现装置第二实施例功能模块示意图;本实施例与图5所述实施例的区别是,除了通过规则配置文件中配置的规则来控制响应消息对应的字段值外,本发明实施例还提供了远程调用接口供自动化测试用例使用。本发明实施例利用RPC远程控制技术驱动客户端动态控制桩服务,可以令桩服务返回任意数据。旁路控制桩服务是对规则配置文件的补充,因为在自动化场景下,不同的测试用例需要桩服务返回不同的值,比如正常用例响应中某字段应该是非空字符串,异常用例可能需要该字段为空字符串,这就需要桩服务的响应字段能动态更改。
如图6所示,本发明可定制响应的桩服务实现装置包括:参数获取模块01、接口调用模块04和第二设置模块05。
参数获取模块01,用于从协议定义文件中获取请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系;
参数获取模块01从协议定义文件如proto定义文件中获取请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系,其获取方式包括:
在协议定义文件如proto定义文件中定义服务接口,基于定义的服务接口增加类服务编译选项,参数获取模块01得到请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系;在具体的应用场景中,比如参数获取模块01利用protoc编译生成的python代码提供的反射机制,得到请求消息名称;并利用python代码,在proto中定义service接口,增加py_generic_services=true编译选项后生成的代码中便带有请求消息名称和响应消息名称的对应关系,即上述的请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系;
或者,参数获取模块01直接对proto定义文件进行解析,从对proto定义文件的文本分析结果中,获取请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系。
接口调用模块04,用于调用可更改响应字段值的远程调用接口;
第二设置模块05,用于接收到测试请求后,得到该测试请求对应的请求消息名称,根据所述测试请求对应的测试规则,动态更改与所述请求消息名称映射的响应消息名称对应的响应字段值。
RPC即远程过程调用,是一种通过网络从远程服务程序上请求服务,而不需要了解底层网络技术的协议。RPC使用C/S模型,客户端可以像一般的本地过程一样调用远程服务接口;本发明实施例中,可以采用RPYC框架或者RPC对应的其他形式的框架来提供远程调用接口。
接口调用模块04在第二设置模块05接收到测试请求之前调用该远程调用接口对应的响应字段的值,则在第二设置模块05下次接收到测试请求时,下次接收到测试请求获取的就是该远程调用接口所对应的响应字段的值。本实施例中,接口调用模块04调用该可更改响应字段值的远程调用接口,在接收到测试请求后,第二设置模块05得到该测试请求对应的请求消息名称,根据该测试请求对应的测试规则,动态更改与该请求消息名称映射的响应消息名称对应的响应字段值。可以理解为,第二设置模块05能够根据该测试请求所对应的测试规则的具体需求,动态返回与该请求消息名称映射的响应消息名称对应的响应字段值。
本实施例中,接口调用模块04调用的该可更改响应字段值的远程调用接口后,第二设置模块05可以提供在不重启桩程序的情况下控制响应字段,第二设置模块05执行的优先级高于图5所述实施例中第一设置模块04按照预设的规则配置文件动态设置响应消息对象对应的响应字段值的执行优先级。
本发明实施例从协议定义文件中获取请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系,调用可更改响应字段值的远程调用接口;接收到测试请求后,得到该测试请求对应的请求消息名称,根据所述测试请求对应的测试规则,动态更改与所述请求消息名称映射的响应消息名称对应的响应字段值;具有根据测试对象及具体的测试用例,灵活更改响应字段的有益效果;另外,由于桩服务的测试请求和响应字段没有确定的关系,且桩服务经常需要设置异常的响应字段来测试被测对象的异常处理能力,本发明实施例能够根据各测试用例的具体情况,动态更改返回的响应字段值;本发明实施例通过旁路动态控制返回响应字段的方式,应用于自动化用例中按用例要求控制返回响应数据的场景中,其有益效果将更为显著。
图7是本发明可定制响应的桩服务实现装置第三实施例功能模块示意图。本发明实施例与图5所述实施例的区别是,增加了规则设置模块06。本实施例仅对规则设置模块06进行描述,有关本发明可定制响应的桩服务实现装置所涉及的其他模块请参照相关实施例的具体描述,在此不再赘述。
如图7所示,本发明可定制响应的桩服务实现装置还包括:
规则设置模块06,用于设置所述规则配置文件。
本发明实施例引入了规则配置文件,比如规则设置模块06设置根据请求数据是否满足规则配置的条件来返回不同的数据这一规则。本实施例中,规则设置模块06设置规则配置文件可以理解为静态的定义了桩服务的行为,通过编写配置文件能快速构建一个满足预期逻辑的桩逻辑,适用于不同的测试场景。
本实施例中,规则设置模块06利用proto的自省机制,得到各请求消息类型中分别对应的所有字段名;规则设置模块06对所述请求消息进行反序列化处理后,遍历这些字段的值,得到所述请求消息中各字段名分别对应的字段值,并建立各字段名与对应的字段值的映射关系并保存,规则设置模块06可以用建立的这个映射关系作为判断是否满足Trigger的依据;同时,消息类型中的消息字段作为消息类的一个属性,规则设置模块06可以通过动态语言提供的方式比如set_attr()的方法来进行设置;规则设置模块06中Action对局部变量的设置通过动态语言提供的方式比如set_attr()的方法将对变量值的改变映射到响应字段上。
本发明实施例设置规则配置文件静态地定义了桩服务的行为,为后续桩服务应用不同的测试场景提供了必要条件,提高了桩服务应用的灵活性。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该软件产品存储在计算机的一个存储介质(如ROM/RAM、磁碟、光盘)中,该软件产品所存储的存储介质包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备,或者图5至图7所述的可定制响应的桩服务实现装置等)执行本发明各个实施例所述的方法。
以上所述仅为本发明的优选实施例,并非因此限制其专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种可定制响应的桩服务实现方法,其特征在于,包括步骤:
从协议定义文件中获取请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系;
接收到测试请求后,得到该测试请求对应的请求消息名称,按照获取的所述映射关系,查找与该请求消息名称对应的响应消息名称;
根据获取的响应消息名称,动态生成所述响应消息名称对应的响应消息对象;
根据动态生成的所述响应消息对象,按照预设的规则配置文件,动态设置所述响应消息对象对应的响应字段值;
所述从协议定义文件中获取请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系,之后还包括:
调用可更改响应字段值的远程调用接口;
接收到测试请求后,得到该测试请求对应的请求消息名称,根据所述测试请求对应的测试规则,动态更改与所述请求消息名称映射的响应消息名称对应的响应字段值;其中,所述根据所述测试请求对应的测试规则,动态更改与所述请求消息名称映射的响应消息名称对应的响应字段值,其执行的优先级高于所述按照预设的规则配置文件,动态设置所述响应消息对象对应的响应字段值。
2.如权利要求1所述的方法,其特征在于,所述从协议定义文件中获取请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系,包括:
在所述协议定义文件中定义服务接口,基于定义的服务接口增加类服务编译选项,得到请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系。
3.如权利要求1所述的方法,其特征在于,所述从协议定义文件中获取请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系,包括:
解析所述协议定义文件,根据解析结果,获取请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系。
4.如权利要求1所述的方法,其特征在于,所述从协议定义文件中获取请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系,之前还包括:
设置所述规则配置文件。
5.如权利要求4所述的方法,其特征在于,所述设置所述规则配置文件,包括:
利用序列化协议的自省机制,得到各请求消息类型中分别对应的所有字段名;
对所述请求消息进行反序列化处理,得到所述请求消息中各字段名分别对应的字段值;
建立所述字段名与对应的字段值的映射关系并保存。
6.一种可定制响应的桩服务实现装置,其特征在于,包括:
参数获取模块,用于从协议定义文件中获取请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系;
响应生成模块,用于接收到测试请求后,得到该测试请求对应的请求消息名称,按照获取的所述映射关系,查找与该请求消息名称对应的响应消息名称;根据获取的响应消息名称,动态生成所述响应消息名称对应的响应消息对象;
第一设置模块,用于根据动态生成的所述响应消息对象,按照预设的规则配置文件,动态设置所述响应消息对象对应的响应字段值;
接口调用模块,用于调用可更改响应字段值的远程调用接口;
第二设置模块,用于接收到测试请求后,得到该测试请求对应的请求消息名称,根据所述测试请求对应的测试规则,动态更改与所述请求消息名称映射的响应消息名称对应的响应字段值,其中,所述第二设置模块的执行优先级高于所述第一设置模块的执行优先级。
7.如权利要求6所述的装置,其特征在于,所述参数获取模块还用于:
在所述协议定义文件中定义服务接口,基于定义的服务接口增加类服务编译选项,得到请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系。
8.如权利要求6所述的装置,其特征在于,所述参数获取模块还用于:
解析所述协议定义文件,根据解析结果,获取请求消息名称和与所述请求消息名称对应的响应消息名称的映射关系。
9.如权利要求6所述的装置,其特征在于,还包括:规则设置模块,用于设置所述规则配置文件。
10.如权利要求9所述的装置,其特征在于,所述规则设置模块还用于:
利用序列化协议的自省机制,得到各请求消息类型中分别对应的所有字段名;
对所述请求消息进行反序列化处理,得到所述请求消息中各字段名分别对应的字段值;
建立所述字段名与对应的字段值的映射关系并保存。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310615914.4A CN104683386B (zh) | 2013-11-26 | 2013-11-26 | 可定制响应的桩服务实现方法及装置 |
PCT/CN2014/089379 WO2015078248A1 (en) | 2013-11-26 | 2014-10-24 | Dynamic code instrumentation |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310615914.4A CN104683386B (zh) | 2013-11-26 | 2013-11-26 | 可定制响应的桩服务实现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104683386A CN104683386A (zh) | 2015-06-03 |
CN104683386B true CN104683386B (zh) | 2019-01-04 |
Family
ID=53198326
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310615914.4A Active CN104683386B (zh) | 2013-11-26 | 2013-11-26 | 可定制响应的桩服务实现方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104683386B (zh) |
WO (1) | WO2015078248A1 (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107122292A (zh) * | 2016-10-21 | 2017-09-01 | 北京小度信息科技有限公司 | 一种模拟服务的方法及系统 |
CN106603283B (zh) * | 2016-12-13 | 2019-09-13 | 广州品唯软件有限公司 | 一种模拟服务的方法、装置及集中管理平台 |
CN107168993A (zh) * | 2017-03-29 | 2017-09-15 | 广州优视网络科技有限公司 | 处理响应数据的方法、设备、客户端设备和电子设备 |
CN109151037B (zh) * | 2018-09-04 | 2022-03-04 | 政采云有限公司 | 一种通信方法及装置 |
CN110147320A (zh) * | 2019-04-19 | 2019-08-20 | 平安普惠企业管理有限公司 | 接口测试方法、装置及电子设备 |
US11036619B2 (en) | 2019-06-06 | 2021-06-15 | International Business Machines Corporation | Bypassing execution of a module in real-time |
US11016762B2 (en) | 2019-06-06 | 2021-05-25 | International Business Machines Corporation | Determining caller of a module in real-time |
US10929126B2 (en) | 2019-06-06 | 2021-02-23 | International Business Machines Corporation | Intercepting and replaying interactions with transactional and database environments |
US10915426B2 (en) | 2019-06-06 | 2021-02-09 | International Business Machines Corporation | Intercepting and recording calls to a module in real-time |
US11074069B2 (en) | 2019-06-06 | 2021-07-27 | International Business Machines Corporation | Replaying interactions with transactional and database environments with re-arrangement |
CN112445700B (zh) * | 2019-09-05 | 2023-10-13 | 腾讯科技(深圳)有限公司 | 测试方法和装置 |
CN111078571B (zh) * | 2019-12-20 | 2024-02-02 | 广州品唯软件有限公司 | 模拟响应的测试方法、终端设备及计算机可读存储介质 |
CN113704079A (zh) * | 2020-05-22 | 2021-11-26 | 北京沃东天骏信息技术有限公司 | 基于Protobuf的接口测试方法和装置 |
CN112328222A (zh) * | 2020-11-26 | 2021-02-05 | 天津市鑫联兴科技有限公司 | 一种动态流程服务接口方法及动态流程服务接口引擎 |
CN112799713B (zh) * | 2020-12-31 | 2022-06-28 | 江苏苏宁银行股份有限公司 | 一种通用可配置测试桩平台 |
CN113434147B (zh) * | 2021-06-25 | 2024-05-14 | 北京达佳互联信息技术有限公司 | 基于ProtoBuf协议的消息解析方法及装置 |
CN113468388B (zh) * | 2021-06-30 | 2024-05-03 | 深圳集智数字科技有限公司 | 控制方法、装置、服务器及存储介质 |
CN113704087B (zh) * | 2021-07-09 | 2024-01-19 | 奇安信科技集团股份有限公司 | 一种跨域传输设备的文件业务测试方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102143523A (zh) * | 2010-11-18 | 2011-08-03 | 华为技术有限公司 | 基于业务递送平台的应用测试方法和业务递送平台 |
CN102214140A (zh) * | 2011-06-21 | 2011-10-12 | 中兴通讯股份有限公司 | 软件自动测试的方法及系统 |
CN102622237A (zh) * | 2012-03-14 | 2012-08-01 | 北京神州数码思特奇信息技术股份有限公司 | 一种业务功能流程化的配置方法及系统 |
CN103136095A (zh) * | 2011-11-28 | 2013-06-05 | 阿里巴巴集团控股有限公司 | 一种测试应用程序接口的方法、装置及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101515301B (zh) * | 2008-02-23 | 2011-05-04 | 炬力集成电路设计有限公司 | 一种片上系统芯片验证的方法和装置 |
JP2013113663A (ja) * | 2011-11-28 | 2013-06-10 | Advantest Corp | 試験モジュール生成装置、試験手順生成装置、生成方法、プログラム、および試験装置 |
-
2013
- 2013-11-26 CN CN201310615914.4A patent/CN104683386B/zh active Active
-
2014
- 2014-10-24 WO PCT/CN2014/089379 patent/WO2015078248A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102143523A (zh) * | 2010-11-18 | 2011-08-03 | 华为技术有限公司 | 基于业务递送平台的应用测试方法和业务递送平台 |
CN102214140A (zh) * | 2011-06-21 | 2011-10-12 | 中兴通讯股份有限公司 | 软件自动测试的方法及系统 |
CN103136095A (zh) * | 2011-11-28 | 2013-06-05 | 阿里巴巴集团控股有限公司 | 一种测试应用程序接口的方法、装置及系统 |
CN102622237A (zh) * | 2012-03-14 | 2012-08-01 | 北京神州数码思特奇信息技术股份有限公司 | 一种业务功能流程化的配置方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2015078248A1 (en) | 2015-06-04 |
CN104683386A (zh) | 2015-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104683386B (zh) | 可定制响应的桩服务实现方法及装置 | |
US9672140B1 (en) | Processing special requests at dedicated application containers | |
US9459862B2 (en) | Automated porting of application to mobile infrastructures | |
CN109308224B (zh) | 跨平台数据通信、跨平台数据处理的方法、装置及系统 | |
CN110457144B (zh) | 一种实现前端应用的方法、装置、介质和设备 | |
CN106648556B (zh) | 前后端集成开发测试的方法及装置 | |
CN110058864B (zh) | 微服务的部署方法及装置 | |
CN110489101A (zh) | 接口模拟方法、系统、介质和电子设备 | |
CN109831466B (zh) | 微服务业务处理方法及nginx服务器 | |
CN108415710A (zh) | 在智能对话开发平台上发布、调用api的方法和系统 | |
CN110392068A (zh) | 一种数据传输方法、装置及其设备 | |
CN110381101A (zh) | Api网关控制系统、控制方法、设备和介质 | |
CN107766307B (zh) | 一种表单元素联动的方法和设备 | |
CN105955731A (zh) | 一种手机游戏快速编写方法和系统 | |
CN114035805A (zh) | 用于预编译器的代码转换方法、装置、介质及设备 | |
CN113778897B (zh) | 接口的自动测试方法、装置、设备及存储介质 | |
US9736222B1 (en) | System, method, and computer program for automatically exposing application programming interfaces (APIS) associated with an application server to one or more client devices | |
CN111309624A (zh) | 测试方法、装置、设备及存储介质 | |
CN110020370B (zh) | 在客户端应用中实现动画的方法、装置及动画脚本的框架 | |
CN109710535A (zh) | 用于语音对话平台的服务校验方法及系统 | |
CN114610598A (zh) | 测试方法、装置、电子设备及计算机可读存储介质 | |
CN115221033A (zh) | 接口协议测试方法、装置、计算机可读介质及电子设备 | |
WO2023216857A1 (en) | Multi-agent chatbot with multi-intent recognition | |
CN111752644A (zh) | 接口模拟方法、装置、设备及存储介质 | |
CN104980511B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |