




已阅读5页,还剩59页未读, 继续免费阅读
(计算机软件与理论专业论文)基于权重事件的gui测试研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
硕l 学位论文 摘要 软件测试是保证软件质量及可靠性的关键,软件测试的开销常常占整个工程 预算的很大比重。随着图形用户界面( g u i ) 在当今软件中的应用日益广泛,g u i 测试逐步成为软件测试中的重要部分,但对g u i 测试的研究工作还相对薄弱。 由于g u i 软件与传统软件有许多不同的特点,这使得传统软件的测试技术并不 能直接应用于g u i 测试。g u i 测试工作面临着比传统软件测试更大的困难与挑 战,如何为g u i 软件生成测试用例是其中的一个重要研究课题。 本文首先介绍了g u i 测试的基础知识与测试步骤,分析了g u l 测试框榘构 建问题以及g u i 测试中各个阶段的相关研究现状。 针对g u i 测试框架中需统一使用的g u i 表示方法,本文提出基于权重事件 的g u i 表示方法。为事件分配权重值,利用权重区分g u i 事件序列重要程度, 在此基础上将事件进行分类,划分成不同子集,并构建基于权重的g u i 事件流 图与集成树。 本文在分析使用a i 规划生成g u l 测试用例方法的基础上,提出了一种基于 权重的a i 规划生成g u i 测试用例方法,给出了基于权重的g u i 测试流程。由 g u i 权重事件集获得分层抽象的规划操作集,减少g u i 的事件状态数目。使用 a i 规划对指定的g u l 目标状态生成规划操作步骤集。在将规划操作步骤分解为 测试用例的事件序列时,由事件权重值决定测试用例的生成次序,使生成的测试 用例更合理,从而提高g u i 测试效率。实验结果表明,应用此方法在相同的测 试用例数下能发现更多的错误。 本文最后讨论了基于权重事件的g u i 回归测试技术,给出了基于权重事件 的g u i 回归测试方法。根据测试结果及g u i 的修改调整事件权重值,采用选择 性重测策略,分析修正原有测试用例并添加必要的新测试用例,生成g u i 回归 测试用例包。 关键词:g u i 测试;事件;回归测试;测试用例生成;权重 i i 基于权荤事件的g i 丌删试研究 a b s t r a c t s o f t w a r et e s t i n gi st h ek e yt og u a r a n t e es o f t w a r eq u a l i t ya n dr e l i a b i l i t y - c o s to f t e s t i n go f t e nt a k e sl a r g ep e r c e n t a g eo ft h et o t a lp r o j e c tb u d g e t w i t ht h ew i d e l yu s i n g o fg r a p h i c a lu s e ri n t e r f a c e ( g u i ) i nt o d a y ss o f t w a r e ,g u it e s t i n gh a sg r a d u a i l y b e c o m ea ni m p o n a n tp a no fs o f t w a r et e s t i n g h o w e v e f ,t h er e s e a r c ho fg u it e s t i n g i sf a ff r o mb e i n ge x t e n s i v e l yp e r f o r m e d s i n c eg u is o f t w a r eh a sc h a r a c t e r i s t i c st h a t a r ed i f f 色r e n tf t o mt h o s eo fc o n v e n t i o n a ls o f t w a r e ,t e c h n i q u e sd e v e l o p e dt ot e s t c o n v e n t i o n a ls o f t w a r ec a n n o tb ed i r e c t l ya p p l i e dt og u lt e s t i n g m o r ed i f n c u l t i e s a n dc h a l l e n g e sw e r ef a c e dt ot h ew o r ko fg u it e s t i n gt h a nt h o s eo fc o n v e n t i o n a l s o f t w a r et e s t i n g h o wt og e n e r a t et e s tc a s ef o rg u ls o f t w a r ei sac r u c i a lr e s e a r c h s u b j e c ti n v o l v e di n f i r s t l y ,t h i st h e s i sa n a l y z e st h et h e o r e t i c a lb a s e sa n dt e s t i n gp h a s e so fg u i t e s t a n dt h e nd i s c u s s e st h ec o n s t r u c t i o no fg u it e s t i n gf r a m e w o r ka n dt h er e l a t e d r e s e a r c hw o r ki nt h ee a c hp h a s eo fg u i t 色s t i n g a i m i n g a tt h er e p r e s e n t a t i o no fg u it h a tw e r ee n l p l o y e db ya l lt h eo t h e r c o m p o n e n t so ft h eg u it e s t i n gf r a m e w o r k ,an e ww e i g h t e de v e n t s b a s e dg u i r e p r e s e n t a t i o ni sp r e s e n t e di nt h i st h e s i s i td i s t i n g u i s h e st h ei m p o n a n c eo fg u i e v e n t sb ya s s i g n sw e i g h tv a l u e st ot h e m ,t h e nd i v i d e sac l a s s i f i c a t i o no fe v e n t sa n d s e p a r a t e st h ee v e n t si n t od i f f e r e n ts u b s e t s t h ew e i g h t e de v e n t f l o wg r a p ha n d i n t e g r a t i o nt r e eo fg u i sc a nb ec o n s t r u c t e df o l l o w e da b o v e w “ha n a l y s e so fg u i t e s tc a s eg e n e r a t i o nb a s e do na ip l a n n i n g ,an e wm e t h o d o fw e i g h t b a s e da u t o m a t i cg u it e s tc a s e sg e n e r a t i o ni sp r o p o s e di nt h i st h e s i s ,a n d t h ew e i g h t b a s e dg u it e s tn o wi si n t r o d u c e da l s o i to b t a i n st h es e to fh i e r a r c h i c a l a b s t r a c t e dp l a n n i n go p e r a t o f sf o mg u lw e i g h t e de v e n t s ,r e d u c e st h en u m b e ro fg u i e v e n ts t a t e s t h em e t h o du s e st h ea ip l a n n i n gt og e n e r a t et h es e to fp l a n n i n g o p e r a t o rs t e p sf o rt h eg i v e n ( i u ig o a ls t a t e t h e ni t d e t e r m i n e st h eo r d e rt og e n e r a t e t e s tc a s e si nd i f f b r e n ts u b s e t sa c c o r d i n gt ot h ew e i g h tv a l u e so fe v e n t sw h e n d e c o m p o s e st h ep l a n n i n go p e r a t o rs t e p s w i t hm o r er e a s o n a b l et e s tc a s e sg e n e r a t e d , i tm a k e st h eg u lt e s t i n gm o r ee m c i e n t t h er e s u l t so fe x p e r i m e n ts h o wt h a tm o r e e r r o r sa r ed e t e c t e da p p l yt h i sn e wm e t h o du n d e rt h ei d e n t i c a ln u m b e ro ft e s tc a s e s t h et e c h n i q u eo fw e i g h t e de v e n t s b a s e dg u ir e g r e s s i o nt e s t i n gi sd i s c u s s e di n t h el a s to ft h i st h e s i s i tu s e st h es e l e c t i v er e t e s ts t r a t e g y f i f s t l y ,a d j u s t sw e i g h t v a l u e so fe v e n t sa c c o r d i n gt ot e s tr e s u l t sa n dt h em o d i f i c a t i o n so fg u i t h e n h a n a l y z e st h eg u im o d i f i c a t i o n s ,r e p a i r st h ep a no fo r i g i n a lt e s tc a s e sa n da p p e n d s s o m en e wt e s tc a s e si fn e c e s s a r y b o t ho ft h e mc o m p r i s e dt h eg u ir e g r e s s i o nt e s t c a s es u i t k e yw o r d s : g u it e s t i n g ;e v e n t s ; r e g r e s s i o nt e s t i n g ;t e s tc a s eg e n e r a t i o n ; w e i g h t b a s e d 筚于权荤事件的g u i 洲试研究 插图索引 图2 1g u i 测试框架9 图3 1g u i 对象的属性结构1 4 图3 2d e l p l l i 中按钮对象的属性列表1 5 图3 3g u i 状态及属性示例1 6 图3 4g u i 事件对g u i 状态的改变1 7 图3 5 状态岛及岛的可执行权重事件序列2 0 图3 6 “更换用户”事件打开一个模式窗体2 l 图3 7 电子病历系统主窗体m a i n 组件的权重事件流图2 4 图3 8 计算节点v 的跟随权重事件集g e t f o l l o w s ( v ) 算法2 5 图3 9 基于权重的g u i 集成树( 局部) 2 6 图4 1 基于权重的g u i 测试流程3 0 图4 2g u i 权重事件集与规划操作集3 l 图4 3g u i 规划操作前置条件与执行效应示例3 3 图4 4g u i 抽象操作分解及子规划生成一3 3 图4 5g u i 规划任务初始状态与目标状态3 4 图4 6 初始状态和目标状态的对象及属性表示3 5 图4 7 局部次序规划3 6 图5 1 基于权重事件的g u i 回归测试用例生成流程4 2 图5 2 修改前后的g u i 及权重事件流图4 6 图5 3 测试用例检查流程4 7 而十学帝论文 附表索引 表3 1 部分g u i 事件一权重表( e w t ) 示例1 9 表3 2 电子病历系统部分事件类型统计2 2 表4 1g u i 中部分操作一事件映射表3 2 表4 2 无权重事件部分规划测试用例生成与执行情况。3 9 表4 3 基于权重事件部分规划测试用例生成与执行情况4 0 表5 1g u i 修改对g u i 测试用例的影响情况4 3 表5 2 部分g u i 修改前后的事件序列4 7 v i i i 湖南大学 学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所 取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任 何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡 献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的 法律后果由本人承担。 作者签名: 弼和吁 日期:加年6 月2 争日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意 学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文 被查阅和借阅。本人授权湖南大学可以将本学位论文的全部或部分内容编 入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇 编本学位论文。 本学位论文属于 l 、保密口,在年解密后适用本授权书。 2 、不保密团。 ( 请在以上相应方框内打“”) 作者签名:剞红年 导师徽以寺交 日期:二一舌年6 月啤日 日期:。 口。占年多月必日 硕十学位论文 1 1 研究背景和意义 第1 章绪论 在现今的软件系统中,图形用户界面g u i ( g r a p h i c a lu s e ri n t e r f a c e ) 的使 用已是相当普遍了【l 】。g u i 提高了软件系统易用性,让人机交互更加友好,系统 的可操作性更强。合理、友好的g u i 设计已成为整个软件系统开发的一个重要 组成部分,g u i 相关部分的代码占了将近整个软件系统的4 5 6 0 左右f 2 】。g u i 相当于软件系统的前端,基础代码是后端,用户通常是执行g u i 前端事件如鼠 标键盘输入,g u i 将用户的输入通过消息或方法调用与软件后端基础代码进行交 互【3 】。提供易用操作与增强功能的同时,g u i 的构建也愈加的多样与复杂化。随 之而来的则是g u i 所面临的棘手测试问题。 近些年来,面向对象软件测试在理论和实践上都得到迅速发展。从目前的研 究现状来看,研究较多地集中在类和对象状态的测试方面【4 】。相比之下,针对 g u i 测试的研究却不是很广泛。但由于g u i 应用的日益普及,g u i 测试在面向 对象软件测试中的重要性不可忽视。测试的工作量与强度,在软件开发过程中占 到5 0 6 0 的比重,其中的g u i 测试更是难点与重点1 5 】。充分的g u i 测试是对整 个软件系统正确性、安全性、健壮性、易用性的必要保证。 因g u i 拥有大量的状态、基于交互及事件驱动的输入以及复杂的图形输出 界面,这使得g u i 测试比传统软件测试要困难许多,传统的软件测试方法并不 能直接应用于g u i 测试上来。g u i 是事件驱动系统的特例,用户通过鼠标选择、 键盘输入、打开关闭窗体等事件与系统发生交互。而事件驱动系统的弱点是存在 无限事件序列问题,对所有事件序列进行测试往往是不太可行的1 6 】。所以针对 g u i 测试的方法不再是传统的输入输出模型,更加关心的是有效的操作序列,不 同的操作序列会产生不同的事件结果。只有生成有效的事件操作序列,才能更有 效的测试g u i 系统,提高软件的可靠性。另一方面,如今g u i 应用的多样性也 让g u i 测试有别于传统代码测试,比如,出于安全限制或是管理功能限制的考 虑,同一软件要提供几种不同的安全限制级别、管理功能使用权限给不同的用户。 在现实软件管理系统中所应用的权限管理方法,对于从属于不同权限组的用户, 系统g u i 所呈现的是不同的交互界面,用户所能执行的事件也是有很大差别的, 从而相应地增加了对系统g u i 测试的难度,要比传统代码测试花费更多的代价。 再者,由于g u i 系统开发大多采用快速原型模型,软件的各个连续版本的输入 输出映射关系并非总是一致,使得对于g u i 系统的回归测试也变得同样重要。 尽管对传统软件的回归测试研究取得了显著的成果,但目前针对g u i 回归测试 幕于权节事件的g i i l 删试研究 的研究工作还尚显薄弱,g u i 回归测试面临很大的挑战。因此,如何提高生成 g u i 测试用例效率,减少无效或低效用例数目,并有效进行g u i 回归测试,降 低g u i 测试代价等方面,都有很多值得做的工作。 1 2 研究现状 在面向对象软件测试当中,图形用户界面( g u i ) 测试是当前研究的难点。 虽然从用户的角度来说,g u i 技术让软件变得更易使用和操作,但这却使得软件 开发工作越来越复杂。而同时,测试g u i 比测试传统软件要复杂的多,造成g u i 测试困难的主要原因有:g u i 可能拥有大量需要测试的状态;影响g u i 的输入 与事件的不同排列数目使得输入空间异常巨大;g u i 系统中可能存在非常复杂的 依赖关系1 7j 。 目前最常见的g u i 测试方法是使用捕获回放( c r ) 工具对g u i 系统进行 测试,如r a t i o n a l 的r o b o t 和m e r c u r v 的w i n r u n n e r 等。记录回放工具能够记 录下用户和应用程序交互的击键和鼠标的移动,并记录成一个脚本,然后可以在 测试执行期间重复“回放”1 8 l 。虽然这种方法对特定的情形是有益的,但是捕获 回放功能大约仅仅是其全部功能的1 ,l o 【9 l 。捕获回放脚本在首次记录生成之后 必须要进行修改。捕获回放工具的缺陷使我们在测试中不能过分依赖它。较明 显的缺陷如在捕获时可能记录下窗口组件的许多物理信息,会造成日后的脚本运 行错误甚至彻底失败;并且c r 工具产生的脚本常是非模块化,不易维护,缺 乏可重用性的标准;再者,使用c r 工具生成脚本到执行完测试的整个过程也 相当的耗费时间。 相比g u i 测试问题的重要性而言,g u i 测试方面的研究文献却还不是很广 泛。在已有的对g u i 测试的研究文献当中,大多作者主要探讨了g u i 测试中功 能测试方面的技术,分析了g u i 测试所存在的困难和面临的挑战,提出了一些 g u i 自动测试方法。 文献【1 0 】较早的讨论了使用功能分解与形式归约方法测试g u i ;文献 1 1 】提 出一种界面类对象建模技术,选取g u i 系统的界面类对象进行测试建模,基于 界面类对象的特点,采用交互状态转换图和生存周期状态转换图掐述界面类对象 行为模型。 面向对象软件测试技术中研究最为广泛之一的就是以类的有限状态机 ( f s m ) 模型和其状态转换图为依掘的基于状态的测试,而f s m 模型可以模拟 部分的g u i 测试问题,但在将f s m 模型应用于g u i 测试用例生成时会有状态爆 炸问题。针对状态爆炸问题,文献【1 2 】在f s m 的基础上,建立了v f s m ( 变量 有限状态机) 模型,定义新的全局变量,与f s m 已有状态相关联,以有效地减 少状态数目,从而相应地减少需求的测试用例数目。然而,尽管采取v f s m 模 硕+ 学位论文 型减少了状态与测试数目,但这个数目仍然相当大,而且此方法需要测试者手动 插入确认检查点。 完全交互序列( c i s ) 方法也是一类基于f s m 的g u i 测试方法1 1 l3 1 。w h i t e 等人在文献【1 ,1 3 】中用“响应性”和“完全交互序列”方法对g u i 进行建模,其 中c l s 代表一组用以完成某个响应的g u i 对象和选择序列。目前此方法主要侧 重于三个方面的研究:对单个c i s 的测试、c i s 之间及c i s 与其它g u i 对象之 间的交互测试、基于c i s 的g u i 回归测试【l ”。基本思想是针对每个单独的c i s 构建一个f s m ,通过提取强连接组件与合并结构对称组件这两种转换,减少状 态数目,生成简化的f s m ,然后对简化的f s m 进行遍历生成完全交互序列测试 用例。这种方法在一定程度上减少状态数目,但需要测试者付出相当大的手动工 作量,用于标识“响应性”与c i s 及两者间的关联,并且只能被动捕获执行信 息,缺乏交互性。 m e m o n 教授等提出了一种基于分层模型与目标驱动的自动规划技术生成 g u i 测试用例方法【1 5 ,l6 1 。由给定的操作集合、初始状态、目标状态,产生一个 使初始状态转换到目标状态的操作序列。同时,创建g u l 分层模型,将高层计 划扩展成低层测试用例,对g u i 进行分层测试,大大减少了操作数目,并控制 住了此方法的复杂度。而且层次测试机制对回归测试也有帮助【i7 1 。但此方法对 测试用例的生成过度依赖于计划者对给定任务的选择以及g u i 的层次结构,并 且未考虑到实际软件操作中不同层次所具有的权重特性,仍有待改进。 以上文献大多从基于功能的角度探讨了g u i 测试方法,对g u i 测试做出了 指导性与实践性的研究,他们的具体方法各有不同,各有其优势与局限。但可以 清楚的是,这些g u i 测试方法的成功与否,都依赖于通过用户手册、代码或是 设计文档所获取信息的准确程度和广度。 1 3 论文工作 由于m e m o n 等人所提出的基于分层模型与目标驱动的g u i 测试方法比较接 近实际g u i 系统执行情况,并具有较好的可操性,故本文将主要围绕基于目标 驱动的g u i 测试用例生成问题展开研究,旨在结合实际软件操作的权重特点, 提高g u i 测试用例生成效率与测试效果,增强软件可靠性。研究内容主要有: 1 ) 分析g u i 测试所面临的困难及测试的主要方法与步骤; 2 ) 研究一般g u i 软件系统的对象组件表示方法,提出基于权重的g u i 事 件流图w e f g ( w e i g h t e de v e n t f l o wg r a p h s ) 与集成树( i n t e g r a t i o nt r e e ) 的生成方 法,根据实际软件操作中不同层次事件所具有的不同权重值,生成权重事件流图 与权重集成树,为g u i 测试用例生成提供良好支持。 3 ) 研究a i 自动规划g u i 测试用例生成方法,分析事件权重值对测试工作 基于权荤事件的aj i 删试研究 的影响,提出基于权重的自动规划g u i 测试用例生成方法,并给出基于权重的 g u i 测试流程与改进的用例生成算法。 4 ) 研究权重事件概念在g u i 回归测试中的应用,给出基于权重事件的g u i 回归测试方法与回归测试用例生成过程。 1 4 论文结构 论文共分五章。按以下方式组织: 第一章为绪论,概述了g u i 测试的研究背景和意义,当前的研究现状,以及全文 的主要工作。 第二章介绍了g u i 的基本概念及g u i 测试的相关知识。给出了一般g u i 测试的 基本步骤,较详细的描述了g u i 测试框架,以及g u i 测试各个阶段的相关研究情况。 第三章内容为g u i 的描述表示方法,这是g u i 测试的前提工作。分别定义了g u i 的状态表示、事件表示、基于权重的g u i 事件及事件序列表示方法,对g u i 事件进行 分类,提出了基于权重的g u i 事件流图与集成树表示与构建方法。 第四章提出了基于权重的自动规划g u i 测试方法。首先介绍了基于权重的g u i 测 试用例生成流程,然后依据g u l 权重事件表示方法,获取g u i 规划操作集,并定义规 划操作的前置条件和执行效应,对g u i 初始状态和目标状态建模。接着介绍了规划生成 与测试用例生成方法,以及g u i 事件的权重值调整策略。最后给出了实验验证结果。 第五章是有关g u i 回归测试的内容,给出了基于权重的g u i 回归测试方法,在 g u i 修改后对g u i 事件权重值进行调整,分析g u i 修改情况,获取g u i 修改集,然后 检查g u i 原有测试用例,修正部分原有测试用例,新增必须的测试用例,构成g u i 回 归测试用例包。 最后是本文的总结。一方面对论文工作进行了总结,另一方面对g u i 测试的进一 步研究提出了展望。 4 硕十学位论文 第2 章基础知识 软件测试是使用人工或自动手段检验软件是否满足规定的需求,是对软件需 求分析、设计规格说明和编码的最终复审,是保证软件质量的关键步骤。最常见 测试方法是:白盒测试法、黑盒测试法及灰盒测试法等【i 引。软件测试是软件开 发的重要环节,测试工作在整个系统开发过程中所占的比重常会超过编码工作所 占比重,并且软件测试贯穿于软件定义与开发的整个周期。 2 0 世纪9 0 年代后半期,面向对象软件测试在理论和实践上都得到迅速发展。 但同时,越来越多的人认识到,与传统软件相比,面向对象软件特别是其图形用 户界面( g u i ) 具有潜在的更复杂严重的测试问题。对于g u i 测试方面的研究也 还相对薄弱,有很多需要进行研究的工作。本章的主要内容则是对g u i 及g u i 测试做些基本的介绍。 2 1 什么是g u i 简单地说,g u i 是指一个程序的图形用户界面。现今的软件中相当大部分都 是通过一个图形用户界面与用户进行交互,而广大的软件使用者也习惯了应用各 种形式的g u i 操作。一个g u i 通常会包括窗口、图标、按钮、滚动条、下拉菜 单、选择框等基本元素。软件使用者通常执行的事件有如打开下拉菜单,用键盘 输入数据,鼠标点击按钮等等,这些事件体现着用户通过g u i 与软件系统的交 互操作,并且g u i 对象则会伴随事件的执行而呈现出不同的显示状态。设计良 好的界面能够引导用户自己完成相应的操作,起到向导的作用,因此对于软件的 g u i 测试非常的必要。 g u i 应用程序的主要特征是事件驱动,用户可以以多种顺序引发多个事件中 的任意几个【6 l 。另外,g u i 系统具有层次性,窗体、对话框、层次性的菜单中所 包含的事件常以组聚分。窗体或是下拉菜单项对应的事件可以按功能性来划分类 别及层次。意义相近或是功能类似的事件可以设计在同一个特定的窗体中以提供 给用户交互操作。 一般而言,g u i 系统所包含的特点有:基于图形界面,事件驱动输入,层次 性结构,带属性的对象等。下面给出g u i 形式上的定义【”】: 定义2 1 :一个图形用户界面( g u i :g r a p h i c a l u s e r i n t e r f a c e ) 是一个软件系统 的层次化、图形化的前端,它从固定事件集中接受用户产生、系统产生的事件作 为输入,并生成确定性的图形化输出结果。一个g u i 包括一个或多个对象,每 个对象拥有其固定的属性集。在任何g u i 执行期间,对象的属性所具有的都是 离散值,这些离散值的集合便构成了g u i 的状态。 摹于 j ( 蕈事件的g i j i 硎试研宄 上面的定义指明,一个g u i 系统类在其对象上执行的事件应是固定的事件 集,输出的结果应是确定性的,且对象拥有的是离散的属性值。当然,当将g u i 定义扩展到其他的g u i 类别例如w u i ( w e bu s e ri n t e r f a c e ) 时,离散的属性值 将不再是唯一情况,可能就是连续的视频流值,由于其同步时实性的限制,事 件集与结果也会变的非确定。这种情形需要另外对待处理,本文主要是基于上面 的g u i 定义进行研究工作。 2 2g u i 测试步骤 与传统软件不同,g u i 系统有自身的特性,如用户事件输入,图形化输出等, 相应的g u i 测试方法也有别于传统软件测试方法,需要开发出各种不同的g u i 测试方法以解决所面临问题。但就整个测试的过程来说,测试g u i 系统与测试 传统软件还是有相似之处的,可以将测试传统软件的步骤扩展到g u i 测试过程 中来: 1 1 确定测试内容 在测试过程的第一步中,应用测试覆盖标准确定软件系统中所需要测试 的内容。测试覆盖标准是一组规则的集合,例如,在g u i 中,某一测试 覆盖标准会要求g u i 系统中的每一事件均被执行到,以确定其行为是否 正确。 2 1 生成测试输入 测试输入是测试用例的重要组成部分,它来自于软件的详细规格说明或 是软件结构。对g u i 系统来说,测试输入由事件所构成,例如鼠标点击、 菜单选择、键盘输入、对象操作等行为。 3 1 生成预期输出 测试预言生成系统预期的输出,用来确定测试过程中系统是否运行正 确。测试预言是一个确定软件输出与预期输出是否一致的机制。在g u i 系统中,预期输出包括窗体的屏幕快照、位置、标题等。 4 1 执行测试用例并验证输出 对g u i 软件系统执行测试用例,并将软件运行的输出与预期输出进行比 较。通过运行测试用例中指定的所有输入事件来执行g u i 系统的测试用 例,比较g u i 系统输出与测试预言所给定输出的差别。 5 ) 确定g u i 系统是否被充分地测试 一旦所有测试用例在实际被测试软件系统上执行后,则需要分析软件并 检查哪些部分确实被测试过。对g u i 系统而言,需要进行如此的分析以 确定已被测试过与未被测试的g u i 状态的事件以及其结果状态。因为在 覆盖标准中要求的内容并非总是会被测试到,可能会有测试不到的部 6 硕+ 学位论文 分,故这步骤也不可忽视。 经过测试后,软件中的问题得到标识,并会得到相应改正。在修正软件 的同时,引出了回归测试问题,即重新测试软件中修改过的部分。 6 1 进行回归测试 回归测试用来确保软件被修改部分的正确性,并确定软件中被修改部分 是否会对修改前所测试部分产生负面的影响【20 1 。回归测试用例主要有三 种类型:一是原始测试用例的子集,用以重新测试原始软件中可能受到 修改所影响的部分;二是新的测试用例,用于测试软件中修改的部分; 三是能够测试软件的所有功能的代表性测试用例。在g u i 系统中,回归 测试涉及到对g u i 对象布局方面改变的分析,选定的测试用例与新生成 的测试用例都需要重测试。 一般来说,g u i 测试方法都必须要执行上面的全部步骤。目前的一些情况是, g u i 测试者大多依赖于捕获回放工具来测试g u i 系统。然而使用这一类工具测 试过程中需要大量的人工操作,使得g u i 测试变的效率很低,代价昂贵。 为更有效的测试g u i 系统,则需要对上述的g u i 测试的每一步骤都采用自 动化的测试方法。一种方法是为自动化测试g u l 测试的每一步骤而开发独立的 工具和技术。国内外已对这方面有一定的研究,并设计了一些自动化工具,例如, 使用有限状态机( f s m ) 模型生成测试用例2 1 ,2 2 ,2 3 2 4 1 ,开发测试用例生成器【25 1 , 并应用拉丁平方的方法进行回归测试【2 6 1 等。虽然此类独立工具与技术对于g u i 测试某些方面的自动化有一定作用,但它们都没有从g u i 测试的整体过程来考 虑。而且,由于这些方面的g u i 测试工具和技术大多是独立开发的,相互之间 很有可能并不兼容。对g u i 测试工作者来说,使用这类独立的测试工具,就意 味着同时需要学习每一种工具的各种不同的特性。因而,在实际的g u i 测试工 作中综合使用这些工具可能是比较困难的。 2 3g u i 测试框架 2 3 1 开发g u i 测试框架面临的挑战 针对上述各种独立g u i 测试工具与技术所存在的问题,本论文给出了一个 改进的g u i 测试框架一一基于权重的g u l 软件测试框架,它从g u i 测试的整个 过程的全局佳出发,包括执行g u i 测试各个阶段所需的方法,可以解决这些问 题。此g u i 测试框架的目标和其注意事项如下: 1 ) 上述各个阶段所对应的方法必须被集成在一块,并采用一个公共统一的 g u i 表示方法,以便不同阶段间所使用与处理的信息可以共享,这样整 个框架中的不同工具间能够相互兼容。 萆干权荤事件的讯测试研究 2 ) g u i 测试任务的各个阶段应尽可能的自动化执行,从而可以简化测试者 的工作。 3 ) 因为软件测试特别是g u i 测试工作通常是一个乏味冗长并且代价较高 的过程,所以测试框架的整个测试周期应该是要有较好效率的。 4 ) 此方法要具有鲁棒性。当g u i 系统在测试执行时而进入一个非预期的结 果状态时,测试算法应该能检测到这个错误并能为调试g u i 错误提供尽 可能多的报告信息。 5 1 此测试框架的测试方法要具有可移植性。在一个平台上生成或是收集到 的测试信息( 例如,测试用例,预言信息,覆盖率报告,及错误报告等) 应同样适用于所有此同一个g u i 系统也能运行的其他平台。 上述的综合g u i 测试框架的开发工作是个复杂困难的过程,遇到不少挑战。 首先,要创建一个g u i 的公用表示方法,可以被整个框架中各种阶段的方 法和工具所使用。一方面,为有效地捕获g u i 事件及其交互,并可适用于多样 化的g u i ,此表示方法必须要高度抽象才行;另一方面,这种表示方法又必须要 能够撼获g u i 软件低层细节以确保测试预言能检测g u i 的正确性。 其次,传统的软件测试方法中的覆盖标准大多是基于所测试的基础代码的, 这样的传统覆盖标准在g u i 测试中并不完全适用,开发基于用户交互事件的g u i 测试覆盖标准变得相当重要。 第三,g u i 系统的测试预言不同于传统软件。传统软件测试中,在测试用例 执行结束后调用测试预言。测试用例在软件上执行后,最后的输出结果与预期输 出进行比较。相反地,g u i 测试用例执行过程中,要求测试预言的调用与测试用 例的执行是交替进行的,因为某一个不正确的g u i 状态就可能导致一个非预期 的输出屏幕显示。由于测试用例中的事件很有可能与此时g u i 屏幕上的按钮等 组件不相匹配,使得进一步的测试执行工作失效。因此,一旦检测到一个错误, 应当立即终止此测试用例的执行。而且,若是不在测试用例执行每一步后进行确 认,有时会出现这样的情况,当中间某一步的测试用例执行输出不正确,但因为 某种原因恰好在最后的测试输出却是正确的结果,如此一来,便很难查明导致错 误的真实原因。从而,在g u i 测试用例执行过程中,对每次给定输入运行产生 输出后即与相应的预期输出做出比较。但这样的交替确认与测试用例执行却使 g u i 测试变得更加复杂:( 1 ) 需要为每一事件生成预期输出;( 2 ) 每一事件执行 后就要检查g u i 的正确性。 最后,g u i 的回归测试也面l 临一些新的问题。通常,一个g u i 系统的输入 与输出依赖于屏幕上的图形元素的位置。而在软件的连续开发版本中,系统的输 入一输出映射关系有可能会变得不一致,按钮的移位,位图的改变,菜单的重新 组织等等都会使得原先的测试用例失效。而且,测试预言中所使用的预期输出也 硕+ 学位论文 会变的无用。相比传统软件,由于在软件开发过程中快速原型方法的使用,回归 测试对于g u i 系统尤其重要。有效的回归测试机制要检测到g u i 的频繁修改并 调整原来旧的测试用例f 2 7 1 。 2 3 2g u i 测试框架简介 如图2 1 所示,此框架由几个相互关联的组件构成:g u l 表示、测试覆盖评 价器、测试用例生成器、测试预言、测试用例执行器以及回归测试器。这些组件 的简要描述如下: 图2 1g u i 测试框架 1 ) 一个g u i 表示为一些对象的集合,对象上的相应事件可以改变其属性 值。将g u l 分解为层次化的组件结构,这样,测试框架中的其他组件 部分如测试用例生成器、测试覆盖评价器、测试预言、回归测试器等可 有效地使用这种表示方法。 2 ) 测试覆盖评价器使用新的基于事件的覆盖标准,它不同于传统的语句或 是分支覆盖。”这种标准使用事件和事件序列柬指定为测试充分性的度 量,主要为两类:( 1 ) 组件内标准,对应于组件内事件;( 2 ) 组件问标准, 对应于组件间的交互事件。 3 ) 测试用例生成器采用基于规划【2 8 2 9 1 的新算法,这种规划方法在人工智能 领域中已得到很好发展与应用。g u l 测试者发现,对于软件用户来说, 描述一个特定的软件执行目标比要他们指出达到这些目标的g u i 事件 序列容易的多,这是适合规划方法的主要原因之一。给定一个g u i 的 初始状态与目标状态的规格说明,用规划器可以生成作为g u i 测试用 例的“规划”。 基于权节事件的0 i 九删试研究 4 ) g u i 测试预言使用g u i 表示方法,并且为每一测试用例中的每一事件 自动产生其预期状态。g u i 执行的实际状态也依据g u i 执行时获取的 对象和其属性来表示。从执行监视器获得实际状态后,测试预言在每一 事件后自动比较预期状态和实际状态,以验证g u i 在测试用例运行下 的正确性。 5 ) 设计并实现一个自动测试执行器来达到测试用例执行的自动化。测试用 例输入到测试执行器,测试执行器执行测试用例中的每一事件。测试用 例执行器会生成物理事件,例如鼠标、键盘事件等,由此模仿一个g u i 用户的实际操作动作。 6 ) 回归测试器将g u i 测试套划分为有效测试用例和无效测试用例。有效 测试用例对于修改过后的g u i 软件系统仍然能够产生正确的输入输 出,无效测试用例则不再能产生正确的输入和输出了。回归测试器使用 修复测试用例的方法,使某些无效的测试用例变得重新可用。由于修复 过的测试用例用来测试g u i 中被修改所影响到的那些事件序列,所以 这样更易发现g u i 修改部分的错误。 2 4g u i 测试背景与相关研究 基于权重的g u i 软件测试框架,它涉及到g u i 测试的整个过程,包括测试 覆盖标准、测试用例生成、测试预言及回归测试等,本节将介绍这各个阶段的背 景知识和相关领域研究情况。传统软件测试技术虽不能直接应用于g u i 软件测 试,但某些思想是可以借鉴的,将其作适当修改也可应用于g u i 软件测试。 2 4 1 测试覆盖 软件测试工作中的一个重要问题是,如何构建一个足够充分的测试用例包? 这个由g o o d e n o u 曲和g e r h a r t 在1 9 7 5 年提出的问题,被称作软件测试的中心问 题1 3 们。从那时起,研究者作了许多研究工作来定义软件测试覆盖,并提出了许 多覆盖标准。覆盖标准帮助测试者决定测试用例包是否能对一个程序进行充分的 测试,并且指导测试过程。最为人所知的测试覆盖标准是状态覆盖、分支覆盖、 路径覆盖等。z h u 等作者在文献 3 l 】中对现有的软件测试覆盖标准作了较全面的 分析与总结。其中一种覆盖标准分类是根据测试需求的信息束源进行的,这种分 类方法把测试覆盖标准分为基于规格方法的、基于程序的和基于界面的三类。与 本研究相关的是基于界面的覆盖标准,它根据软件输入的类型和范围,而不是根 据程序代码或规格文档的内部结构束指定测试需求。 相比之下,在基于界面的覆盖标准方面所进行的研究工作还极少。z h u 等作 者提到的测试覆盖标准没有一个可以直接应用于g u i 软件测试领域的。o s t r a n d 0 硕士学位论文 等指出基于模型的方法可能对改善测试覆盖有效口“。m e m o n 则提出了对g u i 软 件测试较为实用的基于事件的覆盖标准【3 3 】。在实际测试工作中,由于没有统一 的、很好的g u i 测试覆盖标准,人们往往采用较随意的方法,一个经验法则是, “当每l o o o 个小时的测试时间内发现新的错误少于5 0 个时,就可终止测试工作” 【”】。大量有关测试用例生成的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四季识字写字教学课件
- 个人药店工作总结与计划
- 合力叉车售后培训
- 安全员c证题库考题及答案解析
- 村医岗前考试试题及答案解析
- 光纤光栅传感技术
- 空手道教学课件大全图片
- 株洲运输从业资格考试及答案解析
- 安全考试题库大全及答案解析
- 企业员工激励机制建设培训
- 2025年共青团入团考试测试题库及答案
- (高清版)DZT 0261-2014 滑坡崩塌泥石流灾害调查规范(1:50000)
- GB/T 22562-2008电梯T型导轨
- GB/T 11638-2020乙炔气瓶
- GB/T 10081-2005矩形内花键长度系列
- GA/T 1968-2021法医学死亡原因分类及其鉴定指南
- GA 1551.6-2021石油石化系统治安反恐防范要求第6部分:石油天然气管道企业
- 《古筝的艺术流派》
- 徐州的传统民俗
- DDI高绩效辅导经典课程讲义
- 公共秩序部车辆管理办法
评论
0/150
提交评论