Page 15 - 《软件学报》2020年第12期
P. 15
成浩亮 等:一种手绘制导的移动应用界面测试方法 3681
有少量例外:对于 whohas,myexpense 和 mileage,逻辑连接符并不能起到提高测试效果的作用.原因在于:这些应
用界面控件的差异较大,测试人员很难通过逻辑连接符将这些程序测试控件的内部逻辑有效地连接起来.对于
其他大部分应用程序来说,逻辑连接符能够有效提高测试效果.交互式反馈的测试效果和程序的分支数有密切
关系,对于像 music note 和 whohas 这样分支数较少的简单程序,初始的手绘图形已经能够一次性地将用户的测
试意图定义明确,因而交互式反馈并不能进一步帮助用户提高测试效果;而对于分支数较多的复杂应用来说,例
如 anymemo,sanity 等等,从表 5 的实验结果可以明显看到,交互式反馈能够帮助用户更清晰地定义测试意图,从
而使得测试覆盖率得到明显提升.
综上所述,逻辑连接符和交互式反馈在大多数条件下能够有效提高测试效果,对于具有一定逻辑关系的界
面控件进行测试时,逻辑连接符的提升效果明显;而对于界面复杂的应用程序进行测试时,交互式反馈能够帮助
测试人员清晰地理解和定义其测试意图,从而使测试更为有效.
3 相关工作
本文提出一种手绘制导的移动应用图形界面测试生成方法,它将用户手绘描述的测试意图转换成测试模
型,再由模型来生成图形界面的测试用例.这里,我们将从移动应用程序界面测试、模型驱动的测试方法以及手
绘技术在软件工程领域的其他应用这 3 个角度介绍一些近年来与本文技术密切相关的工作.
• 移动应用程序的界面测试
[4]
由于智能手机与平板电脑日渐普及,近年来涌现出许多与移动应用程序界面测试相关的技术.Yang ,
Clapp [14] 以及 Machiry [15] 等学者在移动应用程序界面上分别尝试了不同的随机测试策略,以提高其测试效果.
Arzt [16] ,Barros [17] ,Brutschy [18] ,Mirzaei [19] ,Yang [20] 等学者引入了静态程序分析方法,使得移动应用程序界面测试
的效果得到了进一步提升.Mehlitz 等学者 [21] 基于模型对移动应用的界面测试进行验证;Mirzaei 等学者 [22] 基于
[5]
符号执行来生成移动应用程序的测试用例.Choi 等学者 进一步给出了 Swifthand 框架,它采用机器学习算法来
自动生成移动应用程序的测试脚本.与所有已有的移动应用测试方法不同,本文的测试方法由用户通过手绘来
进行制导.由我们的实验评估可知,这一制导方式成本不高,且效果显著.
• 模型驱动的测试方法
近年来,模型驱动的测试方法成为了界面测试领域的主流方法.该方法将程序的图形界面构建成测试模型,
并依据模型生成合法的事件序列,从而能够系统性地生成测试用例.可用的测试模型包括有限状态机模型 [23] 、
交互序列模型 [24] 、活动图 [25] 、窗口转换图 [26] 、语义模型 [27,28] 、UML 状态图模型等等.Takala 等学者 [29] 提出了
一种人工构造测试模型的方法.Amalfitano 等学者 [30] 在此基础上进一步设计一种动态爬取图形界面执行事件
[2]
的测试模型构造技术.Baek 等学者 提出了一种多层次的界面测试比较准则,供用户在多个抽象级别上选择不
同的测试模型.Memon 等学者定义了更为常用的事件流图测试模型 [6,7] ,并在后来的研究中进一步由使用-观察-
运动范式 [31] 和测试回归技术 [32,33] 改进了该模型 [34] .基于这些研究,Nguyen 等学者开发了界面测试工具
[8]
[9]
GUITAR [10] .并由此分支出两个不同的移动应用界面测试工具 AndroidRipper 和 MobiGUITAR ,这两个工具
采用了不同的模型遍历策略.本文由手绘来生成测试模型,既能够继承已有模型驱动测试方法的优势,又能够低
成本地产生更为有效的测试模型.
• 手绘技术在相关领域的应用
手绘技术作为一种直观的人机交互方式,也被用于软件工程领域内的各种其他需求上,包括图形界面的原
型设计与构建 [35,36] 、UML 生成 [37] 及自动建模技术 [38] 等.Coyette [35] 和 Lin [36] 设计的工具可以允许用户在软件开
发过程中手绘界面原型,然后根据手绘信息自动构建应用程序界面,从而使界面程序的开发更为便捷.Grundy 设
计的 MaramaMTE [37] 工具能够利用用户的手绘信息来生成 UML 图.Wüest 等人设计的 FlexiSketch [38] 工具进一
步通过手绘来辅助软件设计.与这些现有的工作不同,本文首次将手绘技术引入到移动应用的界面测试上,为软
件测试领域探索新途径和新方法.