Page 107 - 《软件学报》2021年第9期
P. 107
陈立哲 等:基于日志挖掘的微服务测试集缩减技术 2731
析方法类似,但更贴近代码层面,需要代码生成的控制流图作为输入;文献[15]分析服务接口契约的依赖和冲突
关系变化来筛选测试用例.值得注意的是:很多研究都将服务之间的调用关系抽象为有向图,并将测试用例抽象
为图上的路径.
在测试用例排序方面,基于覆盖性的排序研究占多数.文献[18]提出了一种基于服务贡献度的排序技术,该
技术将服务及其调用关系类比程序控制结构并为其分配贡献度,进而计算测试用例的整体贡献度,贡献度高的
测试用例排序靠前.文献[19]提出了一种基于多因素度量的测试用例排序技术,通过计算工作流分支(WBs)、
XPath 重写图分支(XRGBs)和 WSDL 元素(WEs)等因素的综合度量,结合所需覆盖准则对测试用例排序.在基于
多因素排序的技术中,贪心算法被较多采用 [20] ,爬山算法和遗传算法也偶有采用 [21] .考虑到微服务架构与关系
图的相似性,文献[22]提出了一种基于图的微服务分析和测试框架,该框架通过微服务系统的需求规约(BDD)生
成关系图,遍历关系图得到所有服务调用路径集合,进而从目标服务是否迭代、调用关系优先级和追溯的规约
层级等方面来对调用路径对应的测试用例排序.
在测试用例缩减方面,除了直接应用单块架构软件的启发式方法、基于模型的方法和测试数据聚类等方法
外,文献[23]提出了一种基于多目标优化的方法,使得测试用例集的覆盖性、可靠性和执行开销等目标综合最优.
文献[24]提出了一种基于 Petri 网的方法,该方法从微服务系统业务规则的 Petri 网模型制定缩减规则,进而结合
输入参数组合方式缩减测试用例集合.从近几年检索到的论文数量上看,测试用例集缩减方面的研究明显少于
测试用例选择和排序.
1.2 Web日志挖掘
[9]
Web 日志记录了用户访问和资源使用信息,是 Web 系统知识挖掘的一种主要数据来源 .Web 日志蕴含了
用户访问和系统运行的知识,常被用于性能分析、流量分析、服务改进、用户行为建摸和商业智能化等目的.Web
日志挖掘过程通常包括数据预处理、模式发现和模式应用这 3 个步骤.其中:数据预处理阶段对原始日志数据
进行清理整合,转换为格式化数据集;模式发现阶段则根据不同目标,采用相应的数据挖掘技术,从格式化数据
集中生成感兴趣的模式集合,例如统计分析、路径分析、关联规则挖掘、序列模式挖掘和聚类等等;模式应用
阶段则是对挖掘到的模式集合进行分析和应用,例如基于关联模式向用户推荐其感兴趣的商品 [25] 等等.
在针对 Web 日志的各种数据挖掘技术中,频繁模式挖掘技术是最早被研究、也是应用最为广泛的技术之
一 [26] ,它能从 Web 日志中挖掘出用户频繁访问模式和系统资源之间的频繁关联模式,通常被作为发现频繁路
径、关联规则和序列模式等目标的支撑技术.频繁模式挖掘问题可描述如下:给定集合 D={T 1 ,T 2 ,T 3 ,…,T n },每个
事务 T i 都是项集合的子集,当确定一个频繁阈值 s(0<s<n)时,找出所有项的组合模式 p,使得 p 在 D 中的出现频
次超过 s.其中,p 的出现频次也称为支持度 c,频繁阈值 s 也称为最小支持度.文献[26]综述了频繁模式挖掘的各
类算法及常用的应用场景,常见的算法有 Aprori,FP-growth 等等.在软件测试方面的应用侧重于代码缺陷检测,
但尚未发现有研究将其应用于微服务系统的回归测试.
微服务系统的 API 网关层日志记录了其运行过程中的每一次 API 请求.在工程实践中,开发运维人员主要
关注故障记录和调试信息,而占据日志数量绝大部分的请求成功记录通常被忽略.事实上,这些正常数据蕴含了
一段时间内用户对不同业务场景的关注程度和服务之间的动态关联等知识,同样具有很高的价值.因此,本文基
于频繁模式挖掘技术,对微服务系统 API 网关层日志进行挖掘,从而获得用户频繁关注的服务调用路径,用于测
试用例集缩减.
2 方法描述
本文提出的技术主要解决在微服务系统工程实践中难以获得系统规约和架构描述时如何缩减测试用例的
问题,其输入主要有 API 网关层日志和原测试用例集,输出为测试用例缩减集,过程主要包括 API 网关层日志挖
掘、测试用例匹配和测试用例缩减这 3 个环节,如图 1 所示.下面详细描述各个环节.