1、2022-8-141软件测试培训非度信息技术公司测试部 王云峰2022-8-142之二:测试方法黑盒测试与白盒测试2022-8-143分类分类 1 1从执行软件的角度,分为静态测试和动态测试。从执行软件的角度,分为静态测试和动态测试。2 2从系统的结构角度,分为黑盒测试和白盒测试;从系统的结构角度,分为黑盒测试和白盒测试;3 3从测试过程角度,分为单元测试、集成测试、系统从测试过程角度,分为单元测试、集成测试、系统测试和验收测试等。测试和验收测试等。4 4从测试环境分为:从测试环境分为:AlphaAlpha和和BetaBeta测试。测试。2022-8-1441.静态测试 文档审查 代码走读(1
2、)类型冲突(2)子程序参数错误(3)数据错误(4)内存泄漏(5)越界(6)指针错误(7)空悬指针(8)逻辑错误2022-8-145 2.动态测试 动态测试是真正运行被测程序,在执行过程中,通过输入有效的测试用例,对其输入与输出的对应关系进行分析,以达到检测的目的。动态测试分为结构测试和功能测试。结构测试经常采用语句测试,分支测试,路径测试。功能测试就是黑盒子测试。动态测试方法的基本步骤:(1)选取定义域的有效值,或选取定义域外的无效值;(2)对已选取值决定预期的结果;(3)用选取值执行程序;(4)执行结果与预期的结果相比,不吻合则说明程序有错。2022-8-1463.白盒测试 白盒测试也称作结
3、构测试或逻辑驱动测试,它的目的是了解和检测产品的内部工作过程,在测试手段上使用的是覆盖测试方法。覆盖测试可以分为语句覆盖、判断覆盖、条件覆盖、判断/条件覆盖、条件组合覆盖和路径覆盖。2022-8-147 语句覆盖是指设计若干个测试用例,程序运行时每个可执行语句至少被执行一次。在保证完成要求的情况下,测试用例的数目越少越好。语句覆盖2022-8-148判断(分支)覆盖方法 判定覆盖测试是设计若干测试用例,判定覆盖测试是设计若干测试用例,想法使得程序中的每个判定至少都获得想法使得程序中的每个判定至少都获得一次一次“真真”值和值和“假假”值,值,也就是说程也就是说程序中的每个取序中的每个取“真真”“
4、”“假假”的分支至少的分支至少经历一次。也叫经历一次。也叫“分支覆盖分支覆盖”测试。测试。2022-8-149 是设计若干测试用例,每个判断条是设计若干测试用例,每个判断条件中的每个条件的真假值至少执行一遍。件中的每个条件的真假值至少执行一遍。条件覆盖方法 2022-8-1410 判断判断/条件覆盖是指执行被条件覆盖是指执行被测试程序时,程序中每个判断条测试程序时,程序中每个判断条件的真假值分支至少被执行一遍,件的真假值分支至少被执行一遍,并且每个判断条件的内部判断式并且每个判断条件的内部判断式的真假值也要被执行一遍。的真假值也要被执行一遍。判定与条件覆盖测试方法 2022-8-1411条件组
5、合覆盖 条件组合覆盖是指设计若干个测试用例,执行被测试程序时,程序中每个判断条件的的内部判断式的各种真假组合可能都至少被执行一遍。2022-8-1412路径覆盖方法 路径覆盖也是白盒测试最为典型的问题。路径覆盖要求设计若干测试用例,执行被测试程序时,能够覆盖程序中所有的可能路径。2022-8-14134.黑盒测试 黑盒方法的定义是:黑盒方法的定义是:已知产品的功能设计,可以进行测试证明已知产品的功能设计,可以进行测试证明每个实现了的功能是否符合要求。每个实现了的功能是否符合要求。不考虑程序内部的逻辑结构和内部特性,不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明,在特定的条件下,只
6、依据程序的需求规格说明,在特定的条件下,输入相应的数据,检查程序的输出是否符合它输入相应的数据,检查程序的输出是否符合它的功能说明。的功能说明。2022-8-14144.1等价类分析方法 等价类划分法是黑盒测试用例设计中一种常用的设计方法,它将不能穷举的测试过程进行合理分类,从而保证设计出来的测试用例具有完整性和代表性。等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭示程序中的错误都是等效的。等价类合理地假设:某个等价类的代表值,与该等价类的其他值,对于测试来说是等价的。因此,可以把全部的输入数据划分成若干的等价类,在每一个等价类中取一个数据来进行测试。这样就能以较少的具有代表性
7、的数据进行测试,而取得较好的测试效果。2022-8-1415划分等价类有如下原则 (1 1)如果输入条件规定了数据的范围和取值个数,)如果输入条件规定了数据的范围和取值个数,可以可以确定一个有效等价类和确定一个有效等价类和2 2个无效等价类。个无效等价类。例如:例如:100X999100X999,有效等价类为有效等价类为 (100100,999999),无效等价),无效等价类为小于类为小于100100和大于和大于999999。(2 2)如果输入条件规定了一个必须成立的情况(如输入数)如果输入条件规定了一个必须成立的情况(如输入数据必须是日期),可以划分为一个有效等价类(输入是日期字符)据必须是
8、日期),可以划分为一个有效等价类(输入是日期字符)和一个无效等价类(输入非日期字符)和一个无效等价类(输入非日期字符)(3 3)如果输入条件是一个布尔量,则可以确立一个有效等)如果输入条件是一个布尔量,则可以确立一个有效等价类和一个无效等价类;价类和一个无效等价类;如果在输入条件中对输入数据的一组可能值进行了规定,如果在输入条件中对输入数据的一组可能值进行了规定,并并且程序是用不同的方法处理每一种值,且程序是用不同的方法处理每一种值,那么可以为每一种值划那么可以为每一种值划分一个有效等价类和一个无效等价类。分一个有效等价类和一个无效等价类。2022-8-14164.2边界值分析方法 边界值分析
9、法是一种补充等价类划分法的测试用例设计技术,它不是选择等价类的任意元素,而是选择等价类边界的测试用例。在测试过程中,可能会忽略边界值的条件,而软件设计中大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。2022-8-1417遵循以下几条原则 (1 1)如果输入条件规定了值的范围,则应该选取刚达)如果输入条件规定了值的范围,则应该选取刚达到这个范围的边界值,以及刚刚超过这个范围边界的值作到这个范围的边界值,以及刚刚超过这个范围边界的值作为测试输入数据。为测试输入数据。(2 2)如果输入条件规定了值的个数,则用最大个数、
10、)如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少最小个数、比最小个数少1 1、比最大个数多、比最大个数多1 1的数作为测试的数作为测试数据。数据。(3 3)根据规格说明的每一个输出条件,分别使用以上)根据规格说明的每一个输出条件,分别使用以上两个原则。两个原则。(4 4)如果程序的规格说明给出的输入域或者输出域是)如果程序的规格说明给出的输入域或者输出域是有序集合(如有序表、顺序文件等),则应选取集合的第有序集合(如有序表、顺序文件等),则应选取集合的第一个元素和最后一个元素作为测试用例。一个元素和最后一个元素作为测试用例。(5 5)如果程序中使用了一个内部数据结构,则应当选
11、)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界值作为测试用例。择这个内部数据结构的边界值作为测试用例。(6 6)分析规格说明,找出其他可能的边界条件。)分析规格说明,找出其他可能的边界条件。2022-8-14184.3 4.3 错误推测方法简介错误推测方法简介1.定义:基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法。2.错误推测方法的基本思想:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。2022-8-14191)例如,输入数据和输出数据为0的情况;输入表格为空格或输入表格只有一行。这些都是容易发生错误的情况
12、。可选择这些情况下的例子作为测试用例。2)例如,前面例子中成绩报告的程序,采用错误推测法还可补充设计一些测试用例:I.程序是否把空格作为回答II.在回答记录中混有标准答案记录III.除了标题记录外,还有一些的记录最后一个字符即不是2也不是3IV.有两个学生的学号相同V.试题数是负数。3)再如,测试一个对线性表(比如数组)进行排序的程序,可推测列出以下几项需要特别测试的情况:I.输入的线性表为空表;II.表中只含有一个元素;III.输入表中所有元素已排好序;IV.输入表已按逆序排好;V.输入表中部分或全部元素相同 2022-8-14204.44.4因果图方法因果图方法方法简介方法简介1.定义:是
13、一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。2.因果图法产生的背景:等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字,因此必须考虑采用一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图(逻辑模型)。2022-8-14213.因果图介绍1)4种符号分别表示了规格说明中向4种因果
14、关系。2)因果图中使用了简单的逻辑符号,以直线联接左右结点。左结点表示输入状态(或称原因),右结点表示输出状态(或称结果)。3)Ci表示原因,通常置于图的左部;ei表示结果,通常在图的右部。Ci和ei均可取值0或1,0表示某状态不出现,1表示某状态出现。2022-8-14224.因果图概念1)关系恒等:若ci是1,则ei也是1;否则ei为0。非:若ci是1,则ei是0;否则ei是1。或:若c1或c2或c3是1,则ei是1;否则ei为0。“或”可有任意个输入。与:若c1和c2都是1,则ei为1;否则ei为0。“与”也可有任意个输入。2)约束输入状态相互之间还可能存在某些依赖关系,称为约束。例如,
15、某些输入条件本身不可能同时出现。输出状态之间也往往存在约束。在因果图中,用特定的符号标明这些约束。A.输入条件的约束有以下4类:E约束(异):a和b中至多有一个可能为1,即a和b不能同时为1。I约束(或):a、b和c中至少有一个必须是1,即 a、b 和c不能同时为0。O约束(唯一);a和b必须有一个,且仅有1个为1。R约束(要求):a是1时,b必须是1,即不可能a是1时b是0。B.输出条件约束类型输出条件的约束只有M约束(强制):若结果a是1,则结果b强制为0。2022-8-14232022-8-14245.因果图法设计测试用例的步骤:1)分析软件规格说明描述中,那些是原因(即输入条件或输入条件的等价类),那些是结果(即输出条件),并给每个原因和结果赋予一个标识符。2)分析软件规格说明描述中的语义,找出原因与结果之间,原因与原因之间对应的关系,根据这些关系,画出因果图。3)由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现,为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。4)把因果图转换为判定表。5)把判定表的每一列拿出来作为依据,设计测试用例。2022-8-1425再见!