(计算机应用技术专业论文)基于程序理解的输入域确定及测试数据自动生成方法研究.pdf_第1页
(计算机应用技术专业论文)基于程序理解的输入域确定及测试数据自动生成方法研究.pdf_第2页
(计算机应用技术专业论文)基于程序理解的输入域确定及测试数据自动生成方法研究.pdf_第3页
(计算机应用技术专业论文)基于程序理解的输入域确定及测试数据自动生成方法研究.pdf_第4页
(计算机应用技术专业论文)基于程序理解的输入域确定及测试数据自动生成方法研究.pdf_第5页
已阅读5页,还剩48页未读 继续免费阅读

(计算机应用技术专业论文)基于程序理解的输入域确定及测试数据自动生成方法研究.pdf.pdf 免费下载

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

文档简介

摘要 基于程序理解的输入域确定及测试数据自动生成方法研究 摘要 软件应用领域的不断扩大以及软件规模与复杂性的不断增加,给软件 测试提出了更高的要求。软件测试自动化是提高软件测试效率的有效手 段。测试数据自动生成是软件测试自动化的关键,输入域自动确定则是测 试数据自动生成的重要前提,因此,研究程序输入域的自动确定方法以及 测试数据的自动生成方法,具有重要的理论意义和广阔的应用前景。 本文提出了一种基于双约束传播的程序输入域自动确定方法和测试 数据自动生成方法,并在此基础上,设计并实现了一个基于输入域的自动 测试数据生成系统。 本文从程序代码出发,通过程序理解生成约束集,再利用双约束传播 方法求解约束集,得到程序路径输入域,并提出了一种用多个子区间表示 程序输入域的方法,扩展了区间算术对多子区间的支持,为测试数据自动 生成方法的研究奠定了基础。 基于输入域的测试数据自动生成主要包括测试策略选择和测试数据 生成两个过程,它以命令脚本中的程序输入域和测试数据生成策略为输 入,并由命令脚本中的命令驱动测试数据的自动生成。 本文设计开发的基于程序理解的测试数据自动生成系统以输入域自 动确定和测试数据自动生成为关键过程,实验结果表明,该系统能够自动 实现程序输入域的确定和基于输入域的测试数据生成,是确实可行的。 关键词:双约束传播;输入域确定;自动测试生成;路径测试数据 一! 堕茎一一 一一 r e s e a r c ho na u t o m a t i cg e n e r a t i o no fi n p u td o m a i n t b s td a t a b a s e do n p r o g r a mu n d e r s t a n d i n g a b s t r a c t s i n c et h ed o m a i no fs o 脚撒a p p l i c a t i o ni se x p a i l d e da n d t h es o 脚a r c c o m p l e x i 够a n ds c a l ea r e i n c r e a s e dc o n t i i m o u s l y ,t h e r em i s e sm u c hh l g h e r r e q u i r e m e n t sf o rs o 脚a r et e s t i n g s o 脚a r et e s t i n ga u t o m a t i o n i sa n 啦e c t l v e m e t h o do fi m p r o v i n gt h ee 伍c i e n c yo ft e s t i n g 帆i l e a u t o m a t i ct e s td a t a g e n e m t i o ni s t h ek e yp r o c e d u r ef o rs o 脚a r et e s t i n ga u t o m a t l o n ,i th a sa s i g n i f i c 枷p r e c o n d i t i o nt h a t i sa u t o m a t i cd e t e m i n a t i o no fi n p u td o m a l m t h e r e f o r e ,i ti so fg r e a tt h e o r e t i c a lm e a n i n g sa n db r o a d 印p l i c a t i o np r o s p e c t s t or e s e a r c ho nm e t h o d so fa u t o m a t i ci n p u td o m a i n d e t e r m i n a t i o na l l dt e s td a t a g e n e r a t i o n am e t h o do fa u t o m a t i ci 1 1 p u t d o m a i nd e t e n n i n a t i o nb a s e do nd o u b l e c o n s t r a i n tp r o p a g a t i o na i l d am e t h o do f 矾l t o m a t i ct e s td a t ag e n e r a t l o na r e p r o p o s e di nt h i sp 印瓯o n t h eb a s i so ft h a t ,a na u t o m a t i ct e s td a t ag e n e r a t l o n s y s t e mi sd e s i 印e da n di m p l e m e n t e d t h i sp a p e r s t a r t sw i mo b t a i n i n g c o n s t m i n ts e tt h r o u g hp r o g r a m u n d e r s t a i l d i n gp r o c e d u r eb ya n a l y z i n gt h es o u r c ec o d e ,a n dm e n s o l v e st h e c o n s t r a i n ts e tw i t hd o u b l ec o n s t r a i n tp r o p a g a t i o nm 烈h o d ,s ot h a tt h ep r o g r a m p a t hi n p u td o m a i nc a nb ef o u n d m o r e o v e r a m e t h o do fp r o g 舢l n p u td o m a m p r e s e n t e d b ym u l t i i n t e a li sp r o p o s e di nm i s t h e s i sa n dt h e 撕m m e t i c l a w so t i n t e r v a la r ee x p a n d e d ,w h i c hl a y t h ef o u n d a t i o nf o ra u t o m a t l ct e s t d a t a g e n e r a t i o n a u t o m a t i ct e s td a t ag e n e r a t i o ni sb a s e d o ni n p u t = 2 ) 个子域并对路径输入域进行划分,得到k n 个子域,将其中不满足约束的子 域去除,这在一定程度上排除了一些无效域,减少了无效测试输入的生成,提高了测 试效率。例如,图2 2 所示输入域,p r t 方法约减后得到的路径输入域为d 2 ud 3ud 4 , 排除了子域d 1 。 2 3 软件测试 图2 2p i 订方法可排除域示意图 f i g u r e2 - 2t h e1 1 1 p u td o m a i ne x c l u d e db yp r tm e t h o d 软件测试是软件工程中最关键的阶段之一,是保证软件质量的重要手段,而测试 数据生成是软件测试的核心与关键。由于软件测试的效率及经济性要求的不同,软件 测试数据生成方法多种多样。现在,随着软件复杂度的提高与软件丌发高效性要求, 软件测试数据的自动生成作为软件测试自动化不可缺少的一环,占据了软件测试过程 中的相当重要的份量。 按测试过程是否对程序代码透明可以将软件测试大致分成黑合测试和白盒测试。 1 功能测试 黑合测试又称功能测试,是以检查程序是否按照规格说明书描述的功能正确地执 行来完成测试活动的。它以规格说明为依据选择和设计测试用例进行测试【1 1 。4 1 。白盒 测试又称结构测试,是根据程序内部逻辑结构来设计测试用例并检查程序的每条路径 第二章课题相关技术 是否都按预定的要求正确地执行。 基于程序输入域的测试方法属于功能测试,其中最普遍使用的是边界值分析和等 价类划分方法。在分界值分析方法中,由于测试要求的不同,可以生成一般性、健壮 性、最坏情况的边界值测试用例,还可以生成弱一般、强一般、弱健壮、强健壮等价 类测试用例【1 2 】。另外,错误推测法也是基于程序输入域的一种常用的测试方法,这种 方法根据经验设计出易于发现程序错误的测试用例,以最少的测试用例发现最多的易 于发生的程序错误。 目前,功能测试测试数据生成相关研究主要有:t s a i 提出的从关系代数查询表示 的规格说明中生成测试数据的方法【1 5 1 ,该方法针对关系代数查询表示的规格说明设计 测试用例,主要适用于数据库和数据处理系统的测试生成。w b ) ,u l ( e r 提出了一种基于 布尔规格说明的测试数据生成方法【1 6 】,该方法将l 0 v e s o n 的基于过程控制的形式化规 格说明方法【1 7 】进行了改进,用a n d o r 表来描述规格说明中的条件,主要适用于过 程控制系统的测试生成。h a l l 提出的利用z 规格说明进行软件测试数据生成的方法 【堰,1 9 1 ,该方法要求测试人员具有丰富的测试经验和较高的专业水平,不利于这种测试 生成方法的推广应用。虞凡提出的一种基于时序逻辑语言x y z e 软件规范说明的测 试用例自动生成方法【2 0 】,该方法采用x 托兜描述,以确保规范与待测程序的语义一 致,然后利用x y z e 规范的逻辑程序属性,实现对测试用例中期望输出的p r o l o g 自 动推导求值。 2 结构测试 在结构测试中,对待测程序的代码逻辑结构达到一定程度的覆盖是常见的要求, 如语句覆盖、分支覆盖、条件覆盖和路径覆盖等。结构测试数据生成是在对程序代码 进行分析的基础上,从程序输入域中寻找满足某种测试覆盖准则的输入数据的处理过 程。 结构测试测试数据生成方法主要有随机测试数据生成、面向目标的测试数据生成 以及面向路径的测试数据生成等三大类方法。对于给定的语句、分支或路径,随机测 试数据生成方法是在程序输入域内随机选取测试数据,使得给定语句、分支或路径被 执行【2 。面向目标的测试数据生成方法,依据程序控制流信息,将程序中所有的分支 分成影响和不影响目标结点的两类分支。测试数据生成时,考虑影响目标结点的那些 分支,利用分支函数极小化生成相应的测试数据,使得给定语句被执行。相关研究主 要有:f 锄卵o n 使用了数据依赖分析,通过识别影响给定语句执行的那些语句,考虑 影响目标结点的那些分支,提高了测试数据生成效率瞄】;g 0 t l i e b 扩展了一个已有的 面向目标的测试数据生成方法去处理多级指针变量【2 3 】,此方法使用程序内流敏感点的 分析结果去自动生成面向目标的单元测试数据。面向目标的测试数据生成方法与路径 选择无关,虽然可以达到语句覆盖或分支覆盖,但在结构测试覆盖准则中,仍属较低 北京化工大学硕士学位论文 层次的覆盖标准,只有当程序中每一条路径都被测试了才说明待测程序得到了全面测 试。面向路径的测试数据生成方法通常先确定一条经过给定语句或更大的语法结构的 程序路径,然后在程序输入域中寻找输入数据,使得该路径可达,从而执行到给定语 句或结构。 面向路径的测试数据生成又分为符号执行【2 4 2 5 】和实际程序执行【舱2 8 1 两类。符号执 行以符号计算代替实际执行的数值计算,产生一个符号输入值的约束表达式集,它是 选定路径的谓词系统,实际上是对输入数据的限制要求,由多个不等式或等式组成。 通过求解不等式组,求取满足路径上各限制谓词的测试数据;若不等式无解,则相应 的路径为不可行路径。其优点是一次符号测试结果代表了一类普通测试的运行结果, 使得测试成本相对较低。基于程序实际执行的测试数据生成方法中,g u p t a 利用迭代 逼近法求取满足选定路径上所有谓词的输入值从而生成测试数据鲫。k - o r e l 对于选定 路径上不满足要求的分支,利用分支函数极小化进而确定新的输入值,直至找到输入 数据使程序执行沿选定路径进行【2 羽。基于程序实际执行的测试数据生成方法在程序执 行过程中,数组下标和指针等值都是确定的,有利于对数组和指针处理。 2 4测试自动化 随着人们对测试效率及准确率要求的提高,测试自动化的研究越来越深入。自动 化测试包括自动生成测试数据与测试脚本、执行测试、结果分析与报告生成几个步骤。 由于自动化测试的复杂性,测试的自动化一般都是根据某一种测试要求来设计的。例 如,自动测试工具可分为自盒测试工具、黑盒测试工具、性能测试工具,另外还有专 门用于测试管理( 测试流程管理、缺陷跟踪管理、测试用例管理) 的工具。另外,白 盒测试工具又分为静态测试工具和动态测试工具。还有专门针对数据库测试和w e b 测试的测试工具等。 自动化测试理论研究指导了自动化测试技术的发展。自动化测试理论的研究主要 有:文献【2 9 】中介绍了一种基于搜索的测试用例自动生成方法。文献 3 0 】中则提出了针 对输入有效性的自动验证与自动测试用例生成方法。文献 3 1 】中研究了通过边界完全 测试来达到软件验证的目的。针对程序域( 包括输入域和输出域) 的测试,也存在许 多相关的研究成果:文献 3 2 】中提出了一种针对域错误的测试用例自动生成方法。文 献 3 3 】中研究了一种通过域测试发现线性错误的一种方法。文献 3 4 1 研究了一种域描述 语言测试工具的自动生成方法。文献【3 5 】提出了一种构造结构性测试序列集合的方 法,根据数据流测试准则,研究了一种测试序列自动生成的技术。 测试数据生成的自动化是测试自动化过程中的一个关键部分。相关研究有:文献 【3 6 】研究了使用过程( p r o c 的程序的测试数据的自动生成方法。文献3 7 提出了一 l o 第二章课题相关技术 种针对异常条件的测试用例自动生成方法。针对可视化程序,文献 3 8 】中提出了一种 使用模型驱动方法的g u i 测试自动化方法。流行的w e b 应用程序的测试,也开始向 自动化方向发展,例如,文献【3 9 】中给出了一个w e b 域数据的测试集自动生成的实 例研究结果及其分析。文献【4 0 】至文献 4 4 】分别介绍了几种使用不同方法自动生成测试 数据的方法。 测试数据自动生成方法可以分为随机法、静态法、动态法和试探法四大类方法【4 5 1 。 静态法对程序进行静态分析和转换,不涉及程序的实际运行,它包括符号执行法、区 间算术法和文献【4 6 】提出的方法等。动态方法则基于程序的实际运行,其生成测试数 据的过程是确定性的,它包括直线式程序法和文献 4 7 4 9 】分别提出的方法等,近年来, 人们将遗传方法和模拟退火方法用于测试数据自动生成研究领域,这些方法虽然也需 要实际运行程序,但是其生成测试数据的过程不完全是确定性的,而采用了概率论的 思想,因此这些方法可归为试探法。 2 。5区间算术 区间算术是定义在区间集合而非实数集合上的一种算术【别。早在1 9 2 4 年的时候 就有人提出了区间算术的概念。现代区间算术的发展是从r e m 0 0 哟的一篇名为区 间算术与数字计算中的自动错误分析的专著开始的。从那个时候开始,就出现了成 千上万的研究论文与大量书籍对区间算术这个主题进行研究,许多期刊会议以及特别 讨论会也以这个主题召开,越来越多的软件开始支持区间计算,更多的相关资源也开 始更容易地从互联网上搜索到。 在介绍区间算术法则之前,需要先对一些进行约定,在这里,我们用“口 表示 区间,“o 可以改变区间算式的运算优先级,小写字母表示变量,对应的大写字母表 示其取值区间,大写字母右侧下标字母“l 表示区间的下界,标“h 则表示区间的 上界。 对两个区间x = x bx h 】和y 三【y by h 】,则它们遵守基本的四则运算: x 印】厂= x d p yi z x 口玎dy l r ) 声,o p + 一 ( 1 ) 因此,区间算术中的基本四则运算转换成了对应实数的操作结果的区间。根据等 式( 1 ) ,可以得到区间的基本四则运算公式如下: 北京化工大学硕士学位论文 x + y = x + 圪,x h + 】 ( 2 ) x 一】,= x 一,x 胃屹】 ( 3 ) x y = 【m i n 墨兄,置,“艺, ,m a x 圪,t y ,以圪,妊 ( 4 ) l x = 【1 x ,l x 】矿x 0 d ,x 及“ 等操作,定义其运算规则如下: 1 4 第三章程序输入域的自动确定方法研究 x = y x = 圪,z , x 圪, = x = m a x ( x ,t ) , n x ,】 3 3基于双约束传播的程序路径输入域确定 从图2 2 可以看出,在p i 盯方法约减后的输入域中,仍然存在大餐无效域,并且 如果变黾取值域不能被参数k 整除,p r t 方法还将扩大输入域,从而又引入了一些无 效域。为进一步约简路径输入域以提高随机测试效率,本文提出了一种基于双约束传 播的面向路径自动随机测试方法( p a t h o d e n t e da u t o m a t i cr a n d o mt e s t i n 2m e t h o db a s e d o nd o u b l ec o n s t r a i n tp r o p a g a t i o n ,d c p a i 盯) 。该方法自动分析待测程序,得到针对每条 路径的约束集,对指定路径的约束集使用一次约束传播,求取指定路径上的输入域 d 1 。然后将其中一维域一分为二之后,再对每一个子域第二次使用约束传播,最终得 到一个包含较少无效域的输入域d 2 ,并在d 2 上实施随机测试用例生成。图3 1 给出 了使用d c p r t 方法去除无效域的示意,第一次约束传播后得到输入域d 1 = ( x ,y ) l x 0 ,x 2 ,y 0 ,y 3 ,切分x 的取值范围后,第二次约束传播后得到更小的输入域 d 2 = ( x ,y ) 陬 0 ,x 1 ,y 0 ,y 2 ) u ( x ,y ) i x x l ,x 2 】,y y 1 ,y 3 ) 。口j 以看出,与p r t 方 法相比,d c p a r t 不仅排除了d 1 ,而且排除了无效域d 3 1 和d 4 2 。 y ? y i 图3 1 d c p a r t 方法可排除域示意图 f j g u r e3 1t h ei n p u td o m a i ne x c l u d e db yd c p a r tm e t h o d 下面分别从约束集生成、双约束传播和自动随机测试几个关键过程来讨论基于双 约束传播的面向路径自动随机测试方法。其中约束集生成是一个程序理解的过程,通 过对被测程序进行词法和语法分析得到指定路径上的约束集,然后使用双约束传播对 约束集进行处理得到指定路径近似输入域,在近似输入域上自动生成随机测试用例。 北京化工大学硕士学位论文 3 3 1程序理解与约束集生成 程序理解是从程序代码中获取有用信息的过程。获取的信息是用户对程序中感兴 趣的信息,通常是存在一定逻辑的结构化信息,可以是设计文档、程序结构甚至只是 代码的上一层抽象表示等。在本文中,程序理解过程用来获取自动确定程序输入域所 需要的约束集。程序理解过程主要包括程序分析及约束集生成两个子过程。其中程序 分析过程是通过扫描程序源代码并对其进行逆向建模,得到软件的控制流及数据流等 基本模型信息。约束集生成过程根据程序分析过程得到的模型信息进行进一步的分 析,得到程序的约束集。 约束是指一个包含输入变量并且符合特定条件的逻辑或算术表达式,对于函数, 约束表示的是输入变量的取值范围,对于表达式,约束表示它对输入变量的限制条件。 约束集是指定路径上的所有约束的集合。例如,表3 1 所示示例程序f o o 路径1 2 3 _ 4 - 5 上的约束集为i p x - 1 0 0 & & y x + 5 0 ;x y 6 0 ) ,其中代码中l l s h 是 l l i l s i 孕埘s h ( 小i n t 的简写。 表3 1 示例程序矗 t a b l e3 1t h es 锄p l ep m g 舢局o u s h ( u s h x ,u s hy ) 1 i f 【】【 x + 5 0 ) 3 4 i f 【x y 0 x o x m i n x + c x 懈 x o 约束生成利用程序理解技术,其过程包括:词法分析,语法分析,指定路径上的 约束集生成。词法分析和语法分析可以利用成熟的开源编译器g c c 8 】完成,但本文 开发的原型系统采用自主开发的专用分析器。该分析器以待测程序源代码为输入,以 指定路径的约束集为输出,对被测程序源代码,分析指定路径上分支条件特殊函数、 特殊表达式及控制关系等,如果指定路径存在特殊函数和特殊表达式,则根据e f e o 约束式对照表,将对应的约束加入约束集中;将分支条件加入约束集中。得到指定路 径上的约束集。 3 3 2 双约束传播 域的过程。对程序分析理解得到的约束集使用双约束传播方法,求取指定路径上的近 似输入域。双约束传播并不是简单地将两次约束传播过程叠加起来,而是一个将输入 变量的取值范围逐步缩小使之更接近真实输入域的过程。约束传播按约束在程序中出 约束求解包括将普通约束转化为区间约束和区间运算两个步骤,下面辅以实例说 ix _ l o o & & y x + 5 0 ( 2 ) , 【x j , 6 0 ( 3 ) 其变量x 和y 均为无符号短整型,初始输入域为d o - ( x ,y ) i x o ,+ 】,y 0 ,+ 】) , 一一洲删伙 北京化工大学硕士学位论文 即: x = 【o ,佃】, 】r = 【0 ,佃】 d o = ( 五y ) i x x ,y 】,) 求解约束( 1 ) :先将约束( 1 ) 化为区间的约束x x + 【5 0 ,5 0 】 】, o ,l o o 】+ 5 0 ,5 0 】 营;兰端1 jh 5 u 删】,= 【o ,l o o 】j 。 再将区间约束】, x “5 0 5 0 】作一个变换得x 】,一【5 0 ,5 0 】,计算其对变量x 的影 响: 彳 y 一【5 0 ,5 0 】 营z 6 0 时不满足约束( 3 ) 。 对于上例,再次使用约束传播,其结果为 b 4 = ( 毛y ) i x = o ,y 【5 1 ,l o o 】) u ( z ,y ) f x = 1 ,j ,【5 2 ,6 0 】) 双约束传播方法如下: 第三章程序输入域的自动确定方法研究 算法3 1 双约束传播方法 a 1 9 0 3 - ld o u b l ec 0 n s t m i l l tp r o p a g a t i o na l g o r i n m a l g o 删m :双约束传播方法 i n p u t : 足一指定路径上的约束集合( 刀个约束) ,一输入变量集合 o u t p i l t : d 一指定路径的输入域 s 1 初始化输入变量的最大取值范围。得到d 口 s 2 对r 应用约束传播方法 s 2 1 令净j s 2 2 求解只中第f 个约束。得到新的输入域易 s 2 3 f = f + j s 2 4 判断f = 5 0 0 & & y = 2 0 0 0 0 ) 6 r 忙o x 2 : 删i 受设当收入 = 5 0 0 0 时税率为1 5 。超过则为2 溉 7 i f 【x y n 珀毗nr ; 对示例程序w a g e 的1 2 3 4 - 5 - 6 7 8 9 路径求取输入域,p r t 方法和d c p i 汀方法 的第一步均为实施一次约束传播过程,其结果均为 d l = ( 工,y ) l 工 5 0 ,9 0 ,y 【5 0 0 ,1 0 0 0 0 】) ,如图3 - 3 阴影部分所示。 第三争程序输入域的f 1 动确定方法研究 5 5 5 5 5 d d 图3 3 w a g e 程序第一次约束传播后输入域 f i g u r e3 3t h ei n p u td o m a i no fp m g r a mw 口g 它a f t e rt h ef i r s tc o n s t r a i n tp r o p a g a t i o n 在此基础上,p i 盯方法将所有输入变量的取值范围分割成同样大小的两部分,使 路径输入域d 1 分割成4 个同样大小的子域,如图3 4 中的d 1 d 4 ,其中 d ,= ( x ,j ,) ix 5 0 ,7 0 ,y 5 2 5 1 ,1 0 0 0 1 d 2 = ( x ,少) ix 7 l ,9 l 】,y 5 2 5 1 ,1 0 0 0 1 d 3 = ( x ,y ) lz 5 0 ,7 0 ,y 5 0 0 ,5 2 5 0 ) d 4 = ( ( 石,y ) fx 7 1 ,9 1 ,少 5 0 0 ,5 2 5 0 】) d 5 = ( x ,j ,) jx = 9 1 ,y 5 0 0 ,1 0 0 0 1 】) u ( 工,y ) lx 5 0 ,9 0 ,少= 1 0 0 0 1 ) 是使用p r t 方法 时,为使多个子域大小相同而扩大了的输入域部分,s 则p r t 方法处理后得到的输入 域为d 艘7 = ( x ,y ) x 5 0 ,9 1 ,y 5 0 0 ,1 0 0 0 1 ) 。对于w a g e 程序,p r t 方法不但没有约 减约束传播得到的输入域,反而引入了n = ( 1 0 0 0 1 5 0 0 + 1 ) + ( 9 0 5 0 + 1 ) = 9 5 4 3 个无效点。 北京化t 人学坝l :学位论义 图3 4 w a g e 程序p r t ( k = 2 ) 方法处理后输入域 f i g u r e3 - 4t h e1 1 1 p u td o m a i no fp r o 掣a mw n g gp r o c e s s e db yp r t ( k = 2 ) m e m o d 使用d c p i h方法约减得到的输入域为 d d 。瑚,= ( x ,少) i 石 5 0 ,7 0 ,少 5 0 0 ,10 0 0 0 u ( 工,y ) ix 71 ,9 0 ,j ,【5 0 0 ,7 4 0 2 ) ,它将 d 2 = ( 工,y ) i x 7 l ,9 0 ,y 7 4 0 3 ,1 0 0 0 0 ) j 除在夕 、 , 即 j 除了 n = ( 1 0 0 0 0 7 4 0 2 ) 车( 9 0 7 0 ) = 5 1 9 6 0 个无效点。如图3 5 所示。 y l o o o o 7 0 4 2 5 5 5 5 5 0 0 图3 5w a g e 程序d c p r t 方法处理后输入域 f i g u r e3 - 5t h e1 1 1 p u td o m a i n o fp m 矿a mw a g ep r o c e s s e db yd c p i 盯m e t h o d 从w a g e 程序实验可以看出, p i 玎方法可能不仅不能排除任何无效点,而且可能 还会引入多余的无效点。 2 4 第三章程序输入域的自动确定方法研究 实验表明,基于双约束传播的程序输入域自动确定方法能够有效地获取近似程序 路径输入域,并且不会引入任何无效点。该方法从源代码出发,通过词法分析及语法 分析得到控制流与数据流等模型信息,然后由模型信息分析得到约束集,对约束集应 用双约束传播后得到程序路径输入域。 3 4本章小结 程序输入域的确定是基于程序输入域测试数据生成方法的一个重要前提。测试自 动化要求测试过程的每一个步骤都可以自动地进行,因此,程序输入域的自动确定是 国内外软件测试专家学者研究的一个重要课题。程序输入域的自动确定方法主要有两 个分支,一个是从程序规范出发,通过分析规范中的系统设计相关的信息来得到程序 的输入域。另一个是从程序源代码出发,通过分析代码的实现细节信息来获取程序输 入域。本文提出的基于程序理解的程序输入域自动确定方法是基于程序分析的方法。 本章详细阐述了程序输入域的自动确定方法基于程序理解的采用双约束传播确 定路径输入域的方法的原理、实现、及相关实验分析。 第网章输入域测试数据自动生成方法研究 第四章输入域测试数据自动生成方法研究 在程序输入域确定的情况下,本章将对基于输入域的测试数据自动生成方法进行 详细研究。 4 1输入域测试数据自动生成原理及策略 基于输入域的测试数据自动生成方法( a u t o m a t i ct e s td a :t ag e l l e r a t i o nm e t h o d , a t d g m ) 是一种可以根据不同测试策略及输入域数据自动生成测试数据的架构。测试 策略包括随机测试、边界值测试、等价类划分测试已有的测试策略,也可以是新提出 来的测试策略,只有在架构中增加一个相应的生成函数即可。 命令脚本是用来驱动测试数据自动生成引擎的,包括用来指示生成器按某种测试 策略生成测试数据的命令字和提供程序输入域相关的数据。其中程序输入域部分用区 间法表示,用c 语言中的注释符号“ 表示注释语句,生成器在分析命令脚本时会 忽略注释语句。命令脚本格式如表4 _ l 所示。 表4 1 命令脚本格式 1 a b l e4 - lc 伽l m 柚ds 面幽f 0 m a t 溉td a 诅a u t o g 铋s c 一妒,t i l n e :2 0 0 8 3 - 3 01 l :2 3 c 哪m a n d l p a n u n lp a “l i n 2 i i l p u t - 、w lt y p c 照i s i o n l l ,h 1 l 2 ,h 2 i n p u 删呻e p 僦i s

温馨提示

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

评论

0/150

提交评论