论文部分内容阅读
众包测试是一种新兴的软件测试方法,已经引起了学术界和工业界的广泛关注。众包指的是通过公开调用的方式,将由公司完成的任务众包给一群未定义的潜在的地理上分散的在线个体,每个个体可以称为众包工人(crowd worker)。在众包测试中,工人帮助开发者执行测试并提交测试报告,开发者需要对提交的测试报告进行人工审查和评估。由于测试报告庞大的数量以及广泛变化的质量,开发者人工审查测试报告时遇到了一系列难以处理的问题,这些问题严重影响了开发者的审查速率和效率。因此,本文尝试对众包测试报告进行深入地挖掘和评估,帮助开发者更高效地处理众包测试报告。本文主要从两个方面开展研究。一方面通过减少测试报告的数量来帮助开发者减少人工审查代价;另一方面,通过分析测试报告的质量来帮助开发者提高审查测试报告的效率。本文主要取得了以下研究成果:(1)为了帮助开发者减少众包测试报告的审查代价,本文提出了众包测试报告模糊聚类问题。为了求解这个问题,本文提出了一个众包测试报告模糊聚类框架(TERFUR)。首先,利用两个启发式规则过滤掉无效的测试报告;然后,采用自然语言处理技术预处理众包测试报告;最后,采用一个二阶段模糊聚类方法来实现众包测试报告模糊聚类。五个数据集上的实验结果显示TERFUR能聚类测试报告最高达到78.15%的微平均精度,78.41%的微平均召回率和75.82%的微平均F1值。同时实验结果也显示TERFUR平均能识别95.33%的无效的测试报告。(2)为了帮助开发者确定测试报告审查序列,本文尝试求解测试报告优先级问题,并提出了一个基于分类的众包测试报告优先级方法(DivClass)。该方法首先通过采用自然语言处理技术来预处理众包测试报告,然后结合一个多样性策略和一个分类策略来实现测试报告优先级划分。为了评估DivClass的效果,本文在五个众包测试报告数据集上执行实验进行验证。实验结果显示DivClass平均能实现0.8921的平均缺陷检测率。同时实验结果也显示,相较于已有的方法,DivClass能减少被审查的测试报告数量最高达到 63.74%。(3)为了帮助开发者预测在有限的资源内,一个测试报告是否应当被选择进行审查,本文提出了众包测试报告质量评估问题。为了有效地求解这个问题,本文提出了一个众包测试报告质量评估框架(TERQAF)。首先,本文总结了众包测试报告的期望属性,然后定义一系列的可度量指标来评估这些期望属性,最后利用阶步转变函数将所有指标数值化的值转变为标称值(即好的、坏的),并聚合所有指标的标称值来预测测试报告的质量。五个测试报告数据集上的实验结果显示本文提出的算法在预测测试报告质量时最高能实现88.06%的精度,超过可比较算法最高达到23.06%。(4)为了改善测试报告的质量,本文提出了众包测试报告增强问题,即利用重复测试报告中包含的额外的有价值的信息来增强主测试报告。为了有效地求解这个问题,本文提出了众包测试报告增强框架(TRAF)。首先,自然语言处理技术被采用来预处理众包测试报告;然后,利用三种增强策略来实现测试报告不同字段信息的增强;最后通过可视化增强的测试报告来帮助开发者更好地辨别增加的信息和原始的信息。五个数据集上的实验结果显示TRAF获得的排序结果平均能达到98.65%的NDCG,同时能识别有价值的句子平均达到83.58%的精度、77.76%的召回率和78.72%的F值。