第 6章 软件项目的测试
路线图维护产品提交测试编码详细设计概要设计需求分析
一、软件测试概述
1、软件缺陷
2、测试的定义
二、软件测试的过程与方法
1、测试过程
2、测试方法
三、白盒测试
四、黑盒测试
五、测试级别
六、测试文档一、软件测试概述
1、软件缺陷
案例 1:美国航天局火星探测器
案例 2:千年虫问题
软件缺陷定义
①软件未实现产品说明书要求的功能。
②软件出现了产品说明书指明不应该出现的错误。
③软件实现了产品说明书未提到的功能。
④软件未实现产品说明书虽未明确提及但应该实现的目标。
⑤软件难以理解、不易使用、运行缓慢或者 — 从测试员的角度看 — 最终用户会认为不好。
一、软件测试概述
2、测试的定义
1)软件测试是为了发现错误而执行程序的过程。
2)软件测试是根据软件开发各个阶段的规格说明和程序的内部结构而精心设计的一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例运行程序以及发现错误的过程,
即执行测试步骤。
一、软件测试概述二、软件测试过程与方法
1、软件测试过程
测试的目的是在最小的成本和最少的时间内,
通过设计合适的测试用例,系统地发现不同类别的错误。
设计测试用例?执行测试过程?发现并修改软件错误二、软件测试过程与方法
2、测试的方法分类
静态测试
动态测试
白盒测试
黑盒测试三、白盒测试
1、定义
白盒测试又称为玻璃盒测试
用来对程序细节严密检验,提供针对特定条件和循环机的测试案例,对软件的逻辑路径进行测试,在不同点检验,程序的状态,以判定与其状态或待验证状态与真实状态是否相符。
2、白盒测试的测试要求
( 1)保证一个模块中的所有独立路径至少被使用一次;
( 2)对所有逻辑值均需测试真( true)和假( false);
( 3)在上下边界即可操作范围内运行所有循环;
( 4)检查内部数据结构即确保其有效性。
三、白盒测试
3、白盒测试的实施步骤:
( 1)测试计划阶段:根据需求说明书,制定测试进度。
( 2)测试设计阶段:依据程序设计说明书,按照一定规范化的方法进行软件结构划分和设计测试用例。
( 3)测试执行阶段:输入测试用例,得到测试结果。
( 4)测试总结阶段:对比测试的结果和代码的预期结果,分析错误原因,找到并解决错误。
三、白盒测试
4、例题 1:对该代码建立测试用例
Public Class Sample
Dim A As Integer
Dim B As Integer
Dim X As Double
Sub XValue()
If (A > 1) And (B = 0) Then
X = X / A
End If
If (A = 2) Or (X > 1) Then
X = X + 1
End If
End Sub
End Class
三、白盒测试
1)语句覆盖
语句覆盖方法是选择足够的测试用例,使得程序中每一条可执行语句至少被执行一次。
三、白盒测试开始
( A > 1 ) a nd ( B = 0 )
( A = 2 ) o r ( X > 1 )
X = X / A
T
返回
X = X + 1
T
a
ed
c
b
三、白盒测试
2)判定覆盖
判定覆盖是选择足够的测试用例,使得程序中每一个判断的每一种可能结果都至少被执行一次的测试方法,使得程序中的每个判断至少获得一次,真,值和,假,值。
三、白盒测试
3)条件覆盖
条件覆盖是选择足够的测试用例,使得程序中的每一个判断中的每一个条件的可能结果都至少被执行一次。
条件覆盖要求每个条件的可能值( True和 False)
至少满足一次。
三、白盒测试
4)判定 /条件覆盖
判定 /条件覆盖要求设计足够的测试用例,使得同时满足判定覆盖和条件覆盖。即判断中的每个条件的所有情况( True和 False)至少出现一次,并且每个判断本身的判断结果( True和
False)也至少出现一次。
三、白盒测试
5)条件组合覆盖
条件组合覆盖是通过选择足够的测试用例,使得程序中每一个分支判断中的每一个条件的每一种可能组合结构都至少被执行一次。所以满足条件组合覆盖的测试用例一定满足判定覆盖、
条件覆盖和判定 /条件覆盖。
三、白盒测试
6)路径覆盖
只有程序中的每条路径都经受了检验,才能使程序受到全面检查。路径覆盖式设计足够的测试用例,使得程序中所有的可能路径都至少被执行一次。
三、白盒测试
基本路径测试法
基本路径法允许测试用例设计者导出一个过程设计的逻辑复杂性测度,并使用该测度作为指南来定义执行路径的基本集。从该基本集导出测试用例保证对程序中每一条路径至少执行一次。
步骤
①以设计或代码为基础,画出相应的流图( flow graph)
②确定结果流图的环复杂度
③确定线性独立路径的一个基本集
④准备测试用例,强制执行基本集中每条路径三、白盒测试
① 以设计或代码为基础,画出相应的流图( flow
graph)
节点:代表一个或多个过程语句。每个包含了条件的节点成为判定节点。
边(连接):代表控制流
区域:由边和节点限定的区
注意事项:
一条边必须始于并且中止与一个节点。
计算区域时应包括图外部区,将其作为一个区域。
当过程中遇到复合条件时,需要为复合条件中每个条件均创建一个独立的节点。
顺序结构
if 结构
w h ile 结构
u n til 结构
cas e 结构三、白盒测试
根据流程图得到流图
1
2
3
4
5
6
7 8
9
1 0
1 1
流 程 图
1
9
87
6
4,5
2,3
1 0
1 1
R 1
R 2
R 3
R 4
流 图三、白盒测试
② 确定结果流图的环复杂度
环复杂度是一种为程序逻辑复杂性提供定量测量的软件度量,该度量用于基本路径法时,计算所得的值定义了程序基本集的独立路径数量。
环复杂度的计算方法:
a、流图中区域的数量对应于环复杂度。
b、给定流图 G的环复杂度 V(G),定义 V(G)=E-N+2。其中,E是流图中边的数量,N是流图中节点数量。
c、给定流图 G的环复杂度 V(G)也可以定义为
V(G)=P+1,其中 P是流图 G中判定节点的数量。
三、白盒测试
③ 确定线性独立路径的一个基本集
独立路径是指程序中至少引进一个新的处理语句集合或一个新条件的任意路径。
④准备测试用例,强制执行基本集中每条路径三、白盒测试
例题解析
①建立流图开始
( A > 1 ) a n d ( B = 0 )
( A = 2 ) o r ( X > 1 )
X = X / A
T
F
返回
X = X + 1
T
F
a
ed
c
b
1,
A > 1
2,
B = 0
4,
A = 2
5,
X > 1
3,
X = X / A
6,
X = X + 1
T
T
F
T
7,
结 束
F
F
T
F
三、白盒测试
② 计算环复杂度
V(G)=5;
V(G)=边数 -节点 +2=10-7+2=5;
V(G)=判定节点 +1=4+1=5
环复杂度为 5,有 5条独立路径三、白盒测试
③ 独立路径
1-5-7;
1-2-4-5-7;
1-2-3-4-5-7;
1-2-4-6-7;
1-2-4-5-6-7;
三、白盒测试
④ 建立测试用例四、黑盒测试
1、定义
黑盒测试也称为行为测试,或数据驱动测试。
是在已知产品所应具有的功能,通过测试来检测每个功能是否能正常使用。
利用黑盒测试法进行动态测试时,只需要测试软件产品的功能是否按需求正常使用,是否能适当接收输入数据而产生正确的输出信息。
如果软件外部特征本身有问题或规格说明有误,
黑盒测试无法发现。
四、黑盒测试
2、黑盒测试发现的问题
功能不正确或遗漏
界面错误
数据访问错误
性能错误
初始化和终止错误四、黑盒测试
3、黑盒技术设计测试用例的方法
穷举测试
1)等价类划分
2)边界值分析法
3)因果图法
4)决策表四、黑盒测试
1)等价类划分
等价类划分是把所有可能的输入数据,即程序的输入域分为若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。
步骤
①划分等价类
②设计测试用例四、黑盒测试
① 划分等价类
等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误是等效的。
把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据,取得较好的测试结果。
有效等价类
对规格说明合理、有意义的输入数据集合。检验程序是否实现了规格说明中所规定的功能和性能。
无效等价类
对规格说明不合理、无意义的输入数据集合。检验程序是否为实现规格说明中所规定的功能和性能。
四、黑盒测试
等价类划分原则
i 在输入条件规定了取值范围或值的个数的情况下,则可以确定一个有效等价类和两个无效等价类。
ii 在输入条件规定了输入值的集合或者规定了,必须如何,的条件的情况下,可确立一个有效等价类和一个无效等价类。
iii 在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。
iv 在规定了输入数据的一组值(假定 n个),并且程序要对每一个输入值分别处理的情况下,可确立 n个有效等价类和一个无效等价类。
v 在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反 规则)。
vi 在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。
四、黑盒测试
② 设计测试用例
等价类表输入条件 有效等价类 无效等价类
… … …
设计测试用例的原则
i 为每一个等价类规定一个唯一的编号。
ii 设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步。直到所有的有效等价类都被覆盖为止。
iii 设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。
四、黑盒测试
例题 2:程序规定:输入三个整数作为三边的边长构成三角形。当此三角形为一般三角形、等腰三角形、等边三角形时,分别作计算。用等价类划分方法为该程序进行测试用例设计。
解:设 a,b,c代表三角形的三条边。
1)分析题目中给出的和隐含的对输入条件的要求:
a)整数
b) 3个数
c)非零数
d)正数
e)两边之和大于第三边
f)等腰
g)等边四、黑盒测试
2)列出等价类表并编号
① 有效等价类
a)整数输入条件有效等价类 编号 无效等价类 编号输入三个整数整数 1
b) 3个数输入条件有效等价类 编号 无效等价类 编号输入三个整数
3个数 2
c)非零数输入条件有效等价类 编号 无效等价类 编号输入三个整数非零数 3
d)正数输入条件有效等价类 编号 无效等价类 编号输入三个整数正数 4
e)两边之和大于第三边输入条件有效等价类 编号 无效等价类 编号构成一般三角形
a+b > c 5
b+c > a 6
a+c > b 7
f)等腰输入条件有效等价类 编号 无效等价类 编号构成等腰三角形
a = b(两边之和大于第三边) 8
b = c(两边之和大于第三边) 9
a = c(两边之和大于第三边) 10
g)等边输入条件有效等价类 编号 无效等价类 编号构成等边三角形 a = b= c 11
四、黑盒测试
2)列出等价类表并编号
② 无效等价类
a)整数
b) 3个数
c)非零数
d)正数
e)两边之和大于第三边
f)等腰
g)等边
3)设计测试用例四、黑盒测试
2)边界值分析
边界值分析是通过选择等价类边界的测试用例,
是对等价类划分方法的补充。
①测试数据的选取
首先应确定边界情况,通常输入和输出的等价类的边界,就是应该着重测试的边界情况。
应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中典型值或任意值作为测试数据。
四、黑盒测试
② 边界值分析法选择测试用例的原则:
i 如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值为作测试输入数据。
ii 如果输入条件规定了值的个数,则用最大个数,最小个数,
比最小个数少一,比最大个数多一的数作为测试数据。
iii 根据规格说明的每个输出条件,使用前面的原则 i
iv 根据规格说明的每个输出条件,使用前面的原则 ii
v 如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。
vi 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。
vii 分析规格说明,找出其他可能的边界条件。
四、黑盒测试
例题 3:学生成绩录入系统
规格说明:学生成绩为 0~100之间的数
解:设学生成绩为 X
0 <= X <= 100
测试用例
X = -1
X = 0
X = 100
X = 101
四、黑盒测试
3)因果图法(结合判定表(决策表))
从用自然语言书写的程序规格说明的描述中找出因(输入条件)
和果(输出或程序状态的改变),可以通过因果图转换为判定表 ( decision table)。它适合于描述对于多种条件的组合、相应产生多个动作的形式的测试用例设计方法。
利用因果图生成测试用例的基本步骤:
①分析软件规格说明描述中,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。
②分析软件规格说明描述中的语义。找出原因与结果之间、原因与原因之间对应的关系,根据这些关系,画出因果图。
③由于语法或环境限制,有些原因与原因之间、原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。
④把因果图转换为判定表。
⑤把判定表的每一列拿出来作为依据,设计测试用例。
四、黑盒测试
例题 4:
第一列字符必须是 A或 B,
第二列字符必须是一个数字,在此情况下进行文件的修改,
但如果第一列字符不正确,则给出信息 L;
如果第二列字符不是数字,则给出信息 M。
解:
1、画出因果关系表和因果图。
四、黑盒测试
因果图四、黑盒测试
2、根据因果图建立判定表
按条件的各种组合情况产生对应的动作。原因 1和原因 2不能同时成立,故可排除这种情况。
四、黑盒测试
4)判定表法
判定表( decision table)是分析和表达多逻辑条件下执行不同操作的情况的工具。它可以把复杂的逻辑关系和多种条件组合的情况表达得既具体又明确。
课本 P204-206
五、软件测试的级别
1、软件开发 V模型和 W模型
V模型五、软件测试的级别
W模型五、软件测试的级别
2、测试级别
1)单元测试
2)集成测试
3)系统测试
4)验收测试(接收测试)
3、自动化测试六、软件测试文档
测试计划文档 P233
测试设计文档(测试用例文档) P235
测试总结 P236
小结
测试的概念
测试的方法
白盒测试
黑盒测试
测试级别
测试文档