软件测试方法与实践讲义-第二章_第1页
软件测试方法与实践讲义-第二章_第2页
软件测试方法与实践讲义-第二章_第3页
软件测试方法与实践讲义-第二章_第4页
软件测试方法与实践讲义-第二章_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

1、2020年7月7日,讲授软件测试,第1、2章白盒测试,第2章白盒测试,第2章白盒测试概要,白盒测试(white-box测试)是玻璃盒静态方法是指,以一定的顺序直接检查源代码来发现错误,生成测试用例,并不执行被检查程序来发现错误,而也称为代码检查法的动态方法是指,以一定的顺序生成测试用例,执行被测试者2020年7月7日,第二章白箱测试,3,2.1基本路径测试,1 .流图标,基本路径测试是Tom McCabe首先提交的白箱测试技术,基本路径测试为测试用例设计者提供方法,用于程序和流程设计、箭头表示边缘,控制流的方向。 2020年7月7日,第二章白箱测试,4,2.1基本路径测试,上述映射的前提是设计

2、图的判定不包含复合条件。 如果设计图的判定包含复合条件,首先必须转换成等效的简单条件设计图。 (c )对应的流程图,a )包含复合条件的图纸,x=1,x=2,t,f,y=0,b )仅包含简单条件的图纸,a b or c d,2020年7月7日,第二章白箱测试,5,2.1基本路径测试,流程图,流程图2.1基本路径测试2020年7月7日,第二章白盒测试,7,2.1基本路径测试,2 .独立程序路径将流图的节点和边缘组成的封闭部分称为一个区域,在计算区域数时,图的外部部分也是一个例如,上图(b )所示的流程图的区域数是3。 独立路径是向程序引入新处理语句序列或新条件的路径,在流程图中,独立路径至少包含

3、一条在定义该路径之前未使用过的边。 在基本路径测试中,独立路径的数量是流程图的区域数。 2020年7月7日,第二章白盒测试,8,2.1基本路径测试,2 .独立程序路径,例如第六页流程图所示的控制流程图中的一组独立路径, 路径1:1-11路径2:1-2-3-4-5-10-1-11路径3:1-2-3-6-8-9-10-1-11路径4:1-2-3-6-7-9-10-1-11路径路径1、路径2 2020年7月7日,第二章白箱测试,9,2.1基本路径测试,3 .环复杂性,环复杂性提供了程序逻辑复杂性的定量测量,该测量用于基本路径测试方法,所得到的值计算独立路径的数量,不包括程序基本集可以用以下方法计算复

4、杂性: (1)流程图中的区域数=环复杂性(2)指定流程图g的环复杂性CC(G ),定义CC(G)=E-N 2。 这里,e给出流程图中的边的数目,n给出流程图节点的数目(3)流图g的循环复杂度CC(G ),并定义CC(G)=P 1。 这里,p是流程图g中的判断节点的数目。 2020年7月7日,第二章白箱测试,10,2.1基本路径测试,3 .环复杂度,左图可通过以下方法计算: (1)流程图有四个区域: (2)CC(G)=11边-9节点2=4; (3)CC(G)=3三个判断节点1=4。 因此,左图的环的复杂度为4。 2020年7月7日,第二章白盒测试,11,2.1基本路径测试,4 .测试用例推导,程

5、序用例(varl : list ) varp,q:/定义p,q begin (1) p :=fi do (3) q :=下一个(p,l ) (4)委托(l ) do (5) ifaq=删除(6) delete (AQ,l ) (7) else q 3360=下一个(q,l ) (8)结束(9) l )导出(10 )结束,2020年7月7日,第二章白盒测试,12,2.1基本路径测试,4 .测试用例;(1)根据详细的设计和源程序,导出流程图的拓扑图。,1,2,begin,3,4,5,10,9,8,结束,6,7,p=结束(l ),结束(l ),Aq=Ap,结束(l ),2020年7月7日,第二章白盒

6、测试,13 McCabe用此平面图中区域的数量定义程序图循环的复杂性。 区域的数量是边和节点包围的封闭区域的数量加上图形外的区域的数量1。 CC(G)=4个区域CC(G)=14边-12节点2=4 CC(G)=3个判定节点1=4,2020年7月7日,第二章白箱测试,14,2.1基本路径测试,4 .导出测试用例,(3)决定仅包含独立路径的基本路径集独立路径是包含一组先前未处理的语句或条件的路径。 一条独立路径是至少包括不是其他独立路径的边缘的路径。 例如,在本节所示的图中,独立的路径集是路径1:1210路径2:123489210路径2:123489210路径3:123456489210,2020年

7、7月7日,第2章白盒测试,15,2.1基本路径测试测试人员可以选择数据,以在测试每条路径时正确设置确定节点的条件。 路径1测试用例:输入条件: L=(),即列表为空的期待结果: L=(),无列表清洁处理路径2测试用例:输入条件: L=(Ap )期待结果: L=(Ap ),2020年7月7日,第2章白盒测试,16,2.1基本路径测试测试人员可以选择数据,以在测试每条路径时正确设置确定节点的条件。 路径3测试用例:输入条件: L=(Ap,Aq )且Ap=Aq期待结果: L=(Ap )从列表中清理Aq路径4测试用例:输入条件: L=(Ap,Aq )且ApAq期待结果: L=(Ap,aq)2020年7

8、月7日,第2章白色2.1基本路径测试、5 .图表矩阵法、图表矩阵(Graph Matrix )是正方形矩阵,其大小(列数和行数)等于流图的节点数。 每一行和每一列对应于所识别的节点,并且矩阵项对应于节点之间的连接(边缘)。1、3、4、2、5、a、e、f、g、b、c、d、1、2、3、5、节点连接到节点,1、2、3、4、2020年7月7日,第二章白盒测试,18、2.1基本路径测试,5 .妈妈跨越连接的处理时间,1 2 3 4 5,连接到节点,1 2 3 4 5,跨越连接时所需的内存所需的资源。 连接,1-1=0,2-1=1,2-1=1,2-1=1,连接矩阵,环复杂度3=4,2020年7月7日,第二

9、章白盒测试,19,2.2控制结构测试,2 .流测试对于语句编号为s的语句,如果DEF(S)=X|语句s包含x的定义USE(S)=X|语句s中包含x的使用,如果语句s是if或循环语句,则DEF集为空,USE集取决于s的条件。 如果存在从s到s的路径,且该路径不包含x的定义,则在语句s中对变量x的定义对语句s也有效。 变量可以是计算使用(c-use )或断言使用(p-use )。 定义变量x -使用链(DU链),在DEF(S )和USE(S )中有x、s、s和x,语句s中定义的x在语句s中有效。 2020年7月7日,第二章白箱测试,20,2.2控制结构测试,2 .数据流测试,DU测试策略:要求每条

10、DU链至少复盖一次。 您可以使用数据流测试策略来选择包含嵌套if和循环语句的程序的测试路径。 虽然它能有效地发现错误,但其垄断率的测量和路径选择比条件测试更难。fooA() x=read (); PS (x0 )打印x-1; else打印x; 入门,fooA (),1,2,5,3,exit,c-usex,4,def(1)=x,p-usex,2,4,c-usex,3,2020年7月7日,第二章白箱测试,21,7 22 2.2结构测试,3 .循环测试,循环也是程序的主要逻辑结构,虽然不能复盖包括循环结构在内的所有路径,但可以通过限制循环次数进行测试。 (1)将单周期n设为可以执行周期的最大次数。

11、设计以下情况下的测试用例: (1)跳过循环。 (2)循环只执行一次。 (3)执行m次Mn的周期。 (4)执行n-1次循环、n次、n 1次循环。 2020年7月7日,第二章白盒测试,23,2.2控制结构测试,(2)嵌套环,首先测试最内层环:使所有外层的环变量最小,最内层用简单的环测试从内侧向外侧, 测试上一层循环:测试时该层以外的所有外侧循环的循环变量取最小值,该层内的所有嵌套内侧循环的循环变量取“典型”的值,该层用简单循环测试,直到所有级别的循环测试完成为止3 .循环测试,2020年7月7日,第二章白盒测试,24,2.2控制结构测试,(3)如果串联回路的各回路彼此独立,可以分别用简单的循环方法

12、进行测试,但是第一个回路变量为第二个两个环是不独立的,在该情况下,将第一个环视为外侧环,将第二个环视为内侧环,通过测试嵌套环来处理。 (4)像非结构环一样的环要结构化后再进行测试。 3 .循环测试,2020年7月7日,第二章白盒测试,25,2.3代码检验法,1 .代码检验,(1)代码检验小组代码检验是由多个程序员和检查员组成的检查组,通过阅读、讨论和争论,使程序静态主持人:负责保证审查以规定的速度进行,保证效率,尽可能多地发现错误的作者:直接参与代码设计和编写的人,这是相对次要的角色评论家:与代码有直接关系但不是作者的人记录员: 2020年7月7日,第二章白箱测试,26,2.3代码检查法,1

13、.代码审查,(2)代码审查程序计划(Plan ) :主持人决定和分发会议的时间、地点、核对表的概要(Overview Meeting ) :作者编写代码:评委独立审查代码,发现错误的审查会议(Inspection Meeting ) :主持人由谁阅读说明,别人提问讨论,会议时间在90分钟到120分钟之间,大部分审查每小时讨论150行代码。 审查报告(Report ) :会议结束后,主持人重写所有缺陷,包括类型和重要性(Rework ) :主持人将缺陷分配给谁(作者)并进行修复-up :主持人监视正在审查的重做任务。 2020年7月7日,第二章白箱考试,27,2.3代码检验法,1 .代码审查,(

14、2)代码审查步骤,审查前代码,计划,审查会议,审查报告,重做,跟进,审查后代码,概要,、2020 2.3代码检验法,1 .代码审查,(3)代码审查注意事项代码审查以说明、提问方式进行,一般有正式的计划、流程和结果。 以会议的形式,制定会议的目标、流程和规则,结束后必须注意编写报告书,对每个代码核对表适当记录核对问题,发现避免现场修正的重大缺陷,修正后的会议需要重新开始的检查要点是代码核对表2020年7月7日,第二章白盒测试,29,2.3代码检查,1 .代码检查,(4)代码检查表的数据参照错误参照变量是否已初始化? 数组的下标是否越过边界? 数组的下标是整数值吗? 内存中的值是否与引用它的变量类

15、型匹配? 如果分配的内存小于可寻址的空间,是否存在明显的寻址问题? 使用指针或引用变量时,是否与引用值的类型相同? 数据结构在多个子程序中使用时的定义是否一致? 读写字符串或引用数组的下标时,是否超出字符串或数组的末尾? 在面向对象的语言中,所有继承条件都满足实现类吗? 2020年7月7日,第二章白盒测试,30,2.3代码检查法,数据宣言错误全部变量都被明确声明了吗? 变量在声明时初始化合适吗? 各变量有正确的数据类型吗? 变量的初始化是否与数据类型一致? 不同的变量有相似的名字吗? 在计算错误中混合有不同种类的数据进行计算吗? 计算公式时会发生上溢或下溢吗? 除法运算的除数是0吗? 有不正确的计算结果吗? 变量的值是否超出了实际应用的值范围? 在由多个算子构成的公式中,计算顺序和算子的优先顺序是否正确? 有没有非法使用整数算术,特别是除法? 2020年7月7日,第二章白箱检查,31,2.3代码检查,1 .代码检查,比较错误有不同类型之间的比较

温馨提示

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

最新文档

评论

0/150

提交评论