一种微服务组合程序的故障定位方法及系统与流程

专利2022-06-29  89


本发明涉及软件测试
技术领域
,特别是指一种微服务组合程序的故障定位方法及系统。
背景技术
:微服务架构(microservicearchitecture)作为一种新型软件架构在近年来引起了越来越多的关注。在微服务架构下,复杂的软件系统由一组职责单一的微服务(microservice)构成。每个微服务运行在独立的进程中,并可通过自动部署机制实现自动化独立部署;微服务之间通过rpc、http等轻量级交互机制实现通信。与单体架构相比,微服务架构具有功能单一、技术选型灵活、组件独立部署、持续交付、容错能力强、可按需扩展等优势。与此同时,分布式存储技术、web容器虚拟化技术、大数据云计算技术、服务器集群技术的发展为微服务架构的实施提供了技术保障。微服务架构被广泛应用于构建各类分布式软件系统,实现了开放网络环境中各类资源的共享和集成。与传统程序相比,微服务组合程序存在如下的新特性:1.微服务组合程序中的微服务众多,依赖关系复杂;在微服务系统频繁更新的情形下,大量的微服务实例及之间的依赖关系不断变化;2.微服务组合程序中各个微服务之间的调用关系复杂,一个微服务出现故障时,故障的影响会沿着调用关系不断扩散;3.构成微服务组合程序的微服务可由多种语言实现;4.微服务组合程序中的每个微服务在操作上独立于其他服务,并且服务之间唯一的通信形式是通过其发布的接口,难以获取每个微服务的具体代码。上述特点使得微服务组合程序的调试面临新的挑战。引发微服务组合程序故障的原因有很多,比如软件设计缺陷、代码问题、配置错误等。故障会导致微服务行为异常,表现为请求失败、响应延时等。由于微服务组合程序与传统程序的不同,已有的故障定位方法很难直接用来定位微服务组合程序。技术实现要素:本发明要解决的技术问题是提供一种微服务组合程序的故障定位方法及系统,以解决微服务组合程序故障定位困难的问题,提高微服务组合程序的故障定位效率,降低微服务组合程序故障定位的难度。为解决上述技术问题,本发明提供如下技术方案:一种微服务组合程序的故障定位方法,所述方法包括:基于待测微服务组合程序的api说明文档信息,获取所述待测微服务组合程序中的微服务信息;获取测试用例集的执行结果;基于微服务的监控信息文件,获取所述测试用例集的执行轨迹集;基于所述待测微服务组合程序中的微服务信息,根据所述测试用例集的执行结果和执行轨迹集,计算每个微服务的怀疑度;对所述待测微服务组合程序中的微服务按照怀疑度进行排序,筛选出怀疑度超过预设值的微服务,得到高怀疑度微服务集合,生成故障定位报告。进一步地,所述获取所述待测微服务组合程序中的微服务信息,包括:获取所述待测微服务组合程序的api说明文档中所有微服务的实例信息,分析得到所述待测微服务组合程序中的所有微服务;其中,所述微服务的实例信息包括相应微服务的名称、主机和端口注册表;获取所述待测微服务组合程序中的所有网关微服务和功能微服务,得到前端网关集、后端网关集和功能微服务集;其中,所述功能微服务为所述待测微服务组合程序中专注于单一责任与功能的小型功能区块。进一步地,所述获取测试用例集的执行结果,包括:对于选择的测试用例集中的每个测试用例进行按序编号;从所述测试用例集中按序读取测试用例;标记微服务集执行轨迹覆盖情况,判断各测试用例的执行结果。进一步地,所述标记微服务集执行轨迹覆盖情况,包括:判断测试用例t是否经过多实例微服务;若测试用例t经过多实例微服务,则获取该多实例微服务的实例数目m;将测试用例t执行m次,若测试用例t执行m次后全部为未通过,则判断该多实例微服务存在故障;若测试用例t执行m次后部分未通过,则判断该多实例微服务中某个实例存在故障。进一步地,所述判断各测试用例的执行结果,包括:获得每个测试用例在所述待测微服务组合程序中的实际输出结果;获取当前测试用例在所述待测微服务组合程序中的预期输出结果;判断当前测试用例的实际输出结果和预期输出结果是否一致;若实际输出结果和预期输出结果不一致,则判断当前测试用例的执行结果为失败,将当前测试用例加入到失败测试用例集中;若实际输出结果和预期输出结果一致,则判断当前测试用例的执行结果为成功,将当前测试用例加入到成功测试用例集中。进一步地,所述获取所述测试用例集的执行轨迹集,包括:解析所述监控信息文件;根据所述监控信息文件中记录的每个测试用例的执行轨迹信息,得到执行测试用例集之后的执行轨迹集;收集并记录每个微服务间调用轨迹情况。进一步地,所述基于所述待测微服务组合程序中的微服务信息,根据所述测试用例集的执行结果和执行轨迹集,计算每个微服务的怀疑度,包括:当测试用例t的执行轨迹经过前端网关服务时,将前端网关服务视为功能微服务;当测试用例t的执行轨迹经过后端网关服务时,将后端网关服务在测试用例t对应的执行轨迹中出现的次数记为1次;根据成功测试用例集和失败测试用例集在微服务调用关系的频率差异,计算每个微服务的怀疑度。进一步地,所述根据成功测试用例集和失败测试用例集在微服务调用关系的频率差异,计算每个微服务的怀疑度,包括:利用公式(1)计算成功测试用例集经过微服务s不同调用边的频率:其中,pti表示成功测试用例集经过微服务s第i条调用边的频率,xti表示成功测试用例集经过微服务s第i条调用边的次数,xtk表示成功测试用例集经过微服务s第k条调用边的次数;利用公式(2)计算失败测试用例集经过微服务s不同调用边的频率:其中,pfi表示失败测试用例集经过微服务s第i条调用边的频率,xfi表示失败测试用例集经过微服务s第i条调用边的次数,xfk表示失败测试用例集经过微服务s第k条调用边的次数;得到成功测试用例集经过微服务s不同调用边的频率密度pt=(pt1,pt2,…,ptn)和失败测试用例集经过微服务s不同调用边的频率密度pf=(pf1,pf2,…,pfn);利用公式(3)计算pt和pf的相似度sime(pt,pf),将pt和pf的相似度sime(pt,pf)作为微服务s的怀疑度:其中,ptk表示成功测试用例集经过微服务s第k条调用边的频率,pfk表示失败测试用例集经过微服务s第k条调用边的频率。进一步地,对待测微服务组合程序中的微服务按照怀疑度进行排序,选出怀疑度超预设值的微服务,得高怀疑度微服务集合,生成故障定位报告,包括:对待测微服务组合程序中的微服务按照怀疑度降序排序;选取怀疑度超过预设值的微服务及其实例信息,生成故障定位报告。相应地,为解决上述技术问题,本发明还提供如下技术方案:一种微服务组合程序的故障定位系统,所述系统包括:微服务信息获取模块,用于基于待测微服务组合程序的api说明文档信息,获取所述待测微服务组合程序中的微服务信息;测试用例执行结果获取模块,用于获取测试用例集的执行结果;测试用例执行轨迹集获取模块,用于基于微服务的监控信息文件,获取所述测试用例集的执行轨迹集;怀疑度计算模块,用于基于所述待测微服务组合程序中的微服务信息,根据所述测试用例集的执行结果和执行轨迹集,计算每个微服务的怀疑度;故障定位报告生成模块,用于对所述待测微服务组合程序中的微服务按照怀疑度进行排序,筛选出怀疑度超过预设值的微服务,得到高怀疑度微服务集合,生成故障定位报告。本发明的上述技术方案的有益效果如下:本发明提供的微服务组合程序的故障定位方法考虑到多实例微服务和网关微服务的特点,从获取执行轨迹信息和基于利用成功测试用例与失败测试用例在微服务调用关系的频率差异的角度进行怀疑度的计算。因此,本发明能够提高微服务组合程序故障定位的效率,降低微服务组合程序故障定位的难度。附图说明图1为本发明实施例提供的微服务组合程序的故障定位方法的流程图;图2为微服务组合程序的故障定位工具示意图;图3为微服务组合程序ms中的所有微服务列表;图4为微服务组合程序ms的执行轨迹图。具体实施方式为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。第一实施例请参阅图1,本实施例提供一种微服务组合程序的故障定位方法,该微服务组合程序的故障定位方法包括:s101,基于待测微服务组合程序的api说明文档信息,获取待测微服务组合程序中的微服务信息;具体地,在本实施例,s101具体为:获取待测微服务组合程序的api说明文档中所有微服务的实例信息(包括相应微服务的名称、主机和端口注册表),分析得到待测微服务组合程序中的所有微服务;获取待测微服务组合程序中的所有网关微服务和功能微服务,得到前端网关集、后端网关集和功能微服务集;其中,功能微服务是指待测微服务组合程序中专注于单一责任与功能的小型功能区块。s102,获取测试用例集的执行结果;具体地,在本实施例,s102具体为:对于选择的测试用例集中的每个测试用例进行按序编号;从测试用例集中按序读取测试用例;判断测试用例t是否经过多实例微服务;若测试用例t经过多实例微服务,则获取该多实例微服务的实例数目m;将测试用例t执行m次,若测试用例t执行m次后全部为未通过,则判断该多实例微服务存在故障;若测试用例t执行m次后部分未通过,则判断该多实例微服务中某个实例存在故障;标记微服务集执行轨迹覆盖情况,判断测试用例t的执行结果。进一步地,判断测试用例t的执行结果,具体为:获得每个测试用例在所述待测微服务组合程序中的实际输出结果;获取当前测试用例在待测微服务组合程序中的预期输出结果;判断当前测试用例的实际输出结果和预期输出结果是否一致;若实际输出结果和预期输出结果不一致,则判断当前测试用例的执行结果为失败,将当前测试用例加入到失败测试用例集中;若实际输出结果和预期输出结果一致,则判断当前测试用例的执行结果为成功,将当前测试用例加入到成功测试用例集中。s103,基于微服务的监控信息文件,获取测试用例集的执行轨迹集;具体地,在本实施例,s103具体为:解析监控信息文件;获取测试用例执行轨迹集;收集并记录每个微服务间调用轨迹情况;其中,解析监控信息文件的方法具体为:通过执行测试用例集可以得到测试用例执行轨迹集,由于在待测微服务组合程序中每个微服务都有监控插件,每次执行测试用例都可以从监控插件中获取微服务间请求和响应的消息,最后生成一个json格式的监控信息文件。获取测试用例执行轨迹集的方法具体为:根据监控信息文件中的内容获得每条测试用例的执行轨迹,因为监控信息文件中存在有关每个测试用例执行轨迹的信息,所以可以得到执行测试用例集之后的执行轨迹集。每条测试用例对应一个traceid,根据traceid和执行时间的先后顺序分析每个微服务执行的先后次序,可得到一条测试用例执行后的执行轨迹信息,多次执行后可得到多条执行轨迹,由此得到测试用例执行轨迹集。s104,基于待测微服务组合程序中的微服务信息,根据测试用例集的执行结果和执行轨迹集,计算每个微服务的怀疑度;具体地,在本实施例,s104具体为:处理网关微服务的信息;利用成功测试用例与失败测试用例在微服务调用关系的频率差异来计算微服务怀疑度;其中,处理网关微服务的信息的方法具体为:当测试用例t的执行轨迹经过前端网关服务时,将前端网关服务视为功能微服务;当测试用例t的执行轨迹经过后端网关服务时,将后端网关服务在此执行轨迹中出现的次数记为1;利用成功测试用例与失败测试用例在微服务调用关系的频率差异来计算微服务怀疑度的方法具体为:对于微服务组合程序中的一个微服务,若成功的测试用例和失败的测试用例所触发该微服务调用其他微服务的频率有差异,则该微服务可能存在故障;差异越大,该微服务出现故障的可能性越大。为了衡量这种差异,可以使用成功和失败测试用例经过的微服务实例及执行轨迹信息,采用基于利用成功测试用例与失败测试用例在微服务调用关系的频率差异的方法对每个微服务计算怀疑度,计算过程如下:首先统计成功的测试用例集和失败的测试用例集经过某个微服务同一条调用边的次数,用这个次数除以成功的测试用例集和失败的测试用例集经过该微服务的不同次数,可以得到关于该微服务的一条调用边的成功的测试用例集和失败的测试用例集的不同频率。然后集合所有成功的测试用例集和失败的测试用例集关于该微服务不同调用边的频率,可得到成功的测试用例集和失败的测试用例集在该微服务上的频率密度。最后使用相似度计算公式来计算成功的测试用例集和失败的测试用例集在某个微服务上调用其他微服务的频率密度差异,差异越大,越有可能存在故障。其中,对于相似度的计算,本实施例采用euclidean,euclidean是经典的对两组数据计算相似度的度量公式,可以用来对成功的测试用例和失败的测试用例在一个微服务上表现出对其他微服务进行调用的频率密度进行比较。因此本实施例选择了euclidean方法对成功的测试用例和失败的测试用例经过微服务每条调用关系的频率密度进行相似度计算并排序,计算过程如下:利用公式(1)计算测试用例集经过某个微服务不同调用边的频率:其中,xi表示测试用例经过第i条调用边的次数,xk表示测试用例经过第k条调用边的次数;利用公式(2)计算成功测试用例集经过微服务s不同调用边的频率:其中,pti表示成功测试用例集经过微服务s第i条调用边的频率,xti表示成功测试用例集经过微服务s第i条调用边的次数,xtk表示成功测试用例集经过微服务s第k条调用边的次数;利用公式(3)计算失败测试用例集经过微服务s不同调用边的频率:其中,pfi表示失败测试用例集经过微服务s第i条调用边的频率,xfi表示失败测试用例集经过微服务s第i条调用边的次数,xfk表示失败测试用例集经过微服务s第k条调用边的次数;得到成功测试用例集经过微服务s不同调用边的频率密度pt=(pt1,pt2,…,ptn)和失败测试用例集经过微服务s不同调用边的频率密度pf=(pf1,pf2,…,pfn);利用公式(4)计算pt和pf的相似度sime(pt,pf),将pt和pf的相似度sime(pt,pf)作为微服务s的怀疑度:其中,ptk表示成功测试用例集经过微服务s第k条调用边的频率,pfk表示失败测试用例集经过微服务s第k条调用边的频率。s105,对待测微服务组合程序中的微服务按照怀疑度进行排序,筛选出怀疑度超过预设值的微服务,得到高怀疑度微服务集合,生成故障定位报告。具体地,在本实施例,s105具体为:根据上述基于利用成功测试用例与失败测试用例在微服务调用关系的频率差异的故障定位方法可以得到待测微服务组合程序中每个微服务的怀疑度,将微服务的怀疑度降序排序,选取怀疑度较高的部分微服务及其实例信息,生成故障定位报告,进行定位结果输出。基于上述,下面如图2所示结合一个微服务组合程序“bookmanage”(ms)和故障定位工具为例对本实施例提出的微服务组合程序的故障定位方法进行更进一步的详细说明,该方法包括:步骤1,首先获取“bookmanage”微服务组合程序的api说明文档,通过信息获取,从“bookmanage”微服务组合程序的api规格说明文档中得到“bookmanage”微服务组合程序的待测微服务接口,以及“bookmanage”微服务组合程序中是否有多实例微服务和网关微服务,获得待测微服务组合程序的接口信息为“http://localhost:auth/accounts?id={id}&name={name}”,请求参数有两个分别是id和name,id的参数类型是int,name的参数类型是string,这个接口的请求方式是get。步骤2,对于选择的测试用例集t中的每个测试用例t进行按序编号;从选定的测试用例集按序读取测试用例t,判断测试用例t是否经过多实例微服务,根据api规格说明文档可知“bookmanage”微服务组合程序中没有多实例微服务,所以不需要对多实例微服务进行多次执行测试;标记微服务及执行轨迹覆盖情况;判断t的实际输出结果。其中,上述判断t的实际输出结果的具体方法为:对实际输出和预期输出进行比较,得到输出结果集,如果该测试用例执行后的输出和预期结果相同,在输出结果中表示为“true#”,否则表示为“false#”,根据成功还是失败的结果将输出结果集分为成功的测试用例结果集和失败的测试用例结果集。步骤3,解析监控信息文件;获取测试用例执行轨迹集;收集并记录每个微服务间调用轨迹情况;其中,上述解析监控信息文件的具体方法为:根据从每个微服务中监控得到的信息可以得到一个json格式的文档,如图3所示是文档的一部分,该文档记录了每个微服务发起调用和响应的顺序,根据执行轨迹“traceid”可以得到同一条执行轨迹中经过了哪些微服务,根据时间戳“timestamp”可知道每个微服务执行的顺序,根据微服务名“servicename”可知道每个微服务的名称。通过对json格式文档的处理得到执行轨迹信息,执行轨迹中的每个值表示微服务的名称,为了方便将微服务名称分辨清楚,每个微服务之间用“#”隔开,故障版本程序执行测试用例集t后得到的部分执行轨迹集如图4所示。步骤4,处理网关微服务的信息;利用成功测试用例与失败测试用例在微服务调用关系的频率差异来计算微服务的怀疑度。其中,处理网关微服务的信息的具体方法为:由于“bookmanage”微服务组合程序中只有一个前端网关微服务,所以将该前端网关服务视为功能微服务。对每个微服务根据成功测试用例与失败测试用例在微服务调用关系的频率差异和执行轨迹故障定位中的公式进行怀疑度排序。若使用基于统计分析的故障定位算法,首先统计微服务在失败执行轨迹集和成功执行轨迹集中的不同调用关系的次数,根据基于统计分析的方法得到微服务在失败执行轨迹集和成功执行轨迹集中的不同调用关系的频率,然后根据相似度计算公式对微服务进行怀疑度计算,得到计算后的微服务怀疑度如下表1所示。表1微服务怀疑度微服务怀疑度book0.57user8.54auth0.23manager0.00unregister0.00add0.00register0.00borrow0.00message0.00步骤5,根据上述基于利用成功测试用例与失败测试用例在微服务调用关系的频率差异的故障定位方法可以得到待测微服务组合程序中每个微服务的怀疑度,将微服务的怀疑度降序排序,选取怀疑度较高的部分微服务及其实例信息,生成故障定位报告,进行定位结果输出。本实施例的微服务组合程序的故障定位方法考虑到多实例微服务和网关微服务的特点,从获取执行轨迹信息和基于利用成功测试用例与失败测试用例在微服务调用关系的频率差异的角度进行怀疑度的计算。因此,本方法能够提高微服务组合程序故障定位的效率,降低微服务组合程序故障定位的难度。第二实施例本实施例提供一种微服务组合程序的故障定位系统,所述系统包括:微服务信息获取模块,用于基于待测微服务组合程序的api说明文档信息,获取待测微服务组合程序中的微服务信息;测试用例执行结果获取模块,用于获取测试用例集的执行结果;测试用例执行轨迹集获取模块,用于基于微服务的监控信息文件,获取测试用例集的执行轨迹集;怀疑度计算模块,用于基于待测微服务组合程序中的微服务信息,根据测试用例集的执行结果和执行轨迹集,计算每个微服务的怀疑度;故障定位报告生成模块,用于对待测微服务组合程序中的微服务按照怀疑度进行排序,筛选出怀疑度超过预设值的微服务,得到高怀疑度微服务集合,生成故障定位报告。本实施例的微服务组合程序的故障定位系统与上述第一实施例的微服务组合程序的故障定位方法相对应;其中,本实施例的微服务组合程序的故障定位系统中的各功能模块所实现的功能与上述第一实施例的微服务组合程序的故障定位方法中的各流程步骤一一对应;故,在此不再赘述。此外,需要说明的是,本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。最后需说明的是,以上所述是本发明优选实施方式,应当指出,尽管已描述了本发明优选实施例,但对于本
技术领域
的技术人员来说,一旦得知了本发明的基本创造性概念,在不脱离本发明所述原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。当前第1页1 2 3 
技术特征:

1.一种微服务组合程序的故障定位方法,其特征在于,所述方法包括:

基于待测微服务组合程序的api说明文档信息,获取所述待测微服务组合程序中的微服务信息;

获取测试用例集的执行结果;

基于微服务的监控信息文件,获取所述测试用例集的执行轨迹集;

基于所述待测微服务组合程序中的微服务信息,根据所述测试用例集的执行结果和执行轨迹集,计算每个微服务的怀疑度;

对所述待测微服务组合程序中的微服务按照怀疑度进行排序,筛选出怀疑度超过预设值的微服务,得到高怀疑度微服务集合,生成故障定位报告。

2.如权利要求1所述的微服务组合程序的故障定位方法,其特征在于,所述获取所述待测微服务组合程序中的微服务信息,包括:

获取所述待测微服务组合程序的api说明文档中所有微服务的实例信息,分析得到所述待测微服务组合程序中的所有微服务;其中,所述微服务的实例信息包括相应微服务的名称、主机和端口注册表;

获取所述待测微服务组合程序中的所有网关微服务和功能微服务,得到前端网关集、后端网关集和功能微服务集;其中,所述功能微服务为所述待测微服务组合程序中专注于单一责任与功能的小型功能区块。

3.如权利要求1所述的微服务组合程序的故障定位方法,其特征在于,所述获取测试用例集的执行结果,包括:

对于选择的测试用例集中的每个测试用例进行按序编号;

从所述测试用例集中按序读取测试用例;

标记微服务集执行轨迹覆盖情况,判断各测试用例的执行结果。

4.如权利要求3所述的微服务组合程序的故障定位方法,其特征在于,所述标记微服务集执行轨迹覆盖情况,包括:

判断测试用例t是否经过多实例微服务;

若测试用例t经过多实例微服务,则获取该多实例微服务的实例数目m;

将测试用例t执行m次,若测试用例t执行m次后全部为未通过,则判断该多实例微服务存在故障;若测试用例t执行m次后部分未通过,则判断该多实例微服务中某个实例存在故障。

5.如权利要求4所述的微服务组合程序的故障定位方法,其特征在于,所述判断各测试用例的执行结果,包括:

获得每个测试用例在所述待测微服务组合程序中的实际输出结果;

获取当前测试用例在所述待测微服务组合程序中的预期输出结果;

判断当前测试用例的实际输出结果和预期输出结果是否一致;

若实际输出结果和预期输出结果不一致,则判断当前测试用例的执行结果为失败,将当前测试用例加入到失败测试用例集中;

若实际输出结果和预期输出结果一致,则判断当前测试用例的执行结果为成功,将当前测试用例加入到成功测试用例集中。

6.如权利要求1所述的微服务组合程序的故障定位方法,其特征在于,所述获取所述测试用例集的执行轨迹集,包括:

解析所述监控信息文件;

根据所述监控信息文件中记录的每个测试用例的执行轨迹信息,得到执行测试用例集之后的执行轨迹集;

收集并记录每个微服务间调用轨迹情况。

7.如权利要求5所述的微服务组合程序的故障定位方法,其特征在于,所述基于所述待测微服务组合程序中的微服务信息,根据所述测试用例集的执行结果和执行轨迹集,计算每个微服务的怀疑度,包括:

当测试用例t的执行轨迹经过前端网关服务时,将前端网关服务视为功能微服务;当测试用例t的执行轨迹经过后端网关服务时,将后端网关服务在测试用例t对应的执行轨迹中出现的次数记为1次;

根据成功测试用例集和失败测试用例集在微服务调用关系的频率差异,计算每个微服务的怀疑度。

8.如权利要求7所述的微服务组合程序的故障定位方法,其特征在于,所述根据成功测试用例集和失败测试用例集在微服务调用关系的频率差异,计算每个微服务的怀疑度,包括:

利用公式(1)计算成功测试用例集经过微服务s不同调用边的频率:

其中,pti表示成功测试用例集经过微服务s第i条调用边的频率,xti表示成功测试用例集经过微服务s第i条调用边的次数,xtk表示成功测试用例集经过微服务s第k条调用边的次数;

利用公式(2)计算失败测试用例集经过微服务s不同调用边的频率:

其中,pfi表示失败测试用例集经过微服务s第i条调用边的频率,xfi表示失败测试用例集经过微服务s第i条调用边的次数,xfk表示失败测试用例集经过微服务s第k条调用边的次数;

得到成功测试用例集经过微服务s不同调用边的频率密度pt=(pt1,pt2,…,ptn)和失败测试用例集经过微服务s不同调用边的频率密度pf=(pf1,pf2,…,pfn);

利用公式(3)计算pt和pf的相似度sime(pt,pf),将pt和pf的相似度sime(pt,pf)作为微服务s的怀疑度:

其中,ptk表示成功测试用例集经过微服务s第k条调用边的频率,pfk表示失败测试用例集经过微服务s第k条调用边的频率。

9.如权利要求1-8任一项所述的微服务组合程序的故障定位方法,其特征在于,对待测微服务组合程序中的微服务按照怀疑度进行排序,筛选出怀疑度超过预设值的微服务,得到高怀疑度微服务集合,生成故障定位报告,包括:

对待测微服务组合程序中的微服务按照怀疑度降序排序;

选取怀疑度超过预设值的微服务及其实例信息,生成故障定位报告。

10.一种微服务组合程序的故障定位系统,其特征在于,所述系统包括:

微服务信息获取模块,用于基于待测微服务组合程序的api说明文档信息,获取所述待测微服务组合程序中的微服务信息;

测试用例执行结果获取模块,用于获取测试用例集的执行结果;

测试用例执行轨迹集获取模块,用于基于微服务的监控信息文件,获取所述测试用例集的执行轨迹集;

怀疑度计算模块,用于基于所述待测微服务组合程序中的微服务信息,根据所述测试用例集的执行结果和执行轨迹集,计算每个微服务的怀疑度;

故障定位报告生成模块,用于对所述待测微服务组合程序中的微服务按照怀疑度进行排序,筛选出怀疑度超过预设值的微服务,得到高怀疑度微服务集合,生成故障定位报告。

技术总结
本发明提供一种微服务组合程序的故障定位方法及系统,所述方法包括:基于待测微服务组合程序的API说明文档信息,获取待测微服务组合程序中的微服务信息;获取测试用例集的执行结果;基于微服务的监控信息文件,获取测试用例集的执行轨迹集;基于待测微服务组合程序中的微服务信息,根据测试用例集的执行结果和执行轨迹集,计算每个微服务的怀疑度;对待测微服务组合程序中的微服务按照怀疑度进行排序,筛选出怀疑度超过预设值的微服务,得到高怀疑度微服务集合,生成故障定位报告。本发明的故障定位方法能够提高微服务组合程序故障定位的效率,降低微服务组合程序故障定位的难度。

技术研发人员:孙昌爱;李妤纤
受保护的技术使用者:北京科技大学
技术研发日:2020.01.17
技术公布日:2020.06.09

转载请注明原文地址: https://bbs.8miu.com/read-26442.html

最新回复(0)