




已阅读5页,还剩48页未读, 继续免费阅读
(计算机应用技术专业论文)面向对象软件测试中的测试用例生成技术的研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象软件测试中的测试用例生成技术的研究 张茗淇( 计算机应用技术) 指导教师:朱连章( 教授) 摘要 在软件测试过程中,测试用例的生成是软件测试的关键和难点。目前, 测试用例的生成主要靠手工完成,而且要求软件测试人员具有一定的经验和 较高的专业水平,因而,测试过程往往带有很大盲目性,致使测试效率低下, 软件成本居高不下,软件质量也很难保证。虽然已经有了一些测试用例的自 动生成工具,并且一定程度上提高了测试的自动化,但是这些工具所基于的 形式化方法本身也存在着灵活性差、扩展困难、开发代价高、脚本管理和维 护困难等问题。 文中提出了一种基于x m ls c h e m a 模型的类的规约说明描述方法,并给 出了如何根据x m l 测试脚本来生成测试用例的方法,而且结合实例详细地介 绍了完整的实现方案,并在n e t 环境下用c # 语言对方法进行了验证。首先 设计合理的x m ls c h e m a 结构,并在该x m ls c h e m a 的有效性约束下,用x m l 对i j m l 类图及相关性约束进行脚本描述;其次对x m l 测试脚本进行分析,提 取方法的测试规约说明,所谓测试规约说明就是从测试脚本中包含的变量的 基本约束条件以及期望输出中抽取得到的以合取范式形式存在的谓词序列: 每一合取范式对应一个不等式组,对每一个不等式组采用1 1 域测试策略, 生成域测试矩阵,最终得到测试用例。从试验结果来看,x m l 测试脚本描述, 灵活性高,扩展方便,为大多数程序语言支持,访问速度快,另外lx1 的 域测试策略也在一定程度上减少了用例的生成数目,提高了测试效率。 关键词:软件测试,形式规约说明,可扩展标记语言,测试用例,域测试策 略 t h er e s e a r c ho i lg e n e r a t i o no f t e s tc a s ei n o b j e c t - o r i e n t e ds o f t w a r et e s t i n g z h a n g i 丘n g - q i ( c o m p u t e r a p p l i c a t i o nt e c h n o l o g y ) d i r e c t e db yp r o f e s s o rz h u l i a n - z h a n g a b s t r a c t d u r i n gt h ep r o c e s so f s o r w 耵et e s t i n g t h eg e n e r a t i o no f t e s tc a s ei sc r i t i c a l a n dd i f f i c u l t p r e s e n t l y , g e n e r a t i o no ft e s tc a s ei s p d m a r i l yd o n em a n n a l l y , r e l y 堍h e a v i l yo nt e s t e r s e x p e r i e n c ea n dc a p a b i l i t y , w h i c hr e s u l t si nl o w e f f i c i e n c y o fs o r w a r et e s t i n g ,h i g hc o s to fs o f t w a r e d e v e l o p m e n ta n d u n c e r t a i n t yo fs o f b , v a r eq u a l i t y a l t h o u g ht h e r eh a v eb e e ns o m et o o l sf o ra u t o g e n e r a t i n gt e s tc a s ea n dt os o m ee x t e n ti n e r e a s e dt h ea u t o m a t i o no fs o r w a r e t e s t , h o w e v e r , s o m ep r o b l e m se x i s ti nt h ef o r m a lm e t h o du s e db yt h e s et o o l s , s u c ha s p o o rf l e x i b i l i t y , h a r d t o e x t e n d ,h i g h c o s ti n d e v e l o p m e n t , i n c o n v e i n e n c yi nt h em m m g e m e n t a n dm a i n t e n a n c eo f t e s ts c r i p ta n ds oo n i nt h i s p a p e r , am e t h o d b a s e do nx m ls c h e m at od e s c r i b ec l a s s s p e c i f i c a t i o ni sp r o v i d e da n da na p p r o a c ht og e n e r a t i n gt e s tc a s ea n dt e s t i n g r e p o r td o c u m e n t sf r o mx m l t e s ts c r i p ti sp r e s e n t e d b e s i d e s ,s o m ee x a m p l e s a r ec o m b i n e dt oi n t r o d u c et h ep r o c e d u r ei nd e t a i la n dac 群p r o g r a mi sa l s o w r i t t e nt ov e d f yt h em e t h o d si n n e te n v i r o n m e n t f i r s td e s i g nar e a s o n a b l e x m ls c h e m as t r u c t u r ea n du n d e rt h er e s t r i c t i o no fx m ls c h e m au s ex m lt o d e s c r i b et h eu m lc l a s sd i a g r a ma n dt h er e l a t e ds p e c i f i c a t i o n , a n dt h e ne x t r a c t t h et e s ts p e c i f i c a t i o no fm e t h o df r o mx m lt e s ts c r i p t t e s ts p e c i f i c a t i o nr e f e r s t op r e d i c a t es e q u e n c e si nt h ef o r mo fc o n j u n c t i v en o r m a lf o r m , e x t r a c t e df r o m b a s i cc o n s 仃a i n tc o n d i t i o n so fv a r i a b l e si n c l u d e di nt e s ts c r i p t sa n de x p e c t e d i 甜 o u t p u t s e a c hc o n j u n c t i v en o r m a lf o r mc a nb et r a n s f o r m e d t oa ni n e q u a t i o ns e t , a n da d o p t1x1d o m a i nt e s ts t r a t e g yt oe v e r yi n e q u a t i o ns e tt op r o d u c et h e d o m a i nt e s tm a t r i x , w h i c hi nt u r np r o d u c et h et e s tc a s c e x p e r i m e n t sh a v e p r o v e dt h a tt h em e t h o do fu s i n gx m l t od e s c r i b et h es o f t w a r es p e c i f i c a t i o ni s v e r yf l e x i b l e ,e a s yt oe x t e n d , s u p p o r t e dd i r e c t l yb ym o s tp r o g r a ml a n g u a g e sa n d a c c e s s e df a s t m o r e o v e r1x1d o m a i nt e s ts t r a t e g yc a nd e c r e a s et h en u m b e ro f t e s tc a s e sg e n e r a t e df r o mt e s ts c r i p t st os o m ee x t e n dw h i c hi m p r o v e st h e e f f i c i e n c yo f s o f t w a r e t e s t k e yw o r d s :s o f t w a r et e s t , f o r m a ls p e c i f i c a t i o n , x m l ,t e s tc s s e ,d o m a i nt e s t s t r a t e g y 独创性声明 本人声明所星交的论文是我个人在导师指导下进行的研究工作及取得 的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不 包含其他人已经发表或撰写过的研究成果,也不包含为获得中国石油大学或 其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究 所做的任何贡献均已在论文中作了明确的说明并表示了谢意。 签名:丞蒸选。6 年“月2 0 日 关于论文使用授权的说明 本人完全了解中国石油大学有关保留,使用学位论文的规定,即:学校 有权保留送交论文的复印件及电子版,允许论文被查阅和借阅;学校可以公 布论文的全部或部分内容,可以采用影印、缩印或其他复制手段保存论文。 ( 保密论文在解密后应遵守此规定) 学生签名:委送蒸这学生签名:琵叁筮墼 翩签名;算啦 口6 年毕月2 0 日 以年、簟月妒e t 中国石油大学( 华东) 硕士论文第一章前言 第1 章前言 1 1 背景介绍 信息技术的飞速发展,使软件产品应用到社会的各个领域,软件产品的 质量自然成为人们共同关注的焦点。不论软件的生产者还是软件的使用者, 均生存在竞争的环境中,软件开发商为了占有市场,必须把软件质量作为企 业的重要目标之一,以免在激烈的竞争中被淘汰出局。用户为了保证自己业 务的顺利完成,当然希望选用优质的软件。质量不佳的软件产品不仅会使开 发商的维护费用和用户的使用成本大幅增加,还可能产生其他的责任风险。 在一些关键应用( 如民航订票系统、银行结算系统、证券交易系统,国防军 事系统等) 中使用质量有问题的软件,还可能造成灾难性的后果。因此,如 何保证软件质量以及如何最大限度地提高软件质量成为摆在软件工程师面 前的一个严峻的课题。 软件测试作为保证软件质量的重要手段从2 0 世纪7 0 年代以来逐渐受到 人们的重视。在软件测试过程中,测试用例的生成是软件测试的关键和难点。 目前,测试用例的生成主要靠手工完成,而且要求软件测试人员具有一定的 经验和较高的专业水平,因而,测试过程往往带有很大盲目性,致使测试效 率低下,软件成本居高不下,软件质量也很难保证。为此,迫切需要改进软 件测试的方法,开发一些测试用例的自动生成工具,提高软件测试效率降低 软件成本,保证软件质量,提高软件测试的自动化程度。 在实际测试实践中,测试用例的自动化主要集中在黑盒测试领域,主要 采用规约说明的方法,规约说明方法有很多种,本文重点针对常用的形式化 规约说明,通过研究以及实际应用来看,形式化规约说明存在一定程度的局 限性:描述复杂、缺乏实际的程序语言支持等等,大大影响了测试用例自动 生成的效率。 中国石油大学( 华东) 硕士论文第一章前言 为此,有必要研究一种可行的能够替代形式化规约说明的新方法,以期 解决上述形式化规格说明在测试用例生成中存在的局限性,使其在可操作性 以及生成效率上达到令人满意的结果。 1 2 国内外研究现状 形式化方法的研究和应用己经有3 0 多年的历史了。由于软件规约说明 的重要性,国际上对软件规约说明方法和软件规约说明语言进行了广泛的研 究。形式化方法的基本含义是借助数学的方法来研究计算机科学中的问题。 当前主要使用的形式化方法包括五类: 1 ) 基于模型的方法:给出系统( 程序) 状态和状态转换与操作的显式但 又是抽象的定义,但其对于并发没有显式的表示,如基于模型的形 式规约语言z 、v d m 、r a i s e 。 2 ) 代数方法:通过联系不同操作间的行为关系而给出操作的定义,而 不定义状态。同样,它亦未给出并发的显式表示,如基于性质的规 约语言o b j 、l a r c h 等。 3 ) 进程代数方法:给出并发过程的一个显式模型,并通过过程间允许 的、可观察的、通讯上的限制( 约束) 来表示行为。 4 ) 基于逻辑的方法:有很多方法采用逻辑来描述系统的特征,包括程 序行为的低级规范和系统时间行为的规范,如时态逻辑。 5 ) 基于网络的方法:根据网络中的数据流显式地给出系统的并发模型, 包括数据在网中从一个结点流向另一个结点的条件。如p e t r i 网。 大多数形式化方法都以集合论和谓词逻辑作为根基,其在技术上都有很 大的相似性,因此实际应用过程中,并不总是严格的只使用一种方法,有些 情况下混合多种方法一起使用。 目前已有的形式方法大多都采用某种形式规格说明语言。在用某种程序 设计语言具体实现目标软件系统之前先准备一个严格的形式规格说明。规格 2 中国石油大学( 华东) 硕士论文第一章前言 说明指明目标软件系统“做什么”,而不考虑“怎么做”。其主要思路是通过 某种形式化语言描述软件的需求规格说明,将该形式化描述的规格说明存储 为某种格式的文件( 例如:文本文件) ,编写词法分析器和语法分析器,逐 个字符的遍历文本文件,识别并提取关键字,构造析取范式,再由不等式转 换生成不等式组,然后采用某些测试用例生成技术( 例如:等价类划分和边 界值) ,生成测试输入数据;由于形式化描述本身的局限性,大多数都停留 在理论,缺乏实际的语言及工具支持。 h a l l 用一种常用的方法从z 规格说明推导出测试用例【l 】,即根据操作模 式中谓词定义的输入的分割来构造输入空间的简单划分。这种方法是高度结 构化的,但并不是严格的。 s c u l l a r d 利用归约技术从v d m 规格说明推导测试用例 2 1 。这种方法将函 数特性归约到它们的基本类型,然后分析输入输出空间,根据各种定义域划 分来抽取典型值的集合。这本质上是输入和输出空间的类属分割法 3 1 。 r i c h a r d s o n 等人扩展了基于实现的测试技术并将它应用于形式规格说明 【4 】。他们将测试策略分成两大类:基于错误的测试策略和基于缺陷的测试策 略。基于错误的测试策略试图根据程序针对某些特定数据执行的结果来检测 出错误,这类策略通常包括一些输入空间的路径分析和划分分析以及选择对 某种类型的错误敏感的测试。基于缺陷的测试策略试图检测出源代码中的一 些缺陷,这类策略一般是对源代码中的元素应用一定的规则来产生对通常遇 到的代码错敏感的测试。这种分类并没有定义新的选择测试的方法,而只是 定义了输入元素的类型和可接受的测试标准。 d i c k 和f a i v r e 在将基于模型的规格说明应用于软件测试方面做出了重 大的贡献【5 1 。在测试中一种常用的方法是等价类划分,也就是将输入空间划 分成若干个子定义域,再从每个子定义域中抽取出一个代表性测试数据。每 个子定义域要满足这样的条件一一如果对于子定义域中的一个输入程序的 中国石油大学( 华东) 硕士论文第一章前言 执行结果是错误的,那么对于子定义域中的所有输入程序的执行结果都是错 误的。简而言之,程序对子定义域中的每个输入的处理都是一样的。显然, 划分规格说明中一个操作的输入空间的方法是将输入表达式归约为析取范 式,这一点正是d i c k 和f a i v r e 的主要工作 5 1 现今已经成熟应用的各种软件规约c a s e 测试工具都提供自己的脚本描 述语言。不同的测试工具,有的使用自行设计的脚本语言( 比如m e r c u r y i n t e r a c t i v e 公司的w m r u n n e r ) ,自行开发词法和语法解释器;有的利用现有 的脚本语言,比如v b s c r i p t 等这种情况导致各种工具的专有脚本的格式、 内容互不兼容。即便所有工具都使用一种脚本语言,比如v b s c r i p t ,其表达 能力、复杂程度也会给测试者带来限制和麻烦,毕竟并非每个测试者都能熟 练使用该语言进行编程。另外,这些脚本的内容很难以其他的各种形式表现 和发布嘲 针对当前实际应用的软件测试工具研究来看,自动生成测试用例输入有 三个主要的方法: 1 ) 数据池( 可以由数据库导入) 。 简单地,通过编程方法控制的x m l 或关系数据库的获取和设置。 3 ) 由算法的生成和过滤作为参数的,通过编程方法控制的x m l 或关 系数据库的获取和设置通过算法从x m l 或关系数据库中检索数 据来有计划地生成输入数据。 注:在第三种方法中,大多数测试工具都是将可能的输入值直接以具体 值的形式存储在x m l 文件中,评估这些输入值的组合操作。 1 3 研究思路及内容 本文主要是在研究了基于形式规约说明的软件测试的基础之上,结合当 前流行的x m l 技术提出一种新的针对面向对象软件类的规约描述的x m l s c h e m a 数据模型,解决了形式规格说明中存在的灵活性较差、扩展应用困 4 中国石油大学( 华东) 硕士论文第一章前言 难、缺乏必要的实施手段和支持工具、难以在实际开发过程中被广泛的接受、 以及与软件开发过程难以平滑的结合等问题,大大提高了面向对象软件类规 格描述的灵活性,提高了测试用例输入自动生成的效率。 首先设计合理的x m ls c h o m a 数据模型,使之能够充分描述面向对象软 件的u m l 类图及相关规约说明; 其次按照上面设计好的x m ls c h e m a 结构,对面向对象软件的类图进行 x m l 脚本描述,并以此为基础,采用现成的程序语言( c # ) ,读取并解释 包含了类规约描述的x m l 脚本文件,由程序自动生成n ( n 声1 ) 个条件子 式合取的子域集合; 最后按照等价类划分策略对上面的子域集进行精简处理,生成更紧凑的 子域集合。根据域测试策略生成基于o n 点、0 行点的输入序列,为测试人 员选择测试输入数据,提供了直观,方便的参考。 1 4 主要工作量 1 ) 查阅了中外文献多篇,完成了2 万多字的文献综述及开题报告,制 定出了切实可行的研究内容和技术路线; 2 ) 详细研究了软件测试的各种方法和技术,重点研究了基于形式化规 约说明的软件测试,掌握了较为丰富的理论知识,为以后的工作建 立了坚实的理论基础; 3 ) 提出了一种新的基于x m ls c h e m a 的面向对象类的规约描述数据模 型;并给出了如何从该模型描述生成测试用例输入的方法; 4 ) 用c # 独立完成了新方法的程序验证试验,试验结果也就是试验所 生成的测试用例完全符合1xl 域测试策略的上点和离点选择规则, 从而证明了由基于x m l s c h e m a 模型的类的规约描述生成测试用例 的可行性。 中国石油大学( 华东) 硕士论文第一章前言 1 5 论文组织 整篇论文是按如下章节组织的。第1 章介绍了课题的背景及意义、课题 研究的国内外现状以及研究思路和研究内容。第2 章对软件测试的基本理论 和技术进行了综合介绍,主要介绍了白盒测试和黑盒测试方法,同时给出了 几种常用的软件测试技术第3 章介绍了基于形式化规约说明的面向对象测 试,描述了形式化方法以及形式化方法在面向对象测试中的应用,给出了基 于形式规格说明的面向对象测试的基本流程方法,并分析了其优缺点,为后 文新方法的提出做了铺垫。第4 章提出了基于x m l s c h e m a 模型的类的规约 描述方法,设计了一个自动测试框架,并结合实例给出了从x m l 测试脚本 到测试用例的具体实现过程及应用到的相关技术。第5 章简要介绍了试验程 序界面及功能。最后是论文结论及展望。 6 中国石油大学( 华东) 硕士论文第2 章软件测试的基本理论及技术 第2 章软件测试的基本理论及技术 2 1 软件测试概念及原则 2 1 1 软件测试概念 关于什么是软件测试,很多人的认识实际上可能是模糊甚至错误的。一 些人认为:“测试就是为了验证程序中没有错误”,或者“测试是验证程序能 正确执行它的功能”,再或者“成功的测试是没有发现错误的测试”。事实上 这些想法都是错误的。那到底什么是软件测试呢? g j m y e r s 说:“软件测试是为了发现错误而执行程序的过程。” h e w d i j k s t m 说:“软件测试能证明错误的存在,但是测试过程中没有发现错误并 不能证明错误不存在。”嘲 根据1 9 8 3 年i e e e 提出的软件工程标准术语中给软件测试下的定义,所 谓软件测试,就是“使用人工或自动手段来运行或测定某个系统的过程,其 目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的 差别”。 9 1 这就非常明确地提出了软件测试以检验是否满足需求为目标。 通俗的讲,软件测试就是选择有代表性的输入数据来驱动被测程序,观 察程序的执行结果,比较该结果与期望结果是否一致,然后做相应的纠错、 调整和评价。 通过软件开发的实践可以发现:错误发现越晚,改正错误的难度也越高, 所需付出的代价也越高,所以当前更多的人认为:软件测试的目的不仅是发 现并修正软件开发过程中所存在的问题,而且还应当通过对于软件错误的分 析,发现软件开发过程存在的问题,从而不断的修正软件开发过程。测试并 不仅仅是为了找出错误。分析错误产生的原因和错误在开发的那一阶段产 生,具有非常重要的意义。通过分析错误的原因,我们可以立即在开发行动 中对其进行修正。同时这种分析也能帮助推理出与所分析错误有关联的潜在 7 中国石油大学( 华东) 硕士论文第2 章软件测试的基本理论及技术 错误,从而有针对性地设计测试的方法。 2 1 2 软件测试的原则 根据g j m y e r s 的软件测试目标,d a v i e 提出了一组测试原则【1 0 1 : 1 ) 应当尽早地和不断地进行软件测试。不应该把软件测试仅仅看作是 软件开发代码完成后的一个独立的测试阶段,而应当把它贯穿到软件开发的 各个阶段中。坚持软件开发的各个阶段的设计成果的技术评审,这样才能在 开发过程尽早地发现和预防错误; 2 测试用例由铡试输入数据和与之对应的预期输出结果两部分组成。 测试以前应当根据测试的要求选择测试用例。用来检验程序员编写的代码, 因此不但需要测试的输入数据,而且还需要针对这些输入数据的预期输出的 结果; 3 ) 程序开发人员应避免检查自己的程序; 4 ) 软件测试中发现的错误的8 0 很可能集中在2 0 的程序模块中。在 设计测试用例时,应当包括合理的输入条件和不合理的输入条件。合理的输 入条件是指能验证程序正确的输入条件,不合理的输入条件是指异常的、临 界的、可能引起问题的输入条件; 5 ) 严格执行测试计划,排除测试的随意性; 6 ) 应该对每个测试结果作全面的检查; 7 ) 妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护 提供方便。 2 2 软件测试的方法 软件测试的基本方法和技术是多种多样的。对于软件测试,可以从不同 的角度加以分类。 1 ) 按测试阶段分:需求测试、单元测试、集成测试和系统测; 2 ) 按测试状态分:静态测试和动态测试; 8 中国石油大学( 华东) 硕士论文第2 章软件测试的基本理论及技术 3 ) 按测试方法分:自盒测试和黑盒测试。 2 2 1 黑盒测试方法 黑盒测试( b l a c k - b o xt e s t i n g ) 又称功能测试、数据驱动测试或基于规格 说明的测试( s p e c i f i c a t i o n - b a s e dt e s t i n g ) 。用这种测试方法进行测试时,被 测程序被当作打不开的黑盒,因而无法了解其内部构造。在完全不考虑程序 内部结构和内部特性的情况下,测试人员只知道程序输入和输出之间的关 系,或是程序的功能,只检查程序功能是否按照需求规格说明书的规定正常 使用,程序是否能适当地接收输入数据而产生正确的输出信息,因此测试人 员必须依靠能够反映这一关系和程序功能的需求规格说明书确定测试用例, 并推断测试结果的正确性。即所依据的只能是程序的外部特性。因此,黑盒 测试是从用户观点出发的测试。黑盒测试方法主要有等价类划分、边值分析、 因一果图、错误推测等,主要用于软件确认测试。 黑盒测试只有通过穷举输入测试,只有把所有可能的输入都作为测试情 况使用,才能以这种方法查出程序中的所有的错误。实际上测试情况有无穷 多个,人们不仅要测试所有合法的输入,而且还要对哪些非法的输入进行测 试( 1 i l 。 2 2 2 自盒测试方法 白盒测试( w h i t e - b o xt e s t i n g ) y 称结构测试、逻辑驱动测试或基于程序 的测试( p r o 伊跚b a s e d t e s t i n g ) ,采用这一测试方法,测试者可以看到被测的 源程序代码,可以分析被测程序的内部构造,并且根据其内部构造设计测试 用例。这时测试人员可以完全不顾程序的功能。白盒测试的主要方法有逻辑 驱动,基路测试等。 测试人员在使用自盒测试方法时,主要对程序模块进行如下方面的测 试: 1 ) 对程序模块的所有的独立执行路径至少测试一次; 9 中国石油大学( 华东) 硕士论文第2 章软件测试的基本理论及技术 2 ) 对所有的逻辑判定,取。真”与“假”的两种情况都需至少测试一次; 3 ) 在循环的边界和运行的界限内执行循环; 4 ) 测试内部数据结构的有效性等等。 在白盒测试中,即使每条路径都测试了,程序仍可能有错。例如,要求 编写升序排序的程序,错编成降序排序的程序( 功能错) ,就是穷举路径测试, 也无法发现错误。再如疏忽漏写了路径,白盒测试就无法发现。黑盒测试和 白盒测试都不能使得测试彻底,为了有限的测试发现更多的错误,需要精心 设计测试用例1 9 1 。 2 2 3 常用的软件测试技术 1 ) 等价类划分。它用于对输入进行分类。若输入在软件上的行为是相似的, 那么就把它们划分为一类。等价类划分的思想核心是组内的输入产生的 结果相似,少量值就可以作为该区域的代表,这样就可以减少所需要的 测试用例n 2 j ; 2 ) 边界值分析这项分析比等价划分更进一步,它从划分的组别中选择最 有效的测试数据,这项技术需要寻找各个分组区域的边界值; 3 1 数据流测试。是对数据项进行检查,数据项有可能发生一些诸如定义了 数据项但没有使用,或者定义了数据项但没有使用却又重新定义,或者 指定的数据项却没有定义。数据流测试的覆盖标准试图覆盖的定义一一 使用路径。所有的定义路径,或者所有的使用路径; 钔回归测试。它可以查找在修改系统时引入的错误,也可以证实修改时没 有引起不希望产生的不良影响,而且修改过的系统仍然满足需求; 5 1 语法测试。语法测试适合复杂的数据结构,和抽象数据类型的测试相关。 一个典型的策略是测试带有一个或者更多语法错误的输入是否被程序 拒绝。 1 0 中国石油大学( 华东) 硕士论文第2 章软件测试的基本理论及技术 2 3 软件测试的标准 2 3 1 软件测试的复杂性 人们常常以为,开发一个程序是困难的,测试一个程序则比较容易。这 其实是误解。设计测试用例是一项细致并需要高度技巧的工作,稍有不慎就 会顾此失彼,发生不应有的疏漏。 不论是黑盒测试还是白盒测试,由于测试情况数量巨大,都不可能进行 彻底的测试。所谓彻底测试,就是让被测程序在一切可能的输入情况下全部 执行一遍。通常也称这种测试为穷举测试。黑盒法是穷举输入测试,只有把 所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错 误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还 要对那些不合法但是可能的输入进行测试。白盒法是穷举路径测试,贯穿程 序的独立路径数是天文数字,但即使每条路径都测试了仍然可能有错误。第 一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的 程序;第二,穷举路径测试不可能查出程序中因遗漏路径而出错;第三,穷 举路径测试可能发现不了一些与数据相关的错误。正如前面软件测试概念中 所描述的那样:测试不可能找出所有存在的错误,只能证明程序有错而不能 证明程序无错。 2 3 2 软件测试的经济性 软件工程的总目标是充分利用有限的人力和物力资源,高效率、高质量 地完成测试。为了降低测试成本,选择测试用例时应注意遵守“经济性”的 原则: 1 ) 要根据程序的重要性和一旦发生故障将造成的损失来确定它的测试 等级: 2 ) 要认真研究测试策略,以便能使用尽可能少的测试用例,发现尽可 能多的程序错误。 中国石油大学( 华东) 硕士论文第2 章软件测试的基本理论及技术 因此掌握好测试量是至关重要的,测试不足意味着让用户承担隐藏错误 带来的危险,过度测试则会浪费许多宝贵的资源。能够决定到底需要做多少 次测试的主要影响因素如下: 1 ) 系统的目的; 系统的目的的差别在很大程度上影响所需要进行的测试的数量。那些可 能产生严重后果的系统必须要进行更多的测试。 2 ) 潜在的用户数量; 一个系统的潜在用户数量也在很大程度上影响了测试必要性的程度。这 主要是由于用户团体在经济方面的影响一个在全世界范围内有几千个用户 的系统肯定比一个只在办公室中运行的有两三个用户的系统需要更多的测 试。 3 ) 信息的价值; 在考虑测试的必要性时,还需要将系统中所包含的信息的价值考虑在 内,一个支持许多家大银行或众多证券交易所的客户机朋匪务器系统中含有 经济价值非常高的内容。很显然这一系统需要比一个支持鞋店的系统要进行 更多的测试。 4 ) 开发机构; 一个没有标准和缺少经验的开发机构很可能开发出充满错误的系统。在 一个建立了标准和有很多经验的开发机构中开发出来的系统中的错误不会 很多,因此,对于不同的开发机构来说,所需要的测试的必要性也就截然的 不同。 中国石油大学( 华东) 硕士论文第3 章基于形式规约说明的面向对象软件测试 第3 章基于形式规约说明的面向对象软件测试 3 1 形式化方法与面向对象软件测试的层次划分 在软件开发过程中,用户需求的规约说明非常重要,其使用者包括用户、 系统分析员、设计人员和编程人员、测试人员和验收人员。规格说明对于这 些人来说是一个可靠的参照点:系统分析员接受用户的需求,产生目标软件 系统的规约说明;设计和编程人员根据规约说明进行模块的设计并产生代 码;测试人员和验收人员验证最终的程序代码是否符合规约说明。 形式化方法的基本含义是借助数学的方法来研究计算机科学中的问题。 形式化方法是基于严格的数学方法来描述目标软件系统性质的一门技术,用 严格的数学符号和数学法则对目标软件的结构和行为进行有效的综合、分析 和推理,它为系统的说明、开发和验证提供了一个框架,有利于发现目标软 件系统需求中的不一致性、不完整性等方面的问题。 对于传统程序设计语言书写的软件,软件测试人员普遍接受三个级别的 测试:单元测试、集成测试和系统测试。对面向对象的程序测试应当分为多 少级别尚未达成共识一般认为:面向对象的程序也和其他语言的程序一样, 都要进行系统级测试。一种较为普遍的划分方法是从面向对象程序的结构出 发,将面向对象的程序测试分为四个级别:i ) 方法级,考察一个方法对数 据进行的操作;2 ) 类级,考察封装在一个类中的方法和数据之间的相互作 用;3 ) 类簇级,考察一组协同操作的类之间的相互作用;4 ) 系统级,考察 由所有类和主程序构成的整个系统。其中的方法级测试和传统的单元测试相 对应。 笔者认为面向对象软件从宏观上来看是各个类之间的相互作用,在面向 对象程序中,最小的可测试单元己不是方法,而是包含了方法的类和类的实 例。类是面向对象方法中最重要的概念,是构成面向对象程序的基本成分。 中国石油大学( 华东) 硕士论文第3 章基于形式规约说明的面向对象软件测试 已经有经验表明类级测试是必须的,也是发现错误的重要手段,以簇作为测 试的最小单元会导致某些应当在开发周期中较早发现的错误延至系统测试 时才发现。因此,我们提出的测试策略中将以类的测试作为单元测试,将面 向对象测试划分为三个层次:类测试、类集成测试和系统测试。 3 2 基于形式化规约的方法在面向对象软件测试中的应用 广义的规约指的所有对软件产品预期的行为和特性的描述,提供给测试 者的规约可以是各种非正式的文档或用某种规约语言书写的正规规约如后 文所说的形式化的规约。本文的规约一般指的是狭义的形式化的规约。 直至七十年代中期,有关基于形式化的规约语言的测试的研究很少。三 个方面的原因推动了形式化规约测试研究的发展: 1 ) 基于代码的测试不能取得满意的效果业界人士都意识到即便是一个获 得1 0 0 4 弋, 码覆盖率的基于代码的测试,也说明不了程序的正确性,而 只能说明设计了正确的程序; 2 ) 形式化规约语言的出现。最初这些规约语言在通信软件上得到推广应 用,并取得良好效果。这些规约语言具有完整性、一致性和不模糊性, 一方面为程序自动生成提供了条件,另一方面为软件自动化测试打下了 坚实的基础。其中有代表性的有;v d m 、r a i s e 、z 等; 3 ) 软件规约c a s e - r 具的出现,使得形式化规约得到广泛应用。市场需要 在这些工具里面集成自动测试工具。现在有的面向对象c a s e 工具除了 具有规约的作用外,还能在此基础上自动生成测试用例或提供一个用脚 本编辑测试用例的环境。 基于以上原因,人们认识到把软件测试建立在规约的基础上是势在必行 的。为此,专家们作了大量的实验和研究:一方面完善或扩展形式化规约语 言,适应自动化测试的需要;另一方面发展测试理论和方法。在g o o d e n o u g h 和g e r c h a r t 开拓性的论文【5 l 中,指出基于代码的测试用例是不充分的,他们 1 4 中国石油大学( 华东) 硕士论文第3 章基于形式规约说明的面向对象软件测试 提出可以从通过条件表( c o n d i t i o nt a b l e s ) 来表达的非正则规约中生成测试 用例。第一篇有关基于正则规约的测试,是由c h o w 提出的基于有限状态 机( f i n i t es t a t em a c h i n e s ) 的测试0 3 1 ,这篇文章对后续的基于形式化规约的 测试产生了巨大的影响。 到九十年代,随着正则规约的出现和不断推广,基于正则规约测试的理 论和方法得到了极大的发展,基于各种规约的测试方法不断被提出:g a l m o n 提出了基于代数规约( a l g e b r a i cs p e c i f i c a t i o n ) 的测试f 1 4 1 ,d i c k 提出了基于 模型规约( m o d e l - b a s e d ) 的测试( v d m 、z ) 【1 5 1 ,b r i n k s m a 提出以规约语 言l o t o s 为基础的基于有限状态机( f s m b a s e d ) 的测试。这些研究在通信 协议的规约、测试和验证领域非常活跃。m a r i e - c l a u d eg a u d e l 总结基于形式 化规约测试的基本原理【1 6 l ,n g o g a 总结了常用的几种基于形式化规约法的 测试用例自动生成的方法【1 7 1 ,并从理论和实验结果上比较了它们的性能和 有效性 为适应面向对象方法的广泛应用,这些软件规约方法也在进行不断的扩 充。代数规约法从抽象数据类型发展到支持对象类型;有限状态机发展到具 有层次机构、支持并发和消息通信的状态图。前者的代表是产生了面向对象 的规约语言o b j e e t - z ,而后者在u m l 中得到体现。同时基于这些面向对象 的规约的测试理论和方法也得到了研究0 8 1 9 , 2 0 1 由于u m l 己成为现在软件界公认的通用建模语言,是事实上的标准建 模语言,因而将形式化规约语言建立在u m l 的基础上,更容易得到推广应 用,得到进一步的完善和发展,而且这方面的研究也更具有实用价值。己经 产生了很多实验性的工具。下一节将介绍u m l 图形与形式化语言描述和方 法的关系。 3 3 面向对象建模语言 u m l ( 统一建模语言,u n i f i e dm o d e l i n gl a n g u a g e ) 是一种图形化的建 中国石油大学( 华东) 硕士论文第3 章基于形式规约说明的面向对象软件测试 模语言,是第三代用来为面向对象系统进行产品说明,可视化和编制文档的 方法。它是由信息系统和面向对象领域的三位著名方法学家:g - r a d yb o o t h , j a m e s 和i v a rj a c o b s o n 提出的,在1 9 9 7 年被国际标准化组织( o m g ) 接纳 为正式官方标准后己成为新一代面向对象软件设计的事实标准其与 r a t i o n a l 统一过程( 或其它软件工程开发过程) 的配合使用己被业界许多企 业所采用。u m l 提供了一套描述软件系统模型的概念和图形表示方法。软 件开发人员可以使用u m l 对复杂的面向对象软件系统建立可视化的模型, 并通过增量式的不断细化直接控制从设计、编码、溯试到文档编制的整个软 件开发过程。 u m l 包含3 个方面的内容:模型的概念和表示法、语言的公用机制、 对象约束语言o c l 等。u m l 提供的标准模块有三种:事务、关系和图。事 务是模型一级的抽象成员。u m l 定义的事务包括结构性事务、行为性事务、 成组性事务和注释性事务。而l r m l 提供的模型之间的关系包括依赖、关联、 范化、实现四种1 2 1 1 3 3 1u m l 图与软件测试 u m l 为使用者提供了丰富的图形表示方式,它使用不同类型的图从不 同的角度和抽象层次上描述系统模型。在使用u m l 进行软件设计建模时, 设计者必须根据所需描述的对象和系统动作来选择适当的u m l 图,以达到 设计效果。同样在软件测试过程中,不同的测试阶段,不同的测试目的,必 须选择不同的u m l 图。以下将分析几种常用的u m l 图形的特点及其对软 件测试的影响。 1 ) 类图( c l a s s d i a g r a m ) :类图展现了一组对象、接口、协作以及它们之 间的关系。类图给出了系统的静态设计视图。好的类图不仅能够描述系 统中的类和这些类之间的关系,而且还可以针对方法层的类和对象来引 入附加的属性和关系。因为类图是对面向对象系统中类的最为详尽和全 1 6 中国石油大学( 华东) 硕士论文第3 章基于形式规约说明的面向对象软件测试 面的描述方式,能够帮助测试者全面掌握系统中的类结构,这样必然对 类的测试有很大的帮助; 2 ) 对象图( o b j e c td i a g r a m ) :对象图是类图的实例表示; 3 ) 用例图( u s ec a s ed i a g x a m ) :用例图用于显示若干角色以及这些角色与 系统提供的用例之间的连接关系。用例图仅仅从角色使用系统角度描述 系统中的信息,也就是站在系统外部观察系统,不描述系统内部对该功 能的具体操作方式,所以能够帮助测试者全面的把握系统的运行情况, 是集成测试和系统测试的重要参考工具: 4 ) 状态图( s t a t e c h a r t sd i a g r a m ) :状态图展现了一个状态机,它由状态、 转换、事件和活动组成,是专注于系统的动态视图。由于状态图强调对 象行为的事件顺序,因而它对于接口、类和协作的测试都有很重要的作 用。由于建立在状态机的基础上,所以很多已有的对于状态机测试的有 效方法都能很容易的被移植到对于状态图的测试中去。 3 3 2u m l 图与面向对象软件设计和测试各阶段的关系 u m l 图的不同抽象层次和面向对象软件设计和测试各阶段的对应关系 如图3 1 所示: 圈 圆 = 圆:= = = :焉享:二:= = 圆 图3 1u m l 图与面向对象软件设计测试各阶段的对应关系 1 7 蔓 蜀 一翻一 一骱一 面一 葫一 一集一 一町一 磐, 蘸琶 固 匾= 中国石油大学( 华东) 硕士论文第3 章基于形式规约说明的面向对象软件测试 3 4 基于形式化规约说明的类测试流程 基于形式化规约说明的类测试流程如下: 1 ) 采用某种形式规约语言( 测试脚本语言) 对u m l 类图进行形式化描述, 并将该描述以某种文件格式存储,例如文本文件; 2 ) 编写程序读取规约描述文件,进行词法解释和语法解释,找出变量的约 束关系式; 3 ) 用线性谓词转换器对约束关系式进行处理,得到线性谓词表达式,如: 0 z l l o ) ; 4 ) 将得到的线性谓词转换为析取范式,如下所示, a z l 1 0 ) v v ( 1 z l t o ) ; 5 ) 再用线性不等式转换器对析取范式进行不等式转换,得到如图3 2 所示 的线性不等式组: 1 q 1 1 0 l 1 0 图3 2 不等式组 6 ) 对每个不等式组按照域测试策略来生成测试用例。 3 5 形式化方法的缺点 形式化方法虽然能够引导软件开发人员或测试人
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 煤炭清洁化利用技术与环保产业市场前景研究报告
- 临床概念食管癌试题及答案2025年版
- 康复临床医学试题及答案2025年版
- 2025年度品牌形象推广合同书
- 2025年3D打印技术在制造业的转型
- 镁合金的课件
- 2025年职教高考音乐题库及答案
- 年产特种电缆8000万米新建项目环评报告表
- 寿光地理中考试卷及答案
- 温室农业环境监测系统2025年智能化升级产业链研究报告
- 火力发电土建项目监理实施细则
- 上海肿瘤医院病理报告
- 中学生心理健康影响因素
- 医院疼痛科建设与管理的标准化经验
- 认知功能障碍的饮食调理及保健指南
- 2024年中邮保险公司招聘笔试参考题库含答案解析
- 第3章 Word 2016文字处理软件
- 工业机器人的发展现状和未来趋势
- 公司司库管理系统执行管理办法
- 22J603-1 铝合金门窗1正式版
- 新企业会计准则讲解
评论
0/150
提交评论