众包测试是一种新兴的软件测试方式,得到了学术界和工业界的广泛关注.系统地总结了近年来众包软件测试研究的学术文献以及工业界实践进展:首先,从学术文献涉及的研究主题演变、涵盖的软件测试问题和众包测试流程、采用的实验对象及测试人员规模等多个角度对相关文献中提出的技术和方法进行了汇总;然后,从测试领域、测试对象、工人召集方式、绩效考核方式等方面分析对比了当前应用最广泛的20个众包测试商业平台;最后,探讨了众包软件测试的未来发展趋势、机遇和挑战.
Crowdsourced software testing is an emerging testing method which has drawn extensive attention in both industrial and academic community. This paper systematically summarizes the academic literatures and industry practice in recent years. This article first summarizes the related literatures from the perspectives of the research topics including software testing, crowdsourcing test process, experimental subjects and scale of crowdsourcing. It also compares total of 20 widely used crowdsourced software testing commercial platforms, and discusses their task domains, subjects, open call forms and performance evaluation forms. Finally, the paper presents the future trends, issues and opportunities for crowdsourced software testing.
正如著名的Linus定律所述, “只要足够多的眼球关注, 就可让所有软件缺陷浮现”[
众包技术(crowdsourcing)可以在极大程度上有效解决软件测试领域的这一难题.众包是互联网带来的一种分布式问题解决和生产组织模式[
目前, 已有一些研究人员从不同角度对众包的相关研究工作进行了总结[
本文第1节描述众包及众包测试的背景知识.第2节系统地总结众包软件测试的相关文献.第3节则分析主流的20个众包软件测试平台.第4节讨论众包软件测试的发展趋势、机遇和挑战.第5节对全文进行总结.
2006年, Howe首次提出众包的概念, 定义“众包”是:“一个公司或机构把过去由专职员工执行的工作任务, 通过公开的Web平台, 以自由自愿的形式外包给非特定的解决方案提供者群体, 共同来完成的分布式问题求解模式”[
众包的主要参与者包括任务请求者和任务完成者(也称为众包工人), 他们通过任务(task)联系到一起.众包的工作流程包括任务准备、任务执行和任务答案整合这3个阶段.其中,
●任务准备阶段包括任务请求者设计任务、发布任务, 工人选择任务;
●任务执行阶段包括工人接收任务、解答任务、提交答案;
●任务答案整合阶段则包括任务请求者接收或拒绝答案、整合答案[
在众包工作流程中, 众包任务的发布和答案的收集通常借助众包平台来完成.众包平台主要分为两大类:一类是商用的众包平台; 另一类是社交网络、论坛等社交平台.已有研究数据表明:商用众包平台的应用明显多于社交平台[
在众包软件工程领域, 研究人员已经提出了大量的相关应用技术和应用场景.近期, Mao等人对众包软件工程领域进行了全面的概述, 涵盖了大量众包软件工程的文献和相关平台介绍, 并给出了众包软件工程的定义如下[
在众包软件测试活动中, 主要参与者包括任务请求者(requester)、众包工人(crowd worker)和众包平台方(platform)[
较之其他众包任务, 众包软件测试任务对三方参与者都提出了新的要求:测试任务请求者需要精心设计测试任务以吸引众包工人并获得理想的测试结果; 众包工人通常需要对待测对象有一定的了解, 并具备相应的软件操作和测试技能; 众包平台则面临着大量测试报告的质量审核和汇总的困难.众包软件测试作为一种新兴的软件测试手段, 在很大程度上解决了传统软件测试所面临的用户多样性不足、反馈较少、应用场景不够真实等问题, 但也对传统的测试技术提出了新的挑战.
自2009年众包技术首次被应用于QoE(quality of experience)测试以来, 如何使用众包技术来解决传统软件测试技术面临的困难并提高现有软件测试技术的效率, 逐渐成为软件测试领域的研究热点之一.众包技术先后在QoE测试、可用性(usability)测试、GUI测试、性能测试、测试用例生成等测试子领域中得到普遍应用.同时, 针对众包软件测试技术所带来的新问题和相应解决方案也引发了众多研究学者的持续关注.鉴于众包技术已经广泛应用于软件测试任务, 并引起了学术界和工业界的共同关注, 迫切需要对当前众包软件测试研究过程中所使用的方法、技术、工具和平台进行系统的总结.
本文采用以下流程完成了文献的收集、筛选和分类汇总, 如
文献收集汇总的流程图
The workflow of collecting literature
首先定义文献的纳入标准:该文献采用众包的方式解决了软件测试中的问题或开展了关于众包测试过程的研究.此外, 该文献应公开发表在会议、期刊、技术报告或书籍中.针对2016年12月之前公开发表的有关文献, 我们进行了以下3个方面的搜索.
(1) 在线搜索以下9个数据库:ACM Digital Library、IEEE Xplore Digital Library、Springer Link Online Library、Wiley Online Library、Elsevier ScienceDirect、ProQuest Research Library、Google Scholar、中国知网和万方数据库.使用的搜索关键词为crowd testing、crowdsourcing testing、crowdsourced testing以及众包测试, 同时在文献的标题、摘要、关键词和索引中进行搜索;
(2) 在线搜索软件工程的主要期刊和会议, 具体包括TOSEM、TSE、ICSE、ESEC/FSE、ASE、IEEE SW、IET、IST、JSS、SPE、SQJ、ISSTA、ICST, 此外还包括了众包软件工程的两个专题会议ISSC(Int’l Symp. on Software Crowdsourcing)以及CSI-SE(Int’l Workshop on Crowdsourcing in Software Engineering).搜索时间范围从2006年1月~2016年12月, 以查找上一步无法检索到的相关文献;
(3) 基于上述两个步骤所获得的文献集合, 逐一查看文献的参考文献中是否存在与众包测试相关的文献, 即, 从已收集文献的引用文献中识别是否有遗漏的文献.
其次, 针对前一阶段获得的共计123篇文献进行人工筛选和过滤.通过分组阅读文献, 再次应用纳入标准, 手动过滤与众包测试不相关的文献.我们采用分组交叉确认的方式, 每一篇文献的剔除都需要获得所有参与者的一致认可.通过筛选后, 共计52篇文献纳入本文后续的文献总结中.
最后, 采用分组交叉确认的方式对这些文献进行了分类汇总, 确认每篇文献所讨论的主题.在本文总结的共计52篇文献中, 包含了43篇研究型论文[
本文总结的52篇文献的发表类型分布如
文献发表类型分布图
Publication types of surveyed literature
针对其中的43篇研究型论文, 文献分类总览图如
文献分类总览图
Classification scheme of surveyed literature
根据论文主题的分类标签,
研究型论文主题演化示意图
The evolution of research subjects
由
众包测试作为一种新兴的测试模式, 一方面可以用于有效改进已有的测试方法或测试流程; 另一方面, 对众包测试模式自身的研究也逐渐成为研究人员的关注重点.因此, 本节将根据43篇研究型论文涉及的研究主题, 从基于众包的测试优化、众包测试的自身优化这两方面, 逐一给出相关文献的总结.
基于众包的测试优化主要包括针对特定测试类型的优化, 如应用于QoE测试、可用性测试和GUI测试, 以及针对测试流程的优化, 如应用于测试用例生成、程序调试与修复等.
(1) QoE测试
传统的QoE测试方法以人工测试为主, 成本较高且耗时较长, 因此, 众包技术最先被应用于QoE测试领域, 并引发了广泛、持久的研究[
众包QoE测试重点关注了多媒体研究中的QoE评估, 先后出现了基于众包技术的框架[
QoE测试结果受到不同平台下用户的地域分布、期望、使用环境以及所接受的训练课程等因素的影响.研究人员通过比较在付费众包平台(Microworkers.com)和非付费众包平台(Facebook)上执行的两个相同的高清视频质量实验的MOS(mean opnion score)分数来检查不同类型的众包平台对QoE结果的影响, 结果初步证明了区分平台的重要性[
此外, 研究人员尝试利用众包来收集网络服务QoS(quality of service)数据:一方面, 通过使用Planetlab节点作为工人来设计模拟众包方法; 另一方面设计了iTest移动众包框架, 使用Android手机测试Web服务.实验结果表明, 这种众包方法可以获得更高的QoS预测精度.但在具体应用过程中, 该方法需重点考虑用户真实环境带来的影响[
(2) 可用性测试
众包可用性测试的早期研究主要集中在对比传统实验室测试和众包测试的效果[
在进行众包可用性测试时, 研究人员希望借助更多的工具, 以获取并记录更多的信息.例如:通过记录鼠标移动数据来分析用户遇到的潜在错误[
自然地, 众包可用性测试也广泛地应用于移动应用测试领域, 广大的最终用户使用自有移动终端设备, 在使用软件的过程中, 自然地完成对该软件的可用性测试.研究指出:尽管众包测试能够有效降低测试时间和成本, 但最终用户的测试往往集中在待测对象的功能和可用性方面, 且测试结果与用户的实际使用环境紧密相关[
(3) GUI测试
在GUI的测试过程中, 自动化地生成GUI测试用例往往较为困难, 而人工的GUI测试又费时费力[
为完成众包GUI测试, 研究人员通过实例化多个运行着待测系统的虚拟机, 让测试人员使用浏览器访问这些虚拟机以进行测试, 从而把GUI测试众包给网络上的海量众包工人.尽管这种众包方法可能会产生较多不准确的测试结果, 但研究人员相信, 该问题可以通过改进众包任务的设计和限定众包工人得到良好的解决[
为缓解对于在线收集的数据质量的普遍担忧, Komarov等人在MTurk上进行了GUI众包测试, 通过和实验室测试结果的比对, 证明了使用众包进行GUI测试的可行性[
(4) 性能测试
由于用户行为和执行环境的多样性, 性能测试一直是软件测试中的难点之一.众包方式的兴起, 为有效开展性能测试提供了一种新的可能.
微软的通信工具Lync[
(5) 测试用例生成
测试用例生成是软件测试过程中的重要环节之一, 众包技术也已成功地应用于测试用例生成方面.尽管已有许多自动测试用例生成技术, 但这些技术仍面临着一些技术挑战, 而这些挑战由人工来完成却并不困难.基于谜题的自动测试环境是一个易扩展的众包测试平台, 该平台将对象突变和复杂约束求解问题分解为一些小的谜题, 然后分发给众包工人求解.实验结果表明:这些小谜题可以由人工在短时间内高效地解决, 同时获得比当前自动测试用例生成技术(jCUTE[
类似地, 如何在社交编码网站, 如GitHub上构建一个高质量的、充分的测试用例集, 也是当前急需解决的问题之一.基于GitHub上的Drive-By Commits(DBC)现象, 一种基于DBC的测试用例构造方法通过使用众包机制, 让有能力的用户(即便他们并不参与当前项目)来完成测试用例的设计和维护任务.这种方式极大地降低了项目所有者在测试用例构造和维护方面的开销[
此外, 众包数据也可以帮助开发人员生成测试用例以重现缺陷.在移动应用程序中, 系统崩溃(crash)的出现将极大地影响用户体验.然而, 硬件的异构性、移动开发版本的碎片化以及用户的多样性, 都对如何尽快地重现崩溃提出了挑战.文献[
在测试用例的生成过程中, 部分待测程序的预期输出难以获取, 即, 存在着测试预期输出问题(oracle problem)[
(6) 程序调试与修复
在程序调试过程中, 开发人员希望能够利用众包测试信息以辅助开展程序调试.然而, 众包数据量往往较大且存在着冗余, 难以直接利用这些信息进行程序调试[
针对程序调试这一“觅食”行为[
在软件测试过程中, 检测到缺陷后需要进行修复者推荐, 即, 寻找合适的开发人员来修复缺陷.该问题将研究如何从大量的开发人员中找到与缺陷相关的最合适的修复人员.已有研究人员结合推荐系统、文本挖掘以及社会化网络挖掘来进一步提高预测准确率[
(7) 软件评估
传统的软件评估方法很大程度上依赖于开发人员, 且通常仅招募一批精英用户群体作为用户代表.同时, 目前的方法在预测和模拟实际使用环境方面受到很大限制, 特别是对于移动应用和云计算等频繁动态变化、交互的系统.因此, 研究人员开始探讨如何由以开发者为主导的传统评估方式向以用户参与为主导的评估方式转变, 众包模式为快速获得多用户的反馈提供了一种有效的方式.
众包方式尤其适用于评估复杂且可变的软件系统, 因为这些系统将会在不同的、甚至不可预知的环境中工作.通过众包工人的迭代反馈, 可以丰富并保持开发者对软件系统的及时认知[
除了将众包技术应用于特定的测试类型或用于解决特定的测试问题, 部分研究学者开始着眼于众包测试中特有的流程和机制问题, 包括如何召集和管理测试工人、如何分解和设计测试任务、如何整合和处理测试报告等.
(1) 测试工人的召集与管理
大量优质众包测试工人的召集和有效管理是开展众包测试任务的前提.已有文献研究了在众包测试中, 众包参与者的规模及其测试时间约束对于测试效果的影响[
Chen等人开展了众包测试在教学项目中的实践研究, 通过引进3项商业软件产品作为教学测试项目, 让在校学生作为众包工人来完成测试任务.由于参与者是具有一定社会关系的学生, 所以称其为“准众包测试”.文献探讨了学生作为众包测试工人的可行性, 尝试了一种新型的众包工人召集与管理的方式, 并通过单元测试、Web测试、准众包测试这3种测试方式的对比, 体现了准众包测试的优势[
(2) 测试任务的分解与设计
如何对复杂的测试任务进行分解和设计, 是众包任务准备阶段的重要工作之一.在众包测试的已有相关研究中, 研究人员将众包环境中的协作测试问题看作一个关于众包工人工作分配的NP完全问题, 并将该问题转化为一个整数线性规划问题来解决[
在此基础上, 基于划分的多任务匹配的协同测试方法则试图使用众包技术来解决大规模的协同测试.该方法由任务划分算法、基于贪心的任务匹配算法和众包测试结果集成这3个环节组成, 动态地从测试用例中选择任务组, 并将测试用例或任务组分配给适当的测试人员.该方法从质量、效率、可靠性和可扩展性这4个方面进行了验证, 并讨论了如何平衡测试人员的数量与测试结果的质量问题[
(3) 测试报告的整合与处理
在众包测试过程中, 众包工人将提交大量质量参差不齐的测试报告, 众包测试平台审核人员或任务请求者将面临着如何有效整合并处理众包测试报告的困难.
众包测试报告排序是一种有效提高报告处理效率的方法之一:一方面, 可以综合运用多样性策略和风险策略动态选择测试报告进行检查[
此外, 如何实现大量测试报告的分类并得到真正含有缺陷的测试报告, 也是报告整合与处理中需要解决的问题之一[
(4) 其他
除了探讨众包测试具体环节的优化方法外, 还有少数文献着重讨论了众包测试面临的机遇和挑战[
随着众包测试技术的发展, 研究人员也构建了一些众包测试的实验平台和工具, 但尚未得到大规模的商业应用.在本文总结的52篇文献中, 有7篇文献主要介绍了相应的平台和工具[
(1) 针对Web应用的测试平台.如开源的用户测试工具(UTT)结合了自动化测试和众包测试, 其客户端架构同样适合于众包测试, 能够减少测试活动对带宽和服务器容量的需求[
(2) 针对移动应用的测试平台.如移动系统云测试框架CTOMS能够对Android系统应用程序的功能和UI进行全面的检测, 很好地适应于移动应用的众包测试, 并整合了移动开发中的多种测试技术[
(3) 综合众包测试服务平台.如TestCloud的众包业务模式能够利用互联网上的群体智能来实现高效的测试, 为企业提供各种众包测试服务[
这些实验平台和工具有效地促进了众包测试技术的发展.在前文汇总的43篇研究型论文中, 在相应实验环节也涉及了不少众包测试的平台和工具.因此, 本节将总结43篇研究型论文以及7篇平台/工具型论文中所使用的测试对象、测试人员规模和测试平台等信息, 为众包测试技术的实验验证环节的发展提供一些有益的参考.
由
测试对象信息汇总
The summary of testing subjects
测试对象 | 文献编号 | 计数 |
多媒体内容 | [ |
5 |
Web网站 | [ |
8 |
移动/PC应用 | [ |
15 |
其他 | [ |
12 |
未提及 | [ |
10 |
从实验验证环节中的测试人员规模来看, 如
测试人员规模信息汇总
The participant scales
参与人数 | 文献编号 | 计数 |
1~100 | [ |
16 |
101~500 | [ |
12 |
>500 | [ |
5 |
未提及 | [ |
17 |
在使用的实验平台方面,
测试平台部分信息汇总
The usage of testing platforms
平台 | 文献编号 | 计数 |
MTurk | [ |
15 |
Microworkers | [ |
4 |
Github/Stack overflow | [ |
4 |
Baidu MTC | [ |
3 |
SDI | [ |
2 |
TestCloud | [ |
2 |
未提及 | [ |
13 |
通过上述对相关文献的分类总结及其实验验证环节的讨论, 我们可以看到:尽管众包测试技术已经开始引起国内外研究学者的广泛关注, 然而目前大多数研究仍停留在将众包技术应用于软件测试过程中, 即, 验证众包测试的可行性方面.针对众包这种新型工作方式所引发的软件测试中特定问题的相关研究还较少, 仍然存在着众多研究领域有待深入探索.
平台和工具始终是软件测试领域的关键部分, 近年来, 在众包测试领域出现了大量商业众包测试平台.我们使用关键词“crowdsourcing/crowdsourced testing+platform”及“众包/众包测试+平台”在Google中进行搜索, 选择了前5页的平台作为调研对象.此外, 我们还涵盖了一些学术研究人员在研究文献中所提及的平台.同时, 还人工调研了这些众包测试平台, 受篇幅限制, 本节选取了20个主流众包测试平台**, 从平台分类、测试领域、测试对象、工人召集方式、绩效考核方式等方面进行分析对比.
** Baidu MTC (test.baidu.com), Tencent Test (task.qq.com), Aliyun (mqc.aliyun.com), TestFlight (testflightapp.com), MoocTest (mooctest. net), Applause (applause.com), Crowd Testing (crowdsourced testing.com), uTest (utest.com), Testin (mtestin.com), 99tests (99tests.com), Pay4bugs (pay4bugs.com), MyCrowd (mycrowd.com), BugFinders (bugfinders.com), Testing Army (testingarmy.com), Passbrains (passbrains.com), TestBirds (testbirds.com), Testbats (testbats.com), WooYun (ce.wooyun.org), Bugcrowd (bugcrowd.com), Sobug (sobug.com).
不同平台在众包测试过程中的参与程度不同, 这将对众包工人的召集方式、绩效考核方式等产生直接的影响.因此, 依据平台参与度的强弱不同, 可将20个平台大致分为以下3类.
●弱参与(weak-involved)平台, 简称W平台(5个:Baidu MTC, Tencent Test, Aliyun, TestFlight, MoocTest), 参与度较弱.这类平台仅仅为任务请求方和众包工人提供技术平台, 扮演市场的角色, 较少参与众包测试任务的设计, 通常不对众包测试任务的内容、形式和奖励机制等做出限制;
●强参与(strong-involved)平台, 简称S平台(12个:Applause, uTest, Testin等), 参与度较强.这类平台不仅会参与众包测试任务的设计, 控制测试任务的内容和形式, 还对绩效考核方式、奖励方式等给出明确的
规则;
●强参与-安全测试(strong-involved and security testing)平台, 简称S-S平台(3个:WooYun, Bugcrowd, Sobug), 是参与度较强的安全性测试平台.这些平台的技术专业性较强, 重点关注安全性测试领域.在强参与平台的基础上, 对于绩效考核方式及奖励方式有着更为严格的规定.显然, S-S平台是一类特殊的S平台.
在调研的20个众测平台中, 强参与的平台(含强参与-安全测试平台)占到了75%.可见, 大多数的商用众包测试平台还是深入地参与到众包测试过程中, 为众包测试的顺利开展提供了监管和帮助.
众包测试平台涉及的测试领域, 即提供的测试服务类型主要包括:(a)功能测试; (b)可用性测试; (c) GUI测试; (d)本地化测试; (e)性能测试; (f)安全性测试; (g)用户体验性测试.
平台涉及的测试领域与平台的类型有着紧密关联.W平台几乎包含了所有的测试领域, 这是因为W平台提供的测试任务通常由任务请求方独立完成测试任务的分解与设计, 测试任务类型的自由度较高, 即测试领域不受平台限制, 因此, W平台涵盖的测试范围也最广.相对而言, S类平台的专注领域少于W类, 这是因为此类平台将对测试任务的类型、范围等加以限制, 通常由任务请求方提供测试的整体目标, 而测试平台将完成对测试任务的分解、设计和分派.S-S类平台只涉及安全性测试, 显然, 此类平台对众包测试人员的技术水平要求较高.
针对20个众测平台所涉及的测试领域进行频次统计可知:在所有测试类型中, 功能测试、安全性测试和可用性测试出现次数较多, 分别出现了16/15/14次.较为广泛地使用众包方式来完成这几类测试的原因在于:众包工人可以在使用软件的过程中较为自然地完成功能测试; 众包所蕴含的群体智能可以帮助安全性测试的开展; 众包带来的用户多样性有利于完成可用性测试.因此, 大部分任务提供方和众包测试平台都认可利用众包工人去完成上述3种类型的测试.
众包测试平台的测试对象主要包括:(a)移动应用; (b) Web系统; (c)桌面系统; (d)其他.大部分W和S平台涉及了所有种类的测试对象, S-S平台则完整地涵盖了所有种类的测试对象, 这说明安全性测试对于各类测试对象都尤为重要.
此外, 所有的平台都将移动应用作为自己的测试对象, 这一方面说明众多软件的开发都面向移动端, 移动应用测试已经成为软件测试的关注重点; 另一方面, 也充分说明了使用众包方式完成移动应用测试的可行性.特别地, MoocTest和TestFlight等众测平台将移动应用测试作为核心业务, 研发了配套自动化工具友好地收集用户的设备概要、操作日志等信息, 提供屏幕截图、测试报告上传等功能, 进一步帮助众包工人以高效的方式完成移动应用的测试任务.众包方式带来的用户多样性、用户真实场景下真实体验的及时反馈, 可以有效地帮助移动应用的开发团队缩短测试周期, 并减少测试投入.
除了传统的Web端和桌面端的应用程序以外, 一些刚刚涌现的智能技术, 如智能硬件和可穿戴设备等, 也被一些平台(如TestBirds, WooYun)作为众包测试的对象.由此可见, 众包测试可被广泛运用于最新一代的科技产品中.不难想象, 在将来的AR及VR技术的测试过程中, 众包测试也能发挥重要的作用.
如何召集到更多的众包工人来参与完成测试任务, 是当前众包测试平台需要解决的关键问题之一.目前, 众包工人召集方式(open call forms)主要包括:(a)按需匹配(on-demand matching); (b)在线竞标(online bidding); (c)自由市场(free market); (d)游戏/竞赛(game/competition)[
这些工人召集方式各有特点, 其中, 按需匹配方式将把测试任务的需求和众包工人的信息相匹配, 例如性别、年龄、持有移动设备型号、经验、任务历史等.如果两者匹配, 则对应的众包工人将收到测试任务的邀请.在线竞标方式的特点在于:当任务请求者发布测试任务后, 众包工人可以通过竞价的方式争取这一测试任务.任务请求者可以根据众包工人给出的报价、个人信息、任务历史等情况, 选择合适的众包工人来完成对应的测试任务.在自由市场的方式下, 众测平台将为任务请求者和众包工人提供相互交流的平台, 任务请求者将测试任务发布到众包平台上, 众包工人可以收到推荐任务列表, 也可以自行浏览任务列表并选择感兴趣的任务.游戏/竞赛方式则将完成众包测试任务的过程视为一场游戏/竞赛, 仅有部分获胜的众包工人可以得到相应的奖励报酬.
在20个众测平台中, W类平台都采用了自由市场方式, S类平台都采用了按需匹配的方式, 3个S-S类平台则分别根据各自的运行流程采用了不同的众包工人召集方式.此外, 在一些涉及复杂技术问题的测试平台中, 众包工人只有通过完成基础任务和相应课程才能有机会获得奖励更高的测试任务.这种方式一方面确保了众包工人完成任务的最低成功率; 另一方面, 众包工人也能获得和自己能力相匹配的测试任务.
总体而言, 按需匹配方式作为效率最高的召集方式被绝大多数平台所采用.少量平台采用了自由市场的方式, 给予任务请求者和众包工人更高的自由度.在线竞标和游戏/竞赛这两种召集方式的使用目前相对较少.
绩效考核方式反映了任务请求者或众测平台将如何评价众包工人的任务完成情况[
平台采用的绩效考核方式与平台在众包测试过程中参与程度的强弱紧密相关.W类平台均采用(d)方式, 即, 完成某一份任务的奖励是固定的.例如, TestFlight是一款基于Appstore的众测平台, 可以帮助开发者在软件正式上架之前募集众包工人参与测试, 测试领域包括GUI测试、游戏体验测试等, 每一份测试任务都会给众包员工奖励以相同的虚拟奖品.
S类平台主要通过以下3种方式完成绩效考核.
(1) 选项(a)、选项(c), 即, 按照bug和任务的等级进行奖励.这些众测平台会在网站上明确公开自己的收费标准, 并允许互联网上的任何潜在测试人员注册成为网站众包工人.此类平台包括uTest、99tests等.在S类的12个平台中, 有超过一半的平台采用这种绩效考核方式;
(2) 选项(b)、选项(d), 即, 不区分bug和任务的等级.任务请求方要和平台沟通以确定具体的收费, 平台的众包工人作为该平台的自有资源存在, 新增测试人员需要通过考核后才能加入.此类平台包括Applause、Passbrains和TestBirds;
(3) 选项(a)、选项(d), 是一种混合模式.这类平台既可以按照bug的严重程度进行考核, 同时也为任务请求者提供了简单的仅根据任务量来实现相同任务相同奖励的考核方式.此类平台包括Testin和Testbats.以Testin为例, 该平台为不同类型的测试任务设定了不同的考核机制, 既提供企业服务, 也支持个人测试任务的发布.
S-S平台则全部采用以bug的严重程度来衡量绩效并支付薪酬的方式.Bug的严重程度和发现难度越高, 所支付的薪酬就越高.如WooYun, 每一个bug级别都有最低的奖金数, 如果发现的bug尤为严重, 甚至还会有基础奖励之上的额外奖励, 直到达到封顶为止.相比固定奖励, 这种方式更能调动众包工人寻求安全漏洞的积极性.
针对20个平台所涉及的绩效考核方式的选项进行频次统计之后可知:考虑测试特性从而根据bug的检测情况并区分bug严重程度的考核方式(选项(a), 占比39%)以及较为简单的仅根据完成任务量进行考核的方式(选项(d), 占比32%)都占据了较大的比重.由此可见, 众测平台的参与度、服务对象和测试领域都将对绩效考核方式产生影响.
众包软件测试技术作为一个新型的测试技术, 尽管学术界和工业界已经开展了不少研究工作, 但多数工作集中在利用众包的方式改进现有的测试方法或测试流程, 针对众包测试所引发的新问题、众包测试的新特性、众包测试自身流程和机制的研究还较初步.本节立足于现有众包测试技术的发展情况, 对未来的研究方向作一些展望.
工具在软件工程实践中具有重大的意义, 对于众包软件工程这样一个以实践为驱动的研究方向, 工具显得更加重要.在众包软件工程领域, 研究者们已经提出了一些工具和策略[
(1) 自动化测试数据获取工具
在众包测试过程中, 专业的测试人员通常希望获得众包测试工人在测试过程中的实际行为, 包括输入的测试用例、测试执行剖面、执行日志等.同时, 获取这些信息的过程不能对待测对象的行为产生太大的影响.因此, 轻量级的测试数据自动获取工具将是未来的一个研究重点.
(2) 协同测试工具的构建
如何帮助众包工人以协同的方式来完成测试任务, 是提高众包测试效率的一个重要方向.然而, 协同测试的实施过程需要依赖于相应的工具或者平台.因此, 协同测试的工具或平台的构建很有必要, 将从根本上提高众包测试过程中各个阶段的效率.
(3) 多样性测试环境模拟工具
由于当前操作系统种类、版本较多, 同时, 各类基础框架也越来越复杂, 为了确保操作环境的统一, 一些已有研究在其实验中应用了虚拟机技术[
如何召集更多的众包工人参与众包任务, 一直是众包领域的热点研究课题之一, 也是众包技术在实际应用中能否成功的关键因素.已有大量的研究工作关注于如何实现任务请求者和众包工人的双赢, 从而最大限度地提高任务完成效率和众包工人的利益[
(1) 提供更好的技能培训机制
众包测试的优势之一在于众包工人的人数众多, 然而部分工人在测试专业技能和业务领域知识方面可能还存在着欠缺.因此, 任务请求者和众包测试平台应合力建立良好的培训机制, 构建相关平台并提供对应资源, 这对于众包测试生态环境的维护具有非常积极的意义.
(2) 设计合理的考核与奖励机制
合理的考核与奖励机制直接决定了众包任务对众包工人的吸引力, 能够更好地激励众包工人高质量地完成任务.在众包测试领域, 当前主要采用的考核机制是根据bug的严重程度, 然而实际运营中, 根据bug的严重程度来考核的方式并不能适用于所有的情况.例如, 在可用性测试中, 界定可用性缺陷的错误等级较为困难, 在这种情况下, 可以考虑采用动态定价的激励机制来引导众包工人的行为[
众包软件测试任务的设计和分配, 是众包软件测试中的一个核心问题.我们注意到:已有相关工作把测试任务游戏化(gamify)[
(1) 提高测试任务的吸引力
测试任务设计的好坏, 直接影响了众包测试任务的吸引力.特别是在测试经费预算有限的情况下, 无法简单采用加大任务回报的方式来吸引更多众包工人, 此时, 提高测试任务的趣味性成为一种可行的方式.例如, 一种提高众包任务趣味性的方式是将众包任务游戏化或比赛化.由此可见:如何设计测试任务、进一步提高众包任务的趣味性, 是一个非常有意思的研究课题.
(2) 协同化的任务分配和完成机制
当前, 众包任务的分配和完成主要采用独立任务“发布-执行-完成”的模式, 即:任务之间关联性较弱, 同时, 执行任务的众包工人之间的关联也相对较弱.我们认为, 后续的研究可以围绕如何建立协同化的任务分配和完成机制展开.一方面, 在众包任务的设计过程中, 将任务之间的关联关系纳入考虑范畴, 将传统的“独立任务”模式转化为“任务链”模式; 另一方面, 在任务的分配和完成过程中, 不再局限于众包工人个体完成, 可以基于众包工人之间的关联关系, 以众包团队的形式来完成任务, 从而发挥每位众包工人的技能特点和优势.
测试报告处理包括重复bug报告检测[
基于当前众包软件测试报告处理技术的研究进展[
(1) 众包测试报告的设计
测试报告模板的质量直接关系到众包工人反馈的质量和审核人员对测试报告的处理效率.相对于传统的测试报告, 众包测试报告应较为简炼且能够精确地反映问题.这主要是因为:相当一部分众包测试工人不具备软件工程的专业知识, 他们期望在较短时间内完成测试报告的填写, 而且测试报告的填写应该可以在各类平台上完成.因此, 需要开展相关调研以明确针对不同测试任务最有效的测试报告字段, 从而完成针对不同测试任务的测试报告模板的设计.
(2) 众包测试报告的合并
已有针对传统测试报告的研究表明, 重复的测试报告对于软件缺陷的定位和修复具有积极意义[
(3) 众包测试报告的内容摘要
针对信息量较大的测试报告进行内容摘要, 是一个必要的工作.内容摘要可以帮助报告审核人员关注测试报告中的关键信息.已有研究学者针对传统的测试报告, 给出了针对文本信息的自动摘要技术[
测试行为的自动回放对程序员定位错误和修订错误具有重大的意义.在众包测试领域, 目前使用最为广泛的回放方法包括:要求众包工人使用录屏或者拍摄工具对操作过程进行全程录制, 然后提交所录制的数据; 通过客户端记录工具记录众包工人的操作行为并生成相应的脚本, 然后将脚本提交至服务器端.然而, 上述两种方式都在不同程度上降低了众包任务的执行效率.同时, 由于软硬件环境存在着差异, 这两种方式都可能会遗漏实际执行过程中的关键信息.研发自动记录后台系统日志的工具, 将有效解决测试行为自动回放的难题[
本文从学术研究现状和工业研究进展两个方面, 对众包软件测试技术做出了比较全面的概述.我们收集并最终汇总了众包软件测试领域的52篇文献, 并简要描述了这些文献的技术、策略和实验验证情况.此外, 我们分析对比了当前应用最广泛的20个众包测试平台, 并从多个角度讨论了众包测试平台的特性.在此基础上, 详细讨论了众包软件测试技术的未来研究方向.众包软件测试技术有着良好的应用前景, 但仍然存在着大量的研究问题尚待解决, 它必将成为软件工程领域的一个新兴研究热点.
Raymond E. The cathedral and the bazaar. Knowledge, Technology & Policy, 1999, 12(3):23-49.[doi:10.1007/s12130-999-1026-0]
Howe J. The rise of crowdsourcing. Wired Magazine, 2006, 14(6):1-4.
Feng JH, Li GL, Feng JH. A survey on crowdsourcing. Chinese Journal of Computers, 2015, 38(9):1713-1725(in Chinese with English abstract).[doi:10.11897/SP.J.1016.2015.01713]
冯剑红, 李国良, 冯建华.众包技术研究综述.计算机学报, 2015, 38(9):1713-1725.[doi:10.11897/SP.J.1016.2015.01713]
10.1145/1753326.1753357]]]>
10.1145/1989323.1989331]]]>
http://conferences.inf.ed.ac.uk/emnlp2011/]]>
http://www.icml-2011.org/]]>
Zuccon G, Leelanupab T, Whiting S, Yilmaz E, Jose JM, Azzopardi L. Crowdsourcing interactions:Using crowdsourcing for evaluating interactive information retrieval systems. Information Retrieval Journal, 2013, 16(2):267-305.[doi:10.1007/s10791-012-9206-z]
10.1109/ASEW.2015.12]]]>
Wu W, Tsai WT, Li W. An evaluation framework for software crowdsourcing. Frontiers of Computer Science, 2013, 7(5):694-709.[doi:10.1007/s11704-013-2320-2]
Mao K, Capra L, Harman M, Jia Y. A survey of the use of crowdsourcing in software engineering. Journal of Systems and Software, 2017, 126:57-84.[doi:10.1016/j.jss.2016.09.015]
10.1145/1852786.1852832]]]>
10.1109/SOSE.2016.69]]]>
Latoza T, Hoek A. Crowdsourcing in software engineering:Models, motivations, and challenges. IEEE Software, 2016, 33(1):74-80.[doi:10.1109/MS.2016.12]
Zhao Y, Zhu Q. Evaluation on crowdsourcing research:Current status and future direction. Information Systems Frontiers, 2014, 16(3):417-434.[doi:10.1007/s10796-012-9350-4]
10.1109/PASSAT/SocialCom.2011.203]]]>
10.1145/2441776.2441923]]]>
Doan A, Ramakrishnan R, Halevy AY. Crowdsourcing systems on the World-Wide Web. Communications of the ACM, 2011, 54(4):86-96.[doi:10.1145/1924421.1924442]
Chittilappilly AI, Chen L, Amer-Yahia S. A survey of general-purpose crowdsourcing techniques. IEEE Trans. on Knowledge and Data Engineering, 2016, 28(9):2246-2266.[doi:10.1109/TKDE.2016.2555805]
http://www.jos.org.cn/1000-9825/5140.htm[doi:10.13328/j.cnki.jos.005140]]]>
http://www.jos.org.cn/1000-9825/5140.htm[doi:10.13328/j.cnki.jos.005140]]]>
Estellésarolas E. Towards an integrated crowdsourcing definition. Journal of Information Science, 2012, 38(2):189-200.[doi:10. 1177/0165551512437638]
10.1145/1631272.1631339]]]>
Chen KT, Chang CJ, Wu CC, Chang YC, Lei CL. Quadrant of euphoria:A crowdsourcing platform for QoE assessment. IEEE Network the Magazine of Global Internet Working, 2010, 24(2):28-35.[doi:10.1109/MNET.2010.5430141]
Wu CC, Chen KT, Chang YC, Lei CL. Crowdsourcing multimedia QoE evaluation:A trusted framework. IEEE Trans. on Multimedia, 2013, 15(5):1121-1137.[doi:10.1109/TMM.2013.2241043]
Hossfeld T, Keimel C, Timmerer C. Crowdsourcing quality-of-experience assessments. Computer, 2014, 47(9):98-102.[doi:10. 1109/MC.2014.245]
Hossfeld T, Keimel C, Hirth M, Gardlo B, Habigt J, Diepold K, TranGia P. Best practices for QoE crowdtesting:QoE assessment with crowdsourcing. IEEE Trans. on Multimedia, 2014, 16(2):541-558.[doi:10.1109/TMM.2013.2291663]
10.1109/QoMEX.2012.6263885]]]>
Gardlo B. Quality of experience evaluation methodology via crowdsourcing[Ph.D. Thesis]. Slovakia:University of Zilina, 2012.
10.1109/ICC.2014.6883463]]]>
10.1007/978-3-662-47011-4_12]]]>
10.1109/QoMEX.2016.7498939]]]>
Liu D, Bias RG, Lease M, Kuipers R. Crowdsourcing for usability testing. American Society for Information Science and Technology, 2012, 49(1):1-10.[doi:10.1002/meet.14504901100]
10.1007/978-3-642-39253-5_27]]]>
10.1007/978-1-4614-4951-5_44]]]>
Gomide VHM, Valle PA, Ferreira JO, Barbosa JR G, da Rocha AF, de Barbosa TMGA. Affective crowdsourcing applied to usability testing. Int'l Journal of Computer Scienceand Information Technologies, 2014, 5(1):575-579.
10.1007/978-3-642-31753-8_52]]]>
10.1109/IEMCON.2016.7746256]]]>
10.1145/2390803.2390813]]]>
10.1109/ICST.2013.44]]]>
10.1145/2470654.2470684]]]>
Musson R, Richards J, Fisher D, Bird C, Bussone B, Ganguly S. Leveraging the crowd:How 48000 users helped improve LYNC performance. IEEE Software, 2013, 30(4):38-45.[doi:10.1109/MS.2013.67]
10.1145/2351676.2351697]]]>
10.1109/ICSE.2013.6606680]]]>
10.1109/MobileSoft.2016.033]]]>
10.1109/ICST.2013.13]]]>
Bachrach Y, Minka T, Guiver J, Graepel T. How to grade a test without knowing the answers-A Bayesian graphical model for adaptive crowdsourcing and aptitude testing. In:Proc. of the 29th Int'l Conf. on Machine Learning. Edinburgh, 2012. 1183-1190. https://icml.cc/2012/
10.1145/2786805.2786819]]]>
10.1109/VISSOFT.2015.7332425]]]>
10.1109/QRS.2016.27]]]>
10.1109/ICSM.2015.7332503]]]>
10.1007/978-3-662-49665-7_14]]]>
10.1145/2601248.2601300]]]>
http://ease2014.org/]]>
10.1145/2009916.2010039]]]>
Mäntylä MV, Itkonen J. More testers-The effect of crowd size and time restriction in software testing. Information and Software Technology, 2013, 55(6):986-1003.[doi:10.1016/j.infsof.2012.12.004]
10.1145/2591062.2591153]]]>
Tung YH, Tseng SS. A novel approach to collaborative testing in a crowdsourcing environment. Journal of Systems and Software, 2013, 86(8):2143-2153.[doi:10.1016/j.jss.2013.03.079]
10.1109/QRS-C.2016.13]]]>
10.1145/2786805.2786862]]]>
10.1145/2970276.2970367]]]>
10.1145/2970276.2970300]]]>
10.1145/2961111.2962584]]]>
Zogaj S, Bretschneider U, Leimeister JM. Managing crowdsourced software testing:A case study based insight on the challenges of a crowdsourcing intermediary. Journal of Business Economics, 2014, 84(3):375-405.[doi:10.1007/s11573-014-0721-9]
10.1109/CSI-SE.2015.14]]]>
Teinum A. User testing tool:Towards a tool for crowdsource-enabled accessibility evaluation of Web sites[MS. Thesis]. Agder:University of Agder, 2013.
10.1145/2480296.2480303]]]>
Starov O. Cloud platform for research crowdsourcing in mobile testing[MS. Thesis]. East Carolina University, 2013.
10.2139/ssrn.2475415]]]>
10.1145/2666539.2666569]]]>
Xue H. Using redundancy to improve security and testing[Ph.D. Thesis]. University of Illinois at Urbana-Champaign, 2013.
10.1145/2639108.2639131]]]>
http://ceur-ws.org/Vol-1519/]]>
Sharma M, Padmanaban R. Leveraging the Wisdom of the Crowd in Software Testing. Boca Raton:CRC Press, 2014.
10.1109/WCRE.2003.1287256]]]>
http://office:microsoft:com/lync]]>
http://www:chromium:org/developers/telemetry]]>
https://telemetry:mozilla:org]]>
10.1007/11817963_38]]]>
10.1109/ICSE.2007.37]]]>
10.1007/978-3-540-79124-9_10]]]>
Barr ET, Harman M, McMinn P, Shahbaz M, Yoo S. The oracle problem in software testing:A survey. IEEE Trans. on Software Engineering, 2015, 41(5):507-525.[doi:10.1109/TSE.2014.2372785]
10.1145/2635868.2635901]]]>
Lawrance J, Bogart C, Burnett M, Bellamy R, Rector K, Fleming SD. How programmers debug, revisited:An information foraging theory perspective. IEEE Trans. on Software Engineering, 2013, 39(2):197-215.[doi:10.1109/TSE.2010.111]
Zhang J, Wang X, Hao D, Bing X, Lu Z, Hong M. A survey on bug-report analysis. Science China Information Sciences, 2015, 58(2):1-24.[doi:10.1007/s11432-014-5241-2]
Xia X, Wang XY, Yang XH, Lo D. Bug-Report management and ananlysis of open-sourced software sysytms. Communications of the CCF, 2016, 2:29-34(in Chinese with English abstract).
夏鑫, 王新宇, 杨小虎, David Lo.开源软件系统缺陷报告管理与分析.计算机学会通讯, 2016, 2:29-34.
Bruch M. Ide 2.0:Leveraging the wisdom of the software engineering crowds[Ph.D. Thesis]. Technische Universität Darmstadt, 2012.
Ponzanelli L. Exploiting crowd knowledge in the ide[MS. Thesis]. Universita Della Svizzera Italiana, 2012.
10.1109/RSSE.2012.6233407]]]>
10.1145/1357054.1357127]]]>
Zhang ZQ, Pang JS, Xie XQ, Zhou Y. Research on crowdsoucing quality control strategies and evaluation algorithm. Chinese Journal of Computers, 2013, 36(8):1636-1649(in Chinese with English abstract).
张志强, 逄居升, 谢晓芹, 周永.众包质量控制策略及评估算法研究.计算机学报, 2013, 36(8):1636-1649.
10.1145/2488388.2488490]]]>
10.1109/INFOCOM.2014.6848053]]]>
http://www.jos.org.cn/1000-9825/5049.htm[doi:10.13328/j. cnki.jos.005049]]]>
http://www.jos.org.cn/1000-9825/5049.htm[doi:10.13328/j.cnki.jos.005049]]]>
10.1145/2488388.2488489]]]>
10.1109/HICSS.2016.543]]]>
10.1109/SOSE.2014.79]]]>
10.1109/SCAM.2012.31]]]>
10.1145/1368088.1368151]]]>
10.1145/1806799.1806811]]]>
10.1109/ICSM.2008.4658082]]]>
http://www.ksi.edu/seke/seke10.html]]>
10.1109/ICSE.2012.6227209]]]>
10.1109/ISSRE.2014.17]]]>
Xia X, Lo D, Wang X, Zhou B. Dual analysis for recommending developers to resolve bugs. Journal of Software Evolution & Process, 2015, 27(3):195-220.[doi:10.1002/smr.1706]
10.1109/ISSRE.2016.33]]]>
Xia X, Lo D, Ding Y, AI-Kofahi JM, Nguyen TN, Wang X. Improving automated bug triaging with specialized topic model. IEEE Trans. on Software Engineering, 2017, 43(3):272-297.[doi:10.1109/TSE.2016.2576454]
10.1145/2393596.2393607]]]>
Rastkar S, Murphy GC, Murray G. Automatic summarization of bug reports. IEEE Trans. on Software Engineering, 2014, 40(4):366-380.[doi:10.1109/TSE.2013.2297712]
http://dblp.uni-trier.de/db/conf/sigsoft/fse2008.html]]>
https://files.ifi.uzh.ch/icseweb/]]>
Feng Y, Liu Q, Dou M, Liu J, Chen Z. Mubug:A mobile service for rapid bug tracking. Science China Information Sciences, 2016, 59(1):1-5.[doi:10.1007/s11432-015-5506-4]
http://www.jos.org.cn/1000-9825/4936.htm[doi:10.13328/j.cnki.jos.004936]]]>
http://www.jos.org.cn/1000-9825/4936.htm[doi:10.13328/j.cnki.jos.004936]]]>