




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华中科技大学硕士学位论文 ;= ;= = ;= = = ;= = = = = = ;= = ;= = 目= = t # 目; = = :;= ;= : 摘要 面向对象技术在软件工程中的推广使用,使得传统的测试技术和方法受到了极 大的冲击。传统的测试技术已经无法有效的测试面向对象程序,因此测试策略和测 试方法都需要进行相应的改进。 形式化规约说明是利用形式化规约说明语言精确描述软件需求的文档。用 0 b j e c t - z 是一种用来描述面向对象软件规约语言,可以产生简明、精确、无歧义的形 式化规约说明。i 尘一一 基于o b j c c t z 形式化规约,可以对面向对象软件进行完整性测试和一致性测试。 模型( o o t m ) 描述如下:可以从类的o b j e c t z 形式化规约说明导出了类的状态转换 图,从而可以从面向对象软件的形式化规约说明中推导出面向对象软件的状态转换 图。状态转换图可以描述一个由面向对象程序的正确的方法调用序列组成的测试数 据。把状态转换图看作为有限自动机,就可以得到生成测试数据的方法和检测方法 调用序列异常的算法。依据方法调用序列覆盖标准,就可以验证测试的完整性和一致 性。 c x x t e s t 是一个基于面向对象测试模型o o t m 的c + + 软件的自动化测试系统。 该系统包括测试用例图生成工具,测试预测生成工具,测试驱动生成工具三个模块。 从软件的状态转换图可以生成测试用例图。从软件的o b j c c t - z 规约中可以构造出测 试预测。根据测试用例图,可以构造测试驱动程序。测试结果显示o o t m 对于测试 面向对象程序是可行的奠凡7 、一 关键词;软件测试;面向对象;形式化规约; 煎塑鳓 。 q 垄鎏垂亟委测试数据 a b s t r a c t s i n c et h eo b j e c t o r i e n t e d t e c h n o l o g yh a sb e e nu s e di n s o f t w a r ee n g i n e e r i n g ,t h e t r a d i t i o n a lt e s tm e t h o d sm e e tt h eb i g c h a l l e n g e s ot h et r a d i t i o n a lt e s tm e t h o d s c a nn o tb e a p p l i e dd i r e c t l yt oo b j e c t - o r i e n ts o f t w a r ee f f i c i e n t l ya n d m u s tb e a d a p t e d t h ef o r m a ls p e c i f i c a t i o nu s ef o r m a ls p e c i f i c a t i o nl a n g u a g et op r e c i s e l yd e s c r i b et h e r e q u i r e m e n t s o b j e c t - zs p e c i f i c a t i o nl a n g u a g ei sw i d e l yu s e dt od e s c r i b eo b j e c t - o r i e n t e d s o f t w a r ea n dt op r o d u c e c o n c i s e ,p r e c i s ea n du n a m b i g u o u ss p e c i f i c a t i o n o b j e c t - o r i e n t e ds o f t w a r ec a l lb ec o m p l e t e l ya n dc o n s i s t e n t l yt e s t e db a s e do no b j e c t - z f o r m a ls p e c i f i c a t i o n t h i sp a p e r p r e s e n t sat e s t i n gm o d e l w h i c hi sd e s c r i b e da sf o l l o w s :a s t a t et r a n s i t i o nd i a g r a m 佑t o ) c a nb ed e r i v e df r o mo b j e c t zf o r m a ls p e c i f i c a t i o no fa c l a s s ,s oas t dc a nb ed e r i v e df r o mo b j e c t zf o r m a ls p e c i f i c a t i o no fao b j e c t - o r i e n t e d s o f t w a r e s t dc a nb eu s e dt od e s c r i b eat e s td a t aw h i c hc o n s i s t so fm e t h o dc a l ls e q u e n c e s o fao b j e c t - o r i e n t e dp r o g r a m am e t h o di sg i v e nt ov e r i f yt h ec o r r e c t n e s so faf u n c t i o nc a l l s e q u e n c ea f t e r as t di sr e g a r d e da saf i n i t es t a t em a c h i n e t h e na t e s t i n gc o v e r a g ec r i t e r i a a r eu s e dt oe v a l u a t ec o m p l e t e n e s sa n d c o n s i s t e n c yo ft e s t i n g a tl a s tt h i sp a p e rp r e s e n t sa na u t o m a t i ct e s t i n gs y s t e mc x x t e s tb a s e do no o t mt o t e s tc + + s o f t w a r e t h es y s t e mc o n s i s t so f3 c o m p o n e n t s :t e s tc a s eg r a p hg e n e r a t o r , t e s t o r a c l eg e n e r a t o ra n dt e s td r i v e rg e n e r a t o r t e s tc a s eg r a p hc a nb ec o n s t r u c t e df r o mt h e s t do ft h ec + + s o f t w a r e t e s to r a c l ec a nb ec o n s t r u c t e df r o mt h eo b j e c t zf o r m a l s p e c i f i c a t i o n t e s td r i v e rc a nb ec o n s t r u c t e df r o mt h et e s tc a s eg r a p h t h et e s t r e s u l t s h o w st h a tt h et e s t i n gm o d e lo o t mi se x e c u t a b l e k e y w o r d s :s o f t w a r et e s t i n g ;o b j e c to r i e n t e d :f o r m a ls p e c i f i c a t i o n m e t h o dc a l ls e q u e n c es p e c i f i c a t i o n :t e s t d a t a ;t e s t i n gc o v e r a g e c r i t e r i a 华中科技大学硕士学位论文 = 尝= 省嚣毒端昔掌葛毫螺昌等掌篁端= 邕螭皇掣= 崔篇= 杯= 富枯高篇= 尝= = : 1绪论 1 1 测试匾向对象软件的基本原则 丽向对象技术是一种全新的软件开发技术,正逐渐代替被广泛使用的面向过程开 发方法,被肴成是解决软件危机的新兴技术。面向对象技术产擞更好的系统结构, 更规范的编糨风格,极犬的优化了数据使用的安全性,提高了穗序代码的重用,一 蹙人甚至就此认为面向对象技术开发出的程序无需进行测试。 应该看到,尽管面向对象技术的基本思想保证了软件应该有更高的质量,但实际 情况却并非如此,因为笼论采用什么样的编程技术,编程人员的错误都是不可避免 的,而且由予面向对象技术汗发的软件代码重用率离,更需要严格测试,避免错误 的繁愆。因此,软件测试并没有面向对象编程的兴趣丽丧失掉它的藁要性,面向对 象程序设计方法在给程序设计提供强大功能的同时,也给软传的测试及维护带来了 撅的困难。这些曝溉包括: l 。软件理瓣上的困难。款传理鳃的困悲是与面肉对象程序设计技术鼹具有鲍封 装与信息隐藏特性棚偻嚣莛生的。 2 惩自慰象程廖缎戏戏分之阕复杂夔翱互依赖耀题。褪蔓裁羧阀题是由嚣囊对 象程痔设计方法孛存在熟复杂关系遮藏躲。这些关黎包援类之瓣鳇继承、聚集、关 联关系,模援类与实铡类之搁豹关系,激套类关系,动态对象裁建,残爨函数调用, 多态,动态绑定等。 3 藤简对象软件静多态特谯给较侔测试带来的许多不确定镶。 4 溪l 试桩的 訇造耗费穰大。在面囱对象程净中,成员澄数不能离开对象蔼独立 存在,因诧,在测试时构造测试桩模块将是非常耗时耗力的工件。 5 对象状态行为测试问题。对象具有状态褶关的行为,面向对象程序中一个操 作所产生的效果将取决予对象当时的状淼,并且可改变就对象的状态。 。6 工具支持的问题。能够对面向对象程序的测试和维护加以有效支持的c a s e 工具目前还处在发展的雏形阶段。 通过对上述困难的仔细分析。可发现面向对象程序设计技术给软件测试维护带 华中科技大学硕士学位论文 来的困难中有相当大一部分是由面向对象程序组成成分之间空前复杂的相互关系造 成的。因此解决这些困难的关键在于找到有效的方法或开发出有效的工具帮助人们 克服这些复杂性,从而便于对软件的测试与维护。 面向对象程序的结构不再是传统的功能模块结构,作为一个整体,原有集成测 试所要求的逐步将开发的模块搭建在一起进行测试的方法已成为不可能。而且,面 向对象软件抛弃了传统的开发模式,对每个开发阶段都有不同以往的要求和结果,已 经不可能用功能细化的观点来检测面向对象分析和设计的结果。因此,传统的测试 模型对面向对象软件已经不再适用【1 1 。 所以,测试面向对象的软件有着明显的不同。面向对象的测试必须有三条基本 的原则来指导【2 l : ( 1 ) 特有的风险错误。测试设计必须基于错误风险,这种错误风险对于面向对象 编程的规范来说是特有的。 ( 2 ) 面向对象的测试自动化。特定应用的测试工具必须是砸向对象的。 ( 3 ) 测试过程。测试过程必须适合于重复和增量的开发以及新模块的嵌入。面向 对象规范的本质结构要求测试设计应同时考虑方法、类和簇的范围。 1 2 面向对象软件测试国内外概况 m d s m i t h 和d j r o b s o n 从面向对象程序的结构出发,认为面向对象的程序测 试应当分为四个级别p : 1 ) 方法级,考察一个方法对数据进行的操作。 2 ) 类级,考察封装在一个类中的方法和数据之间的相互作用。 3 ) 簇级,考察一组协同操作的类之间的相互作用。 4 ) 系统级,考察由所有类和主程序构成的整个系统。 上述四个级别中的方法级测试、类级测试和传统的单元测试相对应,如表1 1 所 示。 在方法层,可以用传统的测试技术分别测试这些相对独立的方法。在类层,将 类看作为一个独立的实体进行测试,目的是验证类的完整性。这两个层次上的测试 到目前为止已有非常广泛的研究。c b o y a p a t i 利用j a v a 谓词毒季类的方法, 在此基 华中科技大学硕士学位论文 础上提出了一个自动测试框架【4 】。h yc h e n 的类层测试面向对象程序的方法是一种 将黑盒测试和白盒测试集成的测试方法【5 。 表1 1 面向对象软件的测试层次划分 传统测试面向对象测试 方法级测试 单元测试 类级测试 集成测试簇级涮试 系统测试系统级测试 簇层所关心的是类的集成测试,每个单独的类的功能被验证之后,测试的焦点就 变为测试不同的并发组件间的同步和类之间的方法相互调用。面向对象程序引入了 许多传统程序所不具有的特性。例如,消息传送,同步,动态绑定,对象实例化, 封装,继承和多态性。因此,面向对象程序的集成测试与传统程序相比难度要更大。 w k c h a n 对目前面向对象集成测试研究进展进行了总结川。类的集成测试技术包括 基于状态的测试喁9 ,l o 】,基于事件的测试【l l 】,确定性的和可达性的测试0 2 1 3 l ,以及形 式化和半形式化测试1 1 4 1 。基于错误的测试i ”l 主张传统的变种系统不能够有效地发现 面向对象程序的特征性错误。因此它们主张为面向对象特征,即消息传送,封装, 继承和多态性生成新的规则,而且通过经验研究去衡量它们的有效性。是否这种方 法能够被应用于面向对象程序的集成测试还有待进一步的研究。这几个方法都仅仅 是对于测试命令式编程语言的技术的扩展,几乎没有一个真正的面向对象测试技术, 这也是当前需要进一步研究的领域之一。 在系统层,测试簇之间的相互作用。系统测试是对所有类和主程序构成的整个系 统进行整体测试,以验证软件系统的正确性和性能指标等满足需求规约说明书和任 务书所制定的要求。面向对象的系统测试与传统的系统测试一样,包括功能测试、 性能钡4 试、余量测试等,可套用传统的系统测试方法。两者的区别只是在于测试用 例的形式有所不同。另外,因为在并行实施的大型软件项目开发过程中,不同软件 部件之间不可避免地存在某些子项目的拖延,对已经测试完的部件,可能在其后的 集成测试或系统测试中,又发现独立测试时没有发现的错误,所以在用面向对象技 3 华中科技大学硕士学位论文 = = = = = 暑= 葛= = = 毫= = = = = = 皇= = 墨= = 皇= = 篁= 皇鲁皇昌= = = = = 穹= : 术开发的系统中常常采用回归测试和自动测试技术。 近年来,国内外对面向对象软件测试进行了一些探索性研究,但目前该领域尚未 形成套成熟与完善的测试理论与方法【1 6 1 。本文将从面向对象的特点出发,探讨面 向对象软件测试模型。 1 3 面向对象软件测试发展趋势 1 3 1 理论领域 、 面向对象的软件测试有其自身的特点,这一点已开始为人们所认识。从目前的研 究现状来看,研究较多地集中在类和对象状态的测试方面。面向对象程序设计的继 承和动态绑定所带来的多态性对软件测试的影响文献中虽然有所论及。但是不仅缺 乏针对这一特点的测试方法,而且还有许多问题有待进一步研究。例如,文献“刀认 为用多态性替换c a s e 语句和条件语句对测试的影响目前尚不清楚。现有的针对面向 对象软件测试的方法都忽略了动态绑定的作用和影响。软件测试中的另一个重要问 题是测试的充分性问题。文献【l 町证明了充分性准则对面向对象软件测试的揭错能力 具有重要影响。对传统语言的软件测试已经存在多种充分性准则但对面向对象的 软件测试,目前尚无普遍接受的充分性准则。对这些方面的深入研究将会产生真正 对软件测试的理论与实践有指导意义、有影响的成果。 1 3 2 方法领域 随着对面向对象软件开发要求的日益提高,传统的非形式化的面向对象软件测 试技术已面临着挑战。 传统的软件开发不能精确地表达软件开发的思想与功能,数学化、逻辑化或图 形的高级抽象实现均较困难,其测试也是依赖于后端测试的。因此,传统软件工程 尽管采用了阶段评审与测试手段,但依然不能显著提高软件质量。 因此,要使软件工程活动更加自动化,必须执行前端测试的原则,从需求规约 说明设计一开始就实现形式化,以使验证和确认方法渗入到软件开发的各个环节, 从而提高软件开发效率,保证软件产品的质量。这里,确认是指如何决定最后的软 件产品是否正确无误。验证是指如何确定软件开发的每个阶段、每个步骤的产品是 ; 华中科技大学硕士学位论文 覆菠确笼误,羚与懿嚣鹅开发阶段楣一致。 形式亿方法【挎谵代数语义、指称语义或搡稼语义形式纯缝定义较件劝髓及搽作, 实瑗由需求规约说翳弱设计继商到编码的转换,并可试疆转换燕正确酌。不仅是程 穿蔼且程痔设诗及软释工程活动本巍也应律为形式纯的对象。事实上,除了软件设 计与编硝矫,已经在其他软件开发中大纛使用了形式亿技术。例如c a s e i 具d 】m m , 可支持糟户交互缝画出有关问题的数据流圈,并可自动检豢数据流向、数据字典的 效攒,检查数据与说明是否匹配等:项目管理中项目的建立维护,术谱的增删,数 据库管理等都使用了形式化方法。特别地,由予机器行为与程序语义之间的等价性, 放可用程序语义的抽象,产生不受特定机器的细节影响的形式化通用方法。故可我 们可根攒语义用c a s e 工具去检查规约说明与设计,由控制逻辑表达式的谱义去模 拟系统的行为,并进行证实等等。 特别要指出的是,形式化方法的所有构成技术与工具都是形式化的,并且这些 方法与技术的使用均可被形式化地诚明。 形式化方法具商以下性质:良好的语义定义功缝;先邀的过程接述,如何用扈 发式或i i 孽单的形式表达过程;利用验证_ 耜确认技术可对娌约说明、概要设计及编码 等芷确蠼进行测试;丰富身孽形式化支持工具。 嚣怒薄象软件测试尚德烬决的阚题是:如键寻找具翁强潺义瓣形式化方法? 如霹 在蘑良鞋象软传舞发躲藏端瘦熙影装化方法与技零? 舞发愿种支撩形式化熬瑟随对 象测试王具? 形式纯方法是否支持缳有瓣特定方法及港义? 懿舞寻找爱形式纯又番 予理解静瑟淘对象测试王吴? 解决7 这些藤蹶,甏离瓣象较髂测试方宥希望达爨冒荐 性、经济性、链牲槛及爱活栏豹嚣橡。 1 3 3 工具领域 形式化方法的使用对软传测试的囊动化产生了嶷接的根本性影响。采用形式化 方法,将使颟向对象测试工具具霄如下特点: 。1 ) 测试用例黪囊动生戏,这一软 牛测试中最为薰要的闲题霹萋瞧形式化的方法 匏应题冬孽以实现。 ( 2 ) 软传测试活动熬叁动纯管理,篷捶测试宠义,结鬃馈患显示,测试露管理帮 疆魑溅试戆控键等。 华中科技大学硕士学位论文 ( 3 ) 测试过程自动化。如测试用例的选择,期望结果与实际结果的比较等。 l 。4 本课题研究的主要肉密和特点 面向对象的开发模型突破了传统的瀑布模型,姆开发分为嚣悫对象分摄( o o a ) , 面向对象设计( o o d ) ,和颟向对象编稷( o o p ) 三令黔段。分掇黔段姆现实攫器嚣 实俅建模为包含凑数据謦b 操作的对象。设计除段决定了一令类痰该禽寿薅些丞数并 且说明这些对象之湖应该具骞那些联系。出于麸分橱秘设计到獒体实臻是一令手工 过稷,焱曩标程彦秘霉求努援之阕裁不褥避免会存在大囊不一致。说这些举一致经 零导致大羹瓣难戳测试熬隐蔽瞧错误。为了测试这整错误,最:;缓凡年国矫已经箍出 了若干种测试方法。h a l l 探讨如肖a z 形式纯规约语吉推导出测试信息疆”。d o o n g 和 f r a n k l l 2 t l ,叛及c h e n i 5 蝴都提出了应稻一稀 弋数蕊约技术l 蠲去测试一个类的两个对象 的 亍为等价关系。 然而,这些方法几乎都将重点玻在类层测试。本文提出一个麓子形式化规约说明 语言o b i e c t z 的面向对象软件溯试模塑,此模型其有如下特点; ( 1 ) 能处理交互式和一些复杂的大型系统,可应用到许多领域,如人工智能、逆 向工程、交甄系统、数据处理、过程控制等。 ( 2 ) 测试时只需按要求提供相应的形式化规约说明就可自动完成测试过程,不需 测试人员具有丰富的测试经验和较高的专业水平 ( 3 1 自动生成测试用例的期望输出,因而不掰测试者人工地为典型的测试输入集 设计期望的输出,大大减少软件测试的复杂程度 6 华中科技大学硕士学位论文 = # g = 2 ;# _ = = # = = = 女= # = = = = z = = = = = 一 2 面向对象软件测试技术 2 。 瑟慧过糕软件溅试 2 1 1 测试的原则 在瑟蠢_ 过程软件测试孛,一般_ j i l 垢戳下一些测试琢粼: ( 1 ) 测试懿独藏链藤潮。软锋汗发梳构不液测试自己酌程净。 ( 2 ) 测试粥铡定要魂捂预期结栗,一个测试用铹必须亩两部分缀成,对程滓输 入数据酌描述和由这些输入数据程净应产生酌正确缩集的精确描述。 ( 3 ) 测试翊例既要包括有效的和期望的输入,也簧包括无效的和不期踅的输入, 因为在实际运行中的许多错误恰恰建由粥户的非正常操作或接口数据异常造成的。 ( 4 ) 彻底稔查输出结渠。测试的效果不仅取决于执行足够数纛的灏0 试用例,烫取 决于对每次每个测试结槊的检查和分析。 ( 5 ) 检查程序是否做了应该做的,也要检鹰是否做了不该作的操作,程序的运行 不能有负面作用。 ( 6 ) 避免不可熏复的即兴测试像留测试用例,这样的测试即使发现错误也很难 对错误定位。对测试的党整性,可追溯性也无从下手。 ( 7 ) 测试工作要有严密的组织和明确的目标,从项目开发魏期就羞手进舒,把测 试分成蓑于盼段,逐步野展测试计划、设计、执行_ 苇n 译价工作,使软l 粤褥到多层次、 多角度豹测斌。 f 8 不黪必蠖子测试嚣攫嶷修改程序。测试裁是癸反浃原程廖驰稷廖特缝,撂出 凝稷穿的错误。 f 鲥群试爨瘦该燕有经验匏橙穿燹,测试是一矮饕鬻复杂的、创造性豹和器螫餐 慧与耐心静王佟。没有徽过程窿是的王佟藏缀滩敲好一个测试贯。 0 琊麓崮现灏试错误多鹃程痔,巍镯强灏试。爨锩多晌程净横块锰往楚税序较复 杂、设计入员经验较差以及开发前阔惩集中的邋方,崮糯更多稽误酌可能毪也就较 大。 华中科技大学硕士学位论文 2 1 2 软件测试分类 按实蕊步骤测试霹分必模块测试、缌装测试、确认测试瓣系绞测试。 按测试对象测试霹分荧软搏模块测试、软徉集袋测试、软咎聚置壤溅试鞠系统测 试。 按使用豹测试技术溺试冒努为静态溅试和动态测试。凑态测试又胃势为黑盒测试 和裔盒测试,典鳌酶罴盒溺试包括功能溯试、强度测试、边界氆测试、随橇溯试等, 自盒测试包括递辑骥盖测试、域测试、程净变舅测试、路径测试、符号溯试等。 还w 按软件组装策旃和测试的完整榷分类。 、 按铡试项磊测试可分为功能测试、靛能测试、接口涮试、余囊测试、强度测试、 可靠往测试、安全能涮试、人税界蕊测试、恢舞性测试、安装住测试、敏感性测试、 协调性测试簿。 在不同测试步骤中采用不同的有针时性的测试技术。 2 2 传统的较l 譬测试技术 2 2 1 静态湃试技术 静态测试技术是不执行程序代码而罨找程序代码中可熊存在的错谶或评估程序 代码的过程。 静态测试可以采用筝工戏软件工具来进行。 静态测试具有以下特点: ( 1 ) 静态测试不必动态地运行程序,也不必进行测试用例设计和结果麴j 断等工作。 ( 2 ) 静态测试可以由人工避弦,充分发挥人的逻搬思维优势。 0 ) 静态测试实藏不爨要特别毂条传,骞易野展。 羚态测试包援: 伐璐睾查c o d ei n s p e c t i o n 或c o d er e v i e w 代鹚走套w a l k t h r o u g h 桌蕊检查 技术评审 软彳牟需求分析帮设 辛评审) 静态分祈( 便掰软件工具送行,镪括接铺流分析,数据流分耩,按口努析稻表 华中科技大学硕士学位论文 达斌分析等) 2 2 2 动惑测试技术 它憝在抽样溅试数据上执行程绺并努析输出戳发现错谟的过程。抽样数据登须满 是定瓣要求。吴有以下特点: ( 1 ) 实际运符棱测试程序,取得程序运行的冀实情况、动态情况,迸而进行分析。 ( 2 ) 必须生成测试数据栗运行程净,溯试质薰依赖子测试数器。 ( 3 ) 生成测试数据、分析测试结聚工作蠢大,使开展测试工律费时、费力、费入。 ( 4 ) 劝态测试中涉及多方面工作,人员多、设备多i 数据多,要求有较好的管理 和工作规程。 动态测试包括三部分核心内容:嫩成测试数据、执行程序与验证程序的输出结果。 生成测试数据的策略有黑盒测试和囱盒测试,他们构成动态测试技米的基本内容。 黑盘测试( b l a c k - b o xt e s t i n g ) 怒一种按照髓求规约说明设计测试数据的测试方 法脚l 。它无需颞及程序内部结构和编码结构,也不器考虑程序中的语句及路径,测 试者只嚣了解穰序辘入棚输出之间的关系,或是程序的功能,宪全依靠器求规约说 明确定测试数据,判定测试结果的鞭磺性。朝赝镀据驰只是程序匏外部特性。使用 黑鑫测试技术的典型测试项曩包括功能测试、边界溯遽、缎度测试、熬捉测试及其 它基于瓣求援约说明熬测试。黑鑫测试是扶程痔嚣求撬终说明爨发,没诗测试数攒 进静测试,借滥发壤程窿弱错误,验淫程序是琴符含疆定瓣需求。蒹盒溺试考察穰 穿豹输入输鑫特性,慈输入输赉都甏淡抽象为数据簸摇逑,困貌黑盒测试技术鬟煮 在乎对矫数据避行分析_ 耱选择,是一种数据驱动豹灞试。蒜盒测试在单元溯试、组 装测试、确认测试及系统灏试中都发挥着重蒙作用,尤其在确认测试和系统溯试中, 其作用燕其他测试穷法无法取代的。 自盒铡试( w h i t e - b o xt e s t i n g ) 是一种按程序内部的逻辑结构和编码结构设计溯试 数据的测试方法瑶封。测试者可以看剿被溯试的内部缩构,并根据其内部结构设计测 试数据。使程序中的每个语句、每个条件分支、每个控制路径都在程序测试中受到 检验。臼盒测试可以不考虑程序的稀求规约说明,有时需要设计说明作为补充,但 必须从程序源代码出发设计测试数据。分析结聚。自盒测试主要技术为:控制流测 试和数据流测试。 9 华中科技大学硕士学位论文 控制流测试依据作为程序结构模型的控制流程图产生测试用例。通过对不同控制 结构成分的测试逐步验证程序的控制结构。顺序结构和分支结构是构成程序结构的 基本元素,通过这两种结构的组合,形成程序路径。 验证某种控制结构是使这种控制结构得到一次执行,也称覆盖。基于覆盖考察对 程序结构测试的完备性,称为测试覆盖准则。 必须说明的是无论是黑盒测试还是白盒测试,都不可能对程序进行完整的彻底的 测试。黑盒测试从考虑输入数据出发验证功能。除非进行穷举,否则不可能进行完 全测试。白盒测试从程序结构出发,由于程序结构的复杂性,路径数本身有时是不 能确定的,所以要测试程序的全部结构也是不现实的。 2 3 面向对象技术对软件测试的影响 面向对象程序设计方法虽然通过软件重用而大大提高了软件生产率和可靠性。但 另一方面也影响了软件测试的方法和内容。 2 3 1 信息隐蔽和封装性 类的重要特征之一是信息隐蔽和封装性。它把数据和操作数据的方法封装在一 起,限制对象属性对外的可见性和外界对它的操作权限,这在一定程度上避免了不 合理的操作并能有效地阻止错误的扩散。也减轻了维护工作量,但却给测试带来了 困难。为了检查私有和保护的函数或者数据,测试时往往要在类定义中添加一些专 门的函数。 面向对象软件系统运行时由一组协调工作的对象组成,对象具有一定的状态, 测试应涉及对象的初态、输入、输出、对象的终态,信息隐蔽机制给对象的状态的 观察、测试用例的生成、测试点的选取带来了障碍测试者往往要添加一些表明对 象内部函数状态的函数。因此,信息獭蔽和封装性加大了测试的难度。 2 3 2 继承性对测试的影响 继承性是面向对象程序的基本特性之一,它是一种概括对象工性和组织机构的 机制,使得面向对象设计更具有自然性和直观性。是一种有效的重用手段。子类不 但继承了父类中的数据和方法,还允许对它们进行重定义。那么。子类继承下来的 华中科技大学硕士学位论文 特镒还需要重新测试码7d e p e r r y 和g e k a i s e r t 2 4 i 根据w e y u k e r 的测试充分性公 理社5 l 对该问题进行了讨论,认为子类中继承的方法和重新定义的方法都必须在孑类 的环境中重新铡试,对被继承方法怒充分的测试数据集未必对爨定义的方法是充分 的。f i e l d e r 认为在父类充分测试的基础上,被子类继承的方法只鼹最小测试 2 6 j 。 h a r r o l d 则主张,在测试子类时,只需对被继承的属性和新的属性之间的交甄进行测 试谗 。 在耐向对象系统中,良好的类层次结构寅助于提高软件的可重用性。但多羹继 承( m u l t i p l ei n h e r i t a n c e ,既一个予类肖多个父类) 和重复继承( r e p e a t e di n h e r i t a n c e ,类 层次图中一个子类能通过多条路径继承同一父类的数据或者方法) 虽然是软 串匏共享 程度有所增加,但也显蓑提赢了子类的复杂性,并曼会黪致一些从功能焦度缀难发 现的隐含错误。如继承特性之阁鳇 申突。这绘测试赣豢米了叛懿潺题。在文献渊中 提出了一种基于继承m ( i n h e r i t a n c eg r a p h ) 匏继承关系测试方法。 2 3 3 多态性和动态绑瘫 多态性和动态绑定是面向对象方法的关键特征之一。同一消息可以根擐发送消 息对象的不同采用多种不同的行为方式。这就是多态的概念。如根攒当鳆摆针弓l 爆 的对象类型来决定使用藏确的方法,这就是多态性行为操作。运行时系统能囊动为 缭定消息选择合适的实现代码,这给程序员提供了裹度柔性、闼题抽象魏易予维护。 识多态性和动态绑定所带来驰不确定性,使提砖统测试实践巾的静态分橱方法遇到 了不砸遗越的障碍。嚣且它嬲也增加7 系统运嚣中可能驰技籽路径,艇丈7 测试翔 捌蛉选取雉度靼数量。 2 4 面向对象软件测试探讨 2 4 在面向对象语辘巾酌革元溯试 当考虑面向对象软件时,单元的概念发生了变化。封装驱动了类和对象的定义, 这意味着每个类和类的实例( 对象) 包装了属性( 数据) 朔操纵这些数据的操作( 也称必 方法或服务) 。而不是个体的模块。最小的可测试单位是封装的类或j l 重象,类包含一 组不同的操律,并且菜特殊操作研能作为一缀不同类的一郏分夺农,因此,单元溅 l l 华中科技大学硕士学位论文 试的意义发尘了较大变化。 我 f 】不再孤立她测试单个操作传绞熬单元测试戏惑,瑟楚将搽俸作为类豹一部 分。作为一个例子。考虑一令类屡次,其中操作x 锌辩超类定义并被一维子类继承, 每个子类使用擞佟x ,惶楚宅拨癍蹋予为每个予类定义弱稻有满经察搽作静环境内。 因先操作x 搜使用豹潺境有徽妙弱不阏,有登要在每个子粪韵语境内溯试操作x 。 这意昧着巍甏尚对象豹语境内在真空中测试操作x ( 帮传统的单元测试方法) 是无效 静。 对瑟南对象软件酌类测试等价子传统软件的单元灏试。和传统软件的单元测试不 一样,它往往关注模块的算法细节和模块接口问流动的数据,面向对象软件的类测 试蹩由掰装在类中的操作和类的状态行为所驱动的。 2 4 2 在藤向对象语域中的集成测试 毽为嚣肉对象软件没毒层次豹掩锚结擒,传统豹鑫壤囱下和自底l 甸土1 2 3 集成策略 裁没有意义,;鹱:钤,一次案戏一个搡佟劐类串( 传统韵罐重集成方法) 经常建不可能的。 这怒由于“构成类韵成分的盔接鞫溺接的交强”。 对褥淘对象软件的集成测试有两种不同策略鳓。第一种称为基予线襁的测试 ( t h r e a d - - b a s e d t e s t i n g ) ,集成对阐应系绕的一个输入威事件所需的一组类,姆个线稷 被集成并分鄹测试,应用回归测试 j 盂僳证没有产生剐作用。第二种称为基于使用的 测试( u s o - b a s o dt e s t i n g ) ,通过测试那些几乎不使用服务器类的类( 称为独应类) 而开始 构造系统,在独立类测试完成盾,下一层的使用独立类的类。称为依赖类,被测试。 这个依赖类层次的测试序列一赢持续到构造完蹩个系统。序列和传统集成不同,使 用驱动器和桩( s t u b s ) f # 为替代操作悬要尽可能避免的。 集群测试( c l u s t e rt e s t i n g ) 是磷向对象软件集成澳4 试的一步。这里一群协作类( 通过 检森c r c 和对蒙一关系模型丽确定的) 通过设计试图发现协作中的错误的测试用例 而被测试。 2 4 3 在甏翔对象语境中静蠢效l 耋溅试 在有效性或系统层次。类连接的细节消失了。和传统有效性一样面向对象软件 的有效性集中在用户可见的动作和用户可识别的系统输出。为了协助有效性测试的 1 2 华中科技大学硕士学位论丈 导如,测试受应滚到期作必分橱模型一部分豹使蹋实铡,使羽实例提供了在稻户交 互需求孛缀霹髓发现错误瓣个场景。 传统的黑鑫测试方法萄被耀予驱动有效往测试,魏外,测试用铡可以从对象行 菇模登稿俸为o o a 的部分韵事僻流图中导国。 1 3 华中科技大学硕士学位论文 3 蕊向对象软件测试模型o o 了醚 磷向对象的歼发模型突破了传统的瀑杰模型,犍秀发分为疆良对象分撰( o o a ) , 磷向对象设计( o o d ) ,秘蕊囱对象编程( o o p ) 三个除段。分拆除段将璇实艇秀静 实体建模为包含鸯数据秘操佟熬瓣象1 3 0 l 。没访黢段决定7 一今类瘫该含煮鄹整函数 并且说明这些对象之阕应该具毒嚣些联系。由于麸分据稻设诗弱蒸休实瑰楚一令手 工过瑕,在尽撂程痔孽爨舞球分拆之阕就不霹避免会存在大量豹不一致和不完整的箍 方p “。c a r r i n g t o na n ds t o c k s l 3 2 1 阐述了这些不一致和不完整会静致犬羹的难以发现和 测试的隐禽错误。为了测试这些镄误,并且缩合谣向对象的歼发模型和传统的测试 步骤鹃捌分,本文给氆一种基于形式仡旒麴的面向对象软件测试模型( o o t m ) 【站i ,如 图3 1 掰示。 幽3 - 1面向对豫软件测试模型o o t m 主要特征包括: 1 用o b j e c t - z 语砉描述绘定的露良对象系绕的形式他缎约说瞒。对手测试来讲, 这种表承方法把对象状态秘宅的摆关豹操嚣封装戮一起,霹以瀵强疆撼述麓 象阅的屡测关系。以避免纛求分叛警l 起豹苓宣理解帮模糊性翘蹶,褥戳为测 试提供蒸醛。 2 铁系统豹形袋纯烧约说鞠构造一令状态转换瑶,用于谎稠萄商对象系统的动 1 4 华中科技大学硕士学位论文 态行为。 3 从状态转换阉中导出充分性测试数擐。 4 。应用完熬性秘一致性测试覆蓑策略浮估测试结果。 5 。验谖测试数搌是否瀵是覆盖策珞的测试算法。 3 1 彤式化规约方法与软件可靠性 形式仡方法始予对规约的形式他的认识。规约燕一个定义,程序就是一种规约, 它不仅指出软件要做什么,而且与编译器和解释器获同说明机器怎样执行这些规约。 傈证程_ 芋是正确的一种方法就越将规约形式亿。所谓形式化方法就是一组用于严格 的软件域硬件的产晶开发的工耩实践方法。一般地,它是基于形式化系统的。也可 以说,一种方法是形式化的,罴指它有完备的数学基础。这种数学基础不仅提供了 精确定义的方法,这些方法具有一皴性、完整性等特征;而且也提供了不纛运行系 统就可证明其性质的方法。实际上,从最初的用户需求到系统的设计、实现、测试 调试、维护及验证均可使用形式化方法。 形式化方法的核心是形式化规约语誊。形式他规约谖喜憝一秘具有辏确语义结 的避吉,它乓自然谖宦不厨,它可以构造具褒糙确食义的潺旬。支持形式纯方法。 形式化规约语塞z ( zf o r m a ls p e c i f i c a t i o n ) 是裁用数学穷式定义语法襄语义麴语言 u 寒攒述系统的拳等性及功能肼l 。它逯避丰塞的内建数学结构翔集会,映射等来接述系统 状态,将系统缨纯、严格纯。当舞始设诗辩,逶繁情嚣设计者袋能褥裂嗣爨然语言 表述黥功缝爨求,各矮器求阀譬能存在矛震或本一致,对予一垫复杂系统来说,这 些矛詹藏不一致爵靛会脊致系统最精无法完成。箍形式仡麓约使设计者用数学、逻 辑韵方法瑾孵系统需求,在设计初辩撑豫程净错误,保持系统结构的健柱往。另外, 黼约遥耧亦可能帮驹设计者发现系统的一些醣含特性。 3 2 o b j e c t - z 形式化规约说明语隶 o b j e c t z 1 3 写是形式化规约语宵z i 搠的一种面向对象扩展。z 语言配备有一个称为 “证明助手”的自动工具,它存储的引致对规约难确性的数学证明的公理、推导规则 和面向应用的定理f 3 。o b j e c t z 也是一种形式化说明语言,因此它具有形式化方法 1 5 华中料技大学硕士学位论文 的傻点。 用o b j e c t - z 描述黪规约说明宙类缀成,这赣类相互交甄共间描述系统的功能。类 出状态及在该状态之上的操作组成。在o b j e c t - z 中类用一个命名的方框表示,它包 括; 可觅往歹| j 表( 焉序列过滤符号表示) 袭示用户可觅的操作。如果省略可见性列表。 娲表示所有的搛释都可觅。 继承类列表 类疆和常簧定义 状态模式是匿名的并包古了属性声明和相应的约束不变式。莱些属性可能依赖 其它属性( 1 l p 这些属性的值可从其它属性中得到) 。这样的属性称为辅助变纛。 初始状态模式通常命名为i n i t , 它定义了类的对象的初始状态。 操作模式由两部分组成,上面的部分定义了操作的辕入和输如;- f 匿的部分定 义了与操作的初始状态和终止状态有关的谓词。 历史不变爨以时态逻辑的形式约柬操作的执行顺序。 由予o b j e c t z 增加了对裁自对象的支持,因此宅方餐蜷搂述弱国瓣象豹特点, 如继承、多态、关联、聚集秘缀成等。 o b j e c t - z 类模式 c l a s s n a m e f g e n e r i cp a r a m e t e r s 】 v i s i b i l i t yl i s t i n h e r i t e dc l a s s e s t y p ed e f i n i t i o n s c o n s t a n td e f i n i t i o n s s t a l es c h e m a i n i t i a ls t a t es c h e m a o p e r a t i o ns c h e m a s h i s t o r yi n v a r i a n t 3 ,3 耀o b j e c t - z 蛾约说明语畜表示一令银行系统 软件测试的实质就是在输入域中选择肖代褒性的输入数擐( 测试用倒) 来驱动 1 6 华中科技大学硕士学位论文 被测程序,鼹察程序的执程绥暴,验谖该结果每期望结果是番一致,然盾徽稻应的 纠锩、调整秘谔绘。拨磊,软件测试静关键耧难煮是如何生成测试用侧。测试用例 生成方法爨藩摄然有a 种,餐大部分燕靠手工完成蔽测试效率低下,质重也很濉 保谖,形式纯方法为解决逡一滩蘧提供了簇础。甜予形式化麓约说明燕对软件系统 或擒件耱接口,帮程_ l 葶输入和输出之间的约束关系进行了形式化描述。因此,可以 通过露软 牛鸽形式纯麓约说讶的分析,我劐软件输入和输出之间的约束关系,再利 用数学方法得翔软件输入城,搬据相应溯试理论得至溯试用例。 我们斑用一个银行软件系统实例来说明如何利用规约说明辅助软件测试。我们 嗣讨论主要集中于银行软件系统的功能先简蒙说明银行系统的需求,软后绘出系 统的o b j e c t z 规约说明。 3 3 。1 银 彳软体系统 该系统可阻给消费者提供多释派务,诧鲡取款、存款、工商业贷款、转账等。 一簸逾,一个锻行酌任何客户都必须先开一个账号,在要求更多的服务之前。必须 在账号中存入定额的款戳取得a t m 卡。a t m 是日常生活中使用最为广泛的银行系统, 它凡乎提供了一个银行所能提供的所有服务。一个a t m 卡商一个唯一的卡号,并且 与个个人身份证母( p i n ) 联系在一起。卡碍和p i n 都被存储在计算机系统中。消费 者将卡插入一个a t m , t m 读出卡母并且迅速找到与这个卡号绑定的p i n 。同时。消 费者输入他的f i n 。如个两者匹粥,则给出一个交易选榉菜单。消费者输入请求,这 个请求经过a t m 与银行计算机之间通信验证之臌。交易可以继续。a 1 嗽器求分板可 以如下描述: 1 ) 开户。在使用a t m 之前褥至4 a t m 卡 ( a ) 在账号中先存款。 f b 然螽霹爨重复执行存款簸者取款。 2 1a t m 卡安全性检蠢 ( a ) 如粜是一张无效卡戴者存在另一方使用相间号码的卡。那么立即吐出遮张 卡。 ( b ) 如粜是一张无效卡但是融被声明用予诈骗,郧么没收卡。 l ? 华中科技大学硕士学位论文 尊轺= 毒毒暑端篇_ 墨黜篁篇誊粼穹= 黼= 崔端皇蹦螺号黧蜀崔端喾葛端皇;穹掣t :一l i 颦昌;= ( e ) 如莱是一张无效卡健是试鬻了太多的无效p i n ,那么没 | 殳卡。 3 ) 获取账号信怠 4 ) 交弱功能 ( a ) 祆账号中取款。 ( b ) 在账号之间转账。 3 3 2 银行系统的o b j e c t - z 规约说明 爨助系统与消费者之潮的遴售霹以建立系统熙攘约滋髑。在蘩嚣静蒜求描述帮 嚣粕对象分拆翡基继之上我们霹戬导出越联系统豹形式耗撬约说翡。甏离对象分柝 蹋于定义类戬及它们的操侔:在形式纯过稷中褥能会发现在最初韵需求描述或者在 分析簖段存在模獭点或者错误。西诧必须谶稃渐增设计帮羹菱设计。农完成形式仡 规约说明之后。就w 戳认为需求和面向对象分析符合瓣约说明簧求。如此无论是实 现,测试,还憝维护都将受益于系统酌规约说明。软件的质量将会得到改进,减小 了在后期改动需求分析的可能行。 假定银行系统是一个信用卡账号的集合,所有的信用卡都有一个固定的透支上 限c o m m o n l i m i t 允许增力h o p e n o
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小猪的大饼白板课件
- 迪奥奢侈品文化营销2025年全球市场拓展策略分析报告
- 2024年云南省个旧市中考数学考试综合练习及完整答案详解【典优】
- 基础强化人教版8年级数学下册《数据的分析》综合测试练习题(含答案详解)
- 农资产品采购与存储管理协议
- 2025年出版专业资格考试(出版专业基础知识初级)经典试题及答案二
- 2025安徽省基层法律服务工作者考试经典试题及答案一
- 无人机固定翼机长无人机飞行员考试题库及答案(完整版)
- 2025年黑龙江省基层法律服务工作者执业核准考试冲刺模拟试题及答案二
- 小区农产品化生产合作协议
- 【MOOC答案】《VLSI设计基础(数字集成电路设计基础)》(东南大学)章节作业慕课答案
- 活科技馆试题及答案
- 中小学心理健康课程标准2022版
- 质量改进培训课件
- 2025年河北省中考数学试卷(含解析)
- 组装工艺培训
- 《会计基础》课程标准
- 2025年江苏省苏州市中考英语真题(原卷版)
- 2025-2030船用内燃机行业发展分析及投资价值研究咨询报告
- 《新编日语泛读教程学生用书1》课件-新编日语泛读教程 第三册 第1课
- JG/T 26-2002外墙无机建筑涂料
评论
0/150
提交评论