(计算机科学与技术专业论文)基于有限状态机的j2me程序gui测试技术.pdf_第1页
(计算机科学与技术专业论文)基于有限状态机的j2me程序gui测试技术.pdf_第2页
(计算机科学与技术专业论文)基于有限状态机的j2me程序gui测试技术.pdf_第3页
(计算机科学与技术专业论文)基于有限状态机的j2me程序gui测试技术.pdf_第4页
(计算机科学与技术专业论文)基于有限状态机的j2me程序gui测试技术.pdf_第5页
已阅读5页,还剩64页未读 继续免费阅读

(计算机科学与技术专业论文)基于有限状态机的j2me程序gui测试技术.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中文摘要 摘要 近些年来,j 2 m e ( j a v a2m i c r oe d i t i o n ) 作为一种用于移动应用的嵌入式语 言得到了人们的广泛关注。j 2 m e 提供了一种高度优化的j a v a 运行环境,将j a v a 语言的平台无关性推广到嵌入式设备上。j 2 m e 程序中,图形用户界面( g r a p h i c a l u s e ri n t e r f a c e ,g u i ) 作为用户与程序交互的重要手段,已经成为程序中不可缺 少的一部分。但g u i 在提高j 2 m e 程序易用性的同时,也增加了程序测试的复杂性。 再者,由于j 2 m e 不支持反射机制,以及j 2 m e 设备存储和计算能力有限,传统的 软件测试技术和工具无法直接用于测试j 2 m e 程序。目前,适用于j 2 m e 程序的g u i 测试工具很少。记录一回放机制是桌面应用程序的主要g u i 测试方法,但记录阶段 需要通过测试人员与程序进行交互,为测试生成记录。有时,特别是当需要保证 一定的测试覆盖需求时记录是枯燥和费时费力的。 针对上述问题,本文设计并实现一个自动化测试系统( 后文中简称为测试系 统) ,将基于有限状态机( f i n i t es t a t em a c h i n e ,f s m ) 的测试用例生成技术和 程序插桩技术应用于j 2 m e 程序的g u i 测试中。测试系统根据被测实现的规约说明 自动生成测试用例,并在手机模拟器上自动执行测试用例,最后生成测试报告。 本文针对一款真实的j 2 m e 应用软件进行实验对比分析,实验结果表明测试系统不 仅可以有效地对j 2 m e 程序的g u i 进行测试,也可以保证生成的测试用例具有较高 的错误覆盖率,以增大发现程序错误的几率。 关键词:软件测试;g u i 测试;记录一回放;有限状态机模型 英文摘要 a b s t r a c t j 2 m eh a sb e e nw i d e l ya d o p t e da st h ee m b e d d e dl a n g u a g e so fc h o i c ef o rm o b i l e a p p l i c a t i o n si nr e c e n ty e a r s j 2 m ep r o v i d e sak i n do fh i g h l yo p t i m i z e dj a v ar u n t i m e e n v i r o n m e n t ;j 2 m ee x p a n d st h ep l a t f o r m i n d e p e n d e n tt o t h ee m b e d d e dd e v i c e i n j 2 m ep r o g r a m s ,g r a p h i c a lu s e ri n t e r f a c e ( g u 0i st h ei n d i s p e n s a b l ep a r ta st h e i n t e r a c t i v em e a n sb e t w e e nu s e ra n dp r o g r a m g u ii m p r o v e st h eu s a b i l i t yo fj 2 m e p r o g r a m s ,b u ti ta l s oi n c r e a s e st h ec o m p l e x i t yo fp r o g r a mt e s t i n g o nt h eo t h e rh a n d , j 2 m ed o e sn o th a v et h er e f l e c t i o nm e c h a n i s md u et ot h ei m p l e m e n t a t i o nc o m p l e x i t y , a l s oj 2 m ed e v i c e so n l yh a v el i m i t e ds t o r a g ea n dc o m p u t i n gp o w e r , s ot r a d i t i o n a l s o f t w a r et e s t i n gs y s t e m sc a n n o tb ed i r e c t l yu s e df o rt e s t i n gj 2 m ep r o g r a m s a tp r e s e n t t i m e ,t h e r ea r ef e wt e s t i n gt o o l si n d e e ds u p p o r t i n gj 2 m ep r o g r a m s m o r e o v e r , r e c o r d r e p l a y m e c h a n i s mi st h em a i n s t r e a mg u it e s t i n gt e c h n i q u eu s e db ym o s t s o f t w a r et e s t i n gs y s t e m s t h e yr e q u i r eu s e r s i n t e r a c t i o nw i t hd e s k t o pa p p l i c a t i o n sa tt h e r e c o r ds t a g e ,b u ts o m e t i m e st h ei n t e r a c t i o nc a nb et e d i o u sa n dt i m e c o n s u m i n g ,i n p a r t i c u l a rw h e nt e s t i n gc o v e r a g er e q u i r e m e n ti se n f o r c e d t os e t t l et h e s ep r o b l e m s ,t h i sp a p e rd e s i g n sa n di m p l e m e n t sa na u t o m a t i ct e s t i n g s y s t e m ( h e r e i n a f t e rc a l l e dt e s t i n gs y s t e m ) ,w h i c ha p p l i e sat e s t c a s e g e n e r a t i o n t e c h n i q u ea n dp r o g r a mi n s t r u m e n t a t i o nt oh a n d l eg u it e s t i n go fj 2 m ep r o g r a m s t h e t e s t i n gs y s t e mg e n e r a t e st e s tc a s e sf r o maf i n i t es t a t em a c h i n e ( f s m ) s p e c i f i c a t i o n e x t r a c t e df r o mt h ei m p l e m e n t a t i o nu n d e rt e s t ( i u t ) ,r u n st h et e s tc a s e so na ne m u l a t o r , a n dt h e ny i e l d sat e s tr e p o r t t h i sp a p e re v a l u a t e st h ee x p e r i m e n t a lr e s u l t so nar e a l j 2 m ea u d i op l a y e r i ts h o w st h a tt e s t i n gs y s t e mc a nd e c e n t l yh a n d l eg u it e s t i n go n j 2 m ep r o g a n s ,a n dt h u sg e n e r a t e dt e s tc a s e sm a x i m i z et h ec h a n c e so fd e t e c t i n gb u g s w i t hn i c ee r r o rc o v e r a g e k e yw o r d s :s o f t w a r et e s t i n g ;g u it e s t i n g ;r e c o r d r e p l a y ;f i n i t es t a t em a c h i n e m o d e i 大连海事大学学位论文原创性声明和使用授权说明 原创性声明 本人郑霭卢l 纠:本论文是在导师的指导下,独立进行研究工作所取得的成果, 撰。;成倾i 二学位沦文 :基士直隧丛查堑【曲2 丛基摧症q 堕! 塑达撞丕:。除论文 - jl 二经注明引j j 的内容外,对论文的研究做出重要贡献的个人和集体,均已在义 1 1 1 以l p j 确方式标吵j 。本论文中不包含任何未加明确注明的其他个人或集体已经公 j i :发农或术公丌发表的成果。本声明的法律责任l 【i 本人承担。 学化沦义作者签私:堡童 学位论文版权使用授权书 小学位论文作者及指导教师完全了解大连海事大学有天保留、使用研究乍学 f 移论义的规定,【! | j :人连海事大学有权保留并向家有关部i 、- j 或机构送交学位论 义的复印什和f lr 版,允许论文被查阅和借阅。本人授权大连海事大学i 叮以将本 。z 化沦义的令部或部分内容编入有关数据库进行检索,也l 叮采片j 影印、缩印或扫 南y i 等复制:段保存和打:编学位论文。i 司意将本学位论文收录到l l 田优秀f 孥倾上 学位论文全文数撕库( 中国学术期刊( 光盘版) 电j 于杂志社) 、c 1 幽学位论义全 文数捌埔i ( 中i :日科学技术信息研究所) 等数据库中,并以电子出版物形式f “版发 i j :刷抛供f 羔 1 。j 务。保密的论文在解密后遵j ) 。此规定。 本学位论文属j :保密阳稿j 上年解密后适用本授权二传。 不保密酊( 请在以上方框内打“, ) 论文作者签名:候莹 导师签名:1 薛g 日期:2 7 年7 月弓日 基于有限状态机的j 2 m e 程序g u i 测试技术 第1 章绪论 1 1 研究背景 随着信息技术( i n f o r m a t i o nt e c h n o l o g y ) 的飞速发展,软件产品在各个领域中 都发挥着重要的作用。质量不佳的软件产品不仅会增加开发和维护成本,甚至可 能会造成灾难性的后果。因此,如何提高软件产品的可靠性已经成为软件工程领 域中的重大研究课题之一。软件测试技术作为保证软件产品正确性、提高软件产 品可靠性的最基本、最重要的手段,已经成为工业界使用的主流技术。i e e e 在文 献1 1 中对软件测试的定义是:“软件测试是通过人工或自动的手段,对软件系统或 软件系统组件进行检测评估的过程。测试目的是检验被测软件是否满足规定的需 求,确认预期结果与实际结果之问的差别。 软件测试是一项花销巨大的工作。据统计,软件测试的花销大约要占整个软件 产品开发费用的5 0 左右【2 】。随着软件产品规模不断扩大,复杂性不断提高,软件 测试变得越来越复杂,并且需要越来越多的人力物力资源,甚至出现手动测试无 法完成的情况。在这种背景下,人们将越来越多的精力投入到软件测试自动化的 研究中。自动化软件测试技术不仅可以降低测试成本,提高软件产品的测试效率, 也可以避免人工操作所导致的错误,提高测试准确性。 目前,工业界主要使用的软件测试技术大多数是非系统化的,通常是面向特定 领域的软件产品【3 】。对于那些实时性强、可靠性要求高的特定领域的软件产品,基 于程序代码的软件测试技术是难以实现的,而且测试成本很高。基于模型的软件 测试技术根据被测软件的测试模型自动生成测试用例,并且可以部分解决测试失 效性的辨别问题,因此可以有效地提高测试的自动化水平,降低测试成本。工业 界经常使用的测试模型有:有限状态机模型、u m l 模型、马尔可夫链模型以及文 法模型等。测试人员需要根据被测软件的特点选择合适的测试模型,s o m m e r v i l l e 等人在文献【4 】中讨论了测试模型的选择标准。 近些年来,各种嵌入式电子设备的爆炸性增长,其数量已经远远超过桌面p c 。 s u n 公司为了适应移动数据和电子商务的发展,在1 9 9 9 年的j a v a o n ed e v e l o p e r 第1 章绪论 c o n f e r e n c e 上推出了一项新的技术j 2 m e 。j 2 m e 提供了一种高度优化的j a v a 运行环境,将j a v a 语言的安全性、支持网络连接、与平台无关性等特性移植到嵌 入式电子设备上。j 2 m e 为资源受限的嵌入式设备提供了一种有前景的应用程序开 发、测试、部署环境。根据i d c ( i n t e r n a t i o n a ld a t ac o r p o r a t i o n ,国际数据公司) 的调查数据表明,截止到2 0 0 6 年,世界上将会有超过十二亿台基于j 2 m e 技术的 移动设备【5 1 。因此,对j 2 m e 程序的测试需求在整个软件测试市场中是不可忽视的。 但是,j 2 m e 不支持反射机制,j 2 m e 设备的存储和计算能力有限,并且一些软件 缺陷依赖于特定的j 2 m e 设备【6 1 ,传统的软件测试技术和工具无法直接应用于j 2 m e 程序中。 g u i 作为用户与程序进行交互的重要手段,已经成为程序中不可缺少的部 分。据统计,g u i 相关代码在整个软件系统中占4 5 一6 0 f 7 ,引。对于j 2 m e 程序来 说,g u i 相关代码的比重也很大,并且同样发挥着非常重要的作用。对于用户来 说,g u i 提供了高度可视化的图形用户界面,可以提高j 2 m e 程序的易用性,让人 机交互界面更加友好。而对于软件开发人员和软件测试人员来说,g u i 的复杂性 使得j 2 m e 程序的规模越来越大,复杂程度越来越高,开发和测试成本也随之不断 增加。另外,g u i 测试比传统的软件测试要复杂得多,传统的软件测试技术和工 具大都不适用于g u i 测试,主要原因有以下几个方面:g u i 中拥有大量待测状态; g u i 采用的是事件驱动的方式,而事件驱动系统的缺点就是事件序列空间巨大: g u i 中拥有复杂的图形输出界面;g u i 系统中可能存在非常复杂的依赖关系1 9 1 。目 前,很少有g u i 测试工具适用于j 2 m e 程序。记录回放机制是桌面应用程序的最 常见的g u i 测试方法,如x r u n n e r 10 1 、m e r c u r y 的w i n r u n n e r 以及r a t i o n a l 的r o b o t 等都是基于记录回放机制的自动测试工具。但记录回放机制的缺点也是很明显 的:记录阶段需要人工完成,费时费力,测试效率低下;为了提高测试覆盖率需 要大量的手工工作。 1 2 研究内容 本文选择“基于有限状态机的j 2 m e 程序的g u i 测试 作为研究课题,将基于 有限状态机模型的测试技术和程序插桩技术应用于j 2 m e 程序的g u i 测试中,主 基丁有限状态机的j 2 m e 程序g u i 测试技术 要原因是:基于有限状态机模型的测试技术可以自动生成测试用例,不仅可以提 高测试的自动化水平,而且可以避免人为疏忽产生的错误,提高测试效率。另外, 由于j 2 m e 不支持反射机制,测试系统运用程序插桩技术向被测j 2 m e 程序中置入 插桩代码,实现执行测试用例、捕获被测j 2 m e 程序的执行信息以及生成测试日志 等功能。 具体研究内容如下; 从经典的测试模型、支持测试模型的工具以及测试过程等方面对基于模型 的软件测试技术进行深入学习,并在此基础上对基于模型的软件测试技术 进行评价。 重点研究基于有限状态机自动生成测试用例的几种经典算法。 从g u i 基本知识、g u i 测试的特点以及g u i 测试的步骤等方面对g u i 测 试的相关知识作全面的了解。在此基础上分析g u i 测试的困难,以及记录 回放工具的不足。 系统学习j 2 m e 图形用户界面及其事件处理机制相关的知识,通过 n e t b e a n s 5 5 1 平台和w t k 2 5 1 平台自带的j 2 m e 程序实例,学习j 2 m e 基本编程规范。 深入理解程序解析相关知识,学习并掌握n e t b e a n s 5 5 1 中的j a v a 文件解 析包o r g o p e n i d e s r c 和i c o n t r a c t 中的文件解析部分。 学习程序插桩技术及其应用,在此基础上将程序插桩技术应用于j 2 m e 程 序的g u i 测试中。 提出将基于有限状态机模型自动生成测试用例技术和程序插桩技术应用 于j 2 m e 程序的g u i 测试中,设计并实现了基于有限状态机的j 2 m e 程序 g u i 测试系统。 为测试该系统的性能做了大量实验。实验结果表明,这种技术可以有效地 对j 2 m e 程序的g u i 进行测试,与传统的记录回放工具相比,可以自动 生成测试用例。同时,采用程序插桩技术,通过插桩代码捕获被测程序的 执行信息,克服了j 2 m e 不支持反射机制的不足。 第1 章绪论 1 3 论文结构 本文共分为七章,按照以下方式组织: 第1 章:引言部分,主要介绍论文的研究背景、研究内容以及论文结构。 第2 章:详细介绍了基于模型的软件测试技术。对四种比较经典的测试模型以 及支持测试模型的测试工具进行简单介绍。在此基础上,对基于模型的软件测试 过程进行深入分析。最后,给出基于模型的软件测试技术的评价。 第3 章:对基于有限状态机模型自动生成测试用例技术进行展开叙述,并通过 一个简单的例子对几种经典的算法进行分析。 第4 章:从以下几个方面对g u i 测试技术进行详细分析:g u i 简单介绍、g u i 测试的特点以及g u i 测试的步骤。最后,简单介绍j 2 m e 的g u i 基础知识。 第5 章:提出一个基于有限状态机模型的j 2 m e 程序的g u i 测试系统,并对测 试系统的总体框架结构以及各个功能单元的组织结构进行详细介绍。 第6 章:以一款由j 2 m e 开发的的音乐播放器为例,从生成的测试用例数目, 插桩前后的代码量以及被测j 2 m e 程序运行时内存使用量对测试系统的测试性能 和测试效率进行测评。 第7 章:论文的总结部分。一方面对论文的工作进行总结,另一方面对未来 的研究工作进行展望。 基于有限状态机的j 2 m e 程序g u i 测试技术 第2 章基于模型的软件测试技术 软件测试可以看成是一个搜索问题,需要在数量巨大的输入及其状态组合中, 寻找那些极少数可能引发错误的状态及其组合【l l 】。在被测程序规模较大的情况下, 传统的手工测试费时费力,而且很容易引入人工操作所导致的错误,甚至出现无 法完成测试的情况。基于模型的软件测试技术可以根据测试模型对被测试程序中 所有输入及其状态组合进行系统枚举,因此可以使测试实现系统化、集中化以及 自动化【l l 】。基于模型的软件测试技术属于基于规范的软件测试范畴,其特点是: 在产生测试用例和进行测试结果评价时,都是根据被测试应用程序的模型及其派 生模型( 一般称作测试模型) 进行的【3 1 。目前,经典的测试模型包括有限状态机模 型、u m l 模型、马尔可夫链模型等。 本章从测试模型简介、支持测试模型的工具、测试过程三个方面对基于模型的 软件测试技术作详细的介绍,最后从优势和缺点两个方面对该技术进行评价。 2 1 测试模型 2 1 1 有限状态机模型 有限状态机模型是由输入、状态和输出组成的抽象系统。模型的输出是由当前 的输入和过去的输入决定,过去输入的结果用一个状态表示。在同一个模型中, 相同的输入不会总是被接受,或是被接受时也可能会产生不同的输出,也就是说 当前状态决定了模型可能的输入、相应的输出以及由输入产生的状态迁移。有限 状态机模型在一个时间点上有且仅有一个活动状态。有限状态机模型可以通过状 态转换表或状态转换图表示。 有限状态机模型可以用一个六元组来表示:( m ,s ,x ,y ,8 ,入) 。其中: m 表示有限状态模型的名称; s 表示模型中所有状态的集合,其中包括初始状态; x 表示模型中所有输入符号的集合; y 表示模型中所有输出符号的集合; 8 表示状态迁移函数,6 :s x 专s ; 第2 章基于模型的软i t n 试技术 入表示输出函数,入:s x - ) y 。 初始状态是指模型的初态,在这个状态下第一个输入被模型接受。一个状态迁 移中包含接受状态s 、接受的输入x 、相应的输出y 以及结果状态s ,可以用一个 四元组表示:( s ,x ,y ,s ) 。其中,接受状态s 和结果状态s 可能相同。状态迁 移函数6 有两种表达形式: 公式“s i 一) ( y 专s i 表示有限状态机的当前状态是s i ,当输入符号x 被接 受时,状态s i 到s j 的状态迁移,同时伴随输出y 。 公式“s i _ p 专s j 表示有限状态机的当前状态是s i ,当输入序列p 被接受 时,状态s i 到s j 的状态迁移。公式中忽略了输出,此时用s i l p 表示当前状 态是s i 时,输入序列p 产生的输出序列。 有限状态机模型可以分为两类:m e a l y 机与m o o r e 机,这两种模型主要的区别 在于对输出动作如何建模1 。在m e a l y 机中,输出动作依赖于状态和输入,任何 一个输出动作都可以被用在不止一个状态迁移中,即状态是被动的【1 2 】。而在m o o r e 机中,输出动作仅仅依赖于状态,任何一个输出动作都与状态联系在一起,所有 状态迁移中均不包含输出动作,即状态是主动的【1 3 】。m e a l y 机和m o o r e 机在数学 上是等价的,可以相互转换。h o p c r o f t 在1 9 7 9 年研究得出了m e a l y 机与m o o r e 机 之间的转换算法【1 4 】。本文使用m e a l y 机建模。 有限状态机理论最早是应用在硬件的设计中,后来被逐渐引用到软件设计和软 件测试领域。基于有限状态机模型的软件测试已经取得了一定的研究成果陋2 1 1 。 7 0 年代以来,基于有限状态机模型的测试方法有很多,比较著名的有基于转移遍 历的t 方法【2 2 】、基于区分序列的u 方法【2 3 1 、基于唯一输入输出序列的d 方法【2 4 】、 基于特征集的w 方法f 2 5 】及其改进算法w p 方法【2 6 】等。t 方法、u 方法和d 方法对 有限状态机的限制较多,适用范围不广泛。w p 方法是w 方法的改进算法,具有 适用范围较广,测试用例的错误覆盖率较高等优点【2 6 】。 2 1 2u m t 模型 统一建模语言( u n i f i e dm o d e l i n gl a n g u a g e ,u m l ) 是一种通用的可视化的建 模语言,用于说明、可视化、构造并文档化软件系统的体系结构【”l ,是g r a d yb o o t h 、 基于有限状态机的3 2 m e 程序g u i 测试技术 i v a rj a c o b s o n 以及j a m e sr u m b a u g h 等人在b o o c h 表示法、o o s e ( o b j e c t o r i e n t e d s o f t w a r ee n g i n e e r i n g ) 方法以及o m t ( o b j e c tm o d e l i n gt e c h n o l o g y ) 方法的基础 上,经过反复的修改而完成的。1 9 9 7 年1 1 月1 7 日,u m l 被o m g ( o b j e c t m a n a g e m e n tg r o u p ) 正式批准为面向对象建模的标准语言。 作为一种建模语言,u m l 的定义包括两个部分:u m l 语义和u m l 表示法。 u m l 语义u m l 中元模型定义的描述。元模型用来描述u m l 中基本的元 类型、元属性以及元关系等。 u m l 表示法定义了u m l 符号的表示方法。 图2 14 + 1 模型视图 f i g 2 14 + 1m o d e lv i e w u m l 可以通过称为“4 + 1 模型视图7 的软件体系结构来了解【2 7 】,模型视图如 图2 1 所示。u m l 的体系结构中,用例视图具有将其他四个视图的内容结合到一 起的特殊作用。五种视图的具体解释如下: 用例视图( u s ec a s ev i e w ) :以图解的形式概括了系统中的不同参与者和用 例,并显示了哪些参与者能够参与哪些用例。 设计视图( d e s i g nv i e w ) :描述用例视图中规定的功能需求的逻辑结构,包 括类图、对象图和包图。 实现视图( i m p l e m e n t a t i o nv i e w ) :描述系统中的物理构件,包括构件图和 配置图。 进程视图( p r o c e s s v i e w ) :描述系统中并发性的问题。 部署视图( d e p l o y m e n tv i e w ) :描述物理构件如何在系统运行的实际环境中 第2 章基丁模型的软件测试技术 分布。 u m l 是一种面向对象建模的标准语言,广泛应用于在软件开发和测试过程中。 并且,出现了很多商品化的支持工具,比如t e s t m e t o r 、u m ld e s i g n e rc o n n e c t i o n 以及r a t i o n a lr o s e 等。目前,基于u m l 的软件测试技术主要集中于u m l 图中的 状态图,状态图是有限状态机的扩展,强调了对复杂的实时系统进行建模,提供 了层次状态机的框架,即一个单独状态可以扩展为更低级别的状态,并提供了并 发机制的描述【3 1 。文献【2 8 1 对基于u m l 状态图的软件测试技术进行了比较详细的介 绍。文献【2 9 3 0 1 给出了基于u m l 状态图生成测试用例的算法。 2 1 3 马尔可夫链模型 马尔可夫过程( 又称后无效过程) ,表示如果已知系统当前的状态,则系统未 来所处状态的概率就已经确定,而与系统如何到达当前状态无关。也就是说,当 前状态以前的状态对于预测将来( 即当前状态以后的状态) 无关。 马尔可夫过程按照其状态和时问参数是连续的或是离散的,可以分为三类。其 中,马尔可夫链是时间和状态都是离散的马尔可夫过程,是一种以统计理论为基 础的统计模型,是数学中具有马尔可夫性质的离散时间随机过程。马尔可夫链模 型在软件测试、质点的随机运动、自动控制、通信技术、生物工程、经济管理等 领域都有着广泛的应用。马尔可夫链是满足下面两个假设的一种随机过程1 3 1 】: 什1 时刻系统状态的概率分布只与t 时刻的状态有关,与t 时刻以前的状态 无关。 从t 时刻到t + l 时刻的状态转移与t 的值无关。 马尔可夫链模型可表示为一个三元组( s ,p ,q ) ,各个元素的含义如下f 3 l 】: s 是系统所有可能的状态所组成的非空集合,也称为状态空间,它可以是 有限的、可列的集合或任意非空集合。 p = l p i j 。n 表示系统的状态迁移概率矩阵。其中,p i j 表示系统在时刻t 时处 于状态i 的条件下,在时刻t + l 系统处于状态j 的概率,n 表示系统所有可 能的状态个数。对于任意i s ,都有乞= l 。 基于有限状态机的j 2 m e 程序g u i 测试技术 q = q l ,q 2 ,q n 是系统的初始概率分布,q i 表示系统在初始状态时刻 处于状态i 的概率,满足级= 1 。 由马尔可夫链模型的定义可知,马尔可夫链实际上是一种状态迁移具有概率特 征的有限状态机,不仅可以根据状态问的迁移概率自动生成测试用例序列,而且 还可以分析测试结果,对软件性能指标和可靠性指标等进行度量【3 1 。马尔可夫链是 统计测试的基本模型,适用于对多种软件进行统计测试,已经广泛应用在很多领 域,比如微软、r a y t h e o n 以及美国联邦航空署( f a a ) 都得到了成功的应用【3 2 】。 2 1 4 文法模型 文法模型可以用来描述程序的语法。文法模型中较典型的是由a j a i n 等人提出 的基于a e t g 说明符的数据模型。有关基于文法模型的测试方面的也就工作相对 较少,这方面的研究工作可参考文献3 3 1 。 2 2 支持工具 根据测试模型的不同,目前比较具有代表性的支持基于模型的软件测试技术 的测试工具有以下几类: 2 2 1 支持有限状态机模型的工具 支持有限状态机模型的测试工具主要包括: i b m 公司的g o t c h a ,可以根据用户事先选择的测试充分性准则生成测 试用例序列。 i b m 公司的t c b e a n 是一个提供测试脚本管理功能的基于有限状态机的测 试引擎。 2 2 2 支持u m l 模型的工具 支持u m l 模型的测试工具主要包括: s i l v e r m a r k 公司的t e s t m e t o r ,该工具支持测试用例序列的生成和回归测试。 2 2 3 支持马尔可夫链模型的工具 支持u m l 模型的测试工具主要包括: 第2 章基丁模型的软件测试技术 i b m 公司的c l e a n r o o mc e r t i f i c a t i o na s s i s t a n t ,该工具可以自动化统计验证 过程,通过使用概率分布产生测试用例序列,并对测试结果进行分析。 c l e a n r o o ms o f t w a r ee n g i n e e r i n g 的c l e a nt e s t ,该工具支持统计测试。 2 3 测试步骤 软件测试是一项非常复杂的工作,需要测试人员与开发人员的通力合作才能顺 利完成。与传统的软件测试技术相比,基于模型的软件测试技术对软件测试人员 的知识结构和技能水平提出了更高的要求。 下面,将通过五小节的内容对基于模型的软件测试过程进行详细地介绍。 2 3 1 充分理解被测软件 基于模型的软件测试技术需要测试人员对被测软件有充分的理解,并在此基础 上构造合适的测试模型。具体来说,这部分的测试工作包括: 深入分析被测软件用户使用说明书、软件需求说明书、软件设计说明书等 文档,并与开发人员进行深入的沟通交流; 了解被测软件的用户群,列举用户群中每一类用户可能的输入序列,以及 每项输入的性质,比如说可能的取值范围( 包括合法的取值范围、非法的 取值范围以及边界值等) 、输入法生的时刻以及软件系统接收特定输入的 条件等。 记录被测软件接受输入的条件以及相应的条件。软件系统的响应是指用户 能够得到的输出或可见的软件内部状态的改变。这么做的目的是设计可以 引发特定相应的测试用例和评价测试结果。 理解软件内部计算过程和数据交换,构造可能发现缺陷的测试用例。 2 3 2 选择测试模型 不同的测试模型适用于不同类型的软件产品,因此需要根据被测软件的特点选 择测试模型。s o m m e r v i l l e 等人在文献【4 】中讨论了测试模型的选择标准。选择合适 的测试模型主要根据一下两点标准: 了解可用的测试模型及其特点。不同的测试模型适用于不同的软件类型, 基于有限状态机的j 2 m e 程序g u i 测试技术 因此选择测试模型之前应该对现有的测试模型进行深入的学习,掌握其各 自的特点。比如,有限状态机模型适用于电话交换系统,u m l 状态图模 型多用于并发系统,马尔可夫链模型经常用于对软件进行失效统计分析。 测试人员、组织以及测试工具的影响。基于模型的软件测试技术要求测试 人员对相关的建模知识有较深入的理解,如有限状态机理论、随机过程理 论等。并且,如果一个开发组织运用模型( 如u m l ) 完成了需求分析和 系统设计等工作,测试组织就可以根据开发时使用的模型来进行测试工 作,这也有利于将测试工作提前到开发过程的早期进行。另外,选择测试 模型时也应该考虑使用的测试工具的特点。 2 3 3 构造测试模型 这里,我们以有限状态机模型为例,来说明如何构造测试模型。构造有限状态 机模型就是根据软件系统的输入输出条件抽象出软件系统的状态抽象。一般包括 以下过程: 将软件系统抽象成若干状态描述。比如,音乐播放器可以划分为播放列表 状态、音乐播放状态以及音乐暂停状态。 抽象出软件系统的所有输入以及每个输入的使用条件( 称为输入约束) 。 比如,音乐播放器中有音乐选择操作、播放操作以及暂停操作。而且,只 有在播放列表中音乐选择操作才可用。 对每个输入说明产生不同输出的条件( 称为输出约束) 。比如,音乐播放 器中,进行音乐选择操作,如果当前状态是播放列表状态,则播放所选择 的音乐,否则提示错误。 根据状态描述、输入及输入约束、输出及输出约束构造出相应的有限状态 机模型。 目前,构造测试模型的技术有很多。比如文献【3 4 】中,w a l t o n 等人讲解了马尔 可夫链模型的构造方法。 2 3 4 生成并执行测试用例 测试用例的自动生成依赖于所选择的测试模型。以有限状态机模型为例,目前 第2 章基丁模型的软件测试技术 基于有限状态机模型自动生成测试用例的方法很多,比较著名的有基于转移遍历 的t 方法【2 2 】、基于区分序列的u 方法【2 3 】、基于唯一输入输出序列的d 方法【2 4 】、基 于特征集的w 方法【2 5 1 及其改进算法w p 方法【2 6 1 等。而基于马尔可夫链模型的统计 测试还需要考虑迁移概率问题p 5 1 。 测试用例的执行过程就是测试脚本的执行过程。测试脚本的使用可以在很大成 都上提高软件测试的自动化水平,节省人力资源。一个好的测试脚本应该具有良 好的可靠性和易维护性。但是,目前脚本语言有很多,测试人员必须学习不同的 测试自动化脚本语言。因此,脚本语言标准化可以简化自动化测试的复杂性,并 且可以减少测试人员的工作量。文献3 6 1 中对软件测试自动化中的脚本语言的种类 及其应用做了简单的介绍。 2 3 5 评判测试用例执行情况 基于模型的软件测试技术可以通过状态验证部分解决测试失效的判别问题,因 此在很大程度上提高软件测试的自动化水平,但仍然无法完全解决测试失效的判 别问题,对测试结果的判定工作仍然依赖于人工干预。 2 4 评价 2 4 1 基于模型的软件测试技术的优势 与传统的手工测试相比,基于模型的软件测试技术通过测试模型自动生成测 试用例。因此,具有以下优点:在很大程度上提高软件测试的自动化水平,降低 软件开发和测试成本,提高测试效率;减少繁琐的重复劳动,避免由于测试人员 的思维定势所导致的测试偏差以及长时间重复劳动所导致的测试疏漏。 基于模型的软件测试技术的依据是被测软件的规约说明。与基于代码的软件 测试技术相比,基于模型的软件测试技术具有以下优势【3 7 】:测试人员可以通过规 约说明获得预期的输出结果,因此基于模型的软件测试技术可以部分解决测试失 效性判别问题;规约说明中精确地定义了被测软件的功能描述,而不涉及细节和 结构信息,因此基于模型的软件测试技术可以更有效地进行功能测试;测试人员 可以根据规约说明制定测试技术以及生成测试用例,使测试工作可以提前到软件 基了有限状态机的j 2 娓程序g u i 测试技术 开发工作的早期,实现开发与测试共同进行,提高开发效率,缩短开发周期;测 试工作提前到开发前期的另外一个好处是,测试人员可以通过规约说明较早地发 现被测软件的质量缺陷,在被测软件实现之前修改规约说明,避免对被测软件的 反复修改。 2 4 2 基于模型的软件测试技术的不足 但是,基于模型的软件测试技术也存在着许多不足,最主要的是一下几个方面: 构造测试模型的主要依据是被测软件的规约说明,但是程序规约一般都是 采用自然语言书写的,形式化程度低,没有统一的书写规范。因此,很难 设计出一个通用的、系统化的、自动化的测试工具将程序规约转化为测试 模型: 对于一些形式化的语言,比如s d l 、z 语言【3 8 1 等。形式化语言可以使程序 规约更加精确、严谨以及没有歧义,并且形式化程度高。可以针对形式化 语言开发一个系统化的、自动化的测试工具将用形式化语言书写的程序规 约转化为测试模型。但这就意味着测试人员必须理解和掌握至少一种形式 化语言,增加了测试人员的负担; 基于模型的软件测试技术的思路是通过被测软件的规约说明构造出相应 的测试模型,因此测试人员必须具有相关的理论基础,比如状态机理论、 u m l 理论以及随机过程理论等。 测试之前需要有一定的前期准备,比如对被测软件产品进行分析、选择合 适的模型,构造模型等。 基于模型的软件测试技术无法避免测试模型固有的缺陷,比如有限状态机 模型的组合状态爆炸问题。 基于有限状态机的j 2 m e 程序g u i 测试技术 第3 章基于有限状态机模型的软件测试技术 基于状态的测试非常适合面向对象软件【l l 】,有限状态机模型是一个基于状态行 为的抽象系统,因此基于有限状态机模型的软件测试技术经常应用在面向对象的 软件测试中。有限状态机是有限自动机这一数学模型的工程应用【l l 】,因此具有很 成熟的理论基础。本章在第2 章的基础上,对基于有限状态机模型自动生成测试 用例的技术作详细的介绍。本章分为两节,按照下面的结构组织:首先介绍有限 状态机模型的相关术语定义,然后通过一个简单的例子详细介绍五种比较经典的 基于有限状态机模型自动生成测试用例的技术。 3 1 相关术语定义 本节中将给出有限状态机模型的相关术语定义,本节中用到的有限状态机模型 可以用六元组( m ,s ,x ,y ,6 ,入) 表示。 定义1 强连通性 对于有限状态机模型m 中任意两个状态s i 、s j s ,均存在一个输入序列p e x 拳,使得6 ( s i ,p ) = s j 。则称有限状态机模型m 满足强连通性。 定义2 完备性 有限状态机模型m 中任意一个状态s j ,对于输入集合x 中任意一个输入符号 x ,均存在一个状态s j s ,使得6 ( s i ,x ) = s j 。则称有限状态机模型m 满足完备性。 定义3 精简性 对于有限状态机模型m 中的任意两个状态s i 、s j s ,输入集合x 中至少存在 一个输入符号x ,使得入( s i ,x ) 入( s j ,x ) 。则称有限状态机模型m 满足精简性。 定义4 可达的 对于有限状态机模型m 中的任意一个状态s i s ,均存在一个输入序列p x 宰, 使得6 ( s o ,p ) = s i 。其中,s o 是模型m 的初始状态。则称有限状态机模型m 中的状 态是可达的。 定义s 等价的三个概念 给定一个输入序列的集合v 和另一个有限状态机模型i ,对于有限状态机 第3 章基于有限状态机模型的软件测试技术 模型m 中任意一个状态s i s ,模型i 中均存在一个状态i k ,使得对于v 中的任意一个输入序列v e v ,均满足入( s i ,v ) = 入( i k ,v ) 。则称s i 和i k 关于 v - 等价,记为s i v l k 。 若对于任意输入序列集合v ,s j 和i k 都满足s i v i k ,则称s i 和i k 等价,记 为s i i k 。 若两个有限状态机m 和i 的初始状态s o 和i o 满足s o i o ,则称这两个有限 状态机是等价的。 定义6 同构关系 对于两个有限状态机m 和i ,令v - 等价是从m 到i 上的函数,若该函数是双 射的,则称其为m 到i 上的同构关系。 定义7 重置功能 令r 是一个输入符号,并且r e x 。对于有限状态机模型m 中的任意一个状态 s i ,均有6 ( s j ,r ) = s o 。则称有限状态机m 具有重置功能,输入符号r 称为重置操作。 定义8 状态覆盖集 令q 是一个输入序列的集合,若空输入符号e q 。并且,对于有限状态机模 型m 中的任意一个状态s i s ,均存在一个输入序列q e q ,使得6 ( s o ,q ) = s i 。则 称输入序列集合q 有限状态机模型m 的状态覆盖集。 定义l o 状态迁移覆盖集 令p 是一个输入序列的集合。对于s 中的任意一个状态迁移s i 呐专s j ,且 s i 、s j s 。均存在输入序列p ,p x e p ,使得s 0 1 专s i 并且s 0 1 , , - - ) s j 。另外, 空输入e q 。则称集合p 是s 的状态迁移覆盖集。 定义l l 特征集 令w 是一个输入序列的集合,如果对于有限状态机模型m 中的任意两个状态 s i 、s j s ,均存在一个输入序列w ew ,使得九( s i ,w ) 入( s j ,w ) 。则称输入序列集 合w 是有限状态机模型m 的特征集。 3 2 经典测试方法 本节将通过一个简单的例子介绍五种基于有限状态机模型生成测试用例的经 基于有限状态机的j 2 m e 程序g u i 测试技术 典方法:基于转移遍历的t 方法【2 2 1 、基于区分序列的u 方法【2 3 】、基于唯一输入输 出序列的d 方法f 2 4 】、基于特征集的w 方法2 5 1 及其改进算法w p 方法【2 6 】等。 3 2 1t 方法 文献 2 2 】指出

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论