引用
Wang J, Cui Q, Wang S, et al. Domain adaptation for test report classification in crowdsourced testing[C]//2017 IEEE/ACM 39th International Conference on Software Engineering: Software Engineering in Practice Track (ICSE-SEIP). IEEE, 2017: 83-92.
摘要
关键词:众包测试;测试 告分类;领域适配;深度学习
1 引言
众包测试作为一种新兴的软件工程实践,在学术界和工业界受到普遍采纳并逐渐成为一种趋势。在众包测试平台完成众测任务后,众测工人通常需要按要求提交测试 告。在经济和其他效益的引导下,众包工人通常会提交数千份测试 告。然而不幸的是,众包工人提交的测试 告常常存在误 的现象,即:众包工人认为的、程序的异常行为(疑似漏洞)实际上是程序的正确行为。为了去除这些误 ,项目经理或是测试人员需要人工对提交上来的测试 告进行审查。通常来说,只有不到 50%的测试 告能够反映真正的程序漏洞。不难看出:测试 告的审查分类是一项费时、低效且异常乏味的工作。一项能够对大量测试 告进行分类并提取出其中反映真实漏洞测试 告的自动化技术是十分必要且有价值的。
基于对真实工业数据的观察,众包测试的目标项目横跨旅行、音乐、安全、摄像等多个领域,描述不同项目领域的测试 告也相应地会包含不同的术语(Term)。譬如:旅行领域的测试 告包含 “位置”、“导航”和“地点”等术语;而“播放”、“歌词”、“歌曲”则是音乐领域的常用术语。从这两个领域派生出的文本特征在分布上有很大的不同。在进行跨域分类时,不同领域的不同特征分布会降低机器学习分类器的性能。这是因为大多数机器学习模型都是基于“训练集和测试集来自相同数据分布”这一假设设计并训练得出的。
2 背景
2.1 众包测试
表 1 众包测试 告举例
众测任务通常会提供一定的经济奖励以吸引更多的众包工人参与到测试任务中来。并且,评估为“失败”的众测 告所给的奖励往往更多(因为这种 告可能发现了潜在的 Bug)。在这种模式下,众包工人提交的 告通常数量巨大。以百度众测平台为例:该平台每月大约交付 100 个项目,平均每天能够收到 1000 余份测试 告。然而不巧的是,“失败”测试 告中有很多是误 ,即:标记为失败但实际上描述的是一项正确的程序行为。目前,该平台的测试人员需要通过人工审查的方式去除误 。手动检查 1000 余份 告通常需要将近半个星期,且提交 告的正 通常只有不到 50%。不难看出:手工审查众测 告是一项费时费力、低效乏味的工作。
2.2 堆栈式降噪自动编码器(SDA)
堆叠式降噪自动编码器(SDA)是一种用于有效表示(Effective Representation)的无监督学习人工神经 络,由多层降噪自动编码器(Denoising Autoencoder,DA)组成。
图 1 自动编码器(左)和堆栈式降噪自动编码器(右)
如图 1(左)所示:自动编码器(Autoencoder)以向量 x ∈ [0, 1]d 为输入,通过确定性映射 y = fθ(x) = s(Wx + b)将其编码为隐藏表示(Hidden Representation)y ∈ [0, 1]d’。该映射通过 θ = W, b 进行参数化。其中:W 是一个权重为 d’×d 的矩阵,而 b 是一个偏移矢量(Bias Vector)。自动编码器生成的隐藏表示 y 将被进一步解码为来自输入空间 z = gθ’(y) = s(W’y + b’)(θ’ = W’, b’)的“重建(Reconstructed)”向量 z。反向映射对应的权重矩阵 W’和权重矩阵 W 之间存在约束,即 W’ = WT。
模型的训练目的是找到能够最小化平均重建错误(Average Reconstruction Error,ARE)的参数,对应公式 1。其中:L 是对应重建交叉入口(Reconstruction Cross-Entry)的损失函数。自动编码器通过随机梯度下降的方式进行训练。其中:训练迭代的次数是一个能够平衡重建向量(Reconstructed Vector)与输入向量的时间成本和错误率的输入参数。
如图 1(右)所示:堆叠式降噪自动编码器(SDA)通过将一系列 DA 堆叠在一起的方式构建深度体系结构。训练以逐层贪婪的方式进行,第 t 个 DA 输出的隐藏表示将作为输入传递到第 t+1 个 DA 中,且最后一个 DA 输出潜在表示将被视为高阶特性并输出。隐藏层数和每层节点数由用户按需设定。
2.3 研究动机
图 2 众包测试 告中存在的不同数据分布
3 方法
图 3 展示了 DARS 的整体框架。DARS 分类方法可以分为四步(1)提取文本特征;(2)训练 SDA 模型;(3)利用 SDA 生成基于文本特征的高阶特性,以及(4)构建分类器并使用学习得出的高阶特征执行 告分类。
图 3 DARS 架构概览
3.1 提取文本特征
3.2 训练 SDA
3.3 生成高阶特征
3.4 构建分类器
4 评估
4.1 研究问题
RQ1(有效性):DARS 在执行众包 告分类时是否有效?
RQ2(优越性):DARS 是否超过了现有众包 告分类技术?
RQ3(实用性):对于软件测试人员,DARS 是否真的有使用价值?
4.2 数据集
表 2 参与调查的项目
4.3 评估指标
4.4 实验基线
4.5 实验结果及分析
4.5.1 有效性分析(RQ1)
图 4 DARS 的有效性
接下来在训练集规模为 1500 的情况下分析 DARS 的性能。在这种情况下,F1 值的取值范围为 0.720.82,中位数为 0.77;AUC 的取值范围为 0.800.90,中位数为 0.84。这意味着:DARS 仅需要 1500 个带标签的数据实例作为训练集就可以训练得到相对令人满意的性能。
表 3 各领域测试 告分类性能一览
4.5.2 优越性分析(RQ2)
表 4 与基线技术的比对结果
对于任意训练集大小,DARS 的 F1 和 AUC 值都由于 TCA+。这是意料之内的,因为 TCA+是在基本特征的基础上进行线性投影生成新特征的,而属于深度学习技术的 SDA 则会利用非线性映射从基本特征学习得出高阶特征,从而能够应对更加复杂的数据变化;另外,DARS 的性能也同样优于 CURES。这是因为 CURES 需要依赖大量的历史 告完成分类器的构造。在训练集不够大时,CURES 的性能将有所降低。
4.5.3 实用性分析(RQ3)
表 5 案例研究参与者一览
本案例研究的目的是评估 DARS 在真实众包测试分类场景下的实用价值。如前面提到的,DARS 会最终为每份测试 告赋予正 概率。该实验旨在评估这一概率能够为测试人员的手动分类提供多少参考价值。
表 6 案例研究结果
表 7 调研结果
致谢
References
[1] www.test.baidu.com)。众包测试的一般流程为:首先,测试人员准备测试任务并分发到众测平台上;然后,众包工人登陆众测平台以执行众测任务,并在完成任务后提交众测 告。表1是一个典型的众包测试 告,包含若干标准属性如操作步骤、结果描述、屏幕截图以及众包工人对软件行为的评估(Assessment):当众包工人认定程序行为正确时,众包工人需要在评估一栏写上“通过(Passed)”;反之,当认定程序行为错误时,众包工人则需要在评估一栏写上“失败(Failed)”。: http://www.test.baidu.com)。众包测试的一般流程为:首先,测试人员准备测试任务并分发到众测平台上;然后,众包工人登陆众测平台以执行众测任务,并在完成任务后提交众测 告。表1是一个典型的众包测试 告,包含若干标准属性如操作步骤、结果描述、屏幕截图以及众包工人对软件行为的评估(Assessment):当众包工人认定程序行为正确时,众包工人需要在评估一栏写上“通过(Passed)”;反之,当认定程序行为错误时,众包工人则需要在评估一栏写上“失败(Failed)”。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!