(计算机软件与理论专业论文)基于objectz规格说明的测试用例生成方法研究.pdf_第1页
(计算机软件与理论专业论文)基于objectz规格说明的测试用例生成方法研究.pdf_第2页
(计算机软件与理论专业论文)基于objectz规格说明的测试用例生成方法研究.pdf_第3页
(计算机软件与理论专业论文)基于objectz规格说明的测试用例生成方法研究.pdf_第4页
(计算机软件与理论专业论文)基于objectz规格说明的测试用例生成方法研究.pdf_第5页
已阅读5页,还剩79页未读 继续免费阅读

(计算机软件与理论专业论文)基于objectz规格说明的测试用例生成方法研究.pdf.pdf 免费下载

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

文档简介

上海大学硕士学位论文 摘要 随着信息技术的发展,软件规模不断扩大,而且越来越复杂,如何保证和提 高软件质量成为软件界最为关心的问题之一。软件测试作为保证软件质量的关键 技术,能够有效地发现软件中的故障。对于某些安全关键的软件,其测试费用是 所有其它软件工程阶段费用总和的三到五倍。因而,提高软件测试的有效性和测 试效率、降低软件开发成本己成为软件工程师迫切需要解决的任务之一。 测试用例的好坏直接影响软件测试的效果。根据测试用例产生的依据可以将 软件测试分为白盒测试和黑盒测试,从规格说明产生测试用例的方法称为黑盒测 试。形式的软件规格说明具有精确的符号表示和清晰的语义,能够进行推理和证 明,同时也便于工具的处理。因此,用形式的规格说明作为测试用例的来源将会 使得测试用例的自动构造成为可能。 目前基于o b j e c t z 的形式规格说明构造测试用例的研究主要集中在理论研 究阶段,测试用例的自动生成几乎没有相应的工具支持,这主要是因为o b e c t - z 是基于数学和逻辑的语言,比较难以提取其中表达式的语义,这就难以自动产生 测试用例。本文研究从o b j e m z 规格说明产生测试用例的自动化过程,这一过程 主要包含三个阶段:o b j e c t z 语言的自动解析、语义自动抽取和测试用例自动产 生。 本文针对操作模式中使用的调用模式提出了产生测试用例的方法和若干测 试准则,该方法能够验证代码中的函数是否正确地调用了其他类的函数。 本文对o b j e c t z 语言的部分文法进行了改进,以减少自动解析时的冲突,提 出并完善了用于从o b j e c t z 图形与数学符号结合的语言转换成易于计算机处理 的纯文本l a 凡x 语言的方法,并构造了相应的文法来解析用o b i e 髓z 编写的规 格说明,生成语法树,根据语法树可以提取出相关语义。为了人们方便地编写和 阅读规格说明,o b j e c t z 语言使用了大量的模式复合和简写形式,这给计算机提 取完整语义自动产生测试用例造成了困难,因此本文还给出了还原完整语义的方 法。 本文实现了提取规格说明中操作模式前置条件的方法,并分离出文字集及它 们之间的逻辑关系。本文实现了产生符合组合测试准则和一系列调用测试准则的 测试用例的方法。通过本文所提供的软件开发平台,可以很容易得到规格说明中 存在的各种语义,方便地实现基于测试准则自动产生测试用例的工具。 关键字:基于规格说明的软件测试、o b i e c t z 、i 盈t e x 、语法解析、语义提取、 测试用例生成,调用模式测试准则 上海大学硕士学位论文 a b s t r a c t w i t ht 1 1 ed e v e l o p m e n to fi i l f o m a t i o nt e c i u l i q u e ,t h es o r w a r eg r o w sl a 玛e r 舡l d l a r g m o r e 粕dm o r ec o m p l i c a t c d h o wt 0 刨塌曲n t e e 锄di i l l p r 0 v em es o 脚a r e q u a l i t yb e c o m e st l l em a mc o n c 锄c dp o i n ti n 廿l ef i e l d a sm ek e yt e c h j l i q u eo f 9 1 1 a r a n t e e i n gs o r w a r eq u a l i t y ,s o f t v 矿a r et e s t i i l gc 锄e 行e c t i v e l yd e t e c tm ef a u l t si i lt h e s y s t e m f o rs o m es a f 矾yc r i t i c a ls y s t e m ,m ec o s to ft 铺t i n ga h o s tc o r 陀s p o n d st 0m e t r i p l e0 rq u i n t i j p l ec o s to fa l lo t l l c rd e v e l o p i n gp h 鹊e 。1 h u s ,i m p r o v i n gm ee 彘c ta n d e m c i e n c yo ft e s t i n ga i l d 础c i n gt l l es o f h v a r ed c 、,e l o p i n gc o s tb e c o m 鹪o i l eo fm e u r g e n tta s _ k sf 0 rs o r w a r e 西n e e r s t h ec o r ep r o b l e mo fs o f t w a r et 船t i n gi st e s tc a s e sg e l l e r a t i o n a c c o r d i n gt 0 l e s o u r c em a ti sl i s e dt 0d 甜v et e s tc a s e s ,s o m v a r et e s t i i l gi sd a s s i f i e di n t o 协,0 c a t e 9 0 r i e s w 1 l i t e - b o xt 鹤t i n ga n db 1 a c k - b o xt e s t i n g s i n c ef o n i l a ls p e c i f i c a t i o n s p o s s e s sp r e c i s en o t a t i o n sa i l dc l e 盯s e m a n t i c s ,a r l dc a nb eu s e d i i lr e a s o n i n ga r l d p r o v i i 培,t 矗i ( i n gf o 肌a 1s p e c i f i c a t i o n s 嬲m es o u r c eo fg e i l e r a t i i 培t e s t i n gc a s e sm a l c e s a u t o m a t i ct e s tc a s c sg e n e r a t i o np o s s i b l e h o w e v m o s tr 懿e a r c ho fo b j e c t - zl a n g u a g es p e c i f i c a t i o nb a l s e dt e s t c a s e s g e n e 叫o nf o c u s e so nm e o r y t h e r ei sa h n o s tn ot o o lt os u p p o r tt og m e r a t et e s tc 嬲e s a u t o m a t i c a l l y t h em a i nr e a s o ni sm a t 1 eo b j e c t zi sal a i l g u a g ew i t l ll o 酉c sa r l d m a t l l 锄a t i c ss y m b 0 1 si nc o m b m a t i o n 觚de x 仃a c t i n gs e m 姐t i c s 缸 ms p e c i f i c a t i o ni s t o od i 伍c u l t ) ,t og e i l e r a t et e s tc a s e sa u t o m a t i c a l l y t h ep a p e rp r o 访d e sas 0 1 u t i o nt 0 a u t o m a t i cp r o c e s so fg e n e r a t i n gt e s tc 硒e s 丘o mo b j e zs p e c i f i c a t i o n t h ep r o c e s s i n c l u d e sm r e es t 印st l l a t 黜p a r s i n go b j e c t zl a i l g u a g ea u t o m a t i c a l l y ,e x 昀c t i n g s e i l l 觚t i c sa u t o m a t i c a l l y 觚dg e n e r a t i i 培t e s tc 嬲嚣a u t o m a t i c a l l y 1 1 l i sp 印e rp r o v i d e sam e t h o dt 0g e n e r a t et 懿tc 嬲e sm a tc a l lv a l i d a t ew h e m e r m 甜1 0 d si 1 1t l l ec l a s s e sc a l lm e m o d si i lo t l l e rc l a s s e si i lr i g h tw a y 自o ms p e c i f i c a t i o n w i t l lo p 耐i o np r o m o t i o i l si i lo p e r a t i o ns c h e m 嬲,觚da l s o 西v e ss o m et e s tc 0 v e r a g e 嘶t 耐as i m u l t a i l e o u s l y n i i sp 印e rm o d i 丘e saf e w 伊觚l l i l a ro fo b j e c t zt 0d e c r e 鹊ec o n f l i c t si 1 1p a r s e , a n dp r o v i d e sa i l dc o n s u 衄a t e st l l et e c h n i q u e 廿l a t 扛a 1 1 s l a t i n gm eo b j e c t - zl a l l g u a g c w i m 蓼a p 椅c sa i l dm a m e m a t i c ss 弘n b o l si 1 1c o n l b i n a t i o ni n t ot l l el a t e xw i mp l a i nt e x t m o d e lt l l a ti se a s yt ob ed e a l tb yc o m p u t 既i ta l s od e f i n c sm e 孕锄m a rt op a r s e rm e s p e c i 6 c 撕o ni nl d t e xm o d e la r l dg e n c r a t e 黟锄_ l i l l a rt 1 e e 舶mw m c hw e c a i le x 饿l c t s 锄a n t i c s t or e a da n du 1 1 d e r s t 锄ds p e c m c a t i o ne 捌l yf o rp e o p l e ,t l l eo b j e c t - z 上海大学硕士学位论文 l a n 目l a g eu s e sm 舡l ym e t :h o d st 0i i n p l e m e n ts c h e m 嬲c 0 m p o u n da i l da b b r c “a t i o n n i 1 1 c r e 硒骼d i m c u l t yt 0e x t r a 魄i r l t e 刚e ds e m 锄t i c s a r l d g e r 磁a t et e s tc a s 骼f o r c 0 m p u t 既s u c h ,m ep 印e rp r 0 讥d e sa m e m o dt 0r e w 虮t 0i n t e g r a t e ds e m 锄t i c s i l lt l l e 缸a lc h a p t e ro ft l l ep a p i ta l s 0i i n p l e m e n t sm em “h o dt 0 e x t r a c t p r e c 0 i l d i t i o i l s 自o mo p e r a t i o nsc _ h e m 鹊a n ds 印a r a t e1 i t e r a ls e t sw i t l l1 0 西c a lr e l a t i o 璐 丘d mp r e c 0 n d i t i o i l s t h ep 印e ri m p l e m t sg 胁e r a t i i 培a b s 舰c tt e s tc 嬲e sm a ta c c o r d w i mc o m b i n a t i o n a lc o v e r a g ea n das 耐e so fp r l 瑚o t i o nc o v e r a g e s 舶m 叩e r a t i o i l si 1 1 s p e c i f i c a t i o n sa u t o m a t i c a l l y at 0 吐l cs o f t w a r ed c v e l o p m e n tp l a t f o n nt l l i sp 印e r p r o d e s ,i ti se 弱yt o0 b t a i na l ls e m 锄t i c si n 也es p e c i f i c a t i o na r l dd e v e l o pn e wt o o l s f o r 誉m e r a t i n gt e s tc a s e sb a s e do nn e wt e s tc r i t e r i a k e y w o r d :s p e c i f i c a t i o nb 硒e ds o 脚a r et 骼t i n g ,o b j e c t z ,l a t e x ,伊锄m a rp a r s i n 岛 s e m a n t i c se x t r a c t i o n ,g e i l 酬i n gt e s tc a s e s ,pr o 【n o t i o nc o v e r a g ec r i t 舐o n i i i 上海大学硕士学位论文 原创性声明 本人声明:所呈交的论文是本人在导师指导下进行的研究工作。 除了文中特别加以标注和致谢的地方外,论文中不包含其他入已发表 或撰写过的研究成果。参与圊一工作的其他同志对本研究所做的任何 贡献均已在论文中作了明确的说明并表示了谢意。 签名:绷垒垒遮日期:竺墨:三:, 本论文使用授权说明 本人完全了解上海大学有关保留、使用学位论文的规定,即:学 校有权保留论文及送交论文复印件,允许论文被查阅和借阅;学校可 以公布论文的全部或部分内容。 ( 保密的论文在解密后应遵守此规定) 签名:苎盐墨查遮导师签名:鲣日期 :肿3 f , 上海大学硕士学位论文 1 1 研究背景 第一章绪论 在日常生活中,计算机软件提供的服务越来越多也越来越重要。同时,对计 算机软件的依赖性也越来越高。高质量的软件可以提供高效、快捷的服务。而有 问题的软件不仅影响服务的质量,甚至威胁生命。对于某些关键领域,如医疗、 航天、武器等,软件正确性必须得到充分的保证,否则它所带来的危害将是难以 估量的。一个错误足以导致数亿元的损失,数十万人的死亡。因此,如何保证软 件质量以及如何最大限度地提高软件质量使软件工程师面临严峻的挑战。 从2 0 世纪7 0 年代以来,软件测试作为保证软件质量的重要手段逐渐受到人 们的重视,也出现了很多有关软件测试的理论和实践方法。软件测试的保证作用 如下: 核实软件的所有需求是否都已正确实施; 核实软件的所有构件是否都正确集成; 核实每个对象内部的交互是否正确: 确定缺陷并保证在部署软件之前将缺陷解决。 为了达到软件正确的目标,软件必须被充分测试,以减少存在的错误,软件 测试被包含在从最上层的需求分析到最底层的编码的所有软件过程中。软件测试 过程遵循图1 1 所示的v 字型测试流程。 图1 - l 软件测试过程的v 模型 从该模型可见:只有当前一个测试阶段结束后才可以进入下一个测试阶段。 不同层次的测试所能发现的错误是不同的,因此,很难通过高层的测试来发现底 层的问题,也很难通过底层的测试发现高层的问题。这就要求在做某一层测试时, 需根据该层的特点,运用好的测试准则,以便高效地发现该层存在的问题。 位于v 字底端的单元测试针对的是最底层独立单元,如结构化程序的函数和 面向对象中的类。本文探讨的就是如何提高最底层单元的可靠性,具体到面向对 薯警 概一 上海大学硕士学位论文 象领域就是如何进行单元测试以提高各个类的可靠性。 j b g o o d e n o u g h 和s l g e r h a r t 4 1 在1 9 7 5 年率先提出了软件测试的理论,测 试除了要考虑正确性以井,还应关心程序的效率、健壮褴等因素,而且应该为程 序调试提供更多的信息,并概括了如图1 2 所示的软件测试组成。 测试 卜_ 角 理论课题路径制导 符号执行 图1 2 软侮测试鲍缀成 由图1 2 可见,可接受性测试是软件测试的一个重要方面。可接受性测试最 先关心的是软件的正确性问题,如果要保证软件的正确性需要采用证明的方法。 软件测试并不能保证程序中没有错误,而只是通过找出程序中的错误来增加对软 件质量的信心。本文主要研究如何产生测试用例去检查软件是否存在错误。 基于这种观点,软件测试的关键是设计可以判定测试用侧集合是否充分的准 则。所谓测试充分性准则( 又称测试覆盖准则或测试准则,t e s ta d c q u a c yc r i t 喇a ) 是指导测试人员高效地发现软件错误的测试焉铡的规则,它同时也是测试餍例产 生过程中的停机规则。 测试用例一般包含测试输入数据和预期结果,测试输入数据是指测试某组代 码需要输入的数据,而预期结采是指对于输入数据,该组代码预期会输出的结果。 为了检验开发完成的软件能否符合规格说明书的要求,测试活动可以用各种 不同的策略。这些策略的区别在于它们基子不同的出发点、沿着不同的思路以及 采用不同的手段和方法。比如静态方法与动态方法、黑盒测试与白盒测试、随机 测试与穷举测试、测试步骤( 单元测试、集成测试、确认测试与系统测试) 、自 顶向下测试与自底向上测试、累进测试与非累进测试、以及人工测试等。 1 2 软件测试方法及其分类 基于缺陷的测试准则根据错误的类型来产生测试用铡。其中,交异测试的准 则是在基于缺陷的测试中经常使用的准则。所谓一个程序的变异是指对源程序作 微小的改动后形成的程序。基于变异的程序测试通常用测试用例集能够检测出的 变异的数霸来评估测试用例集的充分性。 基于错误的测试要求测试用例能够检查程序容易出错的位置。常见的基于错 2 上海大学硕士学位论文 误的测试充分性准则包括域测试准则和基于规格说明的等价划分测试准则。 根据产生测试用例的方法分白盒测试和黑盒测试两种。根据代码产生测试用 例的方法叫白盒测试,基于白盒测试的准则主要有:语句覆盖、判定覆盖、路径 覆盖、多条件覆盖和数据流测试准则等。而根据规格说明产生测试用例的方法叫 黑盒测试,黑盒测试主要的方法有:等价类划分、边值分析、错误猜测等。 1 2 1 白盒测试 白盒测试( w k t e - b o xt e s t i i l g ) 又称结构测试、逻辑驱动测试或基于程序的测试 ( p r 0 舭n - b a s c dt e s t i i l 蓟。通过分析程序的内部构造,并根据这些内部构造设计测 试用例,测试者可以完全不顾程序的功能,所以也被称为透明盒或玻璃盒测试。 采用这一测试方法,测试者可以看到被测的源程序,从理论上讲它只涉及被测源 程序,但实际上有时也会用到设计信息。白盒测试要求对某些程序的结构特性做 到一定程度的覆盖,即“基于覆盖的测试( c o v e r a g e - b a s e dt e s t i n g ) 。这是从早 期所谓“测试整个程序的概念发展而来的。通过测试覆盖率的度量,可以减少 测试的盲目性,并引导我们朝着提高覆盖率的方向努力,从而找出那些已被忽视 的程序错误。 白盒测试的程序结构覆盖方法主要有语句覆盖、判定覆盖、路径覆盖、多条 件覆盖和数据流测试准则等。最为常见的是语句覆盖,它要求被测程序的每一可 执行语句至少执行一次,这是最弱的逻辑覆盖准则:进一步的覆盖要求程序中所 有判定的两个分支都得到检验,即分支覆盖或判定覆盖;当判定式含有多个条件 时,可以要求每个条件的取值均得到检验,即多条件覆盖;同时考虑条件的组合 值和判定结果的检验被称为判定条件覆盖;只考虑对程序路径的全面检验时, 可使用路径覆盖;根据数据的使用和定义的路径,每个数据的每条定义使用路 径至少执行一次的测试为数据流测试。 我们以一个顺序查找的程序为例,说明白盒测试的几种测试准则。顺序查找 的c + + 代码实现如下。 b 0 0 1f i n d ( i n ti t o f i n d ) b o o lb f o u r l d = f a l s e ; f o r ( s i ze _ 一ti = o ;i b u 丑硫s i z e o - 1 ;i + + ) i f ( b u 脑 i 】一i t o f i n d ) ( b f o u l l d = 觚e ; b r e a l 【; 3 上海大学硕士学位论文 ) 咖b f o u n d ; ) 图2 1 是上述代码的流程图( a ) 和路径图( b ) 。 o 图2 1f i n d 的流程图和路径图 语句覆盖:每一条语句至少执行一次。根据该测试准则可产生测试用例: l ,2 ,3 ,4 ,5 ,3 ,6 l ,2 ,7 判定覆盖:每个判定的每个分支至少执行一次。根据该测试准则可产生测试 用例: 1 ,2 ,3 ,4 ,5 ,3 ,6 1 ,2 ,7 条件覆盖:每个判定的每个条件应取到各种可能的值。条件组合覆盖:每个 判定中各条件的每一种组合至少出现一次。因为本例中的判定条件比较简单,都 只包含一个判定条件,因此与判定覆盖测试准则产生的测试用例一样。 路径覆盖是程序中每一条可能的路径至少执行一次。穷举所有的执行路径是 不可能的,因此有多种定义路径的方法,如控制流,数据流等。数据定义使用测 试准则( a 1 1 - d u - p a t hc o v c r a g et e s t i n g ) 是其中一种,它的定义为:每一个变量从 定义到使用的无环或包含简单环的路径至少被执行一次。根据该测试准则可产生 测试用例: l ,2 ,7 1 ,2 ,3 ,4 ,5 ,7 4 上海大学硕士学位论文 l ,2 ,3 ,6 1 ,2 ,3 ,4 5 ,3 ,6 1 2 2 黑盒测试 黑盒测试( b l a c k _ b o xt e s t m 曲又称功能测试、数据驱动测试或基于规格说明的 测试( s p e c i 6 c a t i o n - b a s e dt e s t i n 曲。主要应用在单元测试、集成测试和系统测试中, 可以用来确保“程序正确地实现了其需求 。用这种方法进行测试时,被测程序 被视为打不开的黑盒,测试者无法了解其内部构造,只知道该程序输入和输出之 闻的关系,酃是程序豹功能。在完全不考虑程序蠹部结构和内部特性的情况下。 测试者依靠能够反映程序功能的需求规格说明书确定测试用例,推断测试结果的 正确性。此时,测试者的依据只能是程序的外部特性。黑盒测试是基于用户角度 的测试。基于规格说明的黑盒测试还为测试用例的重用提供了可能。它改变了“现 在编程,以后测试的工作方式,在整个软件生命周期中都可以并行地进行测试 工作,从而极大地提高了软件测试的效率。 形式方法是一门基于数学方法的描述目标软件系统性质的技术。它用严格的 数学符号和数学法则对霉标软件系统的结构与行为进行有效的综合、分析和推理 【1 1 。形式规格说明语言提供了一种精确的、一致的、易于被机器处理的符号来描 述软件需求规格说明,这使囊动产生测试用例成为可能,所以基于规格说明的测 试主要以形式规格说明作为产生测试用例的基础。这里所讨论的黑盒测试就是基 于形式规格说明的。目前用于描述软件规格说明的形式语言主要有:z ,o b j e z , m ,b 等。o 毯e c t z 是z 语言的扩展,使得o b j e 略z 增加了面向对象的封装和 继承的描述能力。 投据所采用的形式规格说隳语言的不同,基于规格说舞的软俘测试又可分为 基于模型规格说明的软件测试、基于代数规格说明的软件测试和基于有限状态机 的软件测试。 1 ) 基于模型规格说明的软件测试 模型规格说明通过一组逻辑谓词及其相关的状态变量来描述软件需求规格 说舞。基予模型规格说明的软彳孛测试已有不少研究成果。 ( 1 ) d i c k 和f a i w e 【1 2 】给出了一种根据v d m 规格说明产生测试用例的方法。 这种方法从规格说锈中抽取蹬每个操俸的前、霖置条件,随后将这些条件谓词转 化成析取范式,再对析取范式中的每个文字求解,所得到的结果就是最后的测试 用例。 ( 2 ) s t o c k s 1 习给出了一个从z 规格说明产生测试用例的框架,该框架主要用 来形式测试规格说明和单元测试过程,整合了测试用例的推导过程和测试用例的 5 上海大学硕士学位论文 形式描述。【2 5 捌,p 砌a m m a n n 【3 1 瞎给出了从z 产生测试用例的方法和测试准 则。 0 ) h i e l l s f l 辑给出了一个欲z 觏格说翡产生有限状态枧的方法,得到的有限 状态机可以用来控制测试过程。 h ) 0 熙磁和“0 1 9 】给出了钛s 铡l 形式规格说甓产生测试用例的详细步骤, 并通过具体的实例详细说明测试用例的产生过程。o 缬m 还给出了一系列基于状 态规格说明的测试准则,用来指导基于状态规格说明的系统测试。 ( 5 ) s 妇o nb u 渤0 蚓给出了一个基于规格说明的测试框架。该框架用z 描述 测试用例,以定理的形式描述测试策略和测试充分性,并将测试用例的产生过程 统一在原有的c 僦开发环境中,充分体现测试宣动纯的思想。 2 ) 基于谓词表达式的软件测试 基于谓词表达式的方法一般先抽取规格说明中存在的谓词表达式,然后对谓 词进行范畴划分,按照一定的测试准则对谓词表达式产生测试用例。现在存在的 测试准则主要有:迁移覆盖( 拄a n s i t i o l lc o v 黜g e ) ,组合覆盖( “t e r a lc o v e r a g e ) 缝【| l 】 吖 o 迁移覆盖( 仃狮s i t i o nc o v e r a g e ) :至少测试一次规格说明中的每一个前置条 件。这是一个最弱的测试准则。 组合覆盖( “t e 瞄c o w r a g e ) ,本文将会给予详细讨论,并给出相应地实现。 3 ) 基于有限状态机的软件测试。 基于有限状态机酶主要测试准则有:迁移对覆盖( 她n s 撼。魏嚯斑v 凇g e ) 和完全序列( m ec o m p l e t es l 。q u e i l c e ) ( 1 3 】等。 迁移对覆盖:至少执行一次有限状态图中每一个连接的转移对。 完全序列:基于测试工程师的经验、领域知识和其它知识,产生所有有意义 的转移对至少一次。这一测试准则,与前面几种测试准则相比是最好的,但是目 前尚无实现办法。 薹。3 本文主要内容与结构 本文拟解决的问题如下: ( 1 ) 针对o b j e c t z 语言的特点,针对类内操作模式不同的表述方法,给出产 生测试用例的方法和测试准则。 ( 2 ) 把产生测试用调熬过程皇动纯。 要解决上述问题,需要解决自动解析规格说明生成语法树,从语法树自动提 取语义并还原完整的语义,根据语义自动生成测试用侧。根据这一过程,本文的 其余部分安排如下。本文提出并完善了用于从o b i e c t z 图形与数学符号结合的语 言转换成易于计算机处理的纯文本l a l e x 语畜的方法,并构造了相应的语言文 6 上海大学硕士学位论文 法来解析用o b j e 晦z 编写的规格说明,生成语法树,根据语法树可以提取出相关 语义。为了人们方便地编写和阅读规格说明,o b j e c t z 语言使用了大量的模式复 合和简写形式,这对于计算机提取完整语义自动产生测试用例造成了困难,因此 本文还给出了还原完整语义的方法。最后本文给出了提取规格说明中操作模式前 置条件的方法,并分离出文字集及它们之间的逻辑关系,通过这些文字集可以自 动产生抽象的测试用例。 根据o b j e c t - z 语言的特点,即在编写操作模式时使用了一种不同于非面向对 象的z 语言的表达方式调用模式,本文将给出一些测试准则和产生测试用例 的方法。 通过本文所提供的软件开发平台,可以很容易得到规格说明中存在的各种语 义,方便地实现基于测试准则自动产生测试用例的工具。 本文后续具体安排如下: 第二章针对o b j e c t z 语言中操作模式的不同写法,给出测试准则和产生测试 用例的方法。 第三章给出了如何对使用o b j e c t z 描述的规格说明进行解析的方法。提出了 用于从o b j e c t z 图像与数学符号结合的语言转换成易于计算机处理的纯文本 l a t e x 语言的方法,并构造了相应的语言文法来解析用o b i e c t z 编写的规格说 明,生成语法树。 第四章介绍如何从o b j e c t z 简写形式的规格说明还原完整语义的方法,并给 出了提取文字集和自动产生测试用例的过程。 第五章介绍工具的实现,该工具实现了产生符合组合覆盖准则的测试用例自 动产生过程。 第六章给出两个例子,第一个例子用来验证自动解析规格说明产生测试用例 方法的可行性,第二个例子评估本文提出的测试准则的有效性。 第七章总结全文并介绍未来需要面对的工作。 7 上海大学硕士学位论文 第二章类的单元测试 基于规格说明的软件测试既可用在集成测试阶段,也可用于单元测试阶段。 对类进行单元测试,一般测试类中的所有操作模式,本章将给出类内操作模式的 测试方法。 2 1 组合覆盖测试准则 o b j e c t z 语言从z 语言扩展而来,因此针对z 语言给出的测试方法和测试准 则也可以运用到测试类内操作模式上来。不少研究者针对z 语言的操作模式已经 进行了不少研究工作,给出了不少的测试准则,我们可以套用这些测试准则运用 到类内操作模式的测试上来。 组合谓词覆盖准则( c o i n b i i l a t i o n a lc o v e m g e ) 【1 1 1 是比较常用的方法内测试准 则,下面给出定义。首先给出一系列关于谓词公式【1 】的定义。 定义2 1 项 ( 1 ) 常量是项; ( 2 ) 变量是项; ( 3 ) 如果f 是n 元函数符号,t l ,k 是项,则绯l ,u 是项; ( 4 ) 依次通过有限次使用前面( 1 ) 、( 2 ) 、( 3 ) 的定义得到的也是项。 定义2 2 谓词 带有参数的命题称为谓词。如果一个谓词符号带有n 个参数,则称该谓词是 n 元谓词。 定义2 3 原子 如果p 是n 元谓词符号,t i ,t l l 是项,则p ( t l ,t n ) 是原子谓词,简称原子。 定义2 4 谓词公式及子公式 谓词逻辑中的谓词公式,简称公式,通常也称为谓词表达式。可以递归的定 义如下: ( 1 ) 原子是公式; ( 2 ) 如果p 、q 是公式,则- 1 p 、( p 八q ) 、口v q ) 、( p j q ) 、( p q ) 是公式; ( 3 ) 如果p 是公式,x 是p 中的变量,则v x p 、j 】【p 是公式; ( 4 ) 公式仅通过有限次使用( 1 ) 、( 2 ) 、( 3 ) 获得。 此外,可把每次使用规则( 1 ) 、( 2 ) 和( 3 ) 所得到的谓词公式称为最后所构成的 谓词公式的分子公式或子公式。 定义2 5 文字 8 上海大学硕士学位论文 一个文字是一个原子或原子的否定。 定义2 6 组合覆盖准则( c o m b i n a t i o 眦lc 0 1 旭r a g e ) 一组文字的真值组合构成的集合t 满足组合覆盖准则,当且仅当对每个p p , 其中p 为文字,p 为谓词中包含的所有文字集合,t 包含所有可能的文字真值的 组合。 例如,对于谓词a v b ,测试集 a = t m e 八b = 仃u e ,a = 仃佻八b = f a l s e ,a = f a l s e 八 b = t m e ,a = f a l s e 八b = f a l s e ) 满足组合覆盖准则。 2 2o b j e c t - z 其它测试方法 类是面向对象中最重要的概念,也是面向对象测试中的单元测试对象。类是 数据和对数据操作方法的集合,由于类的封装性使得一个对象的数据和状态信息 对外部对象不可见,外部对象只能通过该对象提供的方法来访问该对象的内部状 态。因此要保证一个类正确性就是要保证类提供的方法的正确性,如果方法的实 现没有正确地修改对象的内部状态,那么该类就可能存在问题,所以封装性要求 测试人员能够通过有效的测试用例来找出对对象内部状态进行了不正确地存取 的方法。 如上文所述,o b j e c t z 相对于z 语言来说增加了面向对象的封装和继承的描 述能力。可以说o b j e c t z 是为描述面向对象规格说明而生的。因此也需要针对 o b j e c t z 语言的特点来提出测试准则。 d 撕dc a r r i n 舀o n 【2 1 】介绍了一种方法,从o b j e c t - z 规格说明的每一个操作模式 产生测试模板,这些测试模板用来产生有限状态机,该有限状态机用来描述一个 类的行为,并且把c l 嬲s b 饥c h 测试执行框架作为执行测试用例的基础。 文献 2 3 】、 2 4 】解决手动把规格说明转换成测试场景的方法,其中包括程序 框架,测试场景和执行驱动的方法,但是不包含测试用例自动生成。 文献【7 】、【1 1 】、【2 2 】对基于形式规格说明的单元测试方法进行了研究,针对 目前基于形式规格说明在面向对象测试方面所面临的问题,研究了基于o b j e c t z 产生类层测试用例以及类之间的测试用例的方法,给出一系列基于o b i e d z 的单 元测试和集成测试的准则,通过这些准则产生的测试用例,探讨在测试由于类的 封装、继承、多态、组合和使用等带来的问题上的有效性。这组准则利用方法内 测试用例来构造类内部测试用例,避免了以往的研究中采用基于状态图的测试准 则构造测试用例时需要的抽取类的状态图的工作,使得机械化地构造类测试用例 成为可能。在类间测试层次,该文给出了一系列用于测试类间的多态关系的测试 准则,改变了以往对多态关系的测试主要集中于基于程序代码的方法。应用该文 提出的这些用于测试类间多态关系的测试准则,测试人员可以从形式规格说明中 9 上海大学硕士学位论文 推导出用于测试多态对象的测试用例,这些测试用例可以最终检测出程序代码中 的多态关系的实现与规格说明中的定义是否一致。 该文作者根据测试对象的特点,提出了三种测试准则,分别是:全测试覆盖 ( 舢lt e s tc o v e r a g e a t c ) 、全无环有效序列覆盖( a 1 ll 0 0 p 舶ee 疏c t i v es e q u e l l c e c o v e f a g e a l e s ) 、最大无环有效序列覆盖( m a ) 【硫u ml 0 0 p 台e ee 腩c t i v es e q u 饥c e c o v e r a g e - m l e s ) 。 该文最后给出了上述测试准则的实验结果,实验结果显示m l e s 类内部测试 用例可以有效地检测出常见的错误,并能够覆盖大部分的代码。根据a l e s 推导 出来的测试用例至少和根据m l e s 推导出来的测试用例有同样的侦错能力和代 码覆盖度。至于a t c 准则,由于该准则在某种程度是十分类似随机测试准则, 因而根据该准则推导出的测试用例的质量主要由测试人员的经验来决定。 2 3 调用模式测试准则 o b j e c t - z 语言增加了类的继承和封装的描述能力,因此描述操作模式除了使 用与z 语言相似的表示方法外,还增加了一种新的表示方式,即为: o p e r a t i o l l n 锄e 垒o p e r a t i o i 也x p r e s s i o n o p 吲i o n e x p r e s s i o n :=八d e c l a r a t i o n ip r e d i c a t e 】o p e r a t i o n e x p r e s s i o n i vd e c l a r a t i o n ip 硼i c a t e 】o p 酬i o n e x p r e s s i o n i i d e c l a r a t i o n jp r e d i c a t e 】o p 耐i o n e x p r e s s i o n i o p e r a t i o n e x p r e s s i o n l:- d e l t a l i s t d e c l a r a t i o n 】 ip 硎i c a t e e x p r e s s i o n i d e l l t i f i e r r e n 锄e l i s t 】 io p e r a t i o i 厄x p r e s s i o n l 八o p 删t i o i 正x p r e s s i o n l l o p e r a t i o l l e x p r e s s i o n lvo p e r a t i o n e x p r e s s i o n l l lo p e r a t i o r l e x p r e s s i o n l 0 o p e r a t i o l l e x p r e s s i o n l l i 这类操作模式可以概括为以下4 种形式: ( 1 ) e x p r e s s i o n i d e n t i f i c r 。 ( 2 ) p r 甜i c a t eo po p e r a t i o l l e x p r e s s i o n ,其中o p 为联结词,如八、v 等。 ( 3 ) o p 耐i o i l e x p r e s s i o n l o p l o p e r a t i o n e x p r e s s i o n l o p 2 o p n o p 酬i o i l e x p r e s s i o n l ,其中o p i ( i _ l n ) 为联结词,如八、v 等。 ( 4 ) o pd e c l a r a t i o np r e d i c a t e o p e r a t i o i l e x p r e s s i o n ,其中o p 为联结词,如 八、v 等。 这些操作模式中使用了其它类的可视操作模式,相应的,需要一些方法能够 l o 上海大学硕士学位论文 验证实现代码中的函数是否正确地调用了其他类的函数。下面给出产生这类操作 模式的方法和测试准则。 定义2 7 调用模式 操作模式的定义部分只包含一个调用( p r o m o 吐o n ) ,不包含任何联结词。形 如o p 垒i 1 1 s t 觚c e o p e r a t i o l l n 锄e ,其中i i l s t a i l c e 表示某个类模式的实例, o p e r a t i o n n 锄e 表示该类的可视操作模式名。该形式即为上述( 1 ) 的形式。 定义2 8 调用模式取真值 有表达式t :t i t 八p r e 缸t a i l c e o p e r a t i o n n 锄e ,其中t表示 缸s t a n c e o p e r a t i o n n 锄e 所有测试用例的集合,t 是一个测试用例,该测试用例使 得类模式i n s t a i l c e 的可视操作模式o p e r a t i o n n 锄e 的前置条件为真。 定义2 9 调用模式取假值 有表达式t :t i t 八1 q r ei i l s t a l l c e 0 i p e r a t i o n n a m e ) ,其中t 表示 i n s t a n c e o p e r a t i o r l n 锄e 所有测试用例的集合,t 是一个测试用例,该测试用例使 得类模式i i l s t a l l c e 的可视操作模式o p 耐i o n n 锄e 的前置条件为假。 定义2 1 0 调用模式覆盖准则 测试用例集符合该测试准则,当且仅当调用模式包含至少一次取真值,一次 取假值。 例如有操作模式o p l 垒a o p ,其中a 是类模式a 的一个实例,o p 垒( c o u n t ) c o u n t o 八c o 伽= c o u n t + 1 ,其中c o u n t 为类模式a 的状态变量,为整形类型。根 据调用覆盖准则,可以得到测试用例a c o u m 0 和a c o u n 份0 ,分别使得0 l p 的前 置条件为真和为假。 定义2 1 1 简单调用模式 操作模式的定义部分包含多个调用模式,且每个调用模式使用逻辑与符号( 八) 进行连接。形如o p 垒i i l s t a l l c e l o p e r a t i o l l n 锄e l 八八i i l s t a i l c e n o p e

温馨提示

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

评论

0/150

提交评论