第 3 部分 软件测试技术

124
第 3 第第 第第第第第第

Upload: leo-fox

Post on 03-Jan-2016

104 views

Category:

Documents


2 download

DESCRIPTION

第 3 部分 软件测试技术. 本部分课程目标. 测试技术的基本概念 测试技术的使用技巧 测试技术的应用范围. 软件测试技术的分类. 静态黑盒测试 动态黑盒测试 静态白盒测试 动态白盒测试. 静态与动态. 静态 —— 只是检查和审阅 动态 —— 运行和使用软件. 黑盒与白盒. 黑盒:软件测试人员只需知道软件要做什么即可,无法看到盒子中是如何运行的。 白盒:软件测试人员可以访问程序员的代码,并通过检查代码来测试,可以看到盒子里面。. 静态黑盒测试. 对产品说明书进行高级审查 设身处地为用户着想 研究现有的标准和规范 审查和测试同类软件. 静态黑盒测试. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第  3 部分 软件测试技术

第 3 部分软件测试技术

Page 2: 第  3 部分 软件测试技术

本部分课程目标

测试技术的基本概念测试技术的使用技巧测试技术的应用范围

Page 3: 第  3 部分 软件测试技术

软件测试技术的分类

静态黑盒测试动态黑盒测试静态白盒测试动态白盒测试

Page 4: 第  3 部分 软件测试技术

静态与动态

静态——只是检查和审阅动态——运行和使用软件

Page 5: 第  3 部分 软件测试技术

黑盒与白盒

黑盒:软件测试人员只需知道软件要做什么即可,无法看到盒子中是如何运行的。

白盒:软件测试人员可以访问程序员的代码,并通过检查代码来测试,可以看到盒子里面。

Page 6: 第  3 部分 软件测试技术

静态黑盒测试

对产品说明书进行高级审查设身处地为用户着想研究现有的标准和规范审查和测试同类软件

Page 7: 第  3 部分 软件测试技术

静态黑盒测试

测试标准:1 、公司惯用语和约定2、行业要求3、国家标准4、硬件和网络标准5、图形用户界面( GUI )。

Page 8: 第  3 部分 软件测试技术

产品描述属性检查清单

完整 准确 精确 一致 合理 代码无关 可测试

Page 9: 第  3 部分 软件测试技术

产品描述用语检查清单

是否有绝对、肯定和切实认定的叙述,针对其设计用例。

比较模糊的用语。某些、有时 ····· 功能清单是否有等等、诸如此类、依此类推,无法测试的词汇。

在性能上不确定的说法。 隐藏大量需要说明的功能 如果 ····· 那么 ····· (没有否则)。

Page 10: 第  3 部分 软件测试技术

产品说明案例分析

◆ 国产电子软件的巅峰之作,包含 12本权威词典、 32本专业词典,最新收录原汁原味的美语英汉双解词典:《美国传统词典》;◆ 强大的网络功能,定时更新最新词库、词霸界面、随时下载功能插件;◆ 国际顶尖的 TTS 语音全程技术,彻底实现单词乃至整篇文章的流畅朗读;◆ 新增“生词本”功能,是您学习英语的好帮手;

智能的即指即译功能,可在任意窗口下实现中英文对译。

Page 11: 第  3 部分 软件测试技术

静态黑盒测试的小结

标准产品描述属性检查产品描述用语检查

Page 12: 第  3 部分 软件测试技术

动态黑盒测试——边界值分析

边界值测试的基本原理 : 错误更可能出现在输入变量的极值附近 .

失效极少由两个(或多个)缺陷的同时发生引起的。

Min、 min +、 nom、 max-和 max。

Page 13: 第  3 部分 软件测试技术

动态黑盒测试——边界值测试

如果函数 F实现了一个程序,则输入两个变量 x1 和 x2会有一些边界:

a≤ x1≤ b

c ≤ x2≤ d区间 [a,b]和 [c,d]是 x1 和 x2的值域。

Page 14: 第  3 部分 软件测试技术

动态黑盒测试——边界值分析

a

d

c

b

x1

x2

Page 15: 第  3 部分 软件测试技术

动态黑盒测试——边界值分析

a

d

c

b

x1

x2

Page 16: 第  3 部分 软件测试技术

动态黑盒测试——边界值分析

边界的数据类型可能是:数值 速度字符 地址位置 尺寸数量

Page 17: 第  3 部分 软件测试技术

动态黑盒测试——边界值分析边界值类型的描述:第一个 /最后一个 最小值 /最大值开始 /完成 超过 /在内空 /满 最短 /最长最大 /最小 最高 /最低相邻 /最远

Page 18: 第  3 部分 软件测试技术

动态黑盒测试——次边界值分析

次边界条件: 有些边界条件在软件内部,最终用户几乎看不到,但是软件测试仍有必要检查。这样的边界条件称为次边界条件或者内部边界条件。如 2 的乘方和 ASCⅡ 。

Page 19: 第  3 部分 软件测试技术

软件中的 2 的乘方术语 范围或值位 0或 1双位 0-15

字节 0-255

字 0-65 , 535千 1 , 024兆 1 , 048, 576亿 1 , 073 , 741 , 824万亿 1 , 009, 511 , 627, 776

Page 20: 第  3 部分 软件测试技术

部分的 ASCⅡ 制表字符 ASCⅡ值 字符 ASCⅡ值Null 0 B 66

Space 32 Y 89

/ 47 Z 90

0 48 [ 91

1 49 ‘ 96

2 50 a 97

9 57 b 98

: 58 y 121

@ 64 z 122

A 65 { 123

Page 21: 第  3 部分 软件测试技术

动态黑盒测试——边界值分析

边界值分析的特点和局限性对于一个 n变量函数,边界值分析会产生4n + 1个测试用例。

边界值的取值取决于变量本身的性质。边界值分析对布尔变量没有什么意义。边界值分析假设变量是完全独立的。

Page 22: 第  3 部分 软件测试技术

动态黑盒测试——健壮性测试

健壮性测试是边界值分析的一种简单扩展

a

d

c

b

x1

x2

Page 23: 第  3 部分 软件测试技术

动态黑盒测试—最坏情况测试最坏情况测试用例

a

d

c

b

x1

x2

Page 24: 第  3 部分 软件测试技术

动态黑盒测试—健壮最坏情况测试

健壮最坏情况测试用例

a

d

c

b

x1

x2

Page 25: 第  3 部分 软件测试技术

动态黑盒测试——练习

1 、写出三角形问题的边界值分析测试用例

2、写出 NextDate 函数的最坏情况测试用例

Page 26: 第  3 部分 软件测试技术

动态黑盒测试—佣金问题的测试用例

Page 27: 第  3 部分 软件测试技术

动态黑盒测试—佣金问题的测试用例

写出佣金问题的输出边界值分析测试用例

Page 28: 第  3 部分 软件测试技术

动态黑盒测试—佣金问题的测试用例

用例 枪机 枪托 枪管 销售额 佣金 注释1 1 1 1 100 10 输出最小值

2 1 1 2 125 12.5 输出略大于最小值3 1 2 1 130 13 输出略大于最小值4 2 1 1 145 14.5 输出略大于最小值5 5 5 5 500 50 中点

6 10 10 9 975 97.5 略低于边界点7 10 9 10 970 97 略低于边界点8 9 10 10 955 95.5 略低于边界点

9 10 10 10 1000 100 边界点10 10 10 11 1025 103.75 略高于边界点11 10 11 10 1030 104.5 略高于边界点12 11 10 10 1045 106.75 略高于边界点

13 14 14 14 1400 160 中点

Page 29: 第  3 部分 软件测试技术

动态黑盒测试—佣金问题的测试用例

用例 枪机 枪托 枪管 销售额 佣金 注释14 18 18 17 1775 216.25 略低于边界点15 18 17 18 1770 215.5 略低于边界点16 17 18 18 1755 213.25 略低于边界点17 18 18 18 1800 220 边界点18 18 18 19 1825 225 略高于边界点19 18 19 18 1830 226 略高于边界点20 19 18 18 1845 229 略高于边界点21 48 48 48 4800 820 中点22 70 80 89 7775 1415 输出略小于最大值23 70 79 90 7770 1414 输出略小于最大值24 69 80 90 7755 1411 输出略小于最大值25 70 80 90 7800 1420 输出最大值

Page 30: 第  3 部分 软件测试技术

边界值测试的小结

这类测试方法是基于一种假设:输入的变量是真正独立的。

这些方法的区别是:正常值与健壮值;单缺陷与多缺陷。

Page 31: 第  3 部分 软件测试技术

动态黑盒测试—等价类测试

等价分配:是指分步骤地把过多(无限)的测试案例减小到同样有效的小范围的过程。

等价类别或者等价区间是指测试相同目标或者暴露相同软件缺陷的一组测试。

在寻找等价区间时,想办法把软件的相似输入、输出、操作分成组。这些组是等价区间。

Page 32: 第  3 部分 软件测试技术

动态黑盒测试—等价类测试

弱一般等价类测试用例

a

g

e

d

x1

x2

f

b c

Page 33: 第  3 部分 软件测试技术

动态黑盒测试—等价类测试

强一般等价类测试用例

a

g

e

d

x1

x2

f

b c

Page 34: 第  3 部分 软件测试技术

动态黑盒测试—等价类测试

弱健壮等价类测试用例

a

g

e

d

x1

x2

f

b c

Page 35: 第  3 部分 软件测试技术

动态黑盒测试—等价类测试

强健壮等价类测试用例

a

g

e

d

x1

x2

f

b c

Page 36: 第  3 部分 软件测试技术

动态黑盒测试—等价类测试写出三角形问题的输入等价类和输出等价类

写出 NextDate 函数的输入等价类写出佣金问题的输入和输出等价类Windows文件名可以包含除了、 /: * ?“〈〉。文件名长度是 1-255个字符。写出文件名创建测试用例。

Page 37: 第  3 部分 软件测试技术

三角形问题—弱强一般等价类测试用例

测试用例 a b c 预期输出

1 5 5 5 等边三角形

2 2 2 3 等腰三角形

3 3 4 5 不等边三角形

4 4 1 2 非三角形

Page 38: 第  3 部分 软件测试技术

三角形问题—弱健壮等价类测试用例

测试用例 a b c 预期输出

1 -1 5 5 a 取值不在所允许的取值范围内

2 5 -1 5 b 取值不在所允许的取值范围内

3 5 5 -1 c 取值不在所允许的取值范围内

4 201 5 5 a 取值不在所允许的取值范围内

5 5 201 5 b 取值不在所允许的取值范围内

6 5 5 201 c 取值不在所允许的取值范围内

Page 39: 第  3 部分 软件测试技术

三角形问题—强健壮等价类测试用例

测试用例 a b c 预期输出1 -1 5 5 a取值不在所允许的取值范围内2 5 -1 5 b取值不在所允许的取值范围内3 5 5 -1 c 取值不在所允许的取值范围内4 -1 -1 5 a、 b取值不在所允许的取值范围内5 5 -1 -1 b、 c取值不在所允许的取值范围内6 -1 5 -1 c、 a取值不在所允许的取值范围内7 -1 -1 -1 a、 b、 c取值不在所允许的取值范围

Page 40: 第  3 部分 软件测试技术

等价类测试的小结 等价类测试的弱形式不如对应的强形式的测试全面。

如果错误条件非常重要,则进行健壮性的测试是合适的。

如果输入数据以离散值区间和集合定义,则等价类测试是合适的。

在发现合适的等价类关系之前,可能需要进行多次尝试。

Page 41: 第  3 部分 软件测试技术

动态黑盒测试—基于决策表的测试

在所有功能测试方法中,基于决策表的测试方法是最严格的,因为决策表具有逻辑严格性。

决策表很适合描述不同条件集合下采取行动的若干组合的情况。

Page 42: 第  3 部分 软件测试技术

动态黑盒测试—基于决策表的测试

桩 规则 1 规则 2 规则 3、4

规则 5

C1C2C3

TTT

TTF

TF—

FTT

A1A2A3

XX

X X

X

X X

Page 43: 第  3 部分 软件测试技术

动态黑盒测试—基于决策表的测试

桩 1 2 3 4 5 6 7 8 9

C1:a,b,c 构成三角形?C2 : a=b?C3: a=c?C4: b=c?

N---

YYYY

YYYN

YYNY

YYNN

YNYY

YNYN

YNNY

YNNN

A1 :非三角形A2 :不等边三角形A3 :等腰三角形A4 :等边三角形A5 :不可能

X X

X

X

X

X

X

X

X

Page 44: 第  3 部分 软件测试技术

动态黑盒测试—基于决策表的测试

条件 1 2 3

C1 :月份在 M1 中?C2 :月份在 M2 中?C3 :月份在 M3 中?

T--

-T-

--T

A1A2

Page 45: 第  3 部分 软件测试技术

动态黑盒测试—基于决策表的测试

条件 1 2 3

C1 :月份在 M1 中?C2 :月份在 M2 中?C3 :月份在 M3 中?

规则条数统计

T--4

-T-4

--T4

A1A2

Page 46: 第  3 部分 软件测试技术

动态黑盒测试—基于决策表的测试

条件 11

12

13

14

21

22

23

24

31

32

33

34

C1 :月份在 M1中? C2 :月份在 M2 中? C3 :月份在 M3 中?规则条数统计

TTT1

TTF1

TFT1

TFF1

TTT1

TTF1

FTT1

FTF1

TTT1

TFT1

FTT1

FFT1

A1A2

Page 47: 第  3 部分 软件测试技术

动态黑盒测试—基于决策表的测试

条件 11

12

13

14

23

24

34

C1 :月份在 M1 中?C2 :月份在 M2 中?C3 :月份在 M3 中?

规则条数统计

TTT1

TTF1

TFT1

TFF1

FTT1

FTF1

FFT1

FFF1

A1 X X X X X

Page 48: 第  3 部分 软件测试技术

动态黑盒测试—基于决策表的测试

条件

1-4 5 6 7 8 9

C1C2C3

T--

FTT

FTF

FFT

FFF

TFF

A1A2A2

X-X

XX-

XXX

-XX

--X

X-X

Page 49: 第  3 部分 软件测试技术

动态黑盒测试—基于决策表的测试

条件

1-4 5 6 7 8 9

C1C2C3

T--

FTT

FTF

FFT

FFF

TFF

A1A2A2

X-X

XX-

XXX

-XX

--X

-X-

Page 50: 第  3 部分 软件测试技术

动态黑盒测试—基于决策表的测试

M1={ 月份 : 每月有 30 天 } ;M2={ 月份 : 每月有 31 天 } ;M3={ 月份 : 此月是 2 月 } ;D1={ 日期 :1≤ 日期≤ 28} ;D2={ 日期 : 日期 =29} ;

D3={ 日期 : 日期 =30} ;D4={ 日期 : 日期 =31} ;Y1={ 年 : 年是闰年 } ;Y2={ 年 : 年不是闰年 } 。

Page 51: 第  3 部分 软件测试技术

动态黑盒测试—基于决策表的测试

条件

C1: 月份在 M1 中?C2: 月份在 M1 中?C3: 月份在 M1 中?C4: 日期在 D1 中?C5: 日期在 D1 中?C6: 日期在 D1 中?C7: 日期在 D1 中?C8: 年在 Y1 中?

T T

T

A1:不可能A2: NextDate

Page 52: 第  3 部分 软件测试技术

动态黑盒测试—基于决策表的测试

M1={ 月份 : 每月有 30天 } ;

M2={ 月份 : 每月有 31天 } ;

M3={ 月份 : 此月是 2月 } ;

D1={ 日期 :1≤ 日期≤ 28} ;

D2={ 日期 : 日期 =29} ;

D3={ 日期 : 日期 =30} ;D4={ 日期 : 日期 =31} ;Y1={ 年 : 年 =2000} ;Y2={ 年 : 年是闰年 } ;Y3={ 年 : 年是平年 } 。

Page 53: 第  3 部分 软件测试技术

动态黑盒测试—基于决策表的测试

1 2 3 4 5 6 7 8

C1: 月份在C2: 日期在C3: 年在规则条数统计

M1D1-3

M1D2-3

M1D3-3

M1D4-3

M2D1-3

M2D2-3

M2D3-3

M2D4-3

A1:不可能A2: 日期增 1A3: 日期复位A4: 月份增 1A5: 月份复位A6: 年增 1

X

X

XX

X X

X

X

X???

Page 54: 第  3 部分 软件测试技术

动态黑盒测试—基于决策表的测试

9 10 11 12 13 14 15 16 17

C1: 月份在C2: 日期在C3: 年在规则条数统计

M3D1Y11

M3D1Y21

M3D1Y31

M3D2Y11

M3D2Y21

M3D2Y31

M3D3-3

M3D3-3

M3D4-3

A1:不可能A2: 日期增 1A3: 日期复位A4: 月份增 1A5: 月份复位A6: 年增 1

X

X

XX

XX

XX

X

X

X

X

Page 55: 第  3 部分 软件测试技术

动态黑盒测试—基于决策表的测试

M1={ 月份 : 每月有 30 天 } ;M2={ 月份 : 每月有 31 天,

12 月除外 } ;M3={ 月份 : 此月是 12 月 } ;M4={ 月份 : 此月是 2 月 } ;D1={ 日期 :1≤ 日期≤ 27} ;

D2={ 日期 : 日期 =28} ;D3={ 日期 : 日期 =29}D4={ 日期 : 日期 =30} ;D5={ 日期 : 日期 =31} ;Y1={ 年 : 年是闰年 } ;Y2={ 年 : 年不是闰年 } 。

Page 56: 第  3 部分 软件测试技术

动态黑盒测试—基于决策表的测试

1 2 3 4 5 6 7 8 9 10

C1: 月份在C2: 日期在C3: 年在

M1D1-

M1D2-

M1D3-

M1D4-

M1D5-

M2D1-

M2D2-

M2D3-

M2D4-

M2D5-

A1:不可能A2: 日期增 1A3: 日期复位A4: 月份增 1A5: 月份复位A6: 年增 1

X

X

X

XX

X X

X

X

X

XX

Page 57: 第  3 部分 软件测试技术

动态黑盒测试—基于决策表的测试

11 12 13 14 15 16 17 18 19 20 21 22

C1: 月份在C2: 日期在C3: 年在

M3D1-

M3D2

M3D3

M3D4

M3D5-

M4D1-

M4D2Y1

M4D2Y2

M4D3Y1

M4D3Y2

M4D4-

M4D5-

A1:不可能A2: 日期增 1A3: 日期复位A4: 月份增 1A5: 月份复位A6: 年增 1

X

X

X

X

X XX

X

X

XX

XX

X X X

Page 58: 第  3 部分 软件测试技术

动态黑盒测试—基于决策表的测试

1-3 4 5 6-9 10

C1: 月份在C2: 日期在C3: 年在

M1D1-D3-

M1D4-

M1D5-

M2D1-D4-

M2D5-

A1:不可能A2: 日期增 1A3: 日期复位A4: 月份增 1A5: 月份复位A6: 年增 1

X

XX

X X

XX

Page 59: 第  3 部分 软件测试技术

动态黑盒测试—基于决策表的测试

11-14 15 16 17 18 19 20 21-22

C1: 月份在C2: 日期在C3: 年在

M3D1-D4-

M3D5-

M4D1-

M4D2Y1

M4D2Y2

M4D3Y1

M4D3Y2

M4D4-D5-

A1:不可能A2: 日期增 1A3: 日期复位A4: 月份增 1A5: 月份复位A6: 年增 1

X

X XX

X

X

XX

XX

X X

Page 60: 第  3 部分 软件测试技术

动态黑盒测试—基于决策表的测试

写出 NextDate 函数的决策表测试用例

Page 61: 第  3 部分 软件测试技术

基于决策表的测试的小结 决策表技术适用于具有以下特征的应用程序: If-then-else逻辑很突出 输入变量之间存在逻辑关系。涉及输入变量子集的计算。 输入与输出之间存在因果关系。很高的圈复杂度。迭代会有所帮助,第一次不见得会成功。

Page 62: 第  3 部分 软件测试技术

动态黑盒测试—基于正交阵列1 2 3 4

1 1 1 1 1

2 1 2 2 2

3 1 3 3 3

4 2 1 2 3

5 2 2 3 1

6 2 3 1 2

7 3 1 3 2

8 3 2 1 3

9 3 3 2 1

Page 63: 第  3 部分 软件测试技术

动态黑盒测试—基于正交阵列Web 浏览器( Netscape 6.2 、 IE6.0、 Opera 4.0)

插件(无、 RealPlayer、 MediaPlayer)应用服务器( IIS 、 Apache、 Netscape Enterprise)

操作系统( Windows2000、 Windows NT 、Linux)

Page 64: 第  3 部分 软件测试技术

动态黑盒测试—基于正交阵列1 2 3 4

1 Netscape

无 IIS 1 w2000

2 Netscape

RealPlayer

Apache 2 W NT

3 Netscape

MediaPlayer 3 Enterprise

3 Linux)

4 IE 无 2 Apache 3 Linux)

5 IE RealPlayer

3 Enterprise

1w2000

6 IE MediaPlayer IIS 2W NT

7 Opera 无 3 Enterprise

2W NT

8 Opera RealPlayer

IIS 3 Linux)

9 Opera MediaPlayer 2 Apache 1w2000

Page 65: 第  3 部分 软件测试技术

动态黑盒测试—其他

即席测试随机测试半随机测试探测性测试

Page 66: 第  3 部分 软件测试技术

动态黑盒测试的小结

边界值分析法等价类测试决策表测试正交阵列测试随机类测试

Page 67: 第  3 部分 软件测试技术

静态白盒测试

静态白盒测试是在不执行的条件下有条理地仔细审查软件设计、体系结构和代码,从而找出软件缺陷的过程。

好处:尽早发现软件缺陷。 为黑盒测试员提供思路。

Page 68: 第  3 部分 软件测试技术

静态白盒测试

审查是正式、严格、具有深度的技术评审,以便尽可能准确地确定问题之所在。

审查过程的目的:在软件开发过程中尽可能早地发现问题。确保对需要重做部分达成一致意见。验证任何重做部分满足预先定义的准则。

Page 69: 第  3 部分 软件测试技术

静态白盒测试

一次审查一般需要 5人至 7人,这些角色是:主审员:协调本次审查并主持讨论。责任人:负责被审查的产品。讲解员:在审查会上讲解被审查的产品。审查员:审查产品。记录员:记录在审查会议上讨论的问题。经理:责任人的管理者。

Page 70: 第  3 部分 软件测试技术

静态白盒测试

选择要审查的代码模块的准则:对于正确操作产品起关键作用的模块。复杂度较高的模块与过去发生错误率较高的模块功能类似的模块。

相对较新的或缺乏经验的软件程序师编写的模块。

Page 71: 第  3 部分 软件测试技术

静态白盒测试

为什么要坚持编码标准和规范?可靠性。可读性 /维护性移植性

Page 72: 第  3 部分 软件测试技术

静态白盒测试

大多数计算机语言和信息技术的国家和国际标准可以通过以下途径获得:

国际工程协议( IEC): www.iec.org国际标准化组织( ISO): www.iso.ch信息技术标准国家委员会( NCITS ): www.ncits.org

计算机械联合会( ACM): www.acm.org电子电气工程学会( IEEE): www.ieee.org

Page 73: 第  3 部分 软件测试技术

静态白盒测试

通用代码审查清单数据引用错误;数据声明错误;计算错误;比较错误;控制流程错误;子程序参数错误;输入 /输出错误;其他检查。

Page 74: 第  3 部分 软件测试技术

静态白盒测试

数据引用错误 是否引用了未初始化的变量?数组和字符串的下标是整数值吗? 是否在应该使用常量的地方使用了变量? 变量是否被赋予不同类型的值? 为引用的指针分配内存了吗? 一个数据结构是否在多个函数或者子程序中引用,在每一个引用中明确定义结构了吗?

Page 75: 第  3 部分 软件测试技术

静态白盒测试

数据声明错误所有变量都赋予正确的长度和类型了吗?变量是否在声明的同时进行了初始化?存在声明过、但从未引用或者只引用过一次的变量吗?

在特定模块中所有变量都显示声明了吗?

Page 76: 第  3 部分 软件测试技术

静态白盒测试

计算错误 计算中是否使用了不同数据类型的变量? 计算中是否了解和考虑到编译器对类型或长度不一致的变量的转换规则?

在数值计算过程中是否可能出现溢出?除数/模是否可能为零? 变量的值是否超过有意义的范围? 对于包含多个操作数的表达式,求值的次序是否混乱,运算优先级对吗?

Page 77: 第  3 部分 软件测试技术

静态白盒测试

比较错误比较得正确吗?存在分数或者浮点值之间的比较吗?如果有,精确问题会影响比较吗?

每一个逻辑表达式都正确表达了吗?逻辑计算如期进行了吗?求值次序有疑问吗?

逻辑表达式的操作是逻辑值吗?

Page 78: 第  3 部分 软件测试技术

静态白盒测试

控制流程错误如果程序包含 begin…end 和 do …

while 等语句组, end 是否对应?程序、模块、子程序和循环能否终止?可能存在永远不停的循环吗?循环可能从不执行吗?

Page 79: 第  3 部分 软件测试技术

静态白盒测试

子程序参数错误子程序接受的参数类型和大小与调用代码发送的匹配吗?

如果子程序有多个入口点,引用的参数是否与当前入口点没有关联?

常量是否当作形参传递,意外在子程序中改动?

Page 80: 第  3 部分 软件测试技术

静态白盒测试

输入 /输出错误软件是否严格遵守外部设备读写数据的专用格式?

文件或者外部不存在或者未准备好的错误情况有处理吗?

软件是否处理外部设备未连接、不可用,或者读写过程中存储空间占满等情况?

Page 81: 第  3 部分 软件测试技术

静态白盒测试

同行审查 仅在编写代码的程序员和充当审查者的其他一两个程序员和测试员之间进行。保证审查的高效率,注意审查的 4个关键要素:

确定问题;遵守规则;审查准备;编写报告。

Page 82: 第  3 部分 软件测试技术

静态白盒测试的小结

代码评审同行审查检查单

Page 83: 第  3 部分 软件测试技术

动态白盒测试

动态白盒测试是指利用查看代码功能和实现方式得到的信息来确定哪些要测试,哪些不要测试,如何开展测试。

动态白盒测试的另一个常用名称是结构测试,因为软件测试员可以查看并使用代码的内部结构,从而设计和执行测试。

Page 84: 第  3 部分 软件测试技术

动态白盒测试——路径测试 结构性测试方法的突出特点,是它们都基于被测程序的源代码,而不是基于定义。

由于这种绝对化的基础,结构性测试方法支持严格定义、数据分析和精确度量。

Page 85: 第  3 部分 软件测试技术

动态白盒测试——路径测试

Page 86: 第  3 部分 软件测试技术

动态白盒测试——路径测试

Page 87: 第  3 部分 软件测试技术

动态白盒测试——路径测试

Page 88: 第  3 部分 软件测试技术

动态白盒测试——路径测试

定义DD- 路径是程序图中的一条链,使得: 情况 1 :由一个节点组成,内度 =0。 情况 2 :由一个节点组成,外度 =0。 情况 3 :由一个节点组成,内度≥ 2或外度≥ 2 。 情况 4 :由一个节点组成,内度 =1 并且外度 =1 。 情况 5 :长度≥ 1 的最大链。

Page 89: 第  3 部分 软件测试技术

动态白盒测试——路径测试

Page 90: 第  3 部分 软件测试技术

结构性测试覆盖指标语句覆盖:选择足够的测试用例是程序中每个可执行语句至少执行一次

判定覆盖(分枝覆盖 ) :选择足够的测试用例,使得程序中每个判定至少都获得一次“真”值和“假”值

条件覆盖:设计若干测试用例,执行被测程序后是每个判定中每个条件的可能值至少满足一次

Page 91: 第  3 部分 软件测试技术

结构性测试覆盖指标判定 / 条件覆盖:判定 / 条件覆盖要求设计足够的测试用例,使得判定中的每个条件的所有可能(真 /假 )至少出现一次并且每个判定本身的结果(真 /假 )也至少出现一次

条件组合覆盖:执行足够的测试用例,使得每个判定中条件的各种可能组合都至少出现一次,显然满足条件组合覆盖的测试用例一定满足“判定覆盖”、“条件覆盖”和“判定 / 条件覆盖”

路径覆盖:设计足够的测试用例要求覆盖程序中所有可能的路径

Page 92: 第  3 部分 软件测试技术

语句覆盖1 PRINT “Hello you”

2 PRINT “The date is:”;Date&

3 PRINT “The time is:”;Time&

4 END

Page 93: 第  3 部分 软件测试技术

判断覆盖(分枝覆盖)1 PRINT “Hello you”

2 IF Date=“01-01-2000”THEN

3 PRINT “Happy New Year”

4 END IF

5 PRINT “The date is:”;Date

6 PRINT “The time is:”;Time

7 END

Page 94: 第  3 部分 软件测试技术

条件覆盖1 PRINT “Hello you”

2 IF Date=“01-01-2000”AND Time=“00:00:00”THEN

3 PRINT “Happy New Year”

4 END IF

5 PRINT “The date is:”;Date

6 PRINT “The time is:”;Time

7 END

Page 95: 第  3 部分 软件测试技术

动态白盒测试—基路径测试

原始 P1:A-B-C-E-F-H-J-K-M-N-O-最终 不等边三角形

在 B处翻转P1

P2:A-B-D-E-F-H-J-K-M-N-O-最终 不可行

在 F处翻转P1

P3:A-B-C-E-F-G-O-最终 不可行

在 H处翻转P1

P4:A-B-C-E-F-H-I-N-O-最终 等边三角形

在 J处翻转P1

P5:A-B-C-E-F-H-J-L-M-N-O-最终 等腰三角形

Page 96: 第  3 部分 软件测试技术

动态白盒测试——基路径测试

P1:A-B-C-E-F-H-J-K-M-N-O- 最终 不等边三角形

P6:A-B-D-E-F-G-O- 最终 非三角形

P4:A-B-C-E-F-H-I-N-O- 最终 等边三角形

P5:A-B-C-E-F-H-J-L-M-N-O- 最终 等腰三角形

Page 97: 第  3 部分 软件测试技术

动态白盒测试——循环测试简单循环 其循环的最大次数为 n 测试:

– 跳过整个循环– 只循环一次– 循环两次– 循环 m次其中 m<n– 分别循环 n-1次, n次, n+1次

Page 98: 第  3 部分 软件测试技术

动态白盒测试——循环测试

串接循环如两个串接循环是独立的,则可分别采用简单循环的测试方法测试

不独立第一个循环计数器是第二个循环的初值,则可采用嵌套循环方法进行测试

Page 99: 第  3 部分 软件测试技术

动态白盒测试——循环测试嵌套循环 如果嵌套循环也采用简单循环的办法此时会随嵌套层数成几何级数增加导致不可测

Beizer 提出一种减少测试级数的方法– 从最内层循环开始测试,内层循环按简单循环策略所有外层循环次数设到最小数

– 由内向外一次向上回退一次嵌套循环回退后进行测试,本层循环的所有外层循环仍取最小值,本层循环嵌套的循环取一次“典型”值

– 继续向外回退,直到所有循环测试完毕

Page 100: 第  3 部分 软件测试技术

动态白盒测试——循环测试

非结构循环按结构化程序设计思想首先将程序结构化再进行测试

Page 101: 第  3 部分 软件测试技术

动态白盒测试—数据流测试

早期的数据流分析常常集中于现在叫做定义 /引用异常的缺陷:

变量被定义,但是从来没有使用。所使用的变量没有被定义。变量在使用之前被定义两次。

Page 102: 第  3 部分 软件测试技术

动态白盒测试—定义 / 使用测试

定义 节点 n∈G(P)是变量 v∈V的定义节点,记做 DEF(v,n),当且仅当变量v的值由对应节点 n的语句片段处定义。

Page 103: 第  3 部分 软件测试技术

动态白盒测试—定义 / 使用测试

定义 节点 n∈G(P)是变量 v∈V的使用节点,记做 USE(v,n),当且仅当变量v的值由对应节点 n的语句片段处使用。

Page 104: 第  3 部分 软件测试技术

动态白盒测试—定义 / 使用测试

定义 使用节点 USE(v,n)是一个谓词使用(记做 P-use),当且仅当语句 n是谓词语句;否则, USE(v.n)是计算使用 ( 记做 C-use)。

Page 105: 第  3 部分 软件测试技术

动态白盒测试—定义 / 使用测试

定义 关于变量 v的定义 -使用路径(记做 du-path)是 PATHS(P) 中的路径,使得对某个 v∈V, 存在定义和使用节点 DEF(v,m)和 USE(v,n),使得 m和 n是该路径的最初和最终节点。

Page 106: 第  3 部分 软件测试技术

动态白盒测试—定义 / 使用测试

定义 关于变量 v的定义清除路径 (记做 dc-path),是具有最初和最终节点DEF(v,m)和 USE(v,n)的 PATHS(P)中的路径,使得该路径中没有其他节点是 v的定义节点。

Page 107: 第  3 部分 软件测试技术

动态白盒测试—定义 / 使用测试

Page 108: 第  3 部分 软件测试技术

动态白盒测试—定义 / 使用测试

Page 109: 第  3 部分 软件测试技术

动态白盒测试—定义 / 使用测试变量 定义节点 使用节点

LockpriceStockpriceBarrelpriceTotallocksTotalstocksTotalbarrelsLocksStocksBarrelsLocksalesStocksalesBarrelsales

Salescommission

789

10,1611,1712,1813,19151524252627

31,32,33,36,37,38

242526

16,21,2417,22,2518,23,2614,161718272727

28,29,33,34,37,3832,33,37,41

Page 110: 第  3 部分 软件测试技术

动态白盒测试—定义 / 使用测试

Stocks的定义 -使用路径Locks的定义 -使用路径Total locks的定义 -使用路径sales的定义 -使用路径commission的定义 -使用路径

Page 111: 第  3 部分 软件测试技术

动态白盒测试—定义 / 使用测试

T 是拥有变量集合 V的程序 P的程序图 G( P)中的一个路径集合。

定义 集合 T满足程序 P的全定义准则,当且仅当所有变量 v∈V, T包含从 v的每个定义节点到 v的一个使用的定义清除路径。

Page 112: 第  3 部分 软件测试技术

动态白盒测试—定义 / 使用测试

定义 集合 T满足程序 P的全使用准则,当且仅当所有变量 v∈V, T包含从 v的每个定义节点到 v的所有使用,以及到所有 USE( v,n)后续节点的定义清除路径。

Page 113: 第  3 部分 软件测试技术

动态白盒测试—定义 / 使用测试

定义 集合 T满足程序 P全谓词使用 / 部分计算使用准则,当且仅当所有变量 v∈V, T包含从 v的每个定义节点到 v的所有谓词使用的定义清除路径,并且如果 v的一个定义没有谓词使用,则定义清除路径导致至少一个计算使用。

Page 114: 第  3 部分 软件测试技术

动态白盒测试—定义 / 使用测试

定义 集合 T满足程序 P全计算使用 / 部分谓词使用准则,当且仅当所有变量 v∈V, T包含从 v的每个定义节点到 v的所有计算使用的定义清除路径,并且如果 v的一个定义没有计算使用,则定义清除路径导致至少一个谓词使用。

Page 115: 第  3 部分 软件测试技术

动态白盒测试—定义 / 使用测试

定义 集合 T满足程序 P的全定义 -使用路径准则,当且仅当所有变量 v∈V, T包含从 v的每个定义节点到 v的所有使用,以及到所有 USE( v,n)后续节点的定义清除路径,并且这些路径要么有一次的环经过,要么没有环路。

Page 116: 第  3 部分 软件测试技术

动态白盒测试—定义 / 使用测试

全路径

全定义-

使用路

径 全使用

全计算使用 / 部分谓词使用

全谓词使用 / 部分计算使用

全节点

全边

全谓词使用

全定义

Page 117: 第  3 部分 软件测试技术

动态白盒测试 - 基于程序片的测试

程序片是确定或影响某个变量在程序某个点上的取值的一组程序语句。

Page 118: 第  3 部分 软件测试技术

动态白盒测试 - 基于程序片的测试

定义 给定一个程序 P和 P中的一个变量集合 V,变量集合 V在语句 n上的一个片,记做 S(V,n),是 P中对 V中的变量值做出贡献的所有语句集合。

Page 119: 第  3 部分 软件测试技术

动态白盒测试 - 基于程序片的测试

定义 给定一个程序 P和一个给出语句及语句片段编号的程序图 G(P),以及 P 中的一个变量集合 V,变量集合 V在语句片段 n上的一个片,记做 S(V,n),是 P中在 n以前对 V中的变量值作出贡献的所有语句片段编号的集合。

Page 120: 第  3 部分 软件测试技术

动态白盒测试 - 基于程序片的测试

五种形式的使用谓词使用 用在谓词(判断)中。计算使用 用在计算中。输出使用 用于输出。定位使用 用于定位(指针、下标)。迭代使用 迭代(内部计数器、循环指示)。

Page 121: 第  3 部分 软件测试技术

动态白盒测试 - 基于程序片的测试

标识两种定义节点:输入定义 通过输入定义赋值定义 通过赋值定义

Page 122: 第  3 部分 软件测试技术

动态白盒测试 - 基于程序片的测试

写出 Stocks、 locks、 barrels的片

写出 totalStocks、 totallocks、 totalbarrels的片

写出 sales、 commission的片

Page 123: 第  3 部分 软件测试技术

Sale 与 commission 上的格

S31

S32

S37

S35S36S33

S34S24

S23S22S21S16S13S10

Page 124: 第  3 部分 软件测试技术

小结

静态黑盒测试是指检查产品描述,并在投入软件编写之前查找问题。

动态黑盒测试是指在不了解软件如何工作的前提下进行测试。

静态白盒测试是指通过正式审查和检验检查代码的细节。

动态白盒测试是指在看到软件的工作方式时,根据获得的信息对软件进行测试。