移动应用众包测试综述

摘 要: 众包测试是指将软件测试任务外包给一组自由的真实测试人员,这些测试人员可在真实世界的用户条件下帮助验证软件。 通过这种方法来确保软件质量,可使公司收集真正的见解和反馈,并快速,廉价地发现缺陷。由于其廉价,快速,高效的特性,众包测试正在成为一种新兴的软件测试方法,在软件工程界得到普及。随着移动设备的日益普及,繁杂多样的设备型号和日益复杂的测试环境正在让移动软件测试的测试成本大大提高,因此,众包测试作为一种省时高效的测试方法正逐渐成为移动应用测试领域的“宠儿”。但是,移动众包测试作为一种刚刚兴起的测试方法还面临着诸多挑战和问题,例如如何自动评估测试报告质量,如何为众包测试人员提供测试自动化方案等。本文将从几个方面介绍众包测试最新的自动化技术,工具和算法。

Abstract: Crowdsourcing testing refers to the outsourcing of software testing tasks to a group of free real testers who can help verify software under real-world user conditions. By ensuring software quality in this way, companies can gather real insights and feedback and discover defects quickly and cheaply. Due to its low cost, fast and efficient characteristics, crowdsourcing testing is becoming a new software testing method, which is popular in the software engineering field. With the increasing popularity of mobile devices, the test cost of mobile software testing is greatly increased due to the variety of device models and increasingly complex test environment. Therefore, crowdsourcing test, as a time-saving and efficient testing method, is gradually becoming the “favorite” in the field of mobile application testing. However, as a new testing method, mobile crowdsourcing testing still faces many challenges and problems, such as how to automatically evaluate the quality of test reports, and how to provide test automation solutions for crowdsourcing testers. This paper will introduce the latest automation technology, tools and algorithms of crowdsourcing testing from several aspects.

Key words:: crowdsourcing test; quality evaluation; automatic analysis; intelligent assistant tool; data set preprocessing.

​ 随着移动设备的普及和移动应用的迅猛发展,移动应用测试规模也随之呈现爆炸式增长的状态,使用常规的测试技术验证移动应用程序遇到了诸多问题和挑战。首先,由于移动设备和平台的多样性和多元化,测试人员测试程序的成本大大提高。其次,传统的测试方法难以进行大规模的面向用户的性能和可用性测试。为了解决这些问题,软件工程界提出了移动众包测试作为移动应用测试的解决方案。

​ 移动众包测试是指将软件测试任务外包给一群自由的移动用户测试人员,他们可以在真实的用户环境下帮助验证软件,任务发布者通过这种方式收集用户真实反馈,发现软件缺陷,确保软件质量。移动众包测试主要有三种类型的参与者:众包工人,众包平台和任务发布者。与传统的测试技术相比,移动众包测试有以下几个好处[1]:1. 成本低廉,2. 测试规模大,3. 面向用户的测试环境,4. 容易进行并发测试。

​ 但是,移动众包测试在实践中也存在着很多问题和局限。首先,在实践中,众包工人往往需要在给定的较短时间内完成众包任务,而完成任务的数量影响着众包工人的报酬。因此,众包工人很可能会提交尽可能多的报告而不主动过滤出重复的内容。这些因素导致了众包测试比传统测试具有更高的重复率。其次,对于移动应用程序,由于截图易于获取以及在移动设备上输入长文本的困难,测试人员更倾向于使用屏幕截图和简短的描述来描述缺陷和错误。文本描述的缺乏阻碍了将基于文本分析的测试报告处理技术应用于移动众包测试的想法的实现。如何对众包测试报告进行自动化分析处理,如何开发高效的算法和工具来辅助移动众包测试,成为近几年移动软件测试领域研究的热门和重点。

​ 为了对研究问题进行系统的分析、总结和比较,我们首先在IEEE, ACM, Springer, Elsevier和CNKI等论文数据库中进行检索,检索时采用的主要英文关键词包括“mobile app test”,“crowdsourced test”, “quality assessment”和“automatic test”等;然后,对检索出的论文,通过人工审查方式移除掉与研究问题无关的论文,并通过查阅相关论文的参考文献和相关研究人员发表的论文列表来进一步识别出遗漏的论文;最终,我们选择出与该研究问题直接相关的高质量论文共23篇(截止到2020年10月).从选择出的论文所发表的会议和期刊来看,绝大部分论文发表在软件工程领域的权威会议或期刊上,例如ICSE会议(21篇)、ESEC/FSE(或FSE)会议(13篇)、ISSRE会议(5篇)、TSE期刊(16篇)、IST期刊(7篇)和JSS期刊(4篇)等.

​ 本文重点对众包测试报告的自动化分析和移动众包测试流程自动化的已有研究工作进行综述。具体来说本文第1节对移动众包测试流程和众包测试报告分析过程的研究框架进行总结,第2节对已有的移动众包测试报告自动化分析处理算法进行介绍,第3节对众包测试其它自动化智能辅助工具和算法进行介绍和总结,第4节对未来一下值得关注的研究方向展开初步思考。

1 研究框架

移动众包测试流程框架

移动众包测试流程如图1所示,

 众包测试平台作为第三方,为任务请求中和众包工人提供在线系统。公司和组织作为任务请求方,在众包测试平台上发布测试任务和正在测试的软件。此外,他们还设置了关于测试资源、环境和技术需求的约束要求。基于这些要求,平台可以为这些任务匹配合适的众包工人,反之,众包工人也可以找到感兴趣的任务。众包工人完成测试任务后,将结果以测试报告的形式交给众包测试平台。


​ 图1:移动众包测试流程

移动众包测试报告分析过程

移动众包测试报告分析过程如图2所示,具体步骤为:

​ 1. 报告分类,主要对有效测试报告进行分类,对描述真实错误的测试报告进行聚类。

​ 2. 重复报告检测,对包含相似错误的报告践行检测和筛选。

​ 3. 报告优先级排序,从错误大小和错误修正的角度调整不同众包测试报告的优先顺序。

​ 4. 报告重构,对众包测试报告进行摘要,生成和增强,以帮助开发人员快速了解报告中描述的缺陷。

​ 图2:移动众包测试报告分析流程
本文将从移动众包测试流程和众包测试报告分析流程对应的某些阶段提出自动化分析处理算法和框架。

2 测试报告自动化分析处理

​ 质量评估和报告排序一直是移动测试报告自动化分析的研究重点.近几年,随着深度学习的发展和计算机算力的提升,软件工程领域越来越关注使用深度神经网络进行测试报告自动化分析的研究.同时计算机视觉的迅猛发展使得学术界更加希望从屏幕截图中获得更多信息以帮助测试报告的分析.本节将从自动化质量评估,报告优先级排序,屏幕截图的检测和分析三个模块来对众包测试测试报告的自动化分析的已有研究进行总结

2.1 自动化质量评估

​ Yuchan Liu[7]等人提出一种对移动应用众包测试报告自动化评分的 CTRAEA 算法,该算法主要从测试报告缺陷优先级和测试报告描述规范性两个方面综合评估考量得到众包测试报告的得分。在报告缺陷优先级方面,该算法使用MMDBK聚类算法,即改进的k-means算法得到缺陷的类型和数量,并根据众包工人历史可信度权重评估缺陷各类型严重等级。在报告描述规范性方面,算法定义了文本长度,可读性,动作词,对象词,否定词,模糊词,界面元素等7个可量化指标,使用Xin Chen提出的离散型度量函数将指标离散化,计算各测试报告的规范性得分。最后综合两者计算出每个测试报告最终评分。实验结果表明,CTRAEA 自动化评估算法评估 测试报告的分数与标注得分平均相对误差为 9.24%,由此可见 CTRAEA 算法准确高效。

​ 为了帮助测试人员能在有限的资源范围内对测试报告进行检查,Xin Chen等人提出了TERQAF框架用于移动众包测试自动化质量评估的方法,该方法采用形态指标,词汇指标,分析指标和关系指标等可量化指标来衡量测试报告的理想属性并确定文本内容的指标值。TERQAF框架由预处理器,阶跃变化函数和分类器组成,首先使用NLP技术对文本信息进行处理并生成文本向量。生成文本向量后,通过阶跃变化函数将每个可量化指标离散化,然后利用分类器通过汇总所有指标的离散值来预测报告的质量。在移动应用程序的5个众包测试数据集上进行的实验表明,TERQAF能够准确预测测试报告的质量,准确率高达88.06%,并优于基线的23.06%。同时,实验结果还表明,四大类可测量指标对TERQAF评价检测报告质量有积极影响。

2.2 报告检测和优先级排序

​ Qasim Umer【6】等人提出了一种基于卷积神经网络(CNN)的自动方法来进行bug报告的优先级排序。 这种方法的关键在于利用卷积神经网络将文本向量和文本情感与错误报告的优先级联系起来. 与现有的神经网络相比, 卷积神经网络能更好地处理长期依赖关系,且不存在爆炸梯度问题. 具体步骤如下: 首先,应用NLP技术对文本信息进行预处理,并且使用word2vector建模方法, 根据每个错误报告中单词的句法和语义关系将文本信息映射为向量。 其次,他们使用enti4sdfor存储库对错误报告执行特定的情绪分析,将每个bug报告输入到分布式语义模型中,计算其情绪值。 最后,他们训练了一个基于CNN的分类器,该分类器使用3层卷积层对输入的的文本向量和情绪值进行卷积操作,生成新的特征,然后对特征进行池化操作得到更有价值的特征。为了评估这一方法的优劣性, Umer使用Bugzilla的四个开源项目R进行跨项目验证。评估结果表明,这种方法明显优于最新方法,并将F1平均分提高了近24%。

​ Neda Ebrahimi[2]等人提出了一种基于堆栈跟踪和隐马尔科夫模型进行bug报告检测的方法,该方法不仅可以检测重复的错误报告,还可以将传入的错误报告自动分类到不同的组。这种方法主要包括四个步骤,首先,从每个bug报告中获取堆栈跟踪,将得到的堆栈跟踪分成适当大小的重复组。然后为每个重复组构建和训练HMM模型,生成的HMM用于对传入的bug报告进行分类,最后,将每个输入bug报告的堆栈跟踪与训练后的HMMs进行比较,并根据生成的分数进行分类。将该方法应用于firefox和GNOME数据集进行评估后可以发现对于firefox,MAP(平均精度)高达76.5%,对于GNOME,MAP最高可达73%。结果表明堆栈跟踪和马尔科夫模型是大量bug报告库中检测和分类重复bug报告的强大组合。

​ Junjie Wang[3]等人提出了一种重复检测方法SETU,该方法结合了ScrEenshots和TextUal描述中的信息来检测重复的众包测试报告。该方法分为三个阶段,特征提取,相似度计算和重复检测。在特征提取阶段,对于屏幕截图主要提取图像结构特征和图像颜色特征,对于文本信息主要使用TF-IDF和词嵌入技术来提取关键字。在相似度计算阶段,计算查询报告与每个待处理报告之间的四个相似度得分,并获得屏幕截图相似度和文本相似度。在重复检测阶段,将屏幕截图的相似度作为过滤器,报告达到一定阈值之后再使用文本相似度检测重复报告。为了评估SETU方法的有效性,使用百度众包测试平台验证SETU在12个项目上的调查研究表明,SETU实现的召回率@1为0.44到0.79,召回率@5为0.66到0.92,显著优于现有的方法。

2.3 屏幕截图检测分析

​ Liu[13]等人提出一种全自动技术为测试报告的屏幕截图生成描述性单词,旨在解决移动众包测试报告文本信息匮乏的问题。该技术框架包括两个主要阶段:模型构建阶段和应用阶段,在模型构建阶段,首先使用空间金字塔匹配(SPM)技术来测量屏幕截图的相似性,并应用自然语言处理技术来分析测试报告的文本描述,以获得加权关键字。 然后借助关键字和相似度矩阵,将这些屏幕截图汇总起来,并进一步为每个图像集群建立语言模型。 在应用阶段,利用生成的这些语言模型将屏幕截图生成描述性关键单词。通过对工业众包项目的1000多个测试报告的实验结果表明,该技术有望为开发人员更好地理解众包测试报告提供帮助。

3 其它移动众包测试工具和算法

​ Rui Hao[7]等人提出一种利用重复报告来丰富错误描述并提高检查报告效率的方法------CTRAS,CTRAS能够根据文字信息和屏幕截图自动汇总重复报告,并进一步将重复的测试报告汇总为一份综合的测试报告。 CTRAS主要由聚合器和汇总器组成,聚合器用于计算测试报告之间的距离,并将重复报告聚合到不同的组中。汇总器是CTRAS的核心组件,对于每个重复的测试报告组,汇总器通过主报告识别,生成补充报告,形成并生成最终报告这三个主要步骤来最终汇总重复报告。为了验证CTRAS,我们使用了从12个工业众包项目中收集的5000多个测试报告进行了定量研究。 实验结果表明,在自动检测重复报告方面,CTRAS的平均精度为0.87,优于Jensen Shannon散度法下基于Max-Coverage和MMR的经典汇总方法。

​ 为了解决移动应用众包测试报告质量参差不齐和文本信息较少的难题,Chen[9]等人提出了测试报告增强框架(TRAF)的新框架来解决该问题。TRAF框架主要由预处理器,增强器和可视化工具这三个组件构成,其中最重要的组件是增强器,主要功能是环境增强,输入扩充和描述扩充。环境信息主要属性有设备类型,操作系统和分辨率,算法主要通过进行字符串匹配来采用数学-联合运算来实现扩充。输入扩充主要基于TF-IDF统计加权技术,选择权重最高的topK个关键词并添加到主测试报告作为参考,达到扩充主测试报告的目的。描述扩充主要基于图的算法从重复报告中提取有价值的句子,首先基于句子构造多个测试报告的依存关系图,然后选择最高TF-IDF权重的句子以增加主测试报告的描述。实验结果表明,TRAF框架可以引用相关输入,使被检报告的NDCG平均提高98.49%,平均准确率达到88.65%,并能从重复描述中识别出有价值的句子,从而使被检测试报告的准确率达到83.58%。

4 未来的挑战和期望

​ 当前,在众包测试报告的自动化分析方面,很多研究人员已经从早期的文本匹配演变为尝试使用机器学习甚至是深度学习的方法,重点也从最初的字符特征变为关键字特征和语义特征[8]。计算机视觉的发展和众包测试报告独有的丰富的截图信息让研究人员将更多的目光放到图像信息的获取和分析上。除此之外,研究人员还通过使用更多的模型方法来增强报告分析的准确度,例如卷积神经网络,抽象语法树,自然语言模型等。未来随着人工智能和深度学习的发展,众包测试报告自动化分析流程一定会越来越完善和精确。

​ 对众包平台来说,如何加强与众包发布者之间的任务衔接,如何加强对众包工人行为的监控,对众包工人失信行为的记录和管控,是加快众包测试流程的关键,也是一大挑战。

References:

[1] Tao Zhang, Jerry Gao, Jing Cheng,SOSE: Crowdsourced Testing Services for Mobile Apps,2017

[2] Neda Ebrahimi , Abdelaziz Trabelsi , Md. Shariful Islam , Abdelwahab Hamou-Lhadj , Kobra Khanmohammadi. Information and Software Technology: An HMM-based approach for automatic detection and classification of duplicate bug reports, 2019

[3] Junjie Wang , Mingyang Li , Song Wang , Tim Menzies, Qing Wang. Information and Software Technology: Images don’t lie: Duplicate crowdtesting reports detection with screenshot information,2019

[4] Song Huang, Hao Chen, Zhanwei Hui, Yuchan Liu, 2020 IEEE 20th International Conference on Software Quality, Reliability and Security (QRS): A Survey of the Use of Test Report in Crowdsourced Testing,2020

[5] Ying Liu, Tao Zhang, Jing Cheng. ACM International Conference Proceeding Series: Survey on crowd-based mobile app testing,2019

[6] Qasim Umer, Hui Liu, and Inam Illahi. IEEE Transactions on Reliability: CNN-Based Automatic Prioritization of Bug Reports,2019

[7] Rui Hao, Yang Feng, James A. Jones2, Yuying Li1, Zhenyu Chen. International Conference on Software Engineering: CTRAS: Crowdsourced Test Report Aggregation and Summarization,2019

[8] 刘语婵,姚 奕,黄 松,骆 润. 移动应用众包测试报告自动化评估算法设计,软件导刊,2020

[9] Xin CHEN, He JIANG, Zhenyu CHEN, Tieke HE, Liming NIE. Frontiers of Computer Science: Automatic test report augmentation to assist crowdsourced testing,2019

[10] Ying Liu, Chunyan Ma, Zhanwei Dong, Tao Zhang, Jing Chengand Jie Zhang. Journal of Physics: Conference Series: Research on Defect Priority Classification of Crowdsourcing Testing for Mobile Applications,2020

[11] Yuan ZHAO1, Yang FENG1*, Yi WANG2*, Rui HAO1, Chunrong FANG1* & Zhenyu CHEN1. Science China Information Sciences: Quality assessment of crowdsourced test cases,2020

[12] Ke Mao, Mark Harman, and Yue Jia. International Conference on Automated Software Engineering: Crowd intelligence enhances automated mobile testing,2017

[13] Liu, Di, Zhang, Xiaofang,Feng, Yang,Jones, James A. 25th IEEE International Conference on Software Analysis, Evolution and Reengineering, SANER 2018: Generating descriptions for screenshots to assist crowdsourced testing, 2018

移动应用众包测试综述相关推荐

  1. 你们公司在用哪种测试方式?手工、自动化还是众包测试?

    在软件开发的时候,不论你在什么样的团队,所有参与的成员有相同的信念是很必要的.那个信念就是:测试是非常重要的并且应当要尽可能的准确的去执行.为了使你的软件可靠.防错,必须验证软件的质量. 测试团队面对 ...

  2. 全国大学生测试大赛众包测试盘点

      在众多有关测试比赛中都存在众包测试,众包测试俗称黑盒测试,在我个人看来大同小异.黑盒测试在比赛中大概占分比例为30%,无论在移动应用测试比赛还是web网页端夹杂的黑盒测试都是占这个比例.其中,黑盒 ...

  3. 什么是众包测试(Crowdsourced testing)

    什么是众包测试(Crowdsourced testing) 众包测试(Crowdsourced Testing)是软件测试的一个新兴趋势,它利用了众包和云平台的优势.有效性和效率.它不同于传统的测试方 ...

  4. 什么是众包测试,众包测试平台是什么?

    众包测试 什么是众包测试? 众包测试使用的是众多专家测试人员进行手动测试.测试人员旨在发现错误.记录可重现的步骤并提供错误报告. 众包测试有什么好处? 与内部 QA 相比,众包测试是一种具有成本效益的 ...

  5. 关于USIM卡的全面测试综述

    摘要 本文就USIM相关的USIM/ME接口一致性测试.Cu接口USAT测试.USIM一致性测试从测试内容.测试依据规范以及测试所需仪表进行了相应介绍. 近年来移动通信的飞速发展,特别是第三代移动通信 ...

  6. 软测试综述——PV操作

     在操作系统中,进程之间常常会存在相互排斥(都须要共享独占性资源时)和同步(完毕异步的两个进程的协作)两种关系.而信号量和PV操作完美有效的处理了这两种情况.     相互排斥:就好比过独木桥,一 ...

  7. 软件工程中众包应用的综述

    A Survey of the Use of Crowdsourcing in Software Engineering 作者 摘要 1 介绍 2 背景 2.1 众包 2.2 众包软件工程 2.2.1 ...

  8. 众包数据库管理、时空众包、移动群智感知方向的综述整理——附思维导图

    众包数据库管理.时空众包.移动群智感知方向的综述整理--附思维导图 论文介绍 众包数据库管理 时空众包 移动群智感知 总结 论文介绍 该方向的发展主要分为三个模块:时空众包.群智感知.众包数据库管理: ...

  9. 读Google是如何做测试的

    网上有<What Test Engineers do at Google>的原文翻译,以及相关中文书籍<google软件测试之道>.今天不会在这里搬内容,写一些读书笔记和感悟. ...

  10. android 测试 大赛,轻量级android应用自动测试工具-2017全国大学生软件测试大赛.pdf...

    轻量级android应用自动测试工具-2017全国大学生软件测试大赛 DroidBot: A Lightweight Android App Testing Bot 轻量级Android应用自动测试工 ...

最新文章

  1. 深度学习计算机视觉常见的29道面试题及解析
  2. nginx php post限制,叫你如何修改Nginx与PHP的文件上传大小限制
  3. 【专题介绍】开源与创新
  4. C/C++中的段错误(Segmentation fault)[转]
  5. Flask-Script扩展命令行manager = Manager(app)
  6. Times33算法与最快的Hash表
  7. 7.SOA架构:服务和微服务分析及设计--- REST服务及微服务的服务API于契约设计
  8. linux 以某个用户执行,Linux下以其他用户运行程序
  9. TextBox的OnTextboxChanged事件里对Text重新赋值带中文, 导致崩溃
  10. 交互设计精髓about face3读书笔记(没写完)
  11. 不完全遍历Csrss进程中的句柄表
  12. ImageJ批量操作时常见报错及其原因
  13. 百度 Echarts 地图-模拟迁徙,实现自动切换地图
  14. python怎样打开csv文件_如何在Python中打开CSV文件?
  15. GitChat · 前端 | React 生态系统:从小白到大神
  16. python去除空行_python中去掉空行的问题
  17. 【STM32】PWM 输出 (标准库)
  18. JS组件Bootstrap实现弹出框和提示框效果代码
  19. 【一键卸载mysql-5.7.38数据库+dos命令bat脚本】
  20. NanoDet目标检测新网络!比YOLO跑的还快

热门文章

  1. B站股权曝光:陈睿持股12.9%阿里持股7.9% 寻求双重主要上市
  2. 在excel中如何筛选重复数据_高级筛选,让重复的数据记录无处可逃
  3. 阿里云Oss水印图片处理Utils
  4. html数独游戏制作,使用HTML5和ES6(JS)实现的在线数独游戏生成器和解答
  5. css图片九宫格布局
  6. ajax请求在ie浏览器上的兼容性问题
  7. 清理服务器 归档日志文件,服务器归档日志模式
  8. 如何在InfoPath2007中接受URL参数
  9. python 解决爬虫得到诸如\u65e2 unicode码转中文和字符串转json的问题
  10. php开发电脑i56200u,Intel Core i5-6200U性能跑分和评测 | ZMMOO