CN113360363B - 微服务系统的测试方法、装置、设备和计算机存储介质 - Google Patents
微服务系统的测试方法、装置、设备和计算机存储介质 Download PDFInfo
- Publication number
- CN113360363B CN113360363B CN202010143286.4A CN202010143286A CN113360363B CN 113360363 B CN113360363 B CN 113360363B CN 202010143286 A CN202010143286 A CN 202010143286A CN 113360363 B CN113360363 B CN 113360363B
- Authority
- CN
- China
- Prior art keywords
- output data
- tested
- service
- data
- dynamic output
- 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
- 238000012360 testing method Methods 0.000 title claims abstract description 206
- 238000000034 method Methods 0.000 title claims abstract description 159
- 230000008569 process Effects 0.000 claims abstract description 100
- 230000002159 abnormal effect Effects 0.000 claims abstract description 33
- 230000006399 behavior Effects 0.000 claims description 124
- 230000006870 function Effects 0.000 claims description 23
- 238000010998 test method Methods 0.000 claims description 6
- 238000004806 packaging method and process Methods 0.000 claims description 2
- 230000000875 corresponding effect Effects 0.000 description 70
- 238000012545 processing Methods 0.000 description 9
- 238000012546 transfer Methods 0.000 description 9
- 238000001514 detection method Methods 0.000 description 7
- 230000002596 correlated effect Effects 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000004043 dyeing Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000013522 software testing Methods 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
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/3684—Test management for test design, e.g. generating new test cases
-
- 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/3692—Test management for test results analysis
Abstract
本申请提供一种微服务系统的测试方法、装置、设备和计算机存储介质,获取微服务系统执行测试用例的过程中被测服务的行为数据,得到行为数据集;行为数据包括输入数据和输出数据;被测服务指代参与测试用例的执行过程的服务;对每两个被测服务的行为数据进行匹配,根据匹配结果确定被测服务之间的依赖关系;通过比较每两个具有依赖关系的被测服务的动态输出数据的参数值确定动态输出数据之间的关联性;记录动态输出数据之间的关联性,得到预期结果模型。基于本方案,测试时可以比较本次执行过程中的动态输出数据,通过判断比较结果是否符合预期结果模型记录的关联性确定对应的动态输出数据是否异常。因此,本方案能够检测动态输出数据。
Description
技术领域
本发明涉及软件测试技术领域,特别涉及一种微服务系统的测试方法、装置、设备和计算机存储介质。
背景技术
微服务系统是一种由多种计算机服务组合成的,用于实现特定领域的业务的系统,移动支付系统就是一种常见的微服务系统。微服务系统建立之后,需要采用各种测试技术对其进行测试以发现其中的故障。测试用例就是一种常用的微服务系统的测试技术。
现有的基于测试用例的测试方法包括,向微服务系统提供预设的测试用例,收集微服务系统执行该测试用例时各个被测服务的输出数据,通过比较输出数据的参数值和预期参数值确定输出数据是否异常,若输出数据异常则说明对应的被测服务可能存在故障。
现有的方法存在的问题是,输出数据中存在一些动态输出数据,同一测试用例每次被执行时,动态输出数据的参数值都会发生变化。因此,无法为动态输出数据设定一个预期参数值,对应的也就无法分析动态输出数据是否异常。
发明内容
针对上述现有技术的缺点,本申请提供一种微服务系统的测试方法、装置、设备和计算机存储介质,以提供一种更全面的微服务系统测试方案。
本申请提供一种微服务系统的测试方法,包括:
获取并组合所述微服务系统执行测试用例的过程中每个被测服务的行为数据,得到所述测试用例的执行过程对应的行为数据集;其中,所述行为数据包括输入数据和输出数据;所述被测服务指代所述微服务系统包含的,参与所述测试用例的执行过程的服务;
对所述行为数据集中的每两个所述被测服务的行为数据进行匹配,得到匹配结果,并根据所述匹配结果分别确定每两个所述被测服务之间的依赖关系的判断结果;
针对每两个具有依赖关系的所述被测服务,通过比较所述两个被测服务的动态输出数据的参数值,确定所述两个动态输出数据之间的关联性的判断结果;其中,所述动态输出数据,指代本次执行过程中对应的参数值与前一次执行过程中对应的参数值不一致的输出数据;
记录每两个所述动态输出数据之间的关联性的判断结果,得到所述测试用例的预期结果模型;其中,所述预期结果模型用于检测所述微服务系统执行所述测试用例后的每两个所述动态输出数据之间的关联性与对应的判断结果是否匹配;
在所述微服务系统再次执行所述测试用例后,利用所述测试用例的预期结果模型检测每个所述被测服务的动态输出数据是否为异常数据。
可选的,所述在所述微服务系统再次执行所述测试用例后,利用所述测试用例的预期结果模型检测每个所述被测服务的动态输出数据是否为异常数据,包括:
获取所述微服务系统执行测试用例的过程中每个被测服务的动态输出数据;
针对所述测试用例的预期结果模型记录的每两项具有关联性的动态输出数据,比较本次执行过程中所述两项动态输出数据的参数值是否一致;
针对所述测试用例的预期结果模型记录的每两项具有关联性的动态输出数据,若所述两项动态输出数据的参数值不一致,确定所述两项动态输出数据为异常数据。
本申请提供一种微服务系统的测试装置,包括:
获取单元,用于获取并组合所述微服务系统执行测试用例的过程中每个被测服务的行为数据,得到所述测试用例的执行过程对应的行为数据集;其中,所述行为数据包括输入数据和输出数据;所述被测服务指代所述微服务系统包含的,参与所述测试用例的执行过程的服务;
匹配单元,用于对所述行为数据集中的每两个所述被测服务的行为数据进行匹配,得到匹配结果,并根据所述匹配结果分别确定每两个所述被测服务之间的依赖关系的判断结果;
比较单元,用于针对每两个具有依赖关系的所述被测服务,通过比较所述两个被测服务的动态输出数据的参数值,确定所述两个动态输出数据之间的关联性的判断结果;其中,所述动态输出数据,指代本次执行过程中对应的参数值与前一次执行过程中对应的参数值不一致的输出数据;
记录单元,用于记录每两个所述动态输出数据之间的关联性的判断结果,得到所述测试用例的预期结果模型;其中,所述预期结果模型用于检测所述微服务系统执行所述测试用例后的每两个所述动态输出数据之间的关联性与对应的判断结果是否匹配;
测试单元,用于在所述微服务系统再次执行所述测试用例后,利用所述测试用例的预期结果模型检测每个所述被测服务的动态输出数据是否为异常数据。
可选的,所述测试单元在所述微服务系统再次执行所述测试用例后,利用所述测试用例的预期结果模型检测每个所述被测服务的动态输出数据是否为异常数据时,具体用于:
获取所述微服务系统执行测试用例的过程中每个被测服务的动态输出数据;
针对所述测试用例的预期结果模型记录的每两项具有关联性的动态输出数据,比较本次执行过程中所述两项动态输出数据的参数值是否一致;
针对所述测试用例的预期结果模型记录的每两项具有关联性的动态输出数据,若所述两项动态输出数据的参数值不一致,确定所述两项动态输出数据为异常数据。
本申请供一种计算机存储介质,用于存储程序,所述程序被执行时,用于实现本申请上述任意一项提供的微服务系统的测试方法。
本申请提供一种微服务系统的测试设备,包括存储器和处理器;
所述存储器用于存储程序;
所述处理器用于执行所述程序,所述程序被执行时,用于实现本申请第一方面任意一项提供的微服务系统的测试方法。
本申请提供一种微服务系统的测试方法、装置、设备和计算机存储介质,该方法包括:获取微服务系统执行测试用例的过程中被测服务的行为数据,得到行为数据集;行为数据包括输入数据和输出数据;被测服务指代参与测试用例的执行过程的服务;对每两个被测服务的行为数据进行匹配,根据匹配结果确定被测服务之间的依赖关系;通过比较每两个具有依赖关系的被测服务的动态输出数据的参数值确定动态输出数据之间的关联性;记录动态输出数据之间的关联性,得到预期结果模型。基于本方案,测试时可以比较本次执行过程中的动态输出数据,通过判断比较结果是否符合预期结果模型记录的关联性确定对应的动态输出数据是否异常。因此,本方案能够检测动态输出数据。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种微服务系统的预期结果模型的构建方法的流程图;
图2为本申请实施例提供的一种消息解析案例的示意图;
图3为本申请又一实施例提供的一种微服务系统的预期结果模型的构建方法的流程图;
图4为本申请再一实施例提供的一种微服务系统的预期结果模型的构建方法的流程图;
图5为本申请实施例提供的一种微服务系统的预期结果模型的示意图;
图6为本申请实施例提供的一种基于预期结果模型的微服务系统的输出数据检测方法的流程图;
图7为本申请实施例提供的一种微服务系统的测试装置的结构示意图;
图8为本申请实施例提供的一种微服务系统的测试设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了方便理解本申请提供的测试方法,首先对本申请涉及的技术用于进行解释:
测试用例是指对一项特定的软件产品所需要进行的测试任务的描述。具体的,微服务系统是一个由多个服务组成的,用于响应用户的请求并提供对应服务的系统,测试时就需要观察微服务系统针对多种不同类型的用户请求是否均能给出正确的响应。而不同类型的用户请求,就是基于测试用例产生的。
测试用例一般由技术人员预先编写,并存储于一个用例服务器中,每一个测试用例均对应于一种特定类型的用户请求。例如,网络银行系统分别提供转账,贷款和线上支付等功能,为了分别测试这些功能,就需要对应的编写转账,贷款和线上支付的测试用例,基于转账的测试用例,用例服务器可以生成虚拟转账请求,通过向网络银行系统发送虚拟转账请求并分析网络银行系统的响应,就可以确定网络银行系统的转账功能是否正常。
用例服务器根据一个测试用例可以多次生成该类型的虚拟用户请求并将其发送至微服务系统,微服务系统收到一个虚拟用户请求后,就按预设的处理流程调用对应的服务进行处理。微服务系统处理基于一个测试用例产生的虚拟用户请求的过程,相当于这个测试用例的一次执行过程。
为了解决现有的微服务系统的测试方法无法自动检测微服务系统的动态输出数据的问题,本申请提供一种微服务系统的测试方法。本申请提供的方法的关键在于,针对某个测试用例,收集微服务系统执行这个测试用例一次或多次之后得到的各个被测服务的行为数据,通过分析这些行为数据建立一个预期结果模型,后续微服务系统再次执行这个测试用例时,就可以利用这个预期结果模型自动检测微服务系统的动态输出数据。可以理解的,本申请提供的方法包括构建预期结果模型以及利用预期结果模型对输出数据进行检测两个环节。下面分别对这两个环节的执行过程进行说明。
本申请第一个实施例提供一种预期结果模型的构建方法,请参考图1,该方法包括以下步骤:
首先需要说明的是,本申请提供的预期结果模型,是通过分析一个微服务系统执行一个测试用例后的行为数据构建的,因此,可以理解的,对于不同的微服务系统以及不同的测试用例,均可以采用本申请任一实施例所提供的模型构建方法构建对应的预期结果模型相同,但是由于分析的数据不同,最后构建得到的模型也不同。
换言之,如果要分别用测试用例A和测试用例B测试微服务系统X,那么就需要分别构建微服务系统X的对应于测试用例A的预期结果模型以及对应于测试用例B的预期结果模型,若用这两个测试用例测试微服务系统Y,则需要构建微服务系统Y的分别对应于测试用例A和测试用例B的两个预期结果模型。
S101、获取并组合微服务系统执行测试用例的过程中每个被测服务的行为数据,得到对应的行为数据集。
其中,行为数据包括输入数据和输出数据。
被测服务指代微服务系统包含的,参与上述测试用例的执行过程的服务。
例如,假设微服务系统包括6个服务,依次记为服务1至服务6,在微服务系统执行测试用例时,只有服务1、2和3参与执行过程,那么针对这个微服务系统以及这个测试用例,服务1、2和3就是上述被测服务。
一个服务的行为数据,可以理解为输入该服务的变量(即输入数据)以及该服务输出的变量(即输出数据)。一个服务可以有若干项输入数据和若干项输出数据。每一种行为数据(无论是输入数据还是输出数据)均包括数据名称和参数值两个属性。
例如,发起线上转账时,网络银行系统首先需要由身份认证服务对发起请求的用户进行身份验证,用例服务器发出一个以“张三”作为虚拟用户的虚拟转账请求后,身份认证服务需要利用虚拟转账请求携带的用户账号和密码进行身份认证,并输出认证结果。在上述例子中,对于身份认证服务,用户账号:1234以及对应的用户密码:56789就是身份认证服务的两项输入数据。其中用户账号和用户明码是数据名称,1234和56789分别是对应的参数值,完成认证后,输出的认证结果可以有通过和未通过两种取值,认证结果就是身份认证服务的一项输出数据,数据名称是认证结果,参数值是通过,或者未通过。
可以理解的,在计算机系统中一般用变量的形式记录每一种数据,因此,也可以用对应变量的变量名作为一种行为数据的数据名称,对应变量的数值作为行为数据的参数值。
在微服务系统执行一次测试用例的过程中,部分被测服务可以直接从收到的虚拟请求中提取出输入数据(如上述例子中的用户账号和密码),另一部分被测服务则接收其他服务的输出数据作为输入数据,每个服务获得输入数据后就会按预设的处理逻辑处理输入数据,得到该服务的输出数据。通过收集微服务系统执行一次测试用例后的这些被测服务的输入数据和输出数据并将这些数据打包(例如,记录在一个数据库或者文档中),就可以得到对应于这次执行过程的一个行为数据集。
显然,对于一个测试用例,微服务系统每执行一次该测试用例,都会得到一个对应于这次执行过程的一个行为数据集。
获取各个被测服务的行为数据的方法包括:
预先利用面向切面编程(AspectOrientedProgramming,AOP)技术对微服务系统的各个公共函数插桩,也就是在每一个公共函数中插入若干个数据上报节点(也可以称为桩函数),一个数据上报节点可以理解为公共函数中一段用于收集公共函数的指定的数据并上报至测试服务器的代码(测试服务器指代本申请提供的测试方法的执行主体)。
完成插桩后,只需要在微服务系统执行测试用例的过程中,实时接收每一个数据上报节点上报的消息,然后针对每一条消息,利用对应的业务协议进行解析,就可以得到这条消息所携带的被测服务的行为数据。
微服务系统中的各个服务输出或输入数据(包括对数据库、文件和共享内存的读写,以及不同服务之间的数据传递)均通过调用对应的公共函数实现,例如,服务之间需要传递的数据通过调用socket请求函数进行转发,需要向数据库写入输出数据时则调用SQL(结构化查询语言,StructuredQuery Language)执行函数实现。因此,通过收集各个公共函数的输入参数,就可以提取出各个服务的输出数据和输入数据。
可选的,若微服务系统的各个服务预先设置有自动上报输出数据的功能,那么可以不对公共函数进行插桩,直接接收各个服务上报的输出数据。若微服务系统的各个服务预先设置有日志记录功能,能够将输出数据均记录在服务日志中,那么也可以从日志中获取被测服务输出和输入的数据,而不需要对公共函数进行插桩。
一般的,微服务系统的各个服务会将需要输出的数据按一定的业务协议进行包装,例如,调整数据的格式,对数据进行加密等,然后输出包装后的消息,而不是直接输出数据。因此,需要对数据上报节点上报的消息进行解析已获得原始的行为数据。
对一个业务协议一般由多个原子解析方法构成,技术人员只需要预先设定每个服务应用的业务协议,每个业务协议的各个原子解析方法以及解析的对象,计算机就可以自动调用各个原子解析方法将封装后的消息解析成输出特定格式的输出数据。
例如,图2就是一个将封装后的消息解析成JSON(JavaScriptObject Notation,JS对象简谱)格式的输出数据的流程示意图,其中的原始输出文本就是直接从数据上报节点接收的封装后的消息,解析过程中依次使用了kv,base64和json三种原子解析方法,图2底部的文本,就是解析得到的JSON格式的输出数据。
可选的,输出数据也可以是XML(可扩展标记语言,ExtensibleMarkup Language)格式,对应的图2中最后一种原子解析方法也需要换成xml解析方法。
若使用XML格式,图2所示的输出数据表现为:
其中,<root>和</root>标签用于划分不同的消息,从一条消息中提取得到的数据用一组<root>和</root>标签作为起始和结束,从而这组数据和其他消息中提取的数据区分开。
<request_text>和</request_text>标签用于标识消息的具体内容。
上述例子包括三项输出数据,分别是request_type,id和name,v表示对应的输出数据的参数值,具体的,request_type表示消息类型,在上述例子中request_type的参数值是123456,id和name分别表示消息的标识和名称,上述例子中,id的参数值是56789,name的参数值是asd。
基于上述格式,可以直接读取出一条消息所携带的输出数据的名称和参数值,从而对输出数据进行分析。
S102、针对每两个被测服务,对行为数据集中的这两个被测服务的行为数据进行匹配,得到匹配结果。
步骤S102的具体执行过程是:
针对任意两个被测服务(不妨记为第一被测服务和第二被测服务),将第一被测服务的输入数据和第二被测服务的输出数据进行匹配,以及将第一被测服务的输出数据和第二被测服务的输入数据进行匹配。
对应的,可能得到的匹配结果包括以下三种:第一被测服务的输入数据和第二被测服务的输出数据匹配成功;第一被测服务的输出数据和第二被测服务的输入数据匹配失败;第一被测服务的输入数据和第二被测服务的输出数据,以及第一被测服务的输出数据和第二被测服务的输入数据均匹配失败。
将第一被测服务的输入数据和第二被测服务的输出数据进行匹配,是指,将第一被测服务的各项输入数据的数据名称(或变量名)和第二被测服务的各项输出数据的数据名称(或变量名)进行比较,若第一被测服务的各项输入数据的数据名称和第二被测服务的各项输出数据的数据名称完全一致,就认为第一被测服务的输入数据和第二被测服务的输出数据匹配成功。
对应的,将第一被测服务的输出数据和第二被测服务的输入数据进行匹配的方法相同,也是将第一被测服务的输出数据的数据名称和第二被测服务的输入数据的数据名称进行比较,此处不再赘述。
S103、针对每两个被测服务之间的匹配结果,确定这两个被测服务之间的依赖关系的判断结果。
对应于上述三种匹配结果,两个被测服务之间的依赖关系的判断结果分别是:
若第一被测服务的输入数据和第二被测服务的输出数据匹配成功,则确定第一被测服务和第二被测服务具有依赖关系,且第一被测服务依赖于第二被测服务,也就是说在当前这个测试用例被执行时,第一被测服务需要在第二被测服务执行后,才能利用第二被测服务的输出数据执行自身的处理流程。
若第一被测服务的输出数据和第二被测服务的输入数据匹配成功,则确定第一被测服务和第二被测服务具有依赖关系,且第二被测服务依赖于第一被测服务。
若第一被测服务的输入数据和第二被测服务的输出数据,以及第一被测服务的输出数据和第二被测服务的输入数据均匹配失败,则确定第一被测服务和第二被测服务之间不具有依赖关系,也就是说,在当前这个测试用例被执行时,第一被测服务和第二被测服务之间不会发生直接的数据交互,第一被测服务和第二被测服务在自身的处理流程中均不会直接使用对方的输出数据。
例如,在网络购物场景中,第一被测服务是商品选择服务,用户选择了商品后,第一被测服务输出物品清单以及用户账号,第二被测服务是金额计算服务,用于根据物品清单和用户账号计算该用户本次购物该用户应付金额。将商品选择服务的输出数据和金额计算服务进行匹配,发现两者匹配成功,于是确定商品选择服务和金额计算服务具有依赖关系,且具体为金额计算服务依赖于商品选择服务。
S104、针对每两个具有依赖关系的被测服务,通过比较这两个被测服务的动态输出数据的参数值,确定两个动态输出数据之间的关联性的判断结果。
其中,动态输出数据,指代本次执行过程中对应的参数值与前一次执行过程中对应的参数值不一致的输出数据。
如背景技术所述,一个测试用例反复被微服务系统多次执行时,某些被测服务的输出数据的参数值会随着执行次数的变化而发生变化,也就是每一次执行时这类输出数据的参数值均与前一次执行时同名的输出数据的参数值不同。这类输出数据就是上述动态输出数据。
例如,一个网络银行系统对于一天内的每一笔交易(泛指转账或支付等涉及金钱流动的活动)都会随机的生成一个在当天所有交易中唯一的交易序列号,用于标识这一笔交易。因此,同一个用于测试转账功能的测试用例,即便第一次发送的转账请求和第二次发送的转账请求完全一致,但是网络银行系统中用于生成交易序列号的服务,以及其他使用并向后传递交易序列号的服务在第一次执行时输出的交易序列号和第二次执行时输出的交易序列号也会不一致。比如,第一次执行时输出的交易序列号可能是12345,第二次执行时输出的交易序列号可能是53426。
基于以上定义,可以理解的,只需要使微服务系统执行同一个测试用例两次以上,收集这几次执行过程对应的几个行为数据集,然后将这些行为数据集中数据名称相同的输出数据的参数值进行比较,就可以发现其中参数值随执行次数变化的动态输出数据。
步骤S104的具体执行过程是,针对具有依赖关系的第一被测服务和第二被测服务,针对第一被测服务的每一种动态输出数据,将这一种动态输出数据的参数值和第二被测服务的每一种动态输出数据的参数值进行比对,以查找第二被测服务的动态输出数据中,是否有参数值和第一被测服务的这一种动态输出数据的参数值一致的动态输出数据。
针对第一被测服务的任意一种动态输出数据(记为动态输出数据A1),若查找发现第二被测服务的某一种动态输出数据(记为动态输出数据B1)的参数值和动态输出数据A1的参数值一致,则认为动态输出数据A1和动态输出数据B1之间存在关联性,也可以称为,动态输出数据A1和动态输出数据B1互为对方的关联动态数据。
对应的,若第一被测服务的一种动态输出数据的参数值和第二被测服务的一种动态输出数据的参数值不一致,则认为这两项动态输出数据之间不存在关联性。
进一步的,对于分别属于三个被测服务的三项动态输出数据,若第一种动态输出数据和第二项动态输出数据具有关联性,第二项动态输出数据和第三项动态输出数据具有关联性,那么可以认为第一种动态输出数据和第三项动态输出数据之间也具有关联性。
S105、记录每两个动态输出数据之间的关联性的判断结果,得到测试用例的预期结果模型。
其中,预期结果模型用于检测微服务系统再次执行上述测试用例后的每两个动态输出数据之间的关联性与对应的判断结果是否匹配。
可选的,可以采用表格的形式记录上述动态输出数据的关联性。例如,假设执行一个测试用例的过程中,微服务系统产生了10项动态输出数据,数据名称记为数据1至数据10,其中,数据1、2和3之间相互存在关联性,数据4、5、6和7之间相互存在关联性,数据8和数据9之间存在关联性,数据10和其他动态输出数据之间均不存在关联性,那么,可以将数据1、2和3归为第一组,将数据4、5、6和7归为第二组,将数据8和数据9归为第三组,然后以下述表1的形式记录以上动态输出数据之间的关联性。
表1
基于上述表1,当再次使用微服务系统执行上述测试用例时,可以判断同一组内的各项动态输出数据在这次执行过程的参数值是否一致,若这次执行过程中某一组内的多项动态输出数据的参数值不一致,说明这些动态输出数据之间的关联性和预期结果模型中记录的判断结果不一致,确定这些动态输出数据均存在异常。
本实施例提供一种微服务系统的测试方法,获取微服务系统执行测试用例的过程中被测服务的行为数据,得到行为数据集;行为数据包括输入数据和输出数据;被测服务指代参与测试用例的执行过程的服务;对每两个被测服务的行为数据进行匹配,根据匹配结果确定被测服务之间的依赖关系;通过比较每两个具有依赖关系的被测服务的动态输出数据的参数值确定动态输出数据之间的关联性;记录动态输出数据之间的关联性,得到预期结果模型。基于本方案,测试时可以比较本次执行过程中的动态输出数据,通过判断比较结果是否符合预期结果模型记录的关联性确定对应的动态输出数据是否异常。因此,本方案能够检测动态输出数据。
另外,相对于现有技术,本申请在公共函数中插桩的行为数据收集方法能够更全面的收集被测服务输出的数据,因此,技术人员可以通过比较多次执行过程的多个行为数据集发现某些执行过程中的冗余输出数据,从而及时的修正,以避免微服务系统执行非预期的操作。
本申请第二个实施例还提供一种预期结果模型的构建方法,请参考图3,该方法包括以下步骤:
S301、获取分别对应于测试用例的多次执行过程的多个行为数据集。
如本申请第一个实施例所述,微服务系统每执行一次测试用例,都可以采用前一实施例所述的方法收集并组合此次执行过程产生的被测服务的行为数据,得到这一次执行过程对应的行为数据集。因此,只需要使微服务系统多次执行一个测试用例,就可以获得这个测试用例的多个行为数据集。
需要说明的是,由于本申请需要获取多次执行过程的行为数据,为了区分解析得到的数据分别对应于哪一次执行过程,需要对这些行为数据进行染色。一种可选的染色方法是,用例服务器每次向微服务系统发出一个请求,使得微服务系统执行一次测试用例时,为这个请求附加一段全局唯一的标识字符串,微服务系统在这次执行过程中,所有被测服务输入和输出的消息均会携带这个标识字符串,测试服务器收到公共函数中的数据上报节点上报的消息时,就可以通过标识字符串识别出收到的消息对应于哪一个请求。
S302、针对每两个被测服务,对第一行为数据集中的这两个被测服务的行为数据进行匹配,得到匹配结果。
这里的第一行为数据集,是步骤S301所述的多个行为数据集中任意指定的一个,例如,可以根据产生时间的先后,将最早产生的行为数据集作为第一数据集。
对行为数据的匹配以及匹配结果的确定与本申请第一个实施例一致,不再赘述。
S303、针对每两个被测服务之间的匹配结果确定这两个被测服务之间的依赖关系的判断结果。
步骤S303的具体执行过程与前述步骤S103一致。
S304、针对每两个被测服务,利用多个第二行为数据集中的这两个被测服务的行为数据的匹配结果调整这两个被测服务的依赖关系的判断结果。
第二行为数据集,指代步骤S301获取的多个行为数据集中,除前述第一行为数据集以外的每一个行为数据集。
在测试用例的某一次执行过程中,部分被测服务可能会出现输出数据缺失(即正常情况下应该输出而本次执行过程中未输出)或者输出冗余数据(即正常情况下不应该输出而本次执行过程中输出)的情况,因此,仅仅利用一次执行过程产生的一个行为数据集确定被测服务之间的依赖关系容易发生错误,步骤S304的目的就在于,综合多次执行过程的多个行为数据集修正可能存在的错误。
步骤S304的具体执行过程为:
针对每一个第二行为数据集,对第二数据集中第一被测服务的行为数据和第二被测服务的行为数据进行匹配,得到每一个第二数据集对应的第一被测服务和第二被测服务之间的匹配结果。这里的第一被测服务和第二被测服务指代任意两个被测服务;
然后,根据每一个第二行为数据集的匹配结果,确定每一个第二行为数据集对应的,第一被测服务和第二被测服务之间的依赖关系的判断结果;
最后,统计确定出的多个判断结果中每一种判断结果出现的频率,以其中出现频率最高的一种判断结果,作为第一被测服务和第二被测服务之间的调整后的依赖关系的判断结果。
下面结合一个简单的例子进行说明:
在步骤S303中,确定被测服务A和被测服务B之间的依赖关系为被测服务A依赖于被测服务B,步骤S301中获取了101个行为数据集,对应的第二行为数据集有100个,依次记为数据集1至数据集100。执行步骤S304时,将数据集1中被测服务A的行为数据和被测服务B的行为数据进行匹配,并根据匹配结果确定出对应于数据集1的被测服务A和被测服务B的(依赖关系的)判断结果,以此类推,逐一确定出对应于数据集2的被测服务A和被测服务B的判断结果,对应于数据集3的被测服务A和被测服务B的判断结果……,直至数据集100,总计产生100个被测服务A和被测服务B之间的判断结果。
然后,统计其中每种结果出现的频率,假设其中被测服务A依赖于被测服务B的判断结果出现了90次,被测服务A和被测服务B之间没有依赖关系的判断结果出现了10次,显然前者的出现频率大于后者,所以将被测服务A依赖于被测服务B确定为调整后的判断结果。
可选的,本实施例中也可以不执行步骤S302和步骤S303,直接针对每两个被测服务,分别利用步骤S301中的每一个行为数据集确定这两个被测服务之间的多个依赖关系的判断结果,将其中出现频率最高的一种判断结果作为最终输出的判断结果。
总而言之,只要能够在确定被测服务之间的依赖关系的判断结果时综合分析多个行为数据集即可。
S305、针对每两个具有调整后的依赖关系的被测服务,在每个行为数据集中比较这两个被测服务的动态输出数据的参数值,从而确定动态输出数据之间的修正后的关联性的判断结果。
步骤S305的执行过程包括:
假设第一被测服务和第二被测服务之间具有调整后的依赖关系,步骤S301中获取了100个行为数据集,依次编号为数据集1至数据集100,那么执行步骤S305时,先比较第一被测服务的动态输出数据在数据集1中的参数值,和比较第二被测服务的动态输出数据在数据集1中的参数值,从而确定数据集1对应的关联性判断结果,此处假设数据集1对应的关联性判断结果为第一被测服务的输出数据1和第二被测服务的输出数据2存在关联性。然后,以此类推,按上述分析数据集的方法逐一分析数据集2至数据集100,得到每一个数据集对应的第一被测服务的动态输出数据和第二被测服务的动态输出数据之间的关联性的判断结果。
最后,统计所有关联性的判断结果中每一种判断结果出现的频率,将其中出现频率最高的判断结果作为第一被测服务的动态输出数据和第二被测服务的动态输出数据之间的修正后的关联性判断结果。
与步骤S304类似,上述第一被测服务和第二被测服务,指代任意两个具有调整后的依赖关系的被测服务,换言之,上述执行过程适用于微服务系统中每两个具有调整后的依赖关系的被测服务。
S306、记录每两个动态输出数据之间的修正后的关联性的判断结果,得到测试用例的预期结果模型。
步骤S306的具体执行过程与前述步骤S105一致,此处不再赘述。
本实施例提供的预期结果模型的构建方法,在确定被测服务之间的依赖关系,以及确定动态输出数据之间的依赖关系时,分别分析多个行为数据集,综合多个行为数据集的分析结果来确定最终的判断结果,从而避免少数的几次执行过程中被测服务发生输出数据缺失或冗余的情况,提高了最终生成的预期结果模型的准确性,进而提高后续利用预期结果模型检测被测服务的输出数据时得到的检测结果的准确性。
本申请第三个实施例还提供一种预期结果模型的构建方法,请参考图4,该方法包括:
S401、获取分别对应于测试用例的多次执行过程的多个行为数据集。
S402、针对每两个被测服务,对第一行为数据集中的这两个被测服务的行为数据进行匹配,得到匹配结果。
S403、针对每两个被测服务之间的匹配结果确定这两个被测服务之间的依赖关系的判断结果。
S404、针对每两个被测服务,利用多个第二行为数据集中的这两个被测服务的行为数据的匹配结果调整这两个被测服务的依赖关系的判断结果。
S405、针对每两个具有调整后的依赖关系的被测服务,在每个行为数据集中比较这两个被测服务的动态输出数据的参数值,从而确定动态输出数据之间的修正后的关联性的判断结果。
S406、针对每一种输出数据,将该数据对应的多个参数值中出现频率大于预设的第一频率阈值的参数值确定为该输出数据的预期参数值。
其中,输出数据的参数值以及参数值的出现频率通过统计步骤S401中获取的多个行为数据集确定。
上述第一频率阈值应设置为大于或等于50%的数值。
步骤S406的具体执行过程是:
假设步骤S401中获取了100个行为数据集,针对任意一种输出数据,记录每一个行为数据集中这种输出数据的参数值,得到100个参数值,然后统计其中每一种参数值的出现频率,并判断每一种参数值的出现频率是否大于上述第一频率阈值,若出现一种参数值的频率大于第一频率阈值,则将这种参数值作为这种输出数据的预期参数值,若每一种参数值的出现频率均小于或等于第一频率阈值,则确定这种输出数据没有预期参数值。
需要说明的是,步骤S406与本实施例中前述的分析动态输出数据的步骤没有必然的先后顺序,也就是说可以先确定每一项输出数据是否有预期参数值,以及预期参数值是多少,再分析动态输出数据之间的关联性,也可以先分析动态输出数据的关联性,再分析输出数据的预期参数值的情况,当然,也可以两者交替执行。
其中,若先检测动态输出数据,那么执行步骤S406时可以不检测动态输出数据,只检测除动态输出数据以外的输出数据。
若先执行步骤S406,也就是先分析输出数据的预期参数值的情况,那么步骤S406的检测结果可以作为确定动态输出数据的依据。也就是说,针对每一种输出数据,若这种输出数据在多个行为数据集中没有出现频率大于第一频率阈值的参数值,就认为这种输出数据是动态输出数据。
S407、记录每两个动态输出数据之间的修正后的关联性的判断结果以及输出数据的预期参数值,得到测试用例的预期结果模型。
输出数据的预期参数值也可以采用数据表的形式记录,只需要在数据表中记录输出数据的数据名称,以及对应的预期参数值即可。后续利用预期结果模型进行检测时,可以在数据表中找到被检测的输出数据对应的数据名称,然后判断被检测的输出数据的参数值,和数据表中记录的数据名称对应的预期参数值是否一致,若一致则认为被检测的输出数据正常,若不一致则认为被检测的输出数据异常。
本实施例提供一种预期结果模型的构建方法,通过分析多个行为数据集中不同参数值的出现频率确定期望参数值,使得预期结果模型既能够检测动态输出数据,也能够检测除动态输出数据以外的其他输出数据。
可选的,本申请任意一个实施例提供的预期结果模型的构建方法,均可以在产生了预期结果模型之后,在显示设备上显示预期结果模型,技术人员可以在显示设备上查看并确认(也可以进行调整后确认,视情况而定)预期结果模型,最后系统再存储由技术人员确认后的预期结果模型,后续的检测也基于经过确认后的预期结果模型进行。
预期结果模型可以采用多种形式显示,如图5所示是一种可选的预期结果模型的显示形式。图5中的曲线用于说明被测服务之间的依赖关系,曲线终点(即有箭头的一端)的被测服务依赖于曲线起点的被测服务。其中,以输出数据的变量名作为数据名称,被测服务的输出数据的数据名称标记于对应的被测服务的上方和下方,多个动态输出数据之间如果两两存在关联性,则用虚线连接关联的多个动态输出数据,并标记为关联数据,例如图5中的req.id,list.id以及listid就是三项相互关联的动态输出数据,具有期望参数值的输出数据则标记输出数据的数据名称以及对应的期望参数值,如图5的content.type的期望参数值为2,在图中以content.type=2的形式标记,对于与其他任意一项动态输出数据均不存在关联性的动态输出数据,则标记为“动态,无关联数据”,例如,图5中的creat_time。后续使用预期结果模型对输出数据进行分析时,针对标记为“动态,无关联数据”的输出数据的参数值可以不进行检测。
下面结合图6说明本申请提供的基于预期结果模型的输出数据的检测方法,该方法包括以下步骤:
S601、获取微服务系统执行测试用例的过程中每个被测服务的输出数据。
S602、针对每两项具有关联性的动态输出数据,比较两项动态输出数据当前的参数值,得到两项动态输出数据的比较结果。
这里的具有关联性的动态输出数据,是根据预期结果模型的记录确定的。以图5所示的预期结果模型为例,假设图5所示的预期结果模型是微服务系统A执行测试用例B之后,分析其行为数据集而构建的预期结果模型,那么微服务系统A再次执行测试用例B时,通过这个预期结果模型就可以确定req.id,list.id以及listid三项动态输出数据相互关联,所以在执行步骤S602时,就需要分别比较本次执行过程中req.id,list.id以及listid的参数值。
可以理解的,任意两项动态输出数据之间,其参数值的比较结果可以包括一致和不一致两种。
动态输出数据当前的参数值,是指在本次执行过程中(即步骤S601所述的执行过程)采集得到的动态输出数据的参数值。
S603、将动态输出数据的比较结果和预期结果模型记录的对应的关联性进行匹配。
对于具有关联性的动态输出数据,若比较结果和预期结果模型记录的对应的关联性匹配失败,则认为这些动态输出数据为异常数据,若比较结果和预期结果模型记录的对应的关联性匹配成功,则认为这些动态输出数据正常。
对于任意两项具有关联性的动态输出数据,若这两项动态输出数据没有与其他的动态输出数据均不具有关联性,那么,只要这两项动态输出数据当前的参数值一致,就认为这两项动态输出数据的比较结果和预期结果模型记录的对应的关联性匹配成功,反之,若这两项动态输出数据当前的参数值不一致,就认为这两项动态输出数据的比较结果和预期结果模型记录的对应的关联性匹配失败。
进一步的,若多项动态输出数据之间相互关联,例如图5所示的预期结果模型中的req.id,list.id以及listid,那么,只有在这些动态输出数据当前的参数值均一致时,确定这些动态输出数据的比较结果和预期结果模型记录的对应的关联性匹配成功,若这些相互关联的多项动态输出数据中,任意一项或多项动态输出数据当前的参数值与其他动态输出数据的当前的参数值不一致,则确定这些动态输出数据的比较结果和预期结果模型记录的对应的关联性匹配失败。
S604、将匹配失败的动态输出数据确定为异常数据,并将匹配成功的动态输出数据确定为正常数据。
以图5所示的预期结果模型为例,若本次执行过程中req.id,list.id以及listid的参数值不一致,例如,可以是req.id的参数值和list.id的参数值不一致,也可以是list.id的参数值和listid的参数值不一致,则将这三项动态输出数据均确定为异常数据。
S605、针对除动态输出数据以外的输出数据,判断当前的参数值和对应的期望参数值是否一致。
针对除动态输出数据以外的任意一项输出数据,若这项输出数据当前的参数值和预期结果模型记录的期望参数值一致,则确定这项输出数据正常,反之,若这项输出数据当前的参数值和预期结果模型记录的期望参数值不一致,则确定这项输出数据异常。
S606、将当前的参数值和期望参数值不一致的输出数据确定为异常数据,并将当前的参数值和期望参数值一致的输出数据确定为正常数据。
以图5所示的预期结果模型为例,若本次执行过程中content.type的参数值等于2,说明本次执行过程中content.type是正常数据,若content.type的参数值不等于2,说明本次执行过程中content.type是异常数据。
需要说明的是,步骤S602至步骤S604所述的检测动态输出数据的过程,以及步骤S605和步骤S606所述的检测除动态输出数据以外的输出数据的过程,其执行顺序可以互换,也可以交替执行。
本实施例提供一种基于预期结果模型的输出数据的检测方法,获取微服务系统执行测试用例产生的输出数据后,利用预期结果模型所记录的动态输出数据之间的关联性,对具有关联性的动态输出数据当前的参数值进行比较,通过判断比较结果和预期结果模型是否匹配,确定动态输出数据是否为异常数据;另一方面,对除动态输出数据以外的输出数据,将当前的参数值和预期结果模型记录的期望参数值进行比较,从而确定这些输出数据是否为异常数据。综上所述,本实施例提供的检测方法能够有效的检测微服务系统执行测试用例后产生的动态输出数据和具有期望参数值的输出数据是否异常,从而实现对微服务系统的全面的检测。
最后需要说明的是,本申请任一实施例提供的构建预期结果模型的方法,以及本申请任一实施例提供的利用预期结果模型对微服务系统的输出数据进行检测的方法,可以依次执行,也就是完成预期结果模型的构建后直接利用预期结果模型进行检测,也可以分别执行,即完成预期结果模型的构建后,先保存构建好的预期结果模型,后续需要对微服务系统进行测试时再调用预期结果模型检测微服务系统的输出数据。
在实际应用中,线上支付系统就可以认为是一个微服务系统,该系统可以包括查单服务、下单服务、金额操作服务、银行服务和通知服务,用户向支付系统发起支付请求时,查单服务会向用户显示用户请求支付的金额,以供用户修改或确认,用户确认后,下单服务基于该请求生成一笔交易记录,其中包括用户账号,支付对象,支付金额以及随机生成的交易序列号,然后将交易记录传递给银行服务和金额操作服务,金额操作服务则用于从线上支付系统所记录的该用户的可用额度中扣除支付金额对应的额度,银行服务则用于通知银行对该用户的银行账户进行扣款,金额操作服务操作完成后会向通知服务发送上述交易记录以及交易成功的消息,使通知服务向用户推送交易成功的消息,其中包括交易序列号,支付金额等信息。
假设有一个测试用例预先规定虚拟账户和支付金额,利用该测试用例对线上支付系统进行测试时,通过收集线上支付系统处理多次支付请求后产生的行为数据集可以发现,支付系统每次处理请求时下单服务产生的交易序列号都与之前产生的不同,但是在一次处理流程中,下单服务,金额操作服务和通知服务输出的表示交易序列号的是相同的,也就是说,这三个被测服务输出的交易序列号是相互具有关联性的动态数据。另一方面,由于测试用例指定了支付金额,所以正常情况下每次处理时下单服务输出的支付金额的数值都是测试用例指定的数值,对应的,该数值就是支付金额的期望参数值,例如,测试用例将支付金额指定为200,那么支付金额的期望参数值就是200。
记录上述分析结果,就可以得到一个预期结果模型。当再次用这个测试用例测试支付系统时,可以判断下单服务,金额操作服务和通知服务输出的交易序列号是否相等,若不相等,则认为这三个被测服务输出的交易序列号异常,对应的,这三个被测服务就可能存在故障。对于下单服务输出的支付金额,若其数值不等于200,则认为下单服务输出的支付金额异常,下单服务可能存在故障。
结合本申请任一实施例提供的方法,本申请实施例还提供一种微服务系统的测试装置,请参考图7,该装置包括:
获取单元701,用于获取并组合微服务系统执行测试用例的过程中每个被测服务的行为数据,得到测试用例的执行过程对应的行为数据集。
其中,行为数据包括输入数据和输出数据;被测服务指代微服务系统包含的,参与测试用例的执行过程的服务。
匹配单元702,用于对行为数据集中的每两个被测服务的行为数据进行匹配,得到匹配结果,并根据匹配结果分别确定每两个被测服务之间的依赖关系的判断结果。
比较单元703,用于针对每两个具有依赖关系的被测服务,通过比较两个被测服务的动态输出数据的参数值,确定两个动态输出数据之间的关联性的判断结果。
其中,动态输出数据,指代本次执行过程中对应的参数值与前一次执行过程中对应的参数值不一致的输出数据。
记录单元704,用于记录每两个动态输出数据之间的关联性的判断结果,得到测试用例的预期结果模型。
其中,预期结果模型用于检测微服务系统执行测试用例后的每两个动态输出数据之间的关联性与对应的判断结果是否匹配。
测试单元705,用于在微服务系统再次执行该测试用例后,利用该测试用例的预期结果模型检测微服务系统的各项被测服务的动态输出数据是否为异常数据。
上述单元中,获取单元701,匹配单元702,比较单元703和记录单元704可以认为是一个用于构建预期结果模型的模块,测试单元705可以认为是一个利用构建的预期结果模型对微服务系统的输出数据进行检测的模块。
可选的,微服务系统的每一个服务均通过对应的公共函数发送和接收消息,每一个公共函数均预先设置有上报节点;
其中,获取单元701获取并组合微服务系统执行测试用例的过程中每个被测服务的行为数据,得到测试用例的执行过程对应的行为数据集时,具体用于:
微服务系统执行测试用例时,实时接收每一个上报节点上报的多条消息;
针对每一条消息,利用包装消息的业务协议解析消息,得到消息携带的被测服务的行为数据;
组合每个被测服务的行为数据,得到测试用例的执行过程的行为数据集。
匹配单元702对行为数据集中的每两个被测服务的行为数据进行匹配,得到匹配结果,并根据匹配结果确定两个被测服务之间的依赖关系的判断结果时,具体用于:
针对每两个被测服务,对第一个被测服务的输入数据和第二个被测服务的输出数据进行匹配,并对第一个被测服务的输出数据和第二个被测服务的输入数据进行匹配;
若第一个被测服务的输入数据和第二个被测服务的输出数据匹配成功,或者,第一个被测服务的输出数据和第二个被测服务的输入数据匹配成功,确定两个被测服务之间具有依赖关系;
若第一个被测服务的输入数据和第二个被测服务的输出数据匹配失败,并且,第一个被测服务的输出数据和第二个被测服务的输入数据匹配失败,确定两个被测服务之间不具有依赖关系。
比较单元703针对每两个具有依赖关系的被测服务,通过比较两个被测服务的动态输出数据的参数值,确定两个动态输出数据之间的关联性的判断结果时,具体用于:
针对每两个具有依赖关系的被测服务,判断第一个被测服务的动态输出数据的参数值和第二个被测服务的动态输出数据的参数值是否一致;
若第一个被测服务的动态输出数据的参数值和第二个被测服务的动态输出数据的参数值一致,确定两个动态输出数据之间具有关联性;
若第一个被测服务的动态输出数据的参数值和第二个被测服务的动态输出数据的参数值不一致,确定两个动态输出数据之间不具有关联性。
可选的,所述装置还包括调整单元706,用于:
针对每两个被测服务,利用多个行为数据集中的两个被测服务的行为数据的匹配结果对两个被测服务的依赖关系的判断结果进行调整;
其中,比较单元703针对每两个具有依赖关系的被测服务,通过比较两个被测服务的动态输出数据的参数值,确定两个动态输出数据之间的关联性的判断结果时,具体用于:
针对每两个具有调整后的依赖关系的被测服务,通过比较两个被测服务的动态输出数据的参数值,确定两个动态输出数据之间的关联性的判断结果。
可选的,所述装置还包括确定单元707,用于:
针对每一种输出数据,将输出数据对应的多个参数值中出现频率大于预设的第一频率阈值的参数值确定为输出数据的预期参数值。
其中,输出数据的参数值以及参数值的出现频率通过统计多个输出数据集确定。
其中,记录单元704记录每两个动态输出数据之间的关联性的判断结果,得到测试用例的预期结果模型时,具体用于:
记录每两个动态输出数据之间的关联性的判断结果,以及每一种输出数据的预期参数值,得到测试用例的预期结果模型。
具体的,测试单元705在微服务系统再次执行该测试用例后,利用该测试用例的预期结果模型检测微服务系统的各项被测服务的动态输出数据是否为异常数据时,具体用于:
获取微服务系统执行测试用例的过程中每个被测服务的动态输出数据。
其中,被测服务指代微服务系统包含的,参与测试用例的执行过程的服务;动态输出数据,指代本次执行过程中对应的参数值与前一次执行过程中对应的参数值不一致的输出数据。
针对测试用例的预期结果模型记录的每两项具有关联性的动态输出数据,比较本次执行过程中两项动态输出数据的参数值是否一致。
针对测试用例的预期结果模型记录的每两项具有关联性的动态输出数据,若两项动态输出数据的参数值不一致,则确定这两项动态输出数据为异常数据。
本申请任一实施例提供的微服务系统的测试装置,其具体工作原理可以参考本申请实施例提供的预期结果模型的构建方法,以及基于预期结果模型的输出数据的检测方法中的对应步骤,此处不再赘述。
本申请提供一种微服务系统的测试装置,其中,用于构建预期结果模型的测试装置利用获取单元701获取微服务系统执行测试用例的过程中被测服务的行为数据,得到行为数据集;行为数据包括输入数据和输出数据;被测服务指代参与测试用例的执行过程的服务;然后匹配单元702对每两个被测服务的行为数据进行匹配,根据匹配结果确定被测服务之间的依赖关系;比较单元703通过比较每两个具有依赖关系的被测服务的动态输出数据的参数值确定动态输出数据之间的关联性;记录单元704记录动态输出数据之间的关联性,得到预期结果模型。
基于预期结果模型,测试单元705可以针对其中记录的每两项具有关联性的动态输出数据,判断测试用例的一次执行过程中,这两项动态输出数据的参数值是否一致,若某次执行过程中,预期结果模型记录的两项具有关联性的动态输出数据的参数值不一致,则认为这次执行过程中这两项动态输出数据为异常数据。
综上所述,本实施例提供的微服务系统的测试装置能够有效的检测微服务系统测试过程中产生的动态输出数据,相对于现有技术能够更全面的测试微服务系统。
本申请实施例还提供一种计算机存储介质,用于存储程序,所述程序被执行时,用于实现如本申请任一实施例所述的预期结果模型的构建方法,或者用于实现如本申请任一实施例所述的基于预期结果模型的输出数据的检测方法。
请参考图8,本申请实施例还提供一种微服务系统的测试设备,包括存储器801和处理器802,其中,存储器801用于存储程序,处理器802用于执行存储器801存储的程序,该程序被执行时,具体用于实现本申请任一实施例所提供的微服务系统的测试方法。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
需要注意,本发明中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种微服务系统的测试方法,其特征在于,包括:
获取并组合所述微服务系统执行测试用例的过程中每个被测服务的行为数据,得到所述测试用例的执行过程对应的行为数据集;其中,所述行为数据包括输入数据和输出数据;所述被测服务指代所述微服务系统包含的,参与所述测试用例的执行过程的服务;
对所述行为数据集中的每两个所述被测服务的行为数据进行匹配,得到匹配结果,并根据所述匹配结果分别确定每两个所述被测服务之间的依赖关系的判断结果;
针对每两个具有依赖关系的所述被测服务,通过比较所述两个被测服务的动态输出数据的参数值,确定所述两个动态输出数据之间的关联性的判断结果;其中,所述动态输出数据,指代本次执行过程中对应的参数值与前一次执行过程中对应的参数值不一致的输出数据;
记录每两个所述动态输出数据之间的关联性的判断结果,得到所述测试用例的预期结果模型;其中,所述预期结果模型用于检测所述微服务系统执行所述测试用例后的每两个所述动态输出数据之间的关联性与对应的判断结果是否匹配;
在所述微服务系统再次执行所述测试用例后,利用所述测试用例的预期结果模型检测每个所述被测服务的动态输出数据是否为异常数据。
2.根据权利要求1所述的测试方法,其特征在于,所述微服务系统的每一个服务均通过对应的公共函数发送和接收消息,每一个所述公共函数均预先设置有上报节点;
其中,所述获取并组合所述微服务系统执行测试用例的过程中每个被测服务的行为数据,得到所述测试用例的执行过程对应的行为数据集,包括:
所述微服务系统执行测试用例时,实时接收每一个所述上报节点上报的多条消息;
针对每一条所述消息,利用包装所述消息的业务协议解析所述消息,得到所述消息携带的被测服务的行为数据;
组合每个所述被测服务的行为数据,得到所述测试用例的执行过程的行为数据集。
3.根据权利要求1所述的测试方法,其特征在于,所述对所述行为数据集中的每两个所述被测服务的行为数据进行匹配,得到匹配结果,并根据所述匹配结果确定所述两个被测服务之间的依赖关系的判断结果,包括:
针对每两个所述被测服务,对第一个被测服务的输入数据和第二个被测服务的输出数据进行匹配,并对所述第一个被测服务的输出数据和所述第二个被测服务的输入数据进行匹配;
若所述第一个被测服务的输入数据和所述第二个被测服务的输出数据匹配成功,或者,所述第一个被测服务的输出数据和所述第二个被测服务的输入数据匹配成功,确定所述两个被测服务之间具有依赖关系;
若所述第一个被测服务的输入数据和所述第二个被测服务的输出数据匹配失败,并且,所述第一个被测服务的输出数据和所述第二个被测服务的输入数据匹配失败,确定所述两个被测服务之间不具有依赖关系。
4.根据权利要求1所述的测试方法,其特征在于,所述针对每两个具有依赖关系的所述被测服务,通过比较所述两个被测服务的动态输出数据的参数值,确定所述两个动态输出数据之间的关联性的判断结果,包括:
针对每两个具有依赖关系的所述被测服务,判断第一个被测服务的动态输出数据的参数值和第二个被测服务的动态输出数据的参数值是否一致;
若所述第一个被测服务的动态输出数据的参数值和所述第二个被测服务的动态输出数据的参数值一致,确定所述两个动态输出数据之间具有关联性;
若所述第一个被测服务的动态输出数据的参数值和所述第二个被测服务的动态输出数据的参数值不一致,确定所述两个动态输出数据之间不具有关联性。
5.根据权利要求1所述的测试方法,其特征在于,所述对所述行为数据集中的每两个所述被测服务的行为数据进行匹配,得到匹配结果,并根据所述匹配结果分别确定每两个所述被测服务之间的依赖关系的判断结果之后,还包括:
针对每两个所述被测服务,利用多个行为数据集中的所述两个被测服务的行为数据的匹配结果对所述两个被测服务的依赖关系的判断结果进行调整;
其中,所述针对每两个具有依赖关系的所述被测服务,通过比较所述两个被测服务的动态输出数据的参数值,确定所述两个动态输出数据之间的关联性的判断结果,包括:
针对每两个具有调整后的依赖关系的所述被测服务,通过比较所述两个被测服务的动态输出数据的参数值,确定所述两个动态输出数据之间的关联性的判断结果。
6.根据权利要求1至4任意一项所述的测试方法,其特征在于,所述利用所述被测服务之间的依赖关系,以及所述动态输出数据之间的关联性构建预期结果模型之前,还包括:
针对每一种所述输出数据,将所述输出数据对应的多个参数值中出现频率大于预设的第一频率阈值的参数值确定为所述输出数据的预期参数值;其中,所述输出数据的参数值以及所述参数值的出现频率通过统计多个输出数据集确定;
其中,所述记录每两个所述动态输出数据之间的关联性的判断结果,得到所述测试用例的预期结果模型,包括:
记录每两个所述动态输出数据之间的关联性的判断结果,以及每一种所述输出数据的预期参数值,得到所述测试用例的预期结果模型。
7.根据权利要求1所述的测试方法,其特征在于,所述在所述微服务系统再次执行所述测试用例后,利用所述测试用例的预期结果模型检测每个所述被测服务的动态输出数据是否为异常数据,包括:
获取所述微服务系统执行测试用例的过程中每个被测服务的动态输出数据;
针对所述测试用例的预期结果模型记录的每两项具有关联性的动态输出数据,比较本次执行过程中所述两项动态输出数据的参数值是否一致;
针对所述测试用例的预期结果模型记录的每两项具有关联性的动态输出数据,若所述两项动态输出数据的参数值不一致,确定所述两项动态输出数据为异常数据。
8.一种微服务系统的测试装置,其特征在于,包括:
获取单元,用于获取并组合所述微服务系统执行测试用例的过程中每个被测服务的行为数据,得到所述测试用例的执行过程对应的行为数据集;其中,所述行为数据包括输入数据和输出数据;所述被测服务指代所述微服务系统包含的,参与所述测试用例的执行过程的服务;
匹配单元,用于对所述行为数据集中的每两个所述被测服务的行为数据进行匹配,得到匹配结果,并根据所述匹配结果分别确定每两个所述被测服务之间的依赖关系的判断结果;
比较单元,用于针对每两个具有依赖关系的所述被测服务,通过比较所述两个被测服务的动态输出数据的参数值,确定所述两个动态输出数据之间的关联性的判断结果;其中,所述动态输出数据,指代本次执行过程中对应的参数值与前一次执行过程中对应的参数值不一致的输出数据;
记录单元,用于记录每两个所述动态输出数据之间的关联性的判断结果,得到所述测试用例的预期结果模型;其中,所述预期结果模型用于检测所述微服务系统执行所述测试用例后的每两个所述动态输出数据之间的关联性与对应的判断结果是否匹配;
测试单元,用于在所述微服务系统再次执行所述测试用例后,利用所述测试用例的预期结果模型检测每个所述被测服务的动态输出数据是否为异常数据。
9.一种微服务系统的测试设备,其特征在于,包括存储器和处理器;
所述存储器用于存储程序;
所述处理器用于执行所述程序,所述程序被执行时,用于实现如权利要求1至7任意一项所述的微服务系统的测试方法。
10.一种计算机存储介质,其特征在于,用于存储程序,所述程序被执行时,用于实现如权利要求1至7任意一项所述的微服务系统的测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010143286.4A CN113360363B (zh) | 2020-03-04 | 2020-03-04 | 微服务系统的测试方法、装置、设备和计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010143286.4A CN113360363B (zh) | 2020-03-04 | 2020-03-04 | 微服务系统的测试方法、装置、设备和计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113360363A CN113360363A (zh) | 2021-09-07 |
CN113360363B true CN113360363B (zh) | 2024-04-02 |
Family
ID=77523372
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010143286.4A Active CN113360363B (zh) | 2020-03-04 | 2020-03-04 | 微服务系统的测试方法、装置、设备和计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113360363B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117667751B (zh) * | 2024-02-01 | 2024-04-19 | 道普信息技术有限公司 | 一种低耦合web服务自动化测试方法 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102170378A (zh) * | 2011-04-22 | 2011-08-31 | 北京科技大学 | 一种无需预期的Web服务测试方法 |
CN103064788A (zh) * | 2012-12-24 | 2013-04-24 | 清华大学 | 一种基于接口语义契约模型的Web服务建模与测试方法 |
CN103455313A (zh) * | 2012-05-31 | 2013-12-18 | 国际商业机器公司 | 用于关联被测系统的输入消息与输出消息的方法和设备 |
US9514037B1 (en) * | 2015-12-16 | 2016-12-06 | International Business Machines Corporation | Test program scheduling based on analysis of test data sets |
CN106294130A (zh) * | 2016-07-28 | 2017-01-04 | 浪潮电子信息产业股份有限公司 | 一种单元测试方法及装置 |
CN107924172A (zh) * | 2015-12-31 | 2018-04-17 | 深圳配天智能技术研究院有限公司 | 一种数控主板自动化测试系统 |
CN109213671A (zh) * | 2017-06-30 | 2019-01-15 | 中国航发商用航空发动机有限责任公司 | 软件测试方法及其平台 |
CN109542780A (zh) * | 2018-11-13 | 2019-03-29 | 东软集团股份有限公司 | 自然语言处理应用的测试方法、测试设备及存储介质 |
CN109783350A (zh) * | 2018-12-13 | 2019-05-21 | 重庆金融资产交易所有限责任公司 | 接口测试方法、装置及计算机可读存储介质 |
CN109783457A (zh) * | 2018-12-17 | 2019-05-21 | 中国平安财产保险股份有限公司 | Cgi接口管理方法、装置、计算机设备和存储介质 |
CN109831355A (zh) * | 2019-01-28 | 2019-05-31 | 网联清算有限公司 | 测试方法、测试装置及介质 |
CN110502442A (zh) * | 2019-08-15 | 2019-11-26 | 平安普惠企业管理有限公司 | 动态参数校验方法、装置、设备和存储介质 |
CN110516209A (zh) * | 2009-09-16 | 2019-11-29 | 起元技术有限责任公司 | 在界面中呈现可视反馈的方法、系统和计算机可读介质 |
CN110553678A (zh) * | 2019-08-26 | 2019-12-10 | 广州供电局有限公司 | 多传感器系统检测方法、装置、计算机设备和存储介质 |
US10540270B1 (en) * | 2018-01-25 | 2020-01-21 | Amazon Technologies, Inc. | Representation-based automated software testing |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7996816B2 (en) * | 2006-11-15 | 2011-08-09 | International Business Machines Corporation | Method and apparatus for dynamically binding service component implementations for specific unit test cases |
KR101418553B1 (ko) * | 2010-09-07 | 2014-07-10 | 한국전자통신연구원 | 서비스 기반 애플리케이션 통합 시험장치, 시스템 및 그 방법 |
US9389986B2 (en) * | 2013-05-06 | 2016-07-12 | Microsoft Technology Licensing, Llc | Identifying impacted tests from statically collected data |
US10114736B2 (en) * | 2016-03-30 | 2018-10-30 | Ca, Inc. | Virtual service data set generation |
US10021204B2 (en) * | 2016-07-12 | 2018-07-10 | Ca, Inc. | Test proxy between client applications and web services |
US20190188119A1 (en) * | 2017-12-14 | 2019-06-20 | Cognizant Technology Solutions India Pvt. Ltd. | System and a method for providing automated performance detection of application programming interfaces |
-
2020
- 2020-03-04 CN CN202010143286.4A patent/CN113360363B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110516209A (zh) * | 2009-09-16 | 2019-11-29 | 起元技术有限责任公司 | 在界面中呈现可视反馈的方法、系统和计算机可读介质 |
CN102170378A (zh) * | 2011-04-22 | 2011-08-31 | 北京科技大学 | 一种无需预期的Web服务测试方法 |
CN103455313A (zh) * | 2012-05-31 | 2013-12-18 | 国际商业机器公司 | 用于关联被测系统的输入消息与输出消息的方法和设备 |
CN103064788A (zh) * | 2012-12-24 | 2013-04-24 | 清华大学 | 一种基于接口语义契约模型的Web服务建模与测试方法 |
US9514037B1 (en) * | 2015-12-16 | 2016-12-06 | International Business Machines Corporation | Test program scheduling based on analysis of test data sets |
CN107924172A (zh) * | 2015-12-31 | 2018-04-17 | 深圳配天智能技术研究院有限公司 | 一种数控主板自动化测试系统 |
CN106294130A (zh) * | 2016-07-28 | 2017-01-04 | 浪潮电子信息产业股份有限公司 | 一种单元测试方法及装置 |
CN109213671A (zh) * | 2017-06-30 | 2019-01-15 | 中国航发商用航空发动机有限责任公司 | 软件测试方法及其平台 |
US10540270B1 (en) * | 2018-01-25 | 2020-01-21 | Amazon Technologies, Inc. | Representation-based automated software testing |
CN109542780A (zh) * | 2018-11-13 | 2019-03-29 | 东软集团股份有限公司 | 自然语言处理应用的测试方法、测试设备及存储介质 |
CN109783350A (zh) * | 2018-12-13 | 2019-05-21 | 重庆金融资产交易所有限责任公司 | 接口测试方法、装置及计算机可读存储介质 |
CN109783457A (zh) * | 2018-12-17 | 2019-05-21 | 中国平安财产保险股份有限公司 | Cgi接口管理方法、装置、计算机设备和存储介质 |
CN109831355A (zh) * | 2019-01-28 | 2019-05-31 | 网联清算有限公司 | 测试方法、测试装置及介质 |
CN110502442A (zh) * | 2019-08-15 | 2019-11-26 | 平安普惠企业管理有限公司 | 动态参数校验方法、装置、设备和存储介质 |
CN110553678A (zh) * | 2019-08-26 | 2019-12-10 | 广州供电局有限公司 | 多传感器系统检测方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113360363A (zh) | 2021-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6782778B2 (ja) | データ処理方法及び装置 | |
US8079017B2 (en) | Automated QS interface testing framework | |
CN106548402B (zh) | 资源转移监控方法及装置 | |
US8825798B1 (en) | Business event tracking system | |
CN111177005A (zh) | 业务应用的测试方法、装置、服务器和存储介质 | |
CN108628748B (zh) | 自动化测试管理方法和自动化测试管理系统 | |
CN114500690B (zh) | 接口数据处理方法、装置、电子设备及存储介质 | |
AU2017200895A1 (en) | Software integration testing with unstructured database | |
CN111651442A (zh) | 一种数据报送方法、装置、电子设备及存储介质 | |
CN113360363B (zh) | 微服务系统的测试方法、装置、设备和计算机存储介质 | |
CN110020550B (zh) | 核对平台的评估方法、装置及设备 | |
CN109617755B (zh) | 接入系统的验收方法及装置 | |
CN112202647B (zh) | 区块链网络中的测试方法、装置及测试设备 | |
CN114281784A (zh) | 分布式核心系统的交易日志回放方法、装置、设备和介质 | |
CN110347678B (zh) | 一种金融数据的存储方法、系统、装置及设备 | |
CN111427796A (zh) | 系统测试方法、装置及电子设备 | |
RU2688254C1 (ru) | Система мониторинга сети устройств самообслуживания | |
CN111831698A (zh) | 一种数据稽核方法、系统和电子设备 | |
WO2020215542A1 (zh) | 信息通知方法、装置、计算机设备及存储介质 | |
CN111367776A (zh) | 资源转移业务的记录方法、装置、设备及存储介质 | |
CN112416735A (zh) | 一种应用程序检测方法、装置及终端设备、存储介质 | |
CN115086191B (zh) | 一种银行卡自动化测试方法、装置及设备 | |
CN113570370B (zh) | 基于utxo的区块链交易监管方法、装置及可读存储介质 | |
CN111259298B (zh) | 基于区块链的话题生成方法、节点服务器及存储介质 | |
CN117234672A (zh) | 事务处理方法、装置、产品、设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |