基于事件处理函数的GUI测试研究

来源 :中国科学院大学 | 被引量 : 0次 | 上传用户:willing_6
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
图形用户界面(Graphic User Interface,简称GUI)是大多数软件系统提供给用户的交互接口,其功能正确性直接决定软件质量。GUI测试是检测GUI功能正确性的重要手段,它是一种通过对被测软件GUI元素的测试,验证被测软件的功能实现与规约是否一致的测试方法。在测试资源有限的情况下,对GUI实施准确有效的测试是降低测试成本的一种有效途径。  GUI具有事件驱动特性,事件处理函数完成预期的GUI功能。GUI错误通常由软件开发人员在实现GUI功能关联的事件处理函数时引入,一般可以分为两类,第一类为事件处理函数内部逻辑实现错误,通常由开发人员误解软件需求所致;第二类为事件处理函数间数据依赖关系实现错误,如在一个事件处理函数内错误地设置某个变量,导致在另一个事件处理函数中使用此变量时发生错误,此类错误通常会导致软件异常、程序崩溃等。  当前,GUI测试研究方法主要包括基于模型的GUI测试和基于代码的GUI测试。基于模型的GUI测试通过构造尽可能多的用户操作序列,以期发现GUI错误。由于模型(如事件流图模型或有限状态机模型)无法准确描述事件处理函数的内部执行逻辑以及事件处理函数间的数据依赖关系,生成测试用例以覆盖尽可能多的用户操作序列为目标(而非前述的两类GUI错误),导致难以准确有效地对GUI实施测试。基于代码的GUI测试,主要通过静态分析、符号执行等技术对软件代码进行分析测试,其主要目的是尽可能提高被测软件的代码结构覆盖率,然而,代码结构的高覆盖率并不代表事件处理函数间数据依赖关系的高覆盖率,导致无法有效发现第二类GUI错误。  针对基于模型的GUI测试和基于代码的GUI测试中的问题,根据上述两类GUI错误,本文围绕事件处理函数,从GUI功能实现的角度,分析事件处理函数的内部执行逻辑和事件处理函数间的数据依赖关系,构造事件处理函数图,制定相应的GUI测试覆盖准则;首先研究GUI测试用例生成技术,然后针对GUI测试用例冗余问题,展开GUI测试用例集约简等相关技术研究,以期进一步降低GUI回归测试中的测试成本。主要包括:  1.定义事件处理函数图。分析GUI元素上的事件与事件处理函数之间的关系,依据此关系对GUI元素上的事件进行分类,定义事件处理函数并提出事件处理函数图。  2.制定GUI测试覆盖准则。根据事件处理函数的代码结构特征,提出完整最短路径定义,描述GUI功能的执行逻辑;根据事件处理函数间的数据依赖关系特征,提出完整最短路径上的定义-引用对定义,描述事件处理函数间的数据依赖关系。在这两个定义的基础上,分别制定基于完整最短路径以及完整最短路径定义-引用对的GUI测试覆盖准则,前者体现了事件处理函数相关代码结构的覆盖率,后者体现了事件处理函数间的数据依赖关系的覆盖率。  3.基于反馈的GUI测试用例生成。为了规避根据静态模型生成测试用例时遗漏GUI功能以及生成无效测试用例等问题,在对用户输入数据等价类划分的基础上,将已有测试用例执行信息作为反馈,指导测试用例自动生成。典型的开源被测应用的实验表明,基于此模型的生成方法不仅能有效控制GUI测试用例规模,而且提高了GUI相关代码结构以及数据依赖关系的覆盖率。  4.基于事件处理函数的GUI测试用例集约简。针对GUI测试用例冗余问题,定义基于事件处理函数执行路径和基于事件处理函数间数据依赖关系的GUI测试用例冗余规则,制定并实现相应的GUI测试用例集约简算法。实验结果表明,基于事件处理函数间数据依赖关系的GUI测试用例集约简技术在保证测试质量的前提下,能有效降低GUI测试用例集的规模。  5.在移动测试平台的应用。结合上述研究,介绍在“核高基”国家科技重大专项“智能手机嵌入式软件平台研发及产业化”支持下开发的测试原型工具,对其平台上的“想法管理器”、“模拟收费系统”等,构建事件处理函数图,生成测试用例并对测试效果进行评估。  综上所述,本文针对GUI测试,从事件处理函数的角度,提出了事件处理函数图,制定了两个基于完整最短路径的测试覆盖准则,设计并实现了基于反馈的GUI测试用例生成方法;从事件处理函数执行路径和数据依赖关系的角度,提出了相应的GUI测试用例集约简技术,并取得了较好的测试效果,为GUI测试与实现,提供了丰富的参考。
其他文献
随着Web的迅速发展,Web上的信息越来越丰富.Web使用方便、信息丰富,人们越来越多的使用Web来寻找需要的信息.为了更好的使用Web上的信息,人们也不断的追求能够有效组织和利用
本文对如何开发一套适用于广大普通用户、具有搞性价比的以太话机的问题展开研究,深入分析了SIP协议的基本框架和协议过程,根据嵌入式系统资源有限和无操作系统支持的特点,设计
统计学习理论是一种专门研究有限样本情况下机器学习规律的理论。在此理论框架下产生的支持向量机(SVM)方法,使抽象的统计学习理论转化为实际的学习方法。然而,由于SVM尚处于发
在信息技术高速发展的今天,软件已经成为计算机系统的主要使能部件。但同时,软件由于自身存在的漏洞被利用于攻击,造成严重后果的事件也层出不穷。这对软件安全提出了新的挑
信用风险是金融市场最古老的也是最主要的金融风险之一,它直接影响着现代经济生活中的各项活动,也影响着一个国家的宏观决策和经济发展,甚至影响着全球经济的稳定发展。 在国
强化学习是机器学习的重要研究方向之一,旨在使智能体通过与环境交互,不断改进自身策略,最大化收到的累计奖赏。经典的强化学习方法多基于值函数,但是基于值函数的方法对于连
环境建模是机器人完成人们赋予任务的基础与关键。在确保描述细腻性的前提下,同时兼顾数据量紧缩、任务种类、机器人特征等建立高度有效、准确的环境模型,这将是所有其它功能
以计算机和现代网络技术为特征的现代信息技术极大地促进了社会经济的发展,也引发了一场资产信息管理的革命,现行的资产信息管理方式和方法面临着前所未有的挑战。基于J2EE的资
流程工业自动化水平较高,但大多数系统彼此孤立运行,造成信息孤岛的存在,另一方面,为了降低产品开发成本、赢得市场竞争,流程企业急需根据自身特点,综合集成各个过程运行系统,构建具
工程量自动计算经历了二十多年的研究,形成了基于图形输入、CAD系统二次开发等方法,并在实际运用中起到了一定的作用,但这些方法脱离了计算机辅助建筑设计,没有从根本上解决工程