




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
结构性测试(2)数据流测试,数据流测试,在单元测试中,数据仅仅在一个模块或者一个函数中流通。但是,数据流的通路往往涉及多个集成模块,甚至于整个软件,所以我们有必要进行数据流的测试,尽管它非常耗时。早期的数据流分析常常集中于叫做定义/引用异常的缺陷:变量被定义,但是从来没有使用(引用)所使用的变量没有被定义变量在使用之前被定义了两次,数据流测试(续),因为程序内的语句因变量的定义和使用而彼此相关,所以用数据流测试方法能有效地发现软件缺陷数据流测试按照程序中的变量定义和使用的位置来选择程序的测试路径数据流测试关注变量接收值的点和使用这些值的点一种简单的数据流测试策略是要求覆盖每个定义-使用路径一次,内容,定义/使用测试举例,变量的定义结点,结点n程序图G(P)是变量vV的定义结点,记作DEF(v,n),当且仅当变量v的值由对应结点n的语句片段处定义定义结点语句:输入语句、赋值语句(等号左侧)、循环控制语句和过程调用如果执行这些语句,变量的值往往会发生变化Page145程序DEF(locks,7)DEF(lockPrice,13),变量的使用结点,结点nG(P)是变量vV的使用结点,记作USE(v,n),当且仅当变量v的值在对应结点n的语句片段处使用使用结点语句:输出语句、赋值语句(等号右侧)、条件语句、循环控制语句和过程调用如果执行这类语句,变量的值不会被改变Page145程序USE(commission,33)USE(commission,41),谓词使用与计算使用,使用结点USE(v,n)是一个谓词使用(记作P-use),当且仅当语句n是谓词语句;否则,USE(v,n)是计算使用(记作C-use)对应于谓词使用的结点,其出度2Page145程序:USE(sales,29)对应于计算使用的结点,其出度1Page145程序:USE(sales,33),定义-使用路径,关于变量v的定义-使用路径(记作du-path)是P中的所有路径集合PATHS(P)中的路径,使得对某个vV,存在定义和使用结点DEF(v,m)和USE(v,n),使得m和n是该路径的最初和最终结点Page145程序:,关于变量v的定义清除路径,关于变量v的定义清除路径(definition-clearpath,记作dc-path),是具有最初和最终结点DEF(v,m)和USE(v,n)的PATHS(P)中的路径,使得该路径中没有其他结点是v的定义结点Page145程序:,举例:佣金问题,ProgramCommission(input,output)Dimlocks,stocks,barrelsAsIntergerDimlockPrice,stockPrice,barrelPriceAsRealDimtotalLocks,totalStocks,TotalBarrelsAsIntegerDimlockSales,stockSales,barrelSalesAsIntegerDimsales,commissionAsReallockPrice=45.0stockPrice=30.0barrelPrice=25.0totalLocks=0totalStocks=0totalBarrels=0Input(locks)WhileNOT(locks=-1)Input(stocks,barrels)totalLocks=totalLocks+lockstotalStocks=totalStocks+stockstotalBarrels=totalBarrels+barrelsInput(locks)EndWhile,Output(Lockssold:,totalLocks)Output(Stockssold:,totalStocks)Output(Barrelssold:,totalBarrels)lockSales=lockPrice*totalLocksstockSales=stockPrice*totalStocksbarrelSales=barrelPrice*totalBarrelssales=lockSales+stockSales+barrelSalesOutput(Totalsales:,sales)If(sales1800.0)Thencommission=0.10*1000.0commission=commission+0.15*800.0commission=commission+0.20*(sales-1800.0)ElseIf(sales1000.0)Thencommission=0.10*1000.0commission=commission+0.15*(sales-1000.0)Elsecommission=0.10*salesEndIfEndlfOutput(Commissionis$,commission)EndCommission,commission:定义:31,32,33,36,37,38,使用:32,33,37,41,16,佣金问题的程序图,7,13,8,9,10,11,12,14,15,17,18,19,26,29,30,31,32,40,34,38,20,21,22,23,24,25,27,28,39,35,36,37,33,41,42,佣金问题的DD-路径,表10-2佣金问题变量的定义/使用结点,表10-3部分定义/使用路径,是定义清除吗?,佣金问题定义/使用路径,stocks的定义-使用路径DEF(stocks,15)USE(stocks,17)是一个关于stocks的定义-使用路径。Stock没有其他定义节点,因此这条路径是定义清除路径类似地,lockPrice、stockPrice、barrelPrice、barrels、lockSales、stockSales、barrelSales的定义-使用路径较简单,都只有一条定义-使用路径,佣金问题定义/使用路径(续),关于totalStocks变量的两条定义-使用路径totalStocks的初始值定义出现在结点11上,在结点17上第一次被使用。由结点序列组成的路径(11,17)是定义清除路径由结点序列组成的路径(11,22)不是定义清除路径,因为totalStocks在结点11和17处定义(可能在结点17处多次定义)循环后面的星号是Kleene星标记,用于形式逻辑和一般表达式,表示零次或多次重复,佣金问题定义/使用路径(续),locks的定义-使用路径DEF(locks,13)、DEF(locks,19)USE(locks,14):谓词使用USE(locks,16):计算使用4条定义-使用路径p1p2p3p4,while循环测试用例的非常完备的集合p1p2p3p4p1、p2、p3和p4构成while循环测试用例的非常完备的集合:旁路循环(p1)开始循环(p2)退出循环(p3)重复循环(p4)在循环中都是定义清除路径。,佣金问题定义/使用路径(续),sales的定义-使用路径sales只使用了一个定义节点,因此sales的所有定义-使用路径都是定义清除路径P10=P11=P12=P13=P14=P15=,动态选择路径,佣金问题定义/使用路径(续),totalLocks的定义-使用路径DEF(totallocks,10)、DEF(totallocks,16)USE(totallocks,16)、USE(totallocks,21)、USE(totallocks,24)预期应该得到6条定义-使用路径:P5=定义清除路径P6=P7=P8=P8=P9=,7,13,8,9,10,11,12,14,15,16,17,18,19,26,29,30,31,32,40,34,38,20,21,22,23,24,25,27,28,39,35,36,37,33,41,42,commission定义:31,32,33,36,37,38使用:32,33,37,41,totalLocks定义:10,16使用:16,21,24,P8=不作为定义-使用路径。P6=非定义清除路径P7=非定义清除路径P8=P9=是定义清除路径,佣金问题定义/使用路径(续),commission的定义-使用路径有分支,定义-使用路径测试覆盖准则,上面介绍的程序分析的核心,是定义一组叫做Rapps-Weyuker数据流覆盖指标即Rapps和Weyuker所定义的一组基于数据流的测试路径覆盖指标结合程序图,找出所有变量的定义-使用路径,考察测试用例对这些路径的覆盖程度,就可以作为衡量测试效果的参考在以下定义中,T是拥有变量集合V的程序P的程序图G(P)中的一个路径集合,并且假设定义-使用路径都是可行的P:程序G(P):程序图V:变量集合T:G(P)中的一个路径集合,全定义覆盖准则,集合T满足程序P的全定义(alldefinition)准则,当且仅当对于所有变量vV,T包含从v的每个定义结点到v的一个使用的定义清除路径,全定义覆盖示例,全使用覆盖准则,集合T满足程序P的全使用(alluse)准则,当且仅当对于所有变量vV,T包含从v的每个定义结点到v的所有使用的定义清除路径,全使用覆盖示例,全谓词使用/部分计算使用覆盖准则,集合T满足程序P的全谓词使用(allpredicateuse)/部分计算使用(somecalculationuse)准则,当且仅当所有变量vV,T包含从v的每个定义结点到v的所有谓词使用的定义清除路径,并且如果v的一个定义没有谓词使用,则到至少一个计算使用有一条定义清除路径,全计算使用/部分谓词使用覆盖准则,集合T满足程序P的全计算使用(allC-use)/部分谓词使用(someP-use)准则,当且仅当所有变量vV,T包含从v的每个定义结点到v的所有计算使用的定义清除路径,并且如果v的一个定义没有计算使用,则到至少一个谓词使用有一条定义清除路径,全定义-使用路径覆盖准则,集合T满足程序P的全定义-使用路径(alldefinition-use-paths,all-du-paths)准则,当且仅当所有变量vV,T包含从v的每个定义结点到v的所有使用的定义清除路径,并且这些路径要么有一次环经过,要么没有环路,全使用覆盖与全定义-使用覆盖的区别,结点b定义y,结点c和d使用b所定义的y全使用覆盖虽然要求检查每个定义的所有可传递到的使用,但对如何从一个定义传递到一个使用不作要求全定义-使用覆盖要求检查所有可能的路径,但为了避免有环路时的无穷多条路径,限制只检查无环路的或只包含一条环路的路径朱鸿、金凌紫.软件质量保障与测试.北京:科学出版社,1997.第113页,各种覆盖准则之间的包含关系,练习写出a变量的定义-使用路径,并判断是否定义清除路径。,1a=5;2While(C1)3if(C2)4b=a*a;5a=a-1;67print(a);,1,2,3,4,5,6,7,程序图,Du-pathdc-path1234y12345y1234567n567234y567y,基于程序片的测试,定义给定一个程序P和P中的一个变量集合V,变量集合V在语句n上的一个片,记做S(V,n),是P中对V中的变量值作出贡献的所有语句集合。,定义给定一个程序P和一个给出语句及语句片段编号的程序图G(P),以及P中的一个变量集合V,变量集合V在语句片段n上的一个片,记做S(V,n),是P中在n以前对V中的变量值作出贡献的所有语句片段编号的集合。,使用节点和定义节点,USE关系适合五种形式的使用:谓词使用用在谓词(判断)中。计算使用用在计算中。输出使用用于输出。定位使用用于定位(指针、下标)。迭代使用迭代(内部计数器、循环指示)。,标识两种定义节点:输入定义通过输入定义。赋值定义通过赋值定义。,变量locks上的片,S1:S(locks,13)=13)S2:S(locks,14)=13,14,19,20S3:S(locks,16)=13,14,16,19,20)S4:S(locks,19)=19,变量stocks和barrels上的片,S5:S(stocks,15)=13,14,15,19,20S6:S(stocks,17)=13,14,15,17,19,20S7:S(barrels,15)=13,14,15,19,20S8:S(barrels,18)=13,14,15,18,19,20,totalLocks、totalStocks和totalBarrels的片,S9:S(totalLocks,10)=10S10:S(totalLocks,16)=10,13,14,16,19,20S11:S(totalLocks,21)=10,13,14,16,19,20S12:S(totalStocks,11)=11S13:S(totalStocks,17)=11,13,14,15,17,19,20S14:S(totalStocks,22)=11,13,14,15,17,19,20S15:S(totalBarrels,12)=12S16:S(totalBarrels,18)=12,13,14,15,18,19,20S17:S(totalBarrels,23)=12,13,14,15,18,19,20,赋值定义,S18:S(lockPrice,24)=7S19:S(stockPrice,25)=8S20:S(barrelPrice,26)=9S21:S(lockSales,24)=7,10,13,14,16,19,20,24S22:S(stockSales,25)=8,11,13,14,15,17,19,20,25S23:S(barrelSales,26)=9,12,13,14,15,18,19,20,26,Sales上的片,S24:S(sales,27)=7,8,9,10,11,12,13,14,15,16,17,18,19,20,24,25,26,27S25:S(sales,28)=7,8,9,10,11,12,13,14,15,16,17,18,19,20,24,25,26,27S26:S(sales,29)=7,8,9,10,11,12,13,14,15,16,17,18,19,20,24,25,26,27S27:S(sales,33)=7,8,9,10,11,12,13,14,15,16,17,18,19,20,24,25,26,27S28:S(sales,34)=7,8,9,10,11,12,13,14,15,16,17,18,19,20,24,25,26,27S29:S(sales,37)=7,8,9,10,11,12,13,14,15,16,17,18,19,20,24,25,26,27S30:S(sales,38)=7,8,9,10,11,12,13,14,15,16,17,18,19,20,24,25,26,27,S
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 钢结构人工安装施工方案
- 物流仓储智能化升级方案
- 肠梗阻影像考试题及答案
- 上海建筑施工动画方案设计
- 车险核保考试题及答案
- 幼儿园课程设置与教学评估标准
- 柴油快艇理论考试题及答案
- 测视力考试题目大全及答案
- 科技公司产品创新项目计划书
- 苍溪教师考试题库及答案
- 东芝电梯CV180故障诊断
- GB/T 31186.1-2014银行客户基本信息描述规范第1部分:描述模型
- 退伍军人职业规划课件
- 生物质资源及其开发利用课件
- 调查研究方法与调研报告写作讲义课件
- 卡西欧PROTREKPRW-6000使用手册
- 干燥综合症的中医治疗冯兴华公开课课件
- 关于开具无犯罪记录证明的函(模板)
- 初中综合实践课程
- 大金D型水冷螺杆机说明书
- JJG 700 -2016气相色谱仪检定规程-(高清现行)
评论
0/150
提交评论