




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
GUI自动化测试用例生成策略的研究陆永忠1,汪 春1,聂松林2(1华中科技大学软件学院,湖北武汉430074;2华中科技大学机械科学与工程学院,湖北武汉430074)摘 要:针对目前在图形用户界面(graphicuserintedace,GUI)自动化测试方法中存在的手工依赖性和测试缺乏准确性等问题,提出了一种改进的GUI自动化测试算法。该算法包括两种基于事件流图的GUI自动化测试用例生成策略:基于蚁群算法的日常冒烟测试用例生成策略和基于宽度优先搜索生成树的深度回归测试用例生成策略。将这两种策略应用于没有考虑分层的GUI事件流图模型中,得到标准GUI的测试用例,然后再进行GuI测试。结合Microsoft UI Automation框架和Visual Studio 2005开发平台,对该算法进行了实验研究。研究表明:该算法可以提高GUl测试的自动化程度和准确性。关键词:软件测试自动化;冒烟测试;回归测试;蚁群算法;图形用户界面;事件流图中图分类号:TP 311 文献标志码:AStudy ongeneration strategies of GUI automation testing casesLU Yong-zhon91,WANG Chunl,NIE Songlin2(1School of Software Engineering,Huazhong Univof Science&Technology,Wuhan 430074,China;2SchoolofMechanical Science and Engineering,Huazhong Univof Science&Technology,Wuhan 430074,China)Abstract:Aiming at the present problems in the course of GUI automation test such as large dependence onmanual work。laek of testing accuracy and SO forth,an improved automated GUI testing algorithmisproposedIt includes two strategies based on its eventflowgraph:a daily smoketesting strategybased on the ant colonyoptimization algorithm(ACO)anda deep regression testing strategy based on the spanning tree algorithmTwostrategies are applied tO the nonhierarchical GUI eventflow graph,and the standard testing cases are obtainedThen GUI test is doneWith the help of Microsoft UI Automation and Visual Studio 2005,a testing study ontheproposed algorithmis doneThe studyingresults show that it canimprovethe automation and accuracy ofGUI testKeywords:automatedsoftwaretesting;smoke testing;regression testing;ant colony optimization algorithm;graphic user interface;eventflow graph0 引 言早在20世纪70年代,有关学者提出使用有限状态机模型对结构化的被测软件进行建模,并使用了自动机理论来寻找软件中的错误。后来也有学者将这一模型使用到了GUI测试领域中,在之后衍生出了改进的有限状态机模型:完整交互序列(completeinteractionsequence,CIS)模型。发现这些模型逐渐不能满足GUI自动化测试建模的要求之后,出现了事件流图所属的事件流模氆1。其次对于GUI测试用例的自动化生成也有很多不同途径的研究。很多学者将智能规划(AI planning)的方法应用到了GUI测试当中,这种方式利用了智能规划领域中的偏序规划方式,采用目标驱动搜索状态结点的办法获得测试用例。在使用智能规划的方式生成测试用例的过程中,还衍生出了分层规划的测试用例生成方式2。另外,测试覆盖率和测试神谕(test oracle)的相关理论也日趋完善,美国Maryland大学的学者Atif等在这方面的研究颇有建树,为整个GUI测试覆盖标准和测试神谕提出了一整套理论【3】。Scott和Atif共同提出了一种基于调用栈(call stack)的覆盖标准c4。针对回归测试的相关研究,Mao等提出了通过训练神经网络的方式选择回归测试时较好的测试途径5。而Atif则使用了一种基于事件关系选择其他可行事件的方式收稿日期:20071020#修回日期:2008一0517。 ,基金项目:国家自然科学基金(50675074,50775081);华中科技大学自然科学基金(2007Q006B)资助课题作者简介:陆永忠(1969一),男,副教授。博士,主要研究方向为软件工程,人工智能。Email:hotmailuaer163oDm万方数据第1期 陆永忠等:GUI自动化测试用例生成策略的研究 175改善回归测试用例对软件变更的适应性不强的这一状况”。这里将提出一个基于事件流图的GUI自动化测试算法,该算法利用两种基于事件流图的GUI自动化测试用例生成策略,先得到标准GUI的测试用例,再来测试GUI。结合与Microsoft Windows操作系统有着良好交互方式的Microsoft UI Automation框架和Visual Studio 2005开发平台,对该算法进行了测试研究。对基于Notepad程序的测试研究表明:该算法可以提高测试的自动化和准确性。为在Windows环境下提高GUI测试的自动化程度提供了一种更为有效的途径,弥补了目前传统的GUI自动化测试方法中存在的不足。1 GUI自动化测试算法这里对Atif提出的4维事件流图模型进行了简化,将事件流图简化为一个2维向量,其中V是结点的集合,表示组件中所有事件,Eyy是结点之间有向边的集合。在应用过程中不进行GUl的分层,即省去了GUI对象组成组件环节,直接对事件进行建模。因为对GUl分层建模的操作,依赖于GUI的逻辑关系,需要人工操作,所以会影响自动化程度的提高。而选择的GUI自动化访问框架提供了强大的访问接口,不需要对GUI事件进行复杂的分类定义。在没有考虑分层模型的情况下,只需要在遍历每个GUI事件的同时,直接通过GUI的状态找到事件发生之后GUI能够立即执行的事件,即找到每个事件的跟随。这样的简化并没有影响事件流图中最关键的事件和事件之间的交互关系,对测试覆盖率等没有影响。在逆向工程运行被测程序时,可以在需要寻找跟随的事件被触发后检查当前GUI的状态,获得可立即执行的事件。获得了每个事件的跟随之后,即可建立起一个以事件为结点事件交互关系为有向边的事件流图。由于逆向工程建立的事件流图还有一些缺陷,所以需要进行人工补充。同时,测试神谕也需要人工确认一次,看是否有遗漏的对象。在建模完成之后,主要考虑的是事件覆盖和事件交互覆盖两种方式。针对适于GUl自动化测试的要求(即主要针对回归测试和冒烟测试),结合有向图相关问题的解决方案,提出了两种针对不同测试场景的测试用例生成策略:基于蚁群算法的日常冒烟测试用例生成策略和基于宽度优先搜索的深度回归测试用例生成策略。一旦获得了标准GUl的测试用例,就可以用来测试新的GUI了。基于蚁群算法的日常冒烟测试用例生成策略如下:该策略自定义了自启发量和禁忌列表,将最大最小蚁群算法(a max-min ant system,MMAS)、自适应调整信息素的蚁群算法以及最优最差解信息素挥发奖惩机制加以融合,得到了新的算法公式。将结点的数目设为问题的阶数,蚂蚁数量为M。在初始时刻,按照MMAS算法的做法将每条有向边上的信息素浓度相等,都设为最大值。蚂蚁求解的过程中,沿着事件流图的有向边运动。在t时刻蚂蚁点(量=l,2,M)从结点i转移时,在i的出边连接的结点中挑选一个结点作为到达的结点,其选择结点J的概率P:(f)按公式(1)计算或(f);jriJ(z)。 聃,;j轰筹l晶ET,缸 9”一 (1)IP“10,其他其中,铂(f)表示有向边(i,J)的信息素浓度大小。啦为自启发量,表示求解过程中的启发式因素。根据这里的求解问题,为鼓励蚂蚁尽量选择为遍历过程贡献大的结点,还要尽量避免访问重复经过的结点,设j的出边连接的未访问结点数为A,又设j的在已访问的路径列表中出现次数为埘,则有啦=而AI-I-X。口,卢分别为信息素启发因子和自启发量因子,分别表示信息素和自启发量在寻找解的过程中所起的作用大小。tabu。表示搜索下一结点时的禁忌列表,当i的出边连接的结点中不全为访问过的结点时,tabu,为访问过的结点集合,反之tabut为空。tabu。这样设计是为了避免重复结点的访问以加快遍历进程,仅在出边连接的结点全为访问过的结点时才考虑访问重复结点。在结合了自适应信息素调整的蚁群算法后,蚂蚁选择下一个事件结点按公式(2)进行,2 f:j盯g Jem m。axr#()4啦n口q0,J按照公式(1)计算概率,此时蚂蚁采用类似于“轮盘赌”的方法选择下一个事件结点。蚁群算法的这种机制是确定性选择和随机选择相结合的产物,确定性选择使得最后解趋于收敛,随机选择使得全局搜索能力增强,增加寻找更优解的能力。求解日常测试用例生成问题使用的蚁群算法采用的是延迟更新信息素的方式,即多个蚂蚁全部完成一轮遍历,再对路径上的信息激素进行更新。在每一轮遍历完成后,从该轮蚂蚁找到的解当中找到最优的解,即重复结点最少的路径和与之相反的最差的解。更新信息素时,所有有向边上的信息素都有一定程度挥发,然后对最优路径上的信息素和最差路径上的信息素进行奖励和惩罚,即对增加最优路径上边的信息素,减少最差路径上边的信息素。在下一轮求解过程中有向边上的信息紊为如式(3)所示。fIDriJ(f)+At0(f),最优路径上的有向边q【f+1)2p岛()一r:(),最差路径上的有向边【Db(),其他(3)其中,p为信息素的挥发系数。Ar,j(),r:(f)分别是信息素的奖惩增量。设路径重复结点的数目为卢,则Arli(f)=Qt,,(f)=pQ,Q和Q7都为一常量。这样更新信息素万方数据176 系统T程与电子技术 第31卷的策略,是为了在遍历所有结点的基础上找到重复访问结点最少的解。如果算法收敛,将会按照访问顺序生成一个事件结点的序列,该序列就是需要的日常测试用例。基于宽度优先搜索生成树的深度回归测试用例生成策略如下:该策略利用宽度优先遍历生成树上两个结点间的简单路径对应着原图的最短路径7,通过策略得到事件流图的宽度优先生成树以后,就可以利用该特性为目标事件生成测试用例。该策略对宽度优先生成树使用了目标驱动的逆向搜索算法。首先找到事件流图中目标事件结点v所有入边的源结点。然后利用宽度优先生成树选择每个源结点通过寻找父结点的方式逆向寻找一条到达起始结点的路径。该路径经过的结点加上目标事件结点即是该入边源结点对应的一个测试用例。目标事件结点有多少条入边,就有多少个测试用例与之相对应。这样就为目标事件结点v生成了覆盖其所有事件执行状态的一套测试用例。2 GUI自动化测试算法的测试为了验证上述算法的性能,这里结合与Microsoft Windows操作系统有着良好交互方式的Microsoft UI Automation框架和Visual Studio2005开发平台,选择Notepad程序来对其进行相关的测试研究。21测试环境本文描述的测试选用了很多类似研究中都选用的记事本类程序的GUI作为测试输入。因为虽然该类型的GUI规模较小,但是包含的控件类型丰富,GUI对象间的关系比较复杂,适于检查原型系统对各种控件的支持性。本文选用的测试GUI是由C#实现的开放源代码的Notepad程序,便于缺陷注入和测试,如图1所示。图1用于测试的记事本程序准备三个版本的Notepad程序,一个版本用作标准GUI进行事件流图建模和测试神谕的提取;另两个版本用作被测GUI,在其中注入一些缺陷,检查GUI自动化测试系统的测试能力。为了充分测试该系统的错误侦测能力,在第一个被测GUI中注入10个缺陷,如表1所示。对第三个被测GUl进行大幅度改动,去掉三个原有的菜单选项,使得在测试时系统找不到对应事件结点,以测试系统对软件大幅度变更的应急能力。表1第一个被测GUI注入缺陷列表注入位置 缺陷描述菜单选项File菜单选项File菜单选项File菜单选项File菜单选项Edit的子选项CutFont设置About窗口中的LabelAbout窗口中的OK按钮About窗口中的OK按钮Help菜单选项的Register子选项File选项展开后缺少SaveAs选项Save选项快捷键未设置0pen选项写为OPENFont打开并关闭后File选项状态变为Disable选中文字后,剪切操作无效字体设置无效单词“Programmed”拼写错误0K按钮状态为DisableOK按钮位置被移动期望的Register对话框没有弹出本测试尽量使缺陷的类型多样化,选用的程序调用了一些Windows标准窗口,故使注入的缺陷相对集中。前4个关于File菜单项的缺陷是为了更好的检测回归测试针对目标事件的测试能力。 ,本测试全部在Windows XP操作系统上进行,硬件平台为Intel Core2 Duo T5500 166G Hz,lG RAM。22测试过程和结果在对本文实现的算法进行测试时,首先通过标准GUI将事件流图模型建立出来,同时获得一批记录GUI状态的测试神谕文件。通过逆向工程,为记事本程序获得了事件流图的DOT文档和49个测试神谕文件,即总共触发了49个GUI事件并记录了状态,总共花费时间约为2分钟。由于逆向工程建立的事件流图还有一些缺陷,所以需要进行人工补充,比如关于TextBox进行剪切、粘贴、字体设置等需要前提的操作。经过补充和修正后事件流图包含53个GUI事件。测试神谕也需要人工确认一次,看是否有遗漏的对象。接着利用建立好的事件流图进行测试用例生成,针对日常测试的蚁群算法中,比较了三种可调参数几种搭配的收敛速度和找到解的情况,如表2所示。表2用于求解日常测试用例生成问题的蚁群算法参数搭配的收敛速度和解万方数据第1期 陆永忠等:GUI自动化测试用例牛成策略的研究 177最终得到最好的结果是包含69个事件的解,保留这组结果将其作为日常测试的测试用例。另一种针对回归测试的用例生成,在测试中选择了针对菜单上的选项File进行测试用例生成。最终为FileExpand事件获得了15个测试用例,平均每个测试用例包含34个GUI事件。通过生成的测试用例对被测GUI版本进行测试,测试过程也分为两个部分:日常测试和回归测试。对于日常测试,整个测试过程耗时2分钟,执行GUI事件69个,注入的缺陷找到缺陷9个,测试通过率873。对于回归测试,找到了关于FileExpand的全部4个缺陷,测试过程执行关于FileExpand事件的15个测试用例耗时5分钟,主要是由于程序反复关闭和开启花费了时间。最后对经过大幅度改动的GUI版本进行测试,执行两个GUI事件后测试系统发现不能定位测试期望的GUI事件,在确认GUI版本出现大幅度变更以后,开始分析GUI,得到事件流图和测试神谕,该过程耗时3分钟。23测试结果分析分析基于逆向工程的事件流图建模与测试神谕提取工具的结果,总共获得53个GUI事件,触发事件49个,分析正确的事件41个占事件总数77(其中事件关系不正确的事件算作不正确事件)。对于逻辑和依赖关系较复杂的GUI事件还是需要人工确认和添加。在测试用例生成方面,在使用蚁群算法的日常测试用例生成过程中表现最好的是信息素启发因子口=4,自启发量因子卢一15,信息素挥发系数ID一05的一组参数,在此情况下得到的解包含的事件数目最少,即重复事件最少,且收敛的平均循环次数可以接受。在基于宽度优先生成树的回归测试用例生成时,生成测试用例数和期望值相等,等于事件流图中该事件结点的入度,平均测试用例长度较短,估计和测试程序GUI规模较小有关。在测试执行部分,算法对注入的10个缺陷的侦测能力比较理想,但是注入的缺陷毕竟只代表一部分GUI缺陷的类型。日常测试发现了9个注入的缺陷,因为测试“深度”原因,有一个关于File菜单项的缺陷没有发现,而回归测试发现了所有关于File目标事件的缺陷。日常测试所花费时间与基于逆向工程建模的时间基本相当,而回归测试因为每个测试用例都需要从初始状态开始执行,故使用了更多时间,然而这个时间长度应该是可以接受的。3 结束语本文提出了一种基于事件流图的GUI自动化测试算法,研究了两种测试用例生成策略:基于蚁群算法的日常冒烟测试用例生成算法和基于宽度优先生成树的深度回归测试用例生成算法。结合Microsoft UI Automation的框架和Visual Studio 2005开发平台,挑选被广泛作为GUI自动化测试测试GUI的记事本程序对其进行了测试工作。测试表明:该算法对没有大幅度改动的GUI版本具有较好的侦测能力,提高了测试的自动化程度。今后还将不断拓展该系统对各种GUI的支持,开发可替换的底层支持模块代替单一的MicrosoftUl Automation框架对Java系列GUI进行支持。改进事件流图,为每个结点增加前提条件以解决GUI操作需要复杂逻辑时自动化建模困难的问题,进一步减少建模之后人工确认的干预。参考文献:1Memon Atif MAn eventflow model of GUIbased applicationsfor testingJSoftare Testing,VerificationandReliability,2007,17(3):1371572Memon Atif M,Pollack Martha ELou Sofia MaryHierarchical GUI test case generation using automated planningJIEEE Transon SofttlJare Engineering,2001,27(2):1441553Xie Qing。Memon Atif MDesigning and comparing automatedtest oracles for GUIbased software applicationsJACMTra
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年人力资源专员招聘笔试备考要点与试题集
- 2025年站台安全门系统项目建议书
- 2025年金属波纹管膨胀节(钢)项目发展计划
- 2025年经济与商务咨询服务项目合作计划书
- 2025年年化妆品原料合作协议书
- 2025年抗滴虫病药项目建议书
- 2025年虚拟轴坐标测量机合作协议书
- 2025年行李自动分检系统项目发展计划
- 2025年手工制纸及纸板项目发展计划
- 2025年植物施药保护机械项目发展计划
- 主题思政课铸牢中华民族共同体意识
- 邮政行业痛点与解决措施
- 二年级《劳动最光荣》课件
- 帕夫雷什中学
- 2023年人教版美术六年级上册全册教案
- 道路交通安全法知识试题库完整
- 《铁路交通事故调查处理规则》解读
- 研究生学术行为规范讲座
- 水资源论证水土保持防洪评价收费标准
- 年处理12万吨煤焦油加工工艺初步设计
- 烟化炉车间技术操作规程-附一:烟化炉开炉、停炉、故障处理及正常操作原则
评论
0/150
提交评论