技术领域
本发明涉及通信技术领域,尤其涉及一种基于语义相似度的中文众包测试报告聚类方法。
背景技术
在众包软件测试过程中,众包工人发现并提交软件使用过程中出现的问题,撰写称测试报告提交给被测试方用以换取报酬。一个众包测试项目通常会收到成百上千份的测试报告,有研究指出在提交的软件问题报告中,仅有不到50%的报告揭示的是软件真实存在的缺陷,平均82%的众测报告是重复的。如果包含大量重复和假阳性的报告集由被测试方手动检查,这将会耗费大量的时间和人力测试成本。因此,高效且自动化的去除出重复报告和假阳性报告是非常有必要的。
众包软件测报告形式的多样性由测试报告提交方式的多样性决定。收集到的报告内容可能包含文本描述,堆栈信息或程序截图中的一种或者多种。绝大多数测试报告都包含有文本描述,叙述了问题的表现形式或问题出现前的软件的操作步骤。这些极其关键的信息帮助开发人员区分和定位软件缺陷,同样将用于自动化分析测试报告。
现有的大部分基于文本特征进行的报告分类的方法都是抽取关键词来构建报告的文本特征。但是,针对中文撰写的测试报告,这些方法实施起来并不太适用。首先,英文撰写的测试报告只需要依据空格来对测试报告进行分词,然而中文书写的连续性使得分词变得不同,分词结果组合成的词库质量对实验结果可能造成影响。其次,基于关键词构建的文本向量在进行特征表示时,特征维度可能对分类效果产生影响。
发明内容
本发明的目的是提供一种基于语义相似度的中文众包测试报告聚类方法,解决了现有中文众包测试报告评审过程中,假阳性和重复报告多,人工评审人力资源消耗大,效率低的不足的技术问题。
本发明为实现上述发明目的采用如下技术方案:
本发明提供了一种基于语义相似度的中文众包测试报告聚类方法,包括:
输入中文测试报告集,剔除无效测试报告,并将有效测试报告进行分句处理,得到测试报告句子对数据集;
利用测试报告句子对训练集对语义相似度模型进行训练,得到语义相似度计算模型;
将测试报告句子对数据集输入至语义相似度计算模型中进行语义相似度计算,得到测试报告相似度矩阵;
设置测试项目预期的bug数量,根据测试报告相似度矩阵进行谱聚类,得到测试报告类簇;
根据测试报告类簇对测试报告相似度矩阵进行分解,得到每个类簇的测试报告相似度矩阵,计算每类簇中累计相似度得分大于设定阈值的测试报告作为最终输出结果。
进一步地,输入中文测试报告集,剔除无效测试报告的方法包括:
若中文测试报告中测试用例字段或者结果描述字段缺失,视为无效报告;
由正则表达式“(测试|执行|实施)+(通过|正常|无误|成功)+”匹配到测试报告视为无效报告;
由正则表达式“(没有|未|无|没)(发现|检测|检查)?(任何|一个|几个)?(错误|缺陷|bug|漏洞|问题)+”匹配到测试报告视为无效报告;
由正则表达式“(无|pass|ok)$”匹配到测试报告视为无效报告。
进一步地,将有效测试报告进行分句处理包括:
使用正则表达式对有效测试报告的测试用例描述和结果描述字段进行分句。
进一步地,句子划分的正则表达式为:
单句结束符:如果被单句正则表达式“([。!?;\?])([^”’])”切分,视为一个完整句子;
英文省略符:如果被英文省略号正则表达式“(\.{6})([^”’;]”切分,视为一个完整句子;
中文省略符:如果被中文省略号正则表达式“(\…{2})([^”’])”切分,视为一个完整句子;
引述结束符:如果被引述正则表达式“([。!?\?][”’])([^,。;!?\?])”切分,视为一个完整句子。
进一步地,语义相似度计算模型包括:
模型由一个孪生的预训练语言模型构成;
语义相似度计算采用余弦相似度进行度量;
模型接收一个句子对作为输入,输出句子对的语义相似度。
进一步地,测试报告相似度矩阵计算方法为:
测试报告相似度=μ
进一步地,根据测试报告相似度矩阵进行谱聚类,得到测试报告类簇的方法包括:
输入测试报告相似度矩阵M和聚类中心数K;
根据相似度矩阵M构建邻接矩阵W和度矩阵D;
依据邻接矩阵W和度矩阵D计算出拉普拉斯矩阵L,并将其标准化;
依据标准化后的拉普拉斯矩阵计算特征向量矩阵F;
依据特征向量矩阵应用K-Means聚类算法;
输出类簇信息。
进一步地,根据测试报告类簇对测试报告相似度矩阵进行分解,得到每个类簇的测试报告相似度矩阵,计算每类簇中累计相似度得分大于设定阈值的测试报告作为最终输出结果的方法包括:
依据输出的类簇信息,分解测试报告相似度矩阵,得到K个大小不一的类簇测试报告相似度矩阵,每类簇累计相似度计算公式如下:
最后输出累计相似度大于设定阈值测试报告为结果。
本发明的有益效果如下:
本发明解决了现有中文众包测试报告评审过程中,假阳性和重复报告多,人工评审人力资源消耗大,效率低的不足的技术问题,提高了众包测试平台测试报告审查自动化流程,有效提升了测试报告审查效率。
附图说明
图1为根据本发明实施例提供的一种基于语义相似度的中文众包测试报告聚类方法的整体流程图;
图2为根据本发明实施例提供的一种基于语义相似度的中文众包测试报告聚类方法中语义相似度计算模型示意图。
具体实施方式
下面结合具体实施例对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
本发明提供了一种基于语义相似度的中文众包测试报告聚类方法,如图1、图2所示,接收中文测试报告数据集DataSet,训练集TrainSet和相似度矩阵权重μ,步骤如下:
步骤1:对众包测试过程提出理想化的假设条件,使得聚类方法能够满足众包测试报告分析的实际需求:
(1)在大量测试人员的参与以及多轮众包测试后,假设现阶段的缺陷基本能够检测出来;
(2)一轮众包测试结束后,大多数人揭示了同一个缺陷,我们认为这个缺陷是一个真实有效的缺陷。
步骤2:在步骤(1)中众包测试过程的前提假设下,对中文众包测试报告进行正则过滤筛选有效测试报告:
(1)内容完整性判定:如果测试用例字段或结果描述字段缺失,则认为是无效测试报告,不进行聚类分析;
(2)无缺陷判定:如果测试报告被正则表达式“(测试|执行|实施)+(通过|正常|无误|成功)+”匹配,则认为是无缺陷报告,不进行聚类分析;
(3)无缺陷判定:如果测试报告被正则表达式“(没有|未|无|没)(发现|检测|检查)?(任何|一个|几个)?(错误|缺陷|bug|漏洞|问题)+”匹配,则认为是无缺陷报告,不进行聚类分析;
(4)信息完整性判定:如果测试报告被正则表达式“(无|pass|ok)$”匹配,则认为是信息缺失的测试报告,不进行聚类分析;
步骤3:对步骤(2)筛选的有效测试报告数据集分句处理,使用正则表达式对测试报告测试用例描述字段和结果描述字段进行句子划分。
为了更好地理解中文测试报告的描述信息,因此需要对连续的语句进行划分。依据书写过程中的标点符号进行语句划分是一个简单有效的方式,因此构建了针对不同结束标点的正则匹配规则:
(1)单句结束符:如果被正则表达式“([。!?;\?])([^”’])”匹配,则作为一个完整句子;
(2)英文省略符:如果被正则表达式“(\.{6})([^”’;]”匹配,则作为一个完整句子;
(3)中文省略符:如果被正则表达式“(\…{2})([^”’])”匹配,则作为一个完整句子:
(4)引述结束符:如果被正则表达式“([。!?\?][”’])([^,。;!?\?])”匹配,则作为一个完整句子;
为了保证句子的完整语义,如果一个句子(含标点)字符长度小于等于4,则该句子定义为无效句,不再进行语义相似度计算。
步骤4:对步骤(3)中得到的不同测试报告的有效语句组合成句对,如果未得到训练好的语义相似度模型,则进行以下步骤:
(1)挑选少量测试报告句对进行人工评审进行语义相似度标记;
(2)对标记的句对训练集进行扩充,包括句对复制,句对翻转等;
(3)将训练集输入语义相似度计算模型训练;
(4)将不同测试报告的有效句对输入训练好的语义相似度计算模型;
(5)得到每个句对的语义相似度得分;
如果已有训练好的语义相似度计算模型,则直接执行(4)(5)。
步骤5:依据步骤(4)中输出的句对语义相似度值计算测试报告的测试用例相似度计算和结果描述相似度计算。
对于中文众包测试报告T
相同方式计算测试报告结果描述相似度,此时得到两个相似度矩阵,分别是测试用例相似度矩阵M
Similarity=μ
其中μ
步骤6:依据步骤(5)中计算出的测试报告相似度矩阵,对中文众测报告数据集进行谱聚类:
(1)输入测试报告相似度矩阵M和聚类中心数K;
(2)根据相似度矩阵M构建邻接矩阵W和度矩阵D;
(3)依据(2)中的邻接矩阵和度矩阵计算出拉普拉斯矩阵L,并将其标准化;
(4)依据(3)中标准化后的拉普拉斯矩阵计算特征向量矩阵F;
(5)依据(4)中特征向量矩阵应用K-Means聚类算法;
(6)输出类簇信息;
步骤7:依据步骤(6)中的类簇信息,分解步骤(5)中的测试报告相似度矩阵,得到K个大小不一的类簇测试报告相似度矩阵,每类簇累计相似度计算公式如下:
最后输出累计相似度Top-5测试报告为结果。
本发明的实例效果验证如下,本实例从全国大学生软件测试大赛的嵌入式赛项选择了3个测试项目共8,585份测试报告。每个测试项目平均约有3千份测试报告,人工审查及其耗费时间。基于已经评估过的测试报告进行整理,其数据集的情况如表1所示。
表1测试报告数据分布情况
本发明实例选取三个项目的有效报告进行聚类分析,并选取已有的基于关键词向量化的聚类方法作为基线进行对比,其中包含基于TF-IDF向量化的实验组和使用机器学习方法进行优化的方法。
在性能评估阶段,纯度(Purity)和ARI(Adjusted Rand Index)被用于评估聚类效果的准确性和有效性。纯度是将每个聚类后的类簇中数量最多的标签作为该类簇的标签,然后计算该类簇的纯度。它的计算公式为:
其中N代表所有测试报告的数量,Ω={ω
ARI是反映的是聚类结果与真实类簇分布差异的指标,它的取值范围为[-1,1],取值越大代表聚类结果越接近真实的类簇情况。其计算公式如下:
其中n
在步骤6中进行谱聚类后,对聚类结果进行评估,各指标结果如表2所示。
表2各模型的聚类结果评价指标
从评价指标来看,基于语义相似的聚类方法(SSCM)均优于已有的基于关键词向量化的其他基线方法,其中在Item1中默认的SSCM-55模型ARI指标比当前效果最好的AT-150模型高出96%,纯度比当前最好效果的AT-50模型高出25%;在Item3中默认的SSCM-55模型ARI指标比当前效果最好的AT-50模型高出68%,纯度比当前最好的AT-100高出33%。
总的来说,本发明的聚类性能均优于对照的基线方法,说明本发明使用的基于语义相似度的聚类方法性能更好。
从实验数据来看,本实例对中文众测报告进行聚类分析的过程中使用了孪生的预训练语言模型,它们将句子按照字符分割,并输出句子结构的语义表征向量,避免了中文分词过程中出现的关键词差异,提升了聚类的有效性和准确性。在众包测试评审过程中使用本发明的方法可以有效的减少人工审查的报告数量,避免重复报告和假阳性报告的审查,提升了众包测试平台的效能,为平台带来效益的提升。
本发明基于语义相似度的中文众包测试报告聚类方法,从句子层面入手分析中文众包测试报告,分别匹配测试报告的用例描述字段和结果描述字段的语义相似度,然后综合计算测试报告相似性。从句子层面分析避免了因为中文分词差异导致的关键词词典不同,同时句子相比于关键词带有更多的语义信息,能够有效的区别那些揭露不同缺陷但是描述相近的测试报告,从而提高测试报告聚类的准确性,有效减少人工审查测试报告的数量,同时整个聚类过程是自动化的,大大提升了对测试报告的审查效率。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
机译: 一种基于语义相似度的电子文档自动迭代聚类的方法,一种基于语义相似度的聚类文档的多种搜索方法及计算机可读介质
机译: 基于语义相似度,设备和存储媒介的新闻句子聚类方法
机译: 在例如网页中执行语义搜索的方法基于语义网中文本段的政治本体,包括在文档中设计模式,并根据基于所设计的模式的应用程序在本体中进行语义搜索