软件测试-黑盒测试与白盒测试
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
白盒与黑盒的概念 黑盒测试技术 白盒测试技术 白盒与黑盒的比较
黑盒与白盒
黑盒测试
X=2
Y=4 ?
黑盒测试又叫功能测试,它关注的是被测软件功能的实
现,而不是内部逻辑。在黑盒测试中,被测对象的内部结
构、运作情况对测试人员是不可见的。 黑盒测试关注点: 功能错误与遗漏 界面错误 数据结构与外部数据库访问错误 性能错误 初始化与终止错误
X=2
Y=4 ?
有效等价类1-100之间
无效等价类>100
<1 整数
1-100 >100
数值
加数 非数值 小数
字母 特殊字符 空格 空白
黑盒测试技术
等价类技术
X=2
Y=4 ?
黑盒测试技术
等价类方法小结
等价类的定义
X=2
Y=4 ?
等价类、有效等价类、无效等价类。 划分步骤 先考虑数据类型,再考虑数据范围。
黑盒与白盒
白盒测试
X=2
Y=2X
Y=4 ?
白盒测试又叫玻璃盒测试、透明盒测试、结构化测试、
基于代码的测试等。白盒测试需要对系统内部的结构和工
作原理有一个清楚的了解。 白盒测试关注逻辑细节 关于控制流和数据流无意识的假设很可能造成错误 笔误是随机的
Beizer:“错误潜伏在角落里,聚集在边界上,而白盒测试更可能发现它。”
白盒测试技术
边界值测试
X=2
Y=2X
Y=4 ?
错误隐藏在角落,问题聚集在边界。 边界值测试是一种普遍的方法,适用于黑盒与白盒。 数据类型的边界值 # include <stdio.h> main() { int a=32765; int b=3; int c; c=a+b; c=c/2; printf(“%d”,c); }
画示意图,区分等价类并编号
从一个等价类中选举一组测试数据构造测试用例
黑盒测试技术
等价类方法小结
常用的等价类划分方法
X=2
Y=4 ?
规定了输入值的范围,可分为1个有效类和两个无效类
如果输入是布尔表达式,可分为1个有效类和1个无效类
如果规定了输入数据是一组值,而且程序对不同的输入值 有不同的处理,则每个允许的输入值是一个有效等价类,此外 还有一个无效等价类。 如果规定了输入数据必须遵循的规则,可以划分出一个有 效等价类和若干个无效等价类。
/*正方形类,实现正方形周长与面积计算*/ public extends Rectangle{ /*形状类,实现该形状周长与面积计算 */ class Square X=2 Y=4 ? Y=2X public Square (int x, int y){ public abstract class Shape{ public abstract double perimeter(); super(x,y); } public abstract double area(); public double perimeter(){ } return 4*a; /*矩形类,实现该矩形周长与面积计算 案例分析 } */ public class Rectangle extends Shape{ public double area(){ /*圆形类,实现圆周长与面积计算 */ int a; return a*a int b; } public class Circle extends Shape{ public Rectangle (int x, int y){ } private int r; public Circle (int x){ a=x; r=x; b=y; } } public double perimeter(){ public double perimeter(){ return 2*3.14*r; return 2*(a+b); } } public double area(){ public double area(){ return 3.14*r*r; return a*b } } } }
白盒测试技术
面向对象测试
白盒测试技术
面向对象测试步骤
划分优先级,适当取舍
类A 类D
X=2
Y=2X
Y=4 ?
Shape类
类B
类C
Rectange类
Circle类
Square类
白盒测试技术
面向对象测试步骤
对被测类进行静态分析
X=2
Y=2X
Y=4 ?
类结构是否合理
public、private、protect关键字设置是否合理 检查类中成员变量和方法设置是否合理 检查程序是否符合相应的编码规范
黑盒测试技术
黑盒技术小结
等价类法
X=2
Y=4 ?
边界值法
流程图法 因果图法
运用流程图法测试软件的总体业务流程 针对具体的模块运用等价类与边界值方法进行测试 如果涉及到多个输入条件组合情况,应用因果图法测试
黑盒测试技术
综合应用
1、计算三角形面积程序
X=2
Y=4 ?
输入三个整数 A、 B 、C ,输出以A 、B 、 C为三边的三角
X=2
Y=2X
Y=4 ?
请设计测试用例!
# include <stdio.h> main() { int i=0; int j=0; int a[5][5]; for(i=0;i<5;i++) for(j=0;j<5;j++) { a[i][j]=i+j; printf(“%d\n”,a[i][j]); } }
黑盒测试技术
边界值技术
X=2
Y=4 ?
边界值技术常和等价类结合使用,测试边界时,一般 测试边界值和正好超出边界值一个单位的值。 例如: 一程序,功能是计算两个 1-100 整数的和(两个 数由用户键盘输入)。试设计等价类。
黑盒测试技术
因果图法
X=2
Y=4 ?
案例:某奖金计算软件实现如下功能:
该软件可以计算某公司的年终奖,该公司员工分为普通
白盒测试技术
面向对象测试
面向对象基本概念
类 子类 属性 方法 对象
X=2
Y=2X
Y=4 ?
封装
继 承多 态
白盒测试技术
面向对象测试
面向对象的测试
面向对象分析的测试
面向对象设计的测试 面向对象编码的测试
X=2
Y=2X
Y=4 ?
面向对象程序的单元测试
面向过程语言测函数 面向对象语言测类
A1+B1+B3->C3
管理人员 A2+B1->C5 A2+B2->C6 A2+B1+B3->C7 A2+B2+B3->B8
A1+B2+B3->C4
黑盒测试技术
因果图法
分析:
X=2
Y=4 ?Leabharlann Baidu
3、根据以上条件分析,编写测试用例。
黑盒测试技术
因果图
X=2
Y=4 ?
因果图 表现的是输入条件(原因)之间和以及输入条件与
白盒测试技术
逻辑覆盖技术
X=2
Y=2X
Y=4 ?
逻辑覆盖 是一种传统的白盒测试技术,是专门用来测试程 序中的分支结构和循环结构。 分支结构测试
语句覆盖 分支覆盖 条件覆盖 分支-条件覆盖 条件组合覆盖 路径覆盖
白盒测试技术
逻辑覆盖技术
# include <stdio.h> main() { float a,b,x; scanf(“%f%f%f”,&a,&b, &x); if ((a>1)&&(b==0)) x=x/a; if ((a==2)||(x>1)) x=x+1; printf(“%f”,x);
//打印数组5个元素
白盒测试技术
边界值测试
分 支 判 断 语 句 的 边 界 值
X=2
Y=2X
Y=4 ?
# include <stdio.h> main() { int a,b,c; printf(“请输入两个10到99之间的整数”); scanf(“%d%d”,&a,&b); if (a<=10||a>=99) printf(“a的值应在10到99之间”); else if (b<=10||b>=99) printf(“a的值应在10到99之间”); else { c=a+b; printf(“两个数的和为%d”,c); } }
# include <stdio.h> main() { int i=0; int sum=0; while (i<10) { sum=sum+i; i++; } printf(“%d\n”,sum); }
白盒测试技术
逻辑覆盖技术
循环结构测试
嵌套循环 外内层循环变量都取最小值 外层最小,内层最大 外层最大,内层最小 循环变量增量 何时退出内循环 何时退出外循环
s a
X=2
Y=2X
Y=4 ?
入口
c Y x=x/a e
(a=2)||(x>1)
(a>1)&&(b==0)
b
Y
x=x+1
d
返回
}
白盒测试技术
逻辑覆盖技术
循环结构测试
简单循环
X=2
Y=2X
Y=4 ?
循环变量的初值是否正确 循环变量的最大值是否正确
循环变量的增量是否正确
何时退出循环
请设计测试用例!
X=2
Y=4 ?
1、首先为输入输出条件编号
输入条件 员工类别:普通员工A1、管理人员A2
员工表现:普通B1、优秀B2、特殊贡献B3
输出条件 奖金类别:1类奖金C1、2类奖金C2…… 员工表现:
黑盒测试技术
因果图法
分析:
X=2
Y=4 ?
2、分析各种有效的输入条件组合
普通员工 A1+B1->C1 A1+B2->C2
员工和管理人员。 员工表现分为普通、优秀和特殊贡献(普通与优秀员工
都可以有特殊贡献,普通员工表现普通和管理人员表现普
通拿的奖金是不同的。) 根据员工分类和表现,奖金分为1类奖金,2类奖金……
使用该软件时,输入员工的种类和表现,就会输出对应
的奖金类别。请为该软件设计测试用例。
黑盒测试技术
因果图法
分析:
形面积(1<=A\B\C<100),结果保留2位小数。
黑盒测试技术
综合应用
X=2
Y=4 ?
2、163邮箱注册模块(不考虑重复用户)
注册页面
黑盒测试技术
综合应用
测试用例
X=2
Y=4 ?
黑盒测试技术
综合应用
X=2
Y=4 ?
黑盒测试技术
课堂练习
X=2
Y=4 ?
1. 一程序要求输入三角形的边长(要求整数),根据边长判断三 角形类型(不等边、等边、等腰),请画出等价类示意图。 2.假定一台ATM机允许提取的增量是50元,总额从50到5000元不等 的现金;并要求一次最多取 2000 元,一天最多取 5000 元,一天最 多取3次。运用等价类和边界值的思想编写测试用例。
白盒测试技术
边界值测试
数组的边界值
X=2
Y=2X
Y=4 ?
# include <stdio.h> main() { int a[5]; int i=0; for(i=0;i<=5;i++) scanf(“%d”,&a[i]); //输入数组5个元素
for(i=1;i<5;i++) printf(“%d”,a[i]); }
输出结果(结果)之间的对应关系。
其中:CI表示原因,EI表示结果。
黑盒测试技术
流程图法
算法流程图业务流程图
X=2
Y=4 ?
针对整个系统业务功能流程绘制业务流程图,写用例,
覆盖所有的路径分支。 详细了解需求 根据需求说明或界面原型,找出各页面之间的流转关系 画出业务流程图 写用例,覆盖所有的路径分支。
白盒测试技术
静态分析
X=2
Y=2X
Y=4 ?
代码走查(WorkThrough ):开发组内部采用讲解、讨
论和模拟运行的方式进行的查找错误的活动。
代码审查( Inspection ): 在开发组内部进行的,采用
讲解、提问和模拟运行的方式查找错误。一般有正式的计
划、流程和结果报告。 技术评审(Review):开发组、测试人员、QA等人员联 合进行的通过讲解、提问并使用编码模板进行错误查找的 活动。一般有正式的流程和结果报告。
黑盒测试技术
等价类技术
X=2
Y=4 ?
等价类划分不考虑程序的内部结构,只是根据软件的需
求说明对输入的范围进行细分,然后再从分出的每个区域
内选取一个有代表性的测试数据。 例如: 一程序,功能是计算两个 1-100 整数的和(两个 数由用户键盘输入)。试设计等价类。
黑盒测试技术
等价类技术
无效等价类<1
白盒测试技术
面向对象测试步骤
X=2
Y=2X
Y=4 ?
/* 矩形类, 实现矩形周长和面积的计算 */ public class Rectangle extends Shape{ …… public static void main(String [] args) { //测试Rectangle类 设计测试用例 Rectangle rect1=new Rectangle(1,1); Rectangle rect2=new Rectangle(1.2,3.4); 比如测试Rectangle 类时,可以构造以下测试用例: Rectangle rect1=new (1,1) (1.2, 3.4) (a, b) ( Rectangle(a,b); ,) Rectangle rect1=new Rectangle( , );
黑盒与白盒
黑盒测试
X=2
Y=4 ?
黑盒测试又叫功能测试,它关注的是被测软件功能的实
现,而不是内部逻辑。在黑盒测试中,被测对象的内部结
构、运作情况对测试人员是不可见的。 黑盒测试关注点: 功能错误与遗漏 界面错误 数据结构与外部数据库访问错误 性能错误 初始化与终止错误
X=2
Y=4 ?
有效等价类1-100之间
无效等价类>100
<1 整数
1-100 >100
数值
加数 非数值 小数
字母 特殊字符 空格 空白
黑盒测试技术
等价类技术
X=2
Y=4 ?
黑盒测试技术
等价类方法小结
等价类的定义
X=2
Y=4 ?
等价类、有效等价类、无效等价类。 划分步骤 先考虑数据类型,再考虑数据范围。
黑盒与白盒
白盒测试
X=2
Y=2X
Y=4 ?
白盒测试又叫玻璃盒测试、透明盒测试、结构化测试、
基于代码的测试等。白盒测试需要对系统内部的结构和工
作原理有一个清楚的了解。 白盒测试关注逻辑细节 关于控制流和数据流无意识的假设很可能造成错误 笔误是随机的
Beizer:“错误潜伏在角落里,聚集在边界上,而白盒测试更可能发现它。”
白盒测试技术
边界值测试
X=2
Y=2X
Y=4 ?
错误隐藏在角落,问题聚集在边界。 边界值测试是一种普遍的方法,适用于黑盒与白盒。 数据类型的边界值 # include <stdio.h> main() { int a=32765; int b=3; int c; c=a+b; c=c/2; printf(“%d”,c); }
画示意图,区分等价类并编号
从一个等价类中选举一组测试数据构造测试用例
黑盒测试技术
等价类方法小结
常用的等价类划分方法
X=2
Y=4 ?
规定了输入值的范围,可分为1个有效类和两个无效类
如果输入是布尔表达式,可分为1个有效类和1个无效类
如果规定了输入数据是一组值,而且程序对不同的输入值 有不同的处理,则每个允许的输入值是一个有效等价类,此外 还有一个无效等价类。 如果规定了输入数据必须遵循的规则,可以划分出一个有 效等价类和若干个无效等价类。
/*正方形类,实现正方形周长与面积计算*/ public extends Rectangle{ /*形状类,实现该形状周长与面积计算 */ class Square X=2 Y=4 ? Y=2X public Square (int x, int y){ public abstract class Shape{ public abstract double perimeter(); super(x,y); } public abstract double area(); public double perimeter(){ } return 4*a; /*矩形类,实现该矩形周长与面积计算 案例分析 } */ public class Rectangle extends Shape{ public double area(){ /*圆形类,实现圆周长与面积计算 */ int a; return a*a int b; } public class Circle extends Shape{ public Rectangle (int x, int y){ } private int r; public Circle (int x){ a=x; r=x; b=y; } } public double perimeter(){ public double perimeter(){ return 2*3.14*r; return 2*(a+b); } } public double area(){ public double area(){ return 3.14*r*r; return a*b } } } }
白盒测试技术
面向对象测试
白盒测试技术
面向对象测试步骤
划分优先级,适当取舍
类A 类D
X=2
Y=2X
Y=4 ?
Shape类
类B
类C
Rectange类
Circle类
Square类
白盒测试技术
面向对象测试步骤
对被测类进行静态分析
X=2
Y=2X
Y=4 ?
类结构是否合理
public、private、protect关键字设置是否合理 检查类中成员变量和方法设置是否合理 检查程序是否符合相应的编码规范
黑盒测试技术
黑盒技术小结
等价类法
X=2
Y=4 ?
边界值法
流程图法 因果图法
运用流程图法测试软件的总体业务流程 针对具体的模块运用等价类与边界值方法进行测试 如果涉及到多个输入条件组合情况,应用因果图法测试
黑盒测试技术
综合应用
1、计算三角形面积程序
X=2
Y=4 ?
输入三个整数 A、 B 、C ,输出以A 、B 、 C为三边的三角
X=2
Y=2X
Y=4 ?
请设计测试用例!
# include <stdio.h> main() { int i=0; int j=0; int a[5][5]; for(i=0;i<5;i++) for(j=0;j<5;j++) { a[i][j]=i+j; printf(“%d\n”,a[i][j]); } }
黑盒测试技术
边界值技术
X=2
Y=4 ?
边界值技术常和等价类结合使用,测试边界时,一般 测试边界值和正好超出边界值一个单位的值。 例如: 一程序,功能是计算两个 1-100 整数的和(两个 数由用户键盘输入)。试设计等价类。
黑盒测试技术
因果图法
X=2
Y=4 ?
案例:某奖金计算软件实现如下功能:
该软件可以计算某公司的年终奖,该公司员工分为普通
白盒测试技术
面向对象测试
面向对象基本概念
类 子类 属性 方法 对象
X=2
Y=2X
Y=4 ?
封装
继 承多 态
白盒测试技术
面向对象测试
面向对象的测试
面向对象分析的测试
面向对象设计的测试 面向对象编码的测试
X=2
Y=2X
Y=4 ?
面向对象程序的单元测试
面向过程语言测函数 面向对象语言测类
A1+B1+B3->C3
管理人员 A2+B1->C5 A2+B2->C6 A2+B1+B3->C7 A2+B2+B3->B8
A1+B2+B3->C4
黑盒测试技术
因果图法
分析:
X=2
Y=4 ?Leabharlann Baidu
3、根据以上条件分析,编写测试用例。
黑盒测试技术
因果图
X=2
Y=4 ?
因果图 表现的是输入条件(原因)之间和以及输入条件与
白盒测试技术
逻辑覆盖技术
X=2
Y=2X
Y=4 ?
逻辑覆盖 是一种传统的白盒测试技术,是专门用来测试程 序中的分支结构和循环结构。 分支结构测试
语句覆盖 分支覆盖 条件覆盖 分支-条件覆盖 条件组合覆盖 路径覆盖
白盒测试技术
逻辑覆盖技术
# include <stdio.h> main() { float a,b,x; scanf(“%f%f%f”,&a,&b, &x); if ((a>1)&&(b==0)) x=x/a; if ((a==2)||(x>1)) x=x+1; printf(“%f”,x);
//打印数组5个元素
白盒测试技术
边界值测试
分 支 判 断 语 句 的 边 界 值
X=2
Y=2X
Y=4 ?
# include <stdio.h> main() { int a,b,c; printf(“请输入两个10到99之间的整数”); scanf(“%d%d”,&a,&b); if (a<=10||a>=99) printf(“a的值应在10到99之间”); else if (b<=10||b>=99) printf(“a的值应在10到99之间”); else { c=a+b; printf(“两个数的和为%d”,c); } }
# include <stdio.h> main() { int i=0; int sum=0; while (i<10) { sum=sum+i; i++; } printf(“%d\n”,sum); }
白盒测试技术
逻辑覆盖技术
循环结构测试
嵌套循环 外内层循环变量都取最小值 外层最小,内层最大 外层最大,内层最小 循环变量增量 何时退出内循环 何时退出外循环
s a
X=2
Y=2X
Y=4 ?
入口
c Y x=x/a e
(a=2)||(x>1)
(a>1)&&(b==0)
b
Y
x=x+1
d
返回
}
白盒测试技术
逻辑覆盖技术
循环结构测试
简单循环
X=2
Y=2X
Y=4 ?
循环变量的初值是否正确 循环变量的最大值是否正确
循环变量的增量是否正确
何时退出循环
请设计测试用例!
X=2
Y=4 ?
1、首先为输入输出条件编号
输入条件 员工类别:普通员工A1、管理人员A2
员工表现:普通B1、优秀B2、特殊贡献B3
输出条件 奖金类别:1类奖金C1、2类奖金C2…… 员工表现:
黑盒测试技术
因果图法
分析:
X=2
Y=4 ?
2、分析各种有效的输入条件组合
普通员工 A1+B1->C1 A1+B2->C2
员工和管理人员。 员工表现分为普通、优秀和特殊贡献(普通与优秀员工
都可以有特殊贡献,普通员工表现普通和管理人员表现普
通拿的奖金是不同的。) 根据员工分类和表现,奖金分为1类奖金,2类奖金……
使用该软件时,输入员工的种类和表现,就会输出对应
的奖金类别。请为该软件设计测试用例。
黑盒测试技术
因果图法
分析:
形面积(1<=A\B\C<100),结果保留2位小数。
黑盒测试技术
综合应用
X=2
Y=4 ?
2、163邮箱注册模块(不考虑重复用户)
注册页面
黑盒测试技术
综合应用
测试用例
X=2
Y=4 ?
黑盒测试技术
综合应用
X=2
Y=4 ?
黑盒测试技术
课堂练习
X=2
Y=4 ?
1. 一程序要求输入三角形的边长(要求整数),根据边长判断三 角形类型(不等边、等边、等腰),请画出等价类示意图。 2.假定一台ATM机允许提取的增量是50元,总额从50到5000元不等 的现金;并要求一次最多取 2000 元,一天最多取 5000 元,一天最 多取3次。运用等价类和边界值的思想编写测试用例。
白盒测试技术
边界值测试
数组的边界值
X=2
Y=2X
Y=4 ?
# include <stdio.h> main() { int a[5]; int i=0; for(i=0;i<=5;i++) scanf(“%d”,&a[i]); //输入数组5个元素
for(i=1;i<5;i++) printf(“%d”,a[i]); }
输出结果(结果)之间的对应关系。
其中:CI表示原因,EI表示结果。
黑盒测试技术
流程图法
算法流程图业务流程图
X=2
Y=4 ?
针对整个系统业务功能流程绘制业务流程图,写用例,
覆盖所有的路径分支。 详细了解需求 根据需求说明或界面原型,找出各页面之间的流转关系 画出业务流程图 写用例,覆盖所有的路径分支。
白盒测试技术
静态分析
X=2
Y=2X
Y=4 ?
代码走查(WorkThrough ):开发组内部采用讲解、讨
论和模拟运行的方式进行的查找错误的活动。
代码审查( Inspection ): 在开发组内部进行的,采用
讲解、提问和模拟运行的方式查找错误。一般有正式的计
划、流程和结果报告。 技术评审(Review):开发组、测试人员、QA等人员联 合进行的通过讲解、提问并使用编码模板进行错误查找的 活动。一般有正式的流程和结果报告。
黑盒测试技术
等价类技术
X=2
Y=4 ?
等价类划分不考虑程序的内部结构,只是根据软件的需
求说明对输入的范围进行细分,然后再从分出的每个区域
内选取一个有代表性的测试数据。 例如: 一程序,功能是计算两个 1-100 整数的和(两个 数由用户键盘输入)。试设计等价类。
黑盒测试技术
等价类技术
无效等价类<1
白盒测试技术
面向对象测试步骤
X=2
Y=2X
Y=4 ?
/* 矩形类, 实现矩形周长和面积的计算 */ public class Rectangle extends Shape{ …… public static void main(String [] args) { //测试Rectangle类 设计测试用例 Rectangle rect1=new Rectangle(1,1); Rectangle rect2=new Rectangle(1.2,3.4); 比如测试Rectangle 类时,可以构造以下测试用例: Rectangle rect1=new (1,1) (1.2, 3.4) (a, b) ( Rectangle(a,b); ,) Rectangle rect1=new Rectangle( , );