已阅读5页,还剩52页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章 白盒测试的实用技术 白盒测试(White Box Testing),按照程序内部的结构、逻辑驱动测试程序,通过测试来检测产品内部动作是否按照设计说明书的规定正常进行,检验程序中的每条路径是否都能按预定要求正确工作。,软件测试技术研究组 中国信息大学,白盒测试技术是软件测试的主要方法之一,白盒测试的基本概念、检查方法、测试方法、测试工具等内容是必须掌握的,本章重点讨论以下内容: 白盒测试的概述 白盒测试的静态检查方法 白盒测试的常用方法,软件测试技术研究组 中国信息大学,2.1白盒测试的概述 白盒测试的对象主要是源程序。是指用代码内部的分支、路径、条件,使程序设计的控制结构导出测试用例,是软件测试的主要方法之一。 2.1.1 白盒测试的基本知识 白盒测试方法分为两类: (1)静态测试 (2)动态测试:,软件测试技术研究组 中国信息大学,2.1.2 白盒测试测试原则 白盒测试的原则有4点: 1)保证一个模块中所有路径至少被测试一次; 2)所有逻辑值都要测试真和假两种情况; 3)检查程序的内部数据结构是否有效; 4)检查上、下边界及可操作范围内运行所有循环。,软件测试技术研究组 中国信息大学,2.1.3 白盒测试的类别、依据和流程 白盒测试策略是首先进行静态结构分析,采用先静态后动态的组合方式。然后进行覆盖测试。利用静态测试的分析结果和通过动态测试的结果进行进一步确认已达到测试效果。白盒测试一般要考虑类别、依据和流程。,软件测试技术研究组 中国信息大学,1. 白盒测试的类别 白盒测试的类别具体分为8大类。 (1) 软件公用问题的测试; (2) 语言测试; (3) SQL语句测试; (4) 数据类型测试; (5) 界面测试; (6) 数值对象测试; (7) 业务对象测试; (8) 数据管理对象测试。,软件测试技术研究组 中国信息大学,2. 白盒测试依据 软件需求报告; 软件需求规格说明; 程序设计文档; 软件界面设计; 编码规范; 开发命名标准。,软件测试技术研究组 中国信息大学,3.白盒测试的流程 白盒测试的流程分为界面对象和业务对象两种方 式。 界面对象测试 界面对象测试的流程如图2-1所示。,软件测试技术研究组 中国信息大学,图2-1界面对象的流程图,(2) 业务对象流程测试 业务对象测试的流程如图2-2所示。,软件测试技术研究组 中国信息大学,图2-2 业务对象测试的流程图,2.2 白盒测试方法 在白盒测试中,可以使用各种测试方法进行测试。但是,测试要考虑五点问题。 (1)测试中,尽量先用自动化工具来进行静态结构分析; (2)测试中建议先从静态测试开始,如:静态结构分析、代码走查和静态质量度量,然后进行动态测试,如:覆盖率测试; (3)利用静态分析的结果作为依据,再使用代码检查和动态测试的方式对静态分析结果进行进一步确认,提高测试效率及准确性; (4)覆盖率测试是白盒测试中的重要手段,在测试报告中可以作为量化指标的依据,对于软件的重点模块,应使用多种覆盖率标准衡量代码的覆盖率; (5)在不同的测试阶段,测试的侧重点是不同的。,软件测试技术研究组 中国信息大学,2.2.1 代码检查 代码检查是静态测试的主要方法,代码检查包括代码走查、桌面检查、流程图审查等。对于代码检查从如下几点进行叙述。 1)概述 代码检查主要检查代码和流图设计的一致性、代码结构的合理性、代码编写的标准性、可读性、代码的逻辑表达的正确性等方面。包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。,软件测试技术研究组 中国信息大学,2)代码走查目的 代码走查是为达到以下目的: 通过检查代码程序是不是按照某种标准或规范编写的代码; 通过检查代码来发现程序缺陷; 通过检查代码容易发现程序产生的错误; 通过检查代码来发现代码是不是流程图要求的; 通过检查代码来发现有没有遗漏的项目; 要代码易于移植,代码经常需要在不同的硬件中运行,或者使用不同的编译器编译; 要代码易于阅读、理解和维护。,软件测试技术研究组 中国信息大学,2.2.2 代码检查方式 代码走查的方式有: 1 桌面检查 2 走查 3 代码审查 代码审查可分为以下两步: 第一步:小组负责人把程序文本、规范、相关要求、流程图及设计说明书发给每个成员。 第二步:每个成员依据所发材料作为审查依据,但是由程序员讲解程序的结构每、逻辑和源程序。在此过程中,小组成员可以提出自己的疑问;程序员在讲解自己的程序时,也能发现自己原来没有注意到的问题。,软件测试技术研究组 中国信息大学,2.2.3 代码检查项目 代码检查项目主要有以下几点: 目录文件组织 检查函数 数据类型及变量 检查条件判断语句 检查循环体制 检查代码注释 桌面检查 其它检查,软件测试技术研究组 中国信息大学,2.2.4 静态结构分析 静态结构分析主要是以图形的方式表现程序的内部结构,例如函数调用关系图、函数内部控制流图。 通过应用程序各函数之间的调用关系展示了系统的结构。列出所有函数,用连线表示调用关系和作用。静态结构主要分析: 1. 可以检查函数的调用关系是否正确; 2. 是否存在孤立的函数而没有被调用; 3. 明确函数被调用的频繁度,对调用频繁的函数可以重点检查。,软件测试技术研究组 中国信息大学,2.2.5 SQL语句测试 主要检查以下两点: 语句检查 类型转换 2.2.6 代码检查的分析与评价 代码检查的分析与评价主要注意以下两大 点: 1 能力 陈述经代码检查证实了的本软件的能力。 2 缺陷和限制,软件测试技术研究组 中国信息大学,2.3 白盒测试的常用技术 白盒测试常用技术主要有7种。现分别叙述如下:,软件测试技术研究组 中国信息大学,2.3.1 逻辑覆盖法,逻辑覆盖也是白盒测试主要的动态测试方法之一,是以程序内部的逻辑结构为基础的测试技术,是通过对程序逻辑结构的遍历实现程序的覆盖,这一方法要求测试人员对程序的逻辑结构有清楚的了解 逻辑覆盖法主要讨论四点: 测试覆盖率; 逻辑覆盖 ; 面向对象的覆盖 ; 测试覆盖准则。 现分别进行讨论。,1. 测试覆盖率 测试覆盖率是用于确定测试所执行到的覆盖项的百分比。其中的覆盖项是指作为测试基础的一个入口或属性,比如语句、分支、条件等。 测试覆盖率可以表示出测试的充分性,在测试分析报告中可以作为量化指标的依据,测试覆盖率越高效果越好。但覆盖率不是目标,只是一种手段。 其中 测试覆盖率包括功能覆盖和结构覆盖,软件测试技术研究组 中国信息大学,2 逻辑覆盖 从覆盖源程序语句的详细程度分析,逻辑覆盖标准有语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖。 为便于理解,根据下面所示的2个被测试程序(用C语言书写),分别讨论几种常用的覆盖技术。,程序1如下: void js(float A,float B,float X) if( A1&B=0)X=X/A; if(A=2|X1) X=X+1; ,图2-2 程序1流程图,程序2如下: void DoWork(int x,int y,int z) int k=0,j=0; if(x2) ,图2-4 程序2流程图,1语句覆盖 语句覆盖使程序中每个语句至少都能被执行一次。 例:请对以上的程序1和程序2设计测试用例,达到语句覆盖。,在程序1中,为使程序中每个语句至少执行一次,只需设计一个能通过路径a-c-e的数据就可以了,例如选择输入数据为:A=2,B=0,X=2就可达到“语句覆盖”标准。 在程序2中,如测试用例输入为:x=4、y=5、z=5 程序执行的路径是:a-b-d。,如果把程序2中的第二个if 改成else呢?,2判定覆盖 比语句覆盖稍强的覆盖标准是判定覆盖。按判定覆盖准则进行测试是指,设计若干测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假值均曾被满足。判定覆盖又称为分支覆盖。,例:请对以上的程序1和程序2设计测试用例,达到判定覆盖。,程序1:判定覆盖 判定如下: A1&B=0 为真 为假 A=2|X1 为真 为假 测试用例如下: A=2 B=0 X=1 覆盖1,3 A=5 B=0 X=0 覆盖2,4,3条件覆盖 在设计程序中,一个判定语句是由多个条件组合而成的复合判定。 条件覆盖的含义是:构造一组测试用例,使得每一判定语句中每个逻辑条件的可能值至少满足一次。 例在程序2中,共有四个条件,A1, B=0, A=2, x1 ,条件覆盖使得每个条件的真假值至少满足一次,例:请对以上的程序1和程序2设计测试用例,达到条件覆盖。,程序1条件覆盖 所有的条件如下: A1 为真 为假 B=0 为真 为假 A=2 为真 为假 X1 为真 为假 测试用例: A=2 B=0 X=0 覆盖1,3,5,8 A=0 B=1 X=2 覆盖2,4,6,7,4条件判定组合覆盖 条件判定组合覆盖的含义是:设计足够的测试用例,使得判定中每个条件的所有可能(真/假)至少出现一次,并且每个判定本身的判定结果(真/假)也至少出现一次。,例:请对以上的程序1和程序2设计测试用例,达到条件判定组合覆盖。,程序1条件判定覆盖 所有的条件如下: A1 为真 为假 B=0 为真 为假 A=2 为真 为假 X1 为真 为假 判定如下: A1&B=0 为真 为假 A=2|X1 为真 为假 测试用例: A=2 B=0 X=2 覆盖1,3,5,7,9,11 A=0 B=1 X=0 覆盖2,4,6,8,10,12,5多条件覆盖 多条件覆盖也称为条件组合覆盖,它的含义是:设计足够的测试用例,使得每个判定中条件的各种可能组合都至少出现一次。显然满足多条件覆盖的测试用例是一定满足判定覆盖、条件覆盖和条件判定组合覆盖的。,测试用例: 1)A=2 B=0 X=2 覆盖1,5 2)A=2 B=1 X=0 覆盖2,6 3)A=0 B=0 X=2 覆盖3,7 4)A=0 B=1 X=0 覆盖4,8,判定1 A1&B=0 其中两个条件四个组合 A1 B=0 T1,T2 A1 B!=0 T1,F2 A=1 B=0 F1,T2 A=1 B!=0 F1,F2,判定2 A=2|X1 其中两个条件四个组合 A=2 X1 T3,T4 A=2 X1 F3,T4 A!=2 X=1 F3,F4,2. 逻辑覆盖 根据覆盖目标的不同和覆盖源程序语句的详尽程度,逻辑覆盖又可分为语句覆盖 、判定覆盖、条件覆盖、条件判定组合覆盖、多条件覆盖、修改条件判定覆盖、组合覆盖和路径覆盖。 3. 面向对象的覆盖 面向对象的覆盖主要讨论继承上下文覆盖和基于状态的上下文覆盖。,软件测试技术研究组 中国信息大学,4. 测试覆盖准则 测试覆盖准则主要讨论ESTCA(Error Sensitive Test Cases Analysis)错误敏感测试用例分析和LCSAJ(Linear Code Sequence and Jump)线性代码序列与跳转。 (1)ESTCA覆盖准则 (2)现行代码序列与跳转LCSAJ 现行代码序列与条状LCSAJ是指一组顺序执行的代码,以控制流跳转为结束点。可产生4层覆盖,软件测试技术研究组 中国信息大学,2.3.2 插桩技术 软件动态测试中,插桩测试是一个被广泛应用的测试方法。插桩测试就是向源程序中插入语句然后执行程序,通过打印语句,获得动态信息(我们最为关心的信息)。 在这里,我们举一个最简单的例子,以计算整数X和整数Y的最大公约数为例,试图说明插桩技术的要点。 插桩后求最大公约数程序流程图如图2-3所示。,软件测试技术研究组 中国信息大学,软件测试技术研究组 中国信息大学,图2-3求最大公约数程序插桩流程图,2.3.3基本路径测试法 上节的例子是个比较简单的程序段,只有两条路径。但在实际问题中,即使一个不太复杂的程序,其路径的组合都是一个庞大的数字。 基本路径测试法是在是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试程序的每一条可执行语句至少执行一次。,1程序的控制流图 控制流图是描述程序控制流的一种图示方式。其中基本的控制结构对应的图形符号如图2-4所示。在图2-5所示的图形符号中,圆圈称为控制流图的一个结点,它表示一个或多个无分支的语句或源程序语句。,图2-5 控制流图的图形符号,图2-6(a)所示的是一个程序的流程图,它可以映射成图(b)所示的控制流图。,图2-6 程序流程图和对应的控制流图,图2-7 复合逻辑下的控制流程图,如果判断中的条件是复合条件,则需改变复合条件为一系列只有单个条件的嵌套的条件,如: If a and b then x else y 为复合条件的判断,它的控制流图如2-7所示.,2基本路径测试法的步骤 (1) 画出程序控制流图 流程图用来描述程序控制结构.可将流程图映射出一个相应的控制流程图(不包括复合条件). 例:有下列一段程序:,Void sort( int i; int type) int x=0; int y=0; while(i0) if (type=0) x=y+2;break; else if(type=1) x=y+10; else x=y+20; ,(2) 计算程序环路复杂性 进行程序的基本路径测试时,程序的环路复杂性给出了程序基本路径集合中的独立路径条数,这是确保程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。 所谓独立路径,是指包括若干未曾处理的语句或条件的一条路径,基本路径集不是惟一的,对于给定的控制流图,可以得到不同的基本路径集。 通常环路复杂性可用以下2种方法求得。 将环路复杂性定义为控制流图中的区域数。 设E为控制流图的边数,N为图的结点数,则定义环路的复杂性为V(G)=EN+2。 若设P为控制流图中的判定结点数,则有V(G)=P+1。,(2) 确定独立路径集合 独立路径数=环路复杂度V(G) 给出上例的独立路径 (4) 准备测试用例,4,14 4,6,7,14 4,6,8,10,12,4,14 4,6,8,11,12,4,14,例:设计一段程序,输入每个学生的成绩,以-1作为输出结束标志. 计算学生人数,学生分数的总分,平均分的测试程序.该程序最多输入50个值。 给出程序流程图 写出用C语言表示的程序 根据流程图画出控制流图 计算环路复杂度 确定基本路径集合 为每一条路径设计测试用例 进行测试,程序流程图如下:,开始,i=0,n1=n2=0;sum=0,Score(i)!=-1 and n250,N2=n2+1,Score(i)=0 and score(i)=100,i=i+1,N10,Average=-1,Average=sum/n1,返 回,F 2和3,4 T,F 2和3,N1=n1+1,sum=sum+score(i),7 T,8,9,10,11,根据上面的程序流程图 1)绘制相应程序的控制流图 2)确定环路复杂度 3)确定基本路径集合 4)为每一条独立路径各设计一组测试用例。,2.3.4 域测试法 域测试是一种基于程序结构的测试方法,基于对程序输入空间(域)的分析,选择测试点进行测试。主要为: 1)域错误:程序的控制流存在错误,对于某一特定的输入可能执行的是一条错误路径,这种错误称为路径错误,也叫做域错误; 2) 计算型错误:对于特定输入执行的路径正确,但赋值语句的错误导致输出结果错误,称为计算型错误; 3) 丢失路径错误:由于程序中的某处少了一个判
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医院投资决策中的ICU设备选型与评估
- 2024年书店加盟协议
- 2024年度融资租赁农产品加工设备合同2篇
- 2024全新房屋出租权转让与租客信用修复服务合同3篇
- 2024年广告灯箱期限租赁协议3篇
- 2024年度国际货物买卖运输代理服务协议3篇
- 人力资源管理中的员工激励措施探讨
- 2024年度幼儿园食品供应采购合同3篇
- 企业国际化战略与实践案例
- 2024年度房屋买卖合同标的房屋位置及面积和价格规定2篇
- 软件测试汇报
- 吉林省长春市第一〇八学校2024-2025学年七年级上学期期中历史试题
- 2024年世界职业院校技能大赛高职组“市政管线(道)数字化施工组”赛项考试题库
- 初中《孙中山诞辰纪念日》主题班会
- 5.5 跨学科实践:制作望远镜教学设计八年级物理上册(人教版2024)
- 阿斯伯格综合症自测题汇博教育员工自测题含答案
- 天津市2023-2024学年七年级上学期语文期末试卷(含答案)
- 2024年法律职业资格考试(试卷一)客观题试卷及解答参考
- 桩基及基坑支护工程技术施工方案(三篇)
- 司法考试2024年知识点背诵版-民法
- 初级消防设施操作员实操题库
评论
0/150
提交评论