软件自动化前沿进展专题
软件自动化前沿进展专题编者按
梅宏, 张路
中国科学: 信息科学, 2019, 49(10): 1233-1233
关键词 错误修复; 生成技术;
软件自动化前沿进展专题
Android应用测试输入自动生成技术
王珏, 蒋炎岩, 许畅, 马晓星, 吕建
中国科学: 信息科学, 2019, 49(10): 1234-1266
摘要 软件自动化是提高软件生产率的根本途径.由于Android应用快速迭代的开发模式,其对于自动化协助应用开发,尤其是自动化测试,有很高的需求.在自动化测试中,测试输入自动生成是最为关键和资源消耗最大的步骤之一,极大地影响自动化测试的有效性.由于Android应用独有的特性,自动为其生成测试输入存在独特的挑战.为了应对这一挑战,已有许多Android应用测试输入自动生成技术被提出.本文提出Android应用测试输入自动生成技术的描述框架,包括测试输入自动生成技术的3个维度(分别为搜索空间的表示、候选输入的生成、候选输入的评估),并讨论了测试输入自动生成技术在这3个维度采用策略的两个评价指标(即充分性与高效性).借助这一全新描述框架,本文对已有技术进行分析和总结,讨论现有技术的长处和不足,并对未来可能的研究方向给予展望.
关键词 Android; 自动测试; 输入生成; 技术描述; 智能手机; Android; automated testing; input generation; description of technology; smartphones;
Jue WANG, Yanyan JIANG, Chang XU, et al. Automatic test-input generation for Android applications. Sci Sin Inform, 2019, 49(10): 1234-1266, doi: 10.1360/N112019-00003
软件自动化前沿进展专题
编译优化序列选择研究进展
高国军, 任志磊, 张静宣, 李晓晨, 江贺
中国科学: 信息科学, 2019, 49(10): 1267-1282
摘要 在过去的几十年里,编译器开发者针对各种复杂情况下的编译优化需求,设计实现了大量的编译优化选项.在实际开发中,由编译器提供的标准编译优化序列难以适应复杂场景下待编译程序的编译要求.一方面,待编译程序有不同的语义和编译目标,直接采用标准编译优化序列难以获得理想的优化效果,若采用不适当的优化序列甚至可能对程序性能等带来负面影响.另一方面,随着硬件体系结构的不断发展,编译环境日益复杂,编译优化序列亦应进行相应调整.因此,如何在错综复杂的优化选项中为待编译程序选择最佳的编译优化序列成为一个具有挑战性的科学问题.针对上述问题,研究人员展开了大量的研究,并取得了诸多成果.本文旨在归纳编译优化序列选择领域的研究文献,通过文献搜索,筛选获得符合条件的55篇论文,从多个视角(算法、研究类型、目标编译器、基准测试集等)揭示该领域的研究现状.通过文献分析可以发现,当前该领域的主流算法包括两类,即以遗传算法为代表的启发式搜索算法和以支持向量机为代表的机器学习算法.超过80%的文献的研究类型属于提出解决方案或者实证研究.在已有的研究中,实验验证时使用频次最多的编译器和基准测试集分别是GCC和miBench.本文有助于理解编译优化序列选择领域当前基本进展和发展趋势,同时为开展该领域研究工作提供了可能的方向.
关键词 编译器; 编译优化序列; 启发式搜索; 机器学习; compiler; compiler-optimization sequence; heuristic search; machine learning;
Guojun GAO, Zhilei REN, Jingxuan ZHANG, et al. Selection of compiler-optimization sequences. Sci Sin Inform, 2019, 49(10): 1267-1282, doi: 10.1360/N112019-00050
软件自动化前沿进展专题
一种静态的编译器重复缺陷报告识别方法
陈俊洁, 胡文翔, 郝丹, 熊英飞, 张洪宇, 张路
中国科学: 信息科学, 2019, 49(10): 1283-1298
摘要 编译器缺陷报告在编译器质量保证中具有重要作用,而重复缺陷报告往往带来不必要的人力、时间等资源浪费.为了识别编译器重复缺陷报告,本文提出了一种静态的重复缺陷报告识别方法IdenDup.该方法可以有效解决两个场景下的重复缺陷报告问题,即模糊测试(fuzz testing)所产生的缺陷报告和缺陷管理系统中不同来源的缺陷报告.具体来说, IdenDup利用缺陷报告中静态文本和程序特征来识别重复缺陷报告,其中程序特征包括程序词法、语法,以及本文首次提出的数据流特征.特别地,程序数据流特征指的是程序中变量使用路径(变量使用方式及使用方式的顺序)特征.之后,我们使用C语言的两个主流编译器GCC和LLVM作为实验对象,对IdenDup的效果进行了实验探究.实验结果表明, IdenDup可以有效地识别上述两个场景下的重复缺陷报告,并且超过已有方法.
关键词 编译器调试; 编译器缺陷报告; 重复缺陷报告; 数据流分析; 静态方法; compiler debugging; compiler bug report; duplicate bug report; dataflow analysis; static approach;
Junjie CHEN, Wenxiang HU, Dan HAO, et al. Static duplicate bug-report identification for compilers. Sci Sin Inform, 2019, 49(10): 1283-1298, doi: 10.1360/N112019-00001