王 岩,钱 巨
(南京航空航天大学计算机科学与技术学院, 江苏 南京 211106)
软件测试[1-2]可以发现软件中存在的问题,提高软件产品质量。软件测试中的一个重要任务是测试数据生成[3]。对于图形用户界面(GUI)软件而言,测试数据生成的前提是获取界面中的输入项信息,包括输入项内部提示文字、外部描述标签、内外提示图标等内容。
当前输入项识别主要有2种方法。一种是访问界面结构信息,从软件所在操作系统提供的运行时界面内部数据结构信息出发,获得输入项位置以及其他特征。例如,通过安卓的AccessibilityService服务可以获取界面结构详情,对其解析可以获取输入项信息。Wanwarang等人[4]利用手机界面的结构化信息实现对输入区域的识别定位,使用自然语言对提示文字进行概念提取,并为其构造测试用例。Darab等人[5]首先获取界面结构信息,然后对其解析得到关于输入参数的控件,并提取出搜索关键字标识符,最后利用在线的正则表达式库获取测试用例。上述输入识别方法需要侵入被测软件所在系统,当无法由内部系统访问界面结构信息时,无法应用。例如一些军工软件或者游戏终端机具有较强封装性或较高安全性要求,无法访问软件所在操作系统相关接口,很难得到界面结构详细信息。对这些软件,依赖界面内部结构信息的方法无法使用。另一种是人工给出输入项的位置,提供输入项信息。该方法需要耗费大量的人工成本,无法真正实现测试自动化。……