第七章 系统实施、评价和维护
系统实施步骤
软硬件购置
系统准备(人员、数据、设备安装)
测试
系统试运行与切换
评价与维护
1 实施步骤
硬件获取
软件编程
用户准备
人员:聘用和培训
机房、场所准备
数据准备
安装
测试
试运行
系统切换
用户验收、评价
2 系统软硬件、网络的购置
1)硬件的获取
根据系统设计的指标要求制作采购的标书
邀请硬件供应商进行技术交流
选择资质好的厂商发放标书
评标
开标及商务谈判
签订合同
执行合同
2)网络的获取
局域网络的建设和改造
——新建网络
——改造网络
——自建或外包
广域网络的建设
——传输网络的取得(传输方式的选择、线路的租赁)
——网络设备的获取(与硬件同)
——自建与承包给系统集成商
2 系统软硬件、网络的购置 (续 )
3)软件工具的选取
选择开发方法
选择开发工具及数据库产品
2 系统软硬件、网络的购置 (续 )
3 系统准备
1)用户准备
用户准备主要是指准备好信息系统的管理
人员、使用人员等。
用户的培训
内部培训与外部培训
信息系统的 IT人员的招聘和培训
2)场所准备
新系统的工作场所(空调、电力、办公家具)
3)数据准备
将原来的手工数据文件转化成计算机文
件
将原来的不同格式的数据文件转换成新
系统的格式
4)安装
将计算机设备、网络设备在信息系统场
所安装、使其运转
3 系统准备 (续 )
模块测试 (单调 )
联合测试 (联调 )
系统测试 (总调 )
4 测试
4.1 测试的基本概念
测试目标
测试的基本原则
测试信息
测试的方法和技术
测试步骤
4.1.1 测试的目标
软件测试的目标:
为了发现程序中的错误而执行程序的过程;
好的测试方案是极有可能发现迄今尚未发现的
尽可能多的错误的测试方案;
成功的测试是发现了迄今尚未发现的错误的测
试。
测试是 为了发现错误,不能证明程序正确 。
一般来说,单元测试可由程序员自己完成,而
综合测试通常由测试小组来完成。
1) 软件开发成本
软件产品最大的成本是检测软件错误、
修正软件错误的成本。
在整个软件开发中:
测试工作量 ≥ 50%
2) 软件测试的目标
(1)预防错误, 几乎不可实现
(2)发现错误, 软件测试目的
找错
把证明程序无错当作测试目的不仅是不正
确的,完全做不到的, 而且对做好测试没有
任何益处, 甚至是 十分有害 的 。
软件测试要设法使软件发生故障,暴露软件
错误
测试的, 成功, 与, 失败,,
能够发现错误的测试是成功的测试, 否则
是失败的测试 。
2) 软件测试的目标 (续 )
,测试的目的是说明程序正确地执行它应有
的功能, 也是 错误 的 。
例:程序 Triangle,输入三个整数, 表示一
个三角形的三个边长, 该程序产生一个结果
,指出该三角形是等边三角形, 等腰三角形
还是不等边三角形 。
为说明其能正确执行它的功能, 可使用,
测试用例, (3,4,5),(5,5,6),(6,6,6),
程序都能给出正确结果, 是否就可认为程序
是正确的?
2) 软件测试的目标 (续 )
3)
测
试
与
开
发
各
阶
段
的
关
系
决定软件与系统的配合关系
需求分析
概要设计
详细设计
编 码
单元测试
集成测试
系统测试
测试阶段工作步骤,
单元测试, 检验每个模块能否单独工作
集成测试, 检验概要设计中模块接口设计
问题
系统测试, 以需求规格说明书为检验尺度
测试可视为分析, 设计, 编码三个阶段的
最终复审,以保证软件质量 。
3) 测试与开发各阶段的关系
(续 )
软件生存期各阶段间需保持的正确性
用户要求
用户,
我要什么?
运行结果
计算机,
程序运行得
到的结果
源程序
程序员,
我要让计算
机怎么做?
设计说明书
设计员,
我要让软件
做什么?
需求说明书
分析员,
我可以提
供什么?
1
2 3
4
5理解正确性
表达正确性
理解正确性
设计正确性
表达正确性
理解正确性
编码正确性
运行正确性
输入正确性
相符吗?
软件测试不等于程序测试
软件测试应 贯穿于软件定义与开发的整
个期间 ;
据美国一家公司统计,查出的软件错误
中,属于 需求分析和软件设计的错误 约
占 64%,属于程序编写的错误仅占 36%。
程序编写的许多错误是, 先天的, 。
4) 测试对象
1 基本原则
“尽早测试”应成为软件开发人员的座右铭
–坚持软件开发各阶段复审,尽早发现错误
开发和测试队伍分别建立
测试用例应由输入数据和预期的输出结果两部分组成
特别注意测试发现错误较多的程序模块,要重点测试
程序修改后要回归测试
应长期保留测试用例,直至系统废弃
4.1.2 测试的基本原则
2,测试用例, 设计
测试用例的构成要素
输入数据 +预期输出结果 +测试功能说明 +环境
平台及运行条件
兼顾合理的输入和不合理的输入数据
不仅检查程序是否实现预期功能,还 应检查程序
是否作了不该做的事
4.1.2 测试的基本原则 (续 )
3 程序测试举例
例:程序 Triangle,输入三个整数,
表示一个三角形的三个边长,该程序
产生一个结果,指出该三角形是等边
三角形、等腰三角形还是不等边三角
形。
4.1.2 测试的基本原则 (续 )
判断三角型的测试用例设计,
输入数据 预期结果
(1) 6;6;6 等边
(2) 8;8;4 等腰
(3) 4;5;6 一般
还应输入 非法数据:
0; 7; 9
-7;3; 5
a; 2; 7 等
4.1.2 测试的基本原则 (续 )
4 软件错误分类
功能错 (需求分析错误 )
软件结构错
数据错
编码错
软件集成错
测试定义与测试执行错误
4.1.2 测试的基本原则 (续 )
4.1.3 软件测试信息流
测试过程需要三类输入:
软件配置,需求规格说明书
软件设计说明书
被测源程序代码
测试配置,测试计划
测试用例 (测试数据 )
测试驱动程序
测试工具
4.1.3 软件测试信息流 (续 )
软件
配置
测试
配置
测试
测试
工具
结果
分析
排错
可靠性
分析
测试
结果
错误
预期
结果
出错率
改正
的软件
预测的
可靠性
4.1.4 测试的方法与技术
软件测试的
策略和方法
静态测
试方法
动态测
试方法
人工测试方法
计算机辅助静
态分析方法
白盒测试方法
黑盒测试方法
穷举测试方法
1 静态测试
基本特征是在对软件进行分析、检查和测
试,不实际运行被测试的软件。
静态测试对需求规格说明书, 软件设计说
明书, 源程序做结构分析, 流程图分析, 符
号执行来找错 。 约可找出 30~ 70%的逻辑设
计错误 。
4.1.4 测试的方法与技术 (续 )
2 动态测试
通过运行软件来检验软件的动态行为和运
行结果的正确性
动态测试的两个基本要素:
? 被测试程序
? 测试数据(测试用例)
4.1.4 测试的方法与技术 (续 )
2 动态测试方法 (续 )
(1)选取定义域有效值,或定义域外无效
值
(2)对已选取值决定预期的结果
(3)用选取值执行程序
(4)执行结果
与 (2)结果相比,和程序不符合有错
4.1.4 测试的方法与技术 (续 )
1) 模块测试
– 又称单元测试,在软件编码阶段进行,确认模块
作为单元能够正常运行
2) 集成测试 /联合测试
– 把经过测试的单元按一定顺序组装成为系统,进
行测试,又称接口测试
3) 系统测试
– 将软件系统作为单一实体,在用户积极参与下以
实际数据测试,测试的目的是验证系统能否达到
SRS的要求,因此又称验收测试。
4.1.5 测试步骤
3) 系统测试 (续 )
– ?测试:由一个用户 在开发环境下模拟 实
际操作环境运行程序系统
? 目的是评价软件产品的功能、可用性、可靠
性、性能和支持,系统的界面的特色。
? 方法是由开发者在场记录系统出错情况及使
用中存在的问题。
4.1.5 测试步骤 (续 )
3) 系统测试 (续 )
– ?测试:由系统一个或多个用户 在实际操作
环境中 运行系统
? 目的是评价系统的可支持性,包括文档的完整性、
用户培训和支持、使用系统的能力和满意程度。
? 方法是开发者不在测试现场,由用户记录的问题
可能是系统存在的错误,也可能是用户的主观认
定。
4.1.5 测试步骤 (续 )
白盒法
黑盒法
4.2 测试的基本方法
1) 黑盒测试 (又称功能测试,数据驱动测试,
基于规格说明书的测试 )
将被测试程序对象看作黑盒子,不考虑
其内部程序结构与处理过程,仅仅对于程序
接口进行测试。即检查适当的输入是否能够
产生适当的输出。
一 两种类型的测试
2) 白盒测试 (又称结构测试,玻璃盒测试,基
于覆盖的测试 )
分析程序结构与过程执行路径,按照程
序内部的逻辑 结构设计测试用例,检验程序
的每条通路是否按预期正常进行,力求提高
测试覆盖率 。
一 两种类型的测试 (续 )
3) 黑盒测试与白盒测试比较
黑盒测试是从用户观点,按规格说明书
要求的输入数据与输出数据的对应关系设
计测试用例,是根据程序 外部特征 进行测
试。
白盒测试是根据程序 内部逻辑结构 进行
测试。
一 两种类型的测试 (续 )
4) 彻底的黑盒法或者白盒法 (穷举测试 )
例,输入 三条边长 黑盒测试
可采用的测试用例数
(设字长 16位 )
执行时间, 设测试一次需 1ms
共需一万年
=2 ?2 ? 2 ≈ 3 ?1016 16 16 14
一 两种类型的测试 (续 )
4) 穷举测试 (续 ) 白盒测试
例,
含 4个分支,循环次数
≤ 20,从 A到 B的可能
路径
执行时间, 设测试一次需 2ms
穷举测试需 5亿年,
=5 +5 +..+5 +5
≈10
201 2 19
14
A
B
一 两种类型的测试 (续 )
不论黑盒还是白盒测试都 不能进
行穷尽测试,所以软件测试不可能发
现程序中存在的所有错误,因此需精
心设计测试方案,力争尽可能少的次
数,测出尽可能多的错误,
一 两种类型的测试 (续 )
二 白盒法
基于白盒法的测试思想:
分析被测程序的逻辑结构,选择逻辑执行 路径子集 设计
测试方案。
选择路径子集的覆盖标准:
语句覆盖(点覆盖)
判定覆盖
条件覆盖
判定 /条件覆盖
条件组合覆盖
路径覆盖
点覆盖
边覆盖
例,一个被测程序模块的流程图如右图:
其程序为:
int samp (int a,int b,int x)
{
int y;
if (a>1) && (b=0)
x=x/a;
if (a=2) || (x>1)
x=x+1;
y=x;
return(y);
}
二 白盒法
X=X/A
A>1 and B=0
A=2 or X>1
X=X+1
Y
Y
N
a
c
N
e
b
开始
返回
d
1 语句覆盖(点覆盖)
– 执行足够多的测试用例,使得被测程序中每个可执
行语句至少被执行一次。
– 上例中只需设计一个测试用例,
输入数据,A=2,B=0,X=4
即达到了语句覆盖;
– 语句覆盖是最弱的覆盖标准。
– 将程序模块抽象为程序图,语
句覆盖又被称为点覆盖。
X=X/A
A>1 and B=0
A=2 or X>1
X=X+1
Y
Y
N
a
c
N
e
b
开始
返回
d
二 白盒法 (续 )
2 判定覆盖(边覆盖)
– 执行足够多的测试用例,使得被测程序中每个语句至
少被执行一次,且每个判断的真假
分支至少执行一次。
– 上 例中可设计两组测试用例,
?A=3,B=0, X=3 可覆盖 c,d分支
?A=2,B=1, X=1 可覆盖 b,e分支
两组测试用例可覆盖所有判定
的真假分支
– 判定覆盖仍是弱的覆盖标准。
– 将程序模块抽象为程序图,判
定覆盖又被称为边覆盖。
X=X/A
A>1 and B=0
A=2 or X>1
X=X+1
Y
Y
N
a
c
N
e
b
开始
返回
d
二 白盒法 (续 )
3 条件覆盖
– 执行足够多的测试用例,使得被测程
序中 每个判定的每个条件的可能值 至
少执行一次。
二 白盒法 (续 )
3 条件覆盖 (续 )
– 上例中,
第一判定表达式,A>1 and B=0
设 条件 A>1 取真 记为 T1
假 T1
条件 B=0 取真 记为 T2
假 T2
第二判定表达式,A=2 or X>1
设 条件 A=2 取真 记为 T3
假 T3
条件 X>1 取真 记为 T4
假 T4
二 白盒法 (续 )
3 条件覆盖 (续 )
– 上例中,
测试用例 通过 满足的 覆盖
A B X 路径 条件 分支
1 0 3 abe T1,T2,T3,T4 b,e
2 1 1 abe T1,T2,T3,T4 b,e
两个测试用例覆盖了四个条件八种可能
取值。
– 未覆盖 c,d分支,不满足判定覆盖的
要求。
条件覆盖不一定包含判定覆盖
判定覆盖也不一定包含条件覆盖
X=X/A
A>1 and B=0
A=2 or X>1
X=X+1
Y
Y
N
a
c
N
e
b
开始
返回
d
满足条件, T1,T1; T2,T2
T3,T3; T4,T4
二 白盒法 (续 )
4 判定 /条件覆盖
– 执行足够多的测试用例,使得被测程序中的
判定的每个条件的所有可能取值至少执行一
次,同时每个判定本身的所有可能判定结果
至少执行一次。
– 是判定覆盖与条件覆盖的综合,但不能保证
检查出逻辑表达式的全部错误。
对于上例中 A>1时检查 B=0,而 A<=1时,B<>0
却不去验证了。
二 白盒法 (续 )
4 判定 /条件覆盖 (续 )
– 上例中,
测试用例 通过 满足的 覆盖
A B X 路径 条件 分支
2 0 4 ace T1,T2,T3,T4 c,e
2 1 1 abd T1,T2,T3,T4 b,d
两个测试用例能同时满足判定、条件覆
盖。
X=X/A
A>1 and B=0
A=2 or X>1
X=X+1
Y
Y
N
a
c
N
e
b
开始
返回
d
满足条件, T1,T1; T2,T2
T3,T3; T4,T4
二 白盒法 (续 )
5 条件组合覆盖
– 执行足够多的测试用例,使得被测程序中 所
有可能的条件取值组合至少执行一次 。
– 上例的模块中条件共有 8种可能的条件组合,
(1)A>1,B=0 (2) A>1,B<>0 (3) A<=1,B=0 (4) A<=1,B<>0
(5) A=2,X>1 (6) A=2,X<=1 (7) A<>2,X>1 (8) A<>2,X<=1
– 满足条件组合覆盖必满足判定、条件、判定 /
条件覆盖,但仍不能遍历每条路径。
二 白盒法 (续 )
5 条件组合覆盖 (续 )
– 上例中,测试用例 通过 满足的 覆盖
A B X 路径 条件 分支
2 0 3 ace T1,T2,T3,T4 c,e
2 1 1 abe T1,T2,T3,T4 b,e
0 0 1 abe T1,T2,T3,T4 b,e
0 1 0 abd T1,T2,T3,T4 b,d
2 0 2 ace T1,T2,T3,T4 c,e
2 1 1 abe T1,T2,T3,T4 b,e
3 2 2 abe T1,T2,T3,T4 b,e
3 3 1 abd T1,T2,T3,T4 b,d
二 白盒法 (续 )
5 条件组合覆盖 (续 )
– 另一组测试用例:
测试用例 通过 满足的 覆盖
A B X 路径 条件 分支
2 0 4 ace T1,T2,T3,T4 c,e
2 1 1 abe T1,T2,T3,T4 b,e
1 0 2 abd T1,T2,T3,T4 b,d
1 1 1 abd T1,T2,T3,T4 b,d
二 白盒法 (续 )
6 路径覆盖
– 执行足够多的测试用例,使得被测程序中每条
可能路径至少通过一次。
– 上例中设计测试用例,
测试用例 通过 满足的 覆盖
A B X 路径 条件 分支
1 1 1 abd T1,T2,T3,T4 b,d
1 1 2 abe T1,T2,T3,T4 b,e
3 0 1 acd T1,T2,T3,T4 c,d
2 0 4 ace T1,T2,T3,T4 c,e
– 满足路径覆盖保证了每个可能的路径至少通过
一次,与条件组合覆盖结合使用可能取得较好
效果。
二 白盒法 (续 )
7 点覆盖
测试路径至少经过程序控制流图
中每个节点一次
执行路径,
abdghi和 aceghi
满足点覆盖
S
1
2 3
4
5
6
E
a
cb
d
f
eg
hi
二 白盒法 (续 )
8 边覆盖
测试路径至少经过程序控制流图
中每条边一次,
执行路径,
abdfi和 aceghi
满足边覆盖
― 边覆盖与路径覆盖不同
S
1
2 3
4
5
6
E
a
cb
d
f
eg
hi
二 白盒法 (续 )
1 等价分类法
等价分类法的基本思想是将所有可能的输入数据 (有
效的和无效的 )划分成若干个等价的子集 (称为等价类 ),
使得每个子集中的一个典型值在测试中的作用与这一
子集中所有其它值的作用相同, 可从每个子集中选取
一组数据来测试程序。
等价类划分有两种情况:
– 合理等价类:测试模块是否实现了规定的功能和
性能
– 不合理等价类:测试模块是否能够拒绝无效输入,
被测试对象在运行条件错误时的可靠性如何
三 黑盒法
1 等价分类法 (续 )
划分等价类的规则
(1)如果输入条件代表一个范围,可定义一个有
效等价类和两个无效等价类。
例 输入条件规定:项数可从 1到 999
三 黑盒法 (续 )
1 999
有效
等价类
无效
等价类
> 999
无效
等价类
< 1
1 等价分类法 (续 )
划分等价类的规则
(2)如果输入条件代表集合的某个元素,则可定
义一个有效等价类和一个无效等价类。
(3)如规定了输入数据的一组值,且程序对不同
输入值做不同处理,则每个允许的输入值是
一个有效等价类,并有一个无效等价类 (所有
不允许的输入值的集合 )。
三 黑盒法 (续 )
1 等价分类法 (续 )
划分等价类的规则
(4)如果规定了输入条件必须遵守的规则,则可
划分一个有效等价类 (符合规则 )和若干个无
效等价类 (从不同角度违反规则 )。
*(5)如果规定了输入数据是整型,则可划分出正
整数、零、负整数三个有效等价类。
(6)如已划分的等价类各元素在程序中的处理方
式不同, 则应将此等价类进一步划分成更小
的等价类 。
三 黑盒法 (续 )
1 等价分类法 (续 )
用等价类划分法设计测试用例
例 1:某个待测程序的输入参数, 职称, 的输入
值可以是助教、讲师、副教授、教授四种。
则,可以设计 一个 有效等价类(取四个职称中的
一个值);一个无效等价类(四个职称之外
的任意值)。
三 黑盒法 (续 )
1 等价分类法 (续 )
用等价类划分法设计测试用例
例 1(续 ):如果程序对不同职称有不同的处理方
案,如, 住房分配, 程序。
则,应设计 四个 有效等价类(四个职称每个值为
一类);一个无效等价类(四个职称之外的
任意值)。 (根据规则 (6))
三 黑盒法 (续 )
1 等价分类法 (续 )
用等价类划分法设计测试用例步骤:
(1)形成等价类表,每一等价类规定一个唯一的编
号;
(2)设计一测试用例, 使其 尽可能多地覆盖 尚未覆
盖的有效等价类, 重复这一步骤, 直到所有
有效等价类均被测试用例所覆盖;
(3)设计一新测试用例, 使其 只覆盖一个 无效等价
类, 重复这一步骤直到所有无效等价类均被
覆盖;
三 黑盒法 (续 )
1 等价分类法 (续 )
用等价类划分法设计测试用例 (例 1):
例,某城市电话号码由三部分组成
地区码:空白或 3位数字
前 缀:非 ‘ 0’ 或 ‘ 1’ 开
头的三位数字
后 缀,4位数字
三 黑盒法 (续 )
输入条件 有效等价类 无效等价类
地区码 空白 (1)3位数字 (2)
有非数字字符 (5)
少于 3位数字 (6)
多于 3位数字 (7)
前 缀 从 200到 999之间的 3位数字 (3)
有非数字字符 (8)
起始位为 ‘ 0’ (9)
起始位为 ‘ 1’ (10)
少于 3位数字 (11)
多于 3位数字 (12)
后 缀
有非数字字符 (13)
少于 4位数字 (14)
多于 4位数字 (15)
4位数字 (4)
第一步:电话号码等价类划分
测试数据 测试范围 期望结果
( )276-2345
(635)805-9321
等价类 (1)(3)(4)
等价类 (2)(3)(4)
有
效
有
效
第二步:确定测试用例
对表中 4个有效等价类可公用
下面两个测试用例:
对表中 11个无效等价类应选择 11个测试用例,
测试数据 测试范围 期望结果
(20A)123-4567
(33 )234-5678
(7777)345-6789
.
.
.
无效等价类 (5)
无效等价类 (6)
无效等价类 (7)
.
.
,(15)
无效
无效
无效
.
.
.
本例的 15个等价类至少需要 13个测试用例
第二步:确定测试用例
1 等价分类法 (续 )
用等价类划分法设计测试用例 (例 2):
例,把一个六位数字字符串转化为整数
三 黑盒法 (续 )
边界
分析法
有效输入的等价类 无效输入的等价类
1) 1~6个数字串(最高位非 0) 4)空字符串
2)最高位为 0的数字串 5)不足 6位时,字符串左
边填充不是 0或空格
3)最高位数字左邻是负号的 6)最高位数字右边包含字
数字串 符和空格
7)负号与最高位数字间有
空格
8)在最小负整数与 0之间的负 11)比 -32767还小的负整数
整数
9) 0 12)比 32768还大的正整数
10)在 0和最大正整数之间的正
整数
第一步:等价类划分
根据以上等价类,设计测试方案:
1) 1~6个数字串,输出合法的正整数
2)最高位为 0的数字串,输出合法正整数
3)最高位数字时 0,输出也为 0
4)最高位数字左邻是负号的数字串,输出合法负整数
5)太小的负整数,‘ -47561’,无效输入
6)太大的正整数,‘ 132767’,无效输入
7)空字符串,‘ ’,没有数字,无效输入
8)字符串左部非 0也不是空格,‘ *****1’,填充错误
9)最高位数字后面有空格,‘ 1 2’,无效输入
10)最高位数字后有其它字符,‘ 1**2’,无效输入
11)负号和最高位数字间有空格,‘ - 12’,无效输入
第二步:确定测试用例
2 边界值分析法
边界值分析法与等价类划分法区别
(1)边界值分析不是从某等价类中随便挑一个作
为代表,而是使这个等价类的每个边界都要
作为测试条件。
(2)边界值分析不仅考虑
输入条件,还要考虑输
出空间产生的测试情况
三 黑盒法 (续 )
被测试
子 域
测试内点
测试外点
2 边界值分析法 (续 )
设计测试用例原则,
(1)如输入条件代表以 a和 b为边界的范围,测试
用例应包含 a,b、略大于 a和略小于 b的值。
(2)如输入条件代表一组值,测试用例应当执行
其中的最大值和最小值,还应测试略大于最
大值和略小于最小值的值。
三 黑盒法 (续 )
边界值分析设计测试用例原则
例:邮件收费规定 1~ 5 kg收费 2元
则应设计测试用例,
0.9,1,5,5.1 kg
或 0.99,1,5,5.01 kg。
边界值分析设计测试用例原则
例:一个输入文件可有 1~ 255个记录
则可分别设计有,
1个,255个,0个,256个记录的
输入文件
2 边界值分析法 (续 )
设计测试用例原则,
(3)如规格说明中提出输入输出的有序集(顺序
文件、有序表等 ),取有序集的第一个和最后
一个元素做测试用例。
(4)如程序数据结构有预定的边界,应测试其边
界的数据项。
(5)如输出条件规定了取值范围,取边界上下浮
动值做测试用例。
三 黑盒法 (续 )
边界值分析设计测试用例原则
例:程序中定义一数组,其元素下标的
下界是 0,上界是 100,则应选择达到
这个数组下标边界的值,如 0与 100作
为测试用例。
例:
每日保险扣除额 (输出项 )在 0~ 1165.25 元,
则应设计测试用例使其恰好产生 0元和
1165.25元的结果,此外还应考虑设计结果
为负值或 >1165.25元的测试用例。
(如, -0.01元和 1165.26元 )
由于输入值的边界不与输出值的边界相对
应,所以要检查输出值的边界及产生超出输
出值值域的结果不一定可能。
边界值分析设计测试用例原则
2 边界值分析法 (续 )
上例 2中,应补充下述测试方案:
12)使输出刚好等于 -32768,输出 -32768
13)使输出刚好等于 32767,输出 32767
改 5)使输出刚好小于 -32768,‘ -32769’,无效输
入
改 6)使输出刚好大于 32767,‘ 32768’,无效输
入
三 黑盒法 (续 )
黑盒法
3 错误推测(猜错法)
不同类型的程序通常具有若干特殊的易出错
的情况,这些情况未必可以归结为等价类或
者边界情况。有经验的测试人员往往根据经
验与直觉,例举出程序中可能有的错误和容
易发生错误的特殊情况,根据它们选择测试
用例,实行高效的测试。
三 黑盒法 (续 )
4 因果图法
因果图适合于描述对于多种输入条件
的组合,相应产生多个动作的形式来
设计测试用例。因果图方法最终生成
的是判定表。
三 黑盒法 (续 )
4 因果图法 (续 )
用因果图法生成测试用例的步骤:
(1)分析哪些是原因,哪些是结果,给每个原
因、结果一个标识。
(2)分析语义,找出原因与结果、原因与原因
之间的关系,画出因果图。
(3)在因果图上标明约束或限制条件。
(4)把因果图转化为判定表 。
(5)根据判定表每一列设计测试用例。
三 黑盒法 (续 )
某电力公司有 A,B,C,D四类收费标准,
并规定:
居民用电 <100度 /月 按 A类收费
≥ 100度 /月按 B类收费
动力用电 <10000度 /月,非高峰,B类收费
≥ 10000度 /月,非高峰,C类收费
<10000度 /月,高峰,C类收费
≥ 10000度 /月,高峰,D类收费
因果图方法实例 1
列出输入条件和输出动作并编号:
输入条件 (原因 ) 输出动作 (结果 )
1-居民用电 A- A类计费
2-动力用电 B- B类计费
3- <100度 /月 C- C类计费
4- <10000度 /月 D- D类计费
5-高峰用电
因果图方法实例 1(续 )
组合条件
条件
原因
动作
结果
A
B
C
1
2
3
1 2 3 4 5 6
1
0
1
1
0
0
0
1 1
0 0 0
1 1
0 0 0 0
1 0 0 0
0 1 1 0
4 1 0 1 0
5 0 0 1 1
D 0 0 0 1
1 0
0 1
0 0
0 0
测试用例
把因果图转换为判定表:
因果图方法实例 1(续 )
1列 居民电,90度 /月 A
2列 居民电,110度 /月 B
3列 动力电,非高峰,8000度 /月 B
4列 动力电,非高峰,1.2万度 /月 C
5列 动力电,高峰,0.9万度 /月 C
6列 动力电,高峰,1.1万度 /月 D
条件 测试用例 预期结果
组合 (输入数据 ) (输出动作 )
为判定表每一列设计一个测试用例,
因果图方法实例 1(续 )
某软件规格说明中规定:
输入两个字符,
当第一个字符是 A或 B,且第二个字符是数
字时修改文件。
若第一个字符不是 A,也不是 B 时,输出错
误信息 S,若第二个字符不是数字时,输出错
误信息 P。
因果图方法实例 2
原 因 是:
1-第 1个字符是 A
2-第 1个字符是 B
3-第 2个字符是数字。
结 果 是:
11-修改文件。
12-输出错误信息 S。
13-输出错误信息 P。
约束 E
1
2
(1,2不能同时成立 )
分析规格说明并编号:
因果图方法实例 2(续 )
组合条件
条件
原因
动作
结果
11
12
13
1
2
3
1 2 3 4 5 6 7 8
1
1
1
1
1
0
1
0 0
1 0 0 0 0
1 1 0 0
1 0 1 0 1 0
1 0 1 0 0 0
0 0 0 0 1 1
0 1 0 1 0 1
测试用例 A3 A* B8 BB X6 CC
因果图转换的判定表:
因果图方法实例 2(续 )
因果图转换的判定表分析:
判定表所有条件组合数,23 =8。 第 1,2列条件组合
不可能出现,针对第 3~ 8列设计测试用例如下,
条件 测试用例 预期结果
组合 (输入数据 ) (输出动作 )
3列 A3 修改文件
4列 A*
5列 B8
6列 BB 信息 P
7列 X6 信息 S
8列 CC 信息 S,P
因果图方法实例 2(续 )
黑盒法为主、白盒法为辅,具体如下:
任何情况下都应该使用边界值分析设计测试用例;
必要时采用等价分类法补充用例;
必要时再用错误推测法补充用例;
对照程序逻辑,检查设计用例的逻辑覆盖标准。
根据程序可靠性要求,补充用例使之达到规定的
覆盖标准。
四 综合测试策略
例:程序 TRIANGLE读入三个整数值,代表三条边长,程序
根据这三个值判断三角形属于不等边、等腰或等边三角
形中哪一种。
– 综合使用边界值分析、等价划分、错误推测技术可设
计 9种测试数据,
测试功能 测试数据
1.等边 10,10,10
2.等腰 10,10,17 10,17,10 17,10,10
3.不等边 8,10,12 8,12,10 10,12,8
4.非三角形 10,10,21 10,21,10 21,10,10
5.退化情况 10,5,5 5,10,5 5,5,10
6.零数据 0,0,0 0,0,17 0,10,12
7.负数据 -10,-10,-10 -10,-10,17 -8,10,17
8.遗漏数据 --,--,-- 10,--,-- 8,10,--
9.无效输入 a,b,c =,+,* 8,10,a
综合测试策略实例
– 测试数据覆盖程度检验
编号 测试数据 覆盖的边
1,10,10,10 1,2,3,4,5,6,7,8
2a,10,10,17 1,2,3,4,5,15,19,20,8
2b,10,17,10 1,2,3,4,14,18,19,20,8
2c,17,10,10 1,2,3,4,14,16,17,19,20,8
3a,8,10,12 1,2,3,4,14,16,21,22,8
3b,8,12,10 1,2,3,4,14,16,21,22,8
3c,10,12,8 1,2,3,4,14,16,21,22,8
4a,10,10,21 1,2,3,11,12,13,8
4b,10,21,10 1,2,10,12,13,8
4c,21,10,10 1,9,12,13,8
– 以上测试数据已满足路径覆盖,因此
不需再用白盒法设计测试数据。 图 TRIANGLE对应的程序图
a
d
e
f
b
c
g
k
h
1
2
3
4
5
6
7
8
i
j
l
9 10
11
12
13
m
no
p
14
15
16
1718
19
20
21
22
23
综合测试策略实例 (续 )
4.3 模块测试
一、模块测试内容
模块接口
局部数据结构
重要的执行路径
出错处理问题
影响上述各方面的边界条件
二、模块测试过程
人工测试 (代码审查 )
计算机测试
三、模块测试方法 (黑盒法、白盒法)
被测试模块
桩模块 k桩模块 1
驱动模块
……
测试用例 测试结果
图 模块测试的环境
4.4 集成测试
模块集成测试策略
非渐增式:一次性装配得到目标系统
渐增式:按照一定顺序,将模块逐个安装并
调试
– 自顶向下的结合
– 自底向上的结合
–,三明治”方法
4.4 集成测试 (续 )
1 集成测试方法
在集成测试过程中,要为模块设计一个
驱动模块和若干个桩模块。
驱动模块
桩模块
4.4 集成测试 (续 )
驱动模块
驱动模块是模拟待测模块 X的调用模
块,其作用是将测试数据传送给待测模
块 X,并显示待测模块 X的结果。
A
X Y … …
… …… …
待测模块
X
驱动集成测试:
4.4 集成测试 (续 )
桩模块
桩模块的作用是模拟待测模块 X的下
层模块 E。其作用是接受待测模块 X的控
制并模拟下层模块 E的功能。
A
X Y … …
… ……
待测模块
X
桩 1
集成测试:
E
4.4 集成测试 (续 )
非渐增式:
先分别测试 A,B,C,D、
E,F,然后将六个模块连
接起来再测试。
渐增式 (自底向上 ):
先并行测试 E,C,F,然
后测试 B,D,最后测试 A。
2 渐增式和非渐增式的比较
A
B C
E
D
F
4.4 集成测试 (续 )
2 渐增式和非渐增式的比较 (续 )
非渐增式需要较多的人工编写桩模块和驱动模
块,渐增式较少
渐增式可以较早地发现模块界面之间的错误
渐增式有利于排错
渐增式比较彻底
渐增式需要较多的机器时间
渐增式的测试工作无法并行
结论:总的来说,渐增式比较优越
4.4 集成测试 (续 )
3 渐增式测试
由顶向下
自底向上
两种方式结合 (―三明治, 方式 )
决定测试顺序的基本原则:
–尽早测试关键的模块。 所谓关键的模块是指
较复杂、较可能出错、或含有新的算法的模块。
–尽早测试包含输入输出操作的模块。 这样向
程序送入测试数据、以及检察输出结果就方便
了。
4.4 集成测试 (续 )
3 渐增式测试 (续 )
由顶向下和自底向上的比较
–由顶向下可以较早地形成整个系统的总
体框架,但有模块介入问题 。使测试较
为困难。
–自底向上没有模块介入问题,但总体框
架要到最后一个模块(顶层模块)测试
完才形成。
4.4 集成测试 (续 )
3 渐增式测试 (续 )
A
DCB
IH
J
GFE
LK
右图中 J,I是包含输入输出的模块,
D,F是关键的模块。
则测试顺序可以取:
(自顶向下 )ABCDEFGHIJKL;
ABEFJCGKDHLI;
ADHIJKLCGBFJE;
ABFJDICGEKHL;
(由下而上 ) KLHID以及 JF->E,B->…
(三明治式 )JFBADI->… …
4.5 确认验收测试
目的是向用户表明软件系统的有效性,
确认测试技术以黑盒法为主,以验证软
件是否满足 SRS规定的需求。
SRS (Software Requirement
Specification),软件需求说明书
4.5 确认验收测试
常用测试类型,
功能测试
容量测试 大数据量
紧张度测试 峰值
使用性测试 如,用户界面是否合理?风
格是否统一? 操作是否方便?出错信息是
否简明易用 … 等
安全性测试
4.5 确认验收测试
常用测试类型 (续 ),
可靠性测试
恢复测试
文档测试 确保用户文档的精确性和清晰
性,确保叙述正确无误
工序测试 与人工工序的配合情况
4.6 软件调试
调试的任务:
– 测试阶段发现的是故障的表现,可以成为外部错误。对于
发现的错误必须进行诊断,找到其发生的原因和位置,这
就是调试的任务。
– 测试工作由他人(专业测试小组)进行,而调试要求对程
序结构和算法十分熟悉,因此最好由程序设计者本人完成。
常用调试技术
– 设置程序运行断点,插入打印语句
– 使用自动调试工具
常用调试策略
– 试探法
– 回溯法
– 对分查找
– 归纳法
4.7 测试过程文档
测试计划:
1)每个测试阶段的目的
2)每个测试阶段完成的标准
3)时间进度表
4)每个测试阶段的负责人员
5)测试用例库
6)测试所需的工具
7)每个测试阶段所需机时数
4.7 测试过程文档 (续 )
测试过程中的记录内容:
1)发现的错误
2)纠错时对系统作的修改
3)退化测试情况:即修改后的再测试
4)错误原因、类型、比率的分析和统计
思考
软件测试的基本任务是什么?简述软件测试的
方法。
总结软件测试的基本原则。
什么是软件系统的 ?测试和 ?测试,它们各自的
目的和方法有什么特点?
使用白盒法覆盖了被测试程序的所有逻辑执行
路径能够保证程序正确吗?
为什么综合测试策略中首先考虑边界值分析,
而不是等价分类方法?
5 系统试运行与切换
系统切换:新旧系统的交替过程,也就是
旧的管理信息系统逐渐退出,由新的管理
信息系统来代替
系统测试的同时就可进行试运行
切换的方法
—直接法
—并行法
—阶梯法 (分段法 )
老系统 新系统
老系统
新系统 1
新系统 2
新系统 n
老系统
新系统
直接法
阶梯法
并行法
5 系统试运行与切换 (续 )
切换的方法
用户验收
– 系统验收
– 文档验收
– 签署文件
5 系统试运行与切换 (续 )
系统维护
?维护的理由
?维护类型
?维护内容
?维护的实施 ( 人员、财务 )
系统评价
?评价指标体系
?评价方法
6 系统评价和维护
6.1 系统维护
维护的理由:
– 用户的新需求
– 技术更新、硬件问题
– 公司购并或并购
– 政府政策的调节
– 运行环境的变化
维护的类型:
– 正确性维护
– 适应性维护
– 完善性维护
– 预防性维护
6.1 系统维护 (续 )
维护的内容:
–程序维护
–数据文件维护
–代码维护
–机器、设备维护
6.1 系统维护 (续 )
维护的实施:
–保证维护的队伍
–保证维护的经费
–软件维护的成本
6.1 系统维护 (续 )
使用时间
软
件
维
护
成
本
6.2 系统评价
评价贯穿系统建设的全过程,尤其在设
计、实施阶段更为重要。它分析系统的处
理,以确保系统能按期望运行。
系统评价通常涉及:设计中对系统的运行
及收益的要求与系统实际运行情况及收益
进行比较
系统运行后,重新估价设计中的成本、控
制等复杂因素。
评价的问题反馈给建设的各阶段以便重新
处理
系统评价指标体系
从三个角度来考虑评价指标体系,
?从建设、运行维护角度评价的指标
?从用户角度考虑的指标
?从对外部影响考虑的指标
上述三个角度考虑的指标共有 20个,组
成指标体系。
6.2 系统评价 (续 )
系统的评价方法
?多因素加权平均法
一种简单易用的综合评价方法。该方法
把上述 20项指标列成表一所示的最上层,
然后请专家对每个指标按其重要性打一个
权重,权重最高分为 10分,最低分 1分。
再请每个专家分别对被评价系统 20个指标
打分,最高分也是 10分,最低分 1分。
6.2 系统评价 (续 )
系统的评价方法 (续 )
?层次分析法 (AHP)评价方法
五个步骤,
1.建立层次结构模型
2.构造判断矩阵
3.层次单排序及其一致性检验
4.层次总排序
5.层次总排序的一致性检验
6.2 系统评价 (续 )
系统的评价方法 (续 )
?数据包络 (DEA)评价方法
数据包络分析方法 (DEA)的 CCR模型可以看作
是处理具有多个输入 (输入越小越好 )和多个输
出 (输出越大越好 )的多目标决策问题的方法。
它是根据一个关于输入 ---输出的观察值来估计
有效的生产前沿面。具体来说,DEA是使用数学
规划模型比较决策单元之间的相对效率,对决
策单元作出评价。
6.2 系统评价 (续 )
系统的评价方法 (续 )
?数据包络 (DEA)评价方法 (续 )
企业 MIS的评价中,可以根据投资项目的输入
数据和投资后 MIS的输出数据来评价。输入数据
是指投资项目在投资过程中需要耗费的某些量,
例如投入项目资金总额,投入的总专业人数及素
质情况等。输出数据是指建设项目经过一定的输
入后,所产生的表明该管理信息系统活动成效的
某些信息量,根据输入数据和输出数据来评价信
息系统规模效益的优劣,即所谓评价信息系统间
的相对有效性。
6.2 系统评价 (续 )
系统的评价方法 (续 )
?经济效果评价方法
1.直接经济效果
( 1)年收益增长额( P)。
( 2)投资效果系数( E)。
( 3)投资总额( K)。
2.间接经济效果
6.2 系统评价 (续 )
思考
以你身边的某一组织(如学校或学校中
某一部门、企业、公司、事业单位等)为
调查对象,调查该组织实施信息系统的现
状(包括硬件、软件、网络布局、人员水
平、系统对组织在管理方面所起的作用
等)。
系统实施步骤
软硬件购置
系统准备(人员、数据、设备安装)
测试
系统试运行与切换
评价与维护
1 实施步骤
硬件获取
软件编程
用户准备
人员:聘用和培训
机房、场所准备
数据准备
安装
测试
试运行
系统切换
用户验收、评价
2 系统软硬件、网络的购置
1)硬件的获取
根据系统设计的指标要求制作采购的标书
邀请硬件供应商进行技术交流
选择资质好的厂商发放标书
评标
开标及商务谈判
签订合同
执行合同
2)网络的获取
局域网络的建设和改造
——新建网络
——改造网络
——自建或外包
广域网络的建设
——传输网络的取得(传输方式的选择、线路的租赁)
——网络设备的获取(与硬件同)
——自建与承包给系统集成商
2 系统软硬件、网络的购置 (续 )
3)软件工具的选取
选择开发方法
选择开发工具及数据库产品
2 系统软硬件、网络的购置 (续 )
3 系统准备
1)用户准备
用户准备主要是指准备好信息系统的管理
人员、使用人员等。
用户的培训
内部培训与外部培训
信息系统的 IT人员的招聘和培训
2)场所准备
新系统的工作场所(空调、电力、办公家具)
3)数据准备
将原来的手工数据文件转化成计算机文
件
将原来的不同格式的数据文件转换成新
系统的格式
4)安装
将计算机设备、网络设备在信息系统场
所安装、使其运转
3 系统准备 (续 )
模块测试 (单调 )
联合测试 (联调 )
系统测试 (总调 )
4 测试
4.1 测试的基本概念
测试目标
测试的基本原则
测试信息
测试的方法和技术
测试步骤
4.1.1 测试的目标
软件测试的目标:
为了发现程序中的错误而执行程序的过程;
好的测试方案是极有可能发现迄今尚未发现的
尽可能多的错误的测试方案;
成功的测试是发现了迄今尚未发现的错误的测
试。
测试是 为了发现错误,不能证明程序正确 。
一般来说,单元测试可由程序员自己完成,而
综合测试通常由测试小组来完成。
1) 软件开发成本
软件产品最大的成本是检测软件错误、
修正软件错误的成本。
在整个软件开发中:
测试工作量 ≥ 50%
2) 软件测试的目标
(1)预防错误, 几乎不可实现
(2)发现错误, 软件测试目的
找错
把证明程序无错当作测试目的不仅是不正
确的,完全做不到的, 而且对做好测试没有
任何益处, 甚至是 十分有害 的 。
软件测试要设法使软件发生故障,暴露软件
错误
测试的, 成功, 与, 失败,,
能够发现错误的测试是成功的测试, 否则
是失败的测试 。
2) 软件测试的目标 (续 )
,测试的目的是说明程序正确地执行它应有
的功能, 也是 错误 的 。
例:程序 Triangle,输入三个整数, 表示一
个三角形的三个边长, 该程序产生一个结果
,指出该三角形是等边三角形, 等腰三角形
还是不等边三角形 。
为说明其能正确执行它的功能, 可使用,
测试用例, (3,4,5),(5,5,6),(6,6,6),
程序都能给出正确结果, 是否就可认为程序
是正确的?
2) 软件测试的目标 (续 )
3)
测
试
与
开
发
各
阶
段
的
关
系
决定软件与系统的配合关系
需求分析
概要设计
详细设计
编 码
单元测试
集成测试
系统测试
测试阶段工作步骤,
单元测试, 检验每个模块能否单独工作
集成测试, 检验概要设计中模块接口设计
问题
系统测试, 以需求规格说明书为检验尺度
测试可视为分析, 设计, 编码三个阶段的
最终复审,以保证软件质量 。
3) 测试与开发各阶段的关系
(续 )
软件生存期各阶段间需保持的正确性
用户要求
用户,
我要什么?
运行结果
计算机,
程序运行得
到的结果
源程序
程序员,
我要让计算
机怎么做?
设计说明书
设计员,
我要让软件
做什么?
需求说明书
分析员,
我可以提
供什么?
1
2 3
4
5理解正确性
表达正确性
理解正确性
设计正确性
表达正确性
理解正确性
编码正确性
运行正确性
输入正确性
相符吗?
软件测试不等于程序测试
软件测试应 贯穿于软件定义与开发的整
个期间 ;
据美国一家公司统计,查出的软件错误
中,属于 需求分析和软件设计的错误 约
占 64%,属于程序编写的错误仅占 36%。
程序编写的许多错误是, 先天的, 。
4) 测试对象
1 基本原则
“尽早测试”应成为软件开发人员的座右铭
–坚持软件开发各阶段复审,尽早发现错误
开发和测试队伍分别建立
测试用例应由输入数据和预期的输出结果两部分组成
特别注意测试发现错误较多的程序模块,要重点测试
程序修改后要回归测试
应长期保留测试用例,直至系统废弃
4.1.2 测试的基本原则
2,测试用例, 设计
测试用例的构成要素
输入数据 +预期输出结果 +测试功能说明 +环境
平台及运行条件
兼顾合理的输入和不合理的输入数据
不仅检查程序是否实现预期功能,还 应检查程序
是否作了不该做的事
4.1.2 测试的基本原则 (续 )
3 程序测试举例
例:程序 Triangle,输入三个整数,
表示一个三角形的三个边长,该程序
产生一个结果,指出该三角形是等边
三角形、等腰三角形还是不等边三角
形。
4.1.2 测试的基本原则 (续 )
判断三角型的测试用例设计,
输入数据 预期结果
(1) 6;6;6 等边
(2) 8;8;4 等腰
(3) 4;5;6 一般
还应输入 非法数据:
0; 7; 9
-7;3; 5
a; 2; 7 等
4.1.2 测试的基本原则 (续 )
4 软件错误分类
功能错 (需求分析错误 )
软件结构错
数据错
编码错
软件集成错
测试定义与测试执行错误
4.1.2 测试的基本原则 (续 )
4.1.3 软件测试信息流
测试过程需要三类输入:
软件配置,需求规格说明书
软件设计说明书
被测源程序代码
测试配置,测试计划
测试用例 (测试数据 )
测试驱动程序
测试工具
4.1.3 软件测试信息流 (续 )
软件
配置
测试
配置
测试
测试
工具
结果
分析
排错
可靠性
分析
测试
结果
错误
预期
结果
出错率
改正
的软件
预测的
可靠性
4.1.4 测试的方法与技术
软件测试的
策略和方法
静态测
试方法
动态测
试方法
人工测试方法
计算机辅助静
态分析方法
白盒测试方法
黑盒测试方法
穷举测试方法
1 静态测试
基本特征是在对软件进行分析、检查和测
试,不实际运行被测试的软件。
静态测试对需求规格说明书, 软件设计说
明书, 源程序做结构分析, 流程图分析, 符
号执行来找错 。 约可找出 30~ 70%的逻辑设
计错误 。
4.1.4 测试的方法与技术 (续 )
2 动态测试
通过运行软件来检验软件的动态行为和运
行结果的正确性
动态测试的两个基本要素:
? 被测试程序
? 测试数据(测试用例)
4.1.4 测试的方法与技术 (续 )
2 动态测试方法 (续 )
(1)选取定义域有效值,或定义域外无效
值
(2)对已选取值决定预期的结果
(3)用选取值执行程序
(4)执行结果
与 (2)结果相比,和程序不符合有错
4.1.4 测试的方法与技术 (续 )
1) 模块测试
– 又称单元测试,在软件编码阶段进行,确认模块
作为单元能够正常运行
2) 集成测试 /联合测试
– 把经过测试的单元按一定顺序组装成为系统,进
行测试,又称接口测试
3) 系统测试
– 将软件系统作为单一实体,在用户积极参与下以
实际数据测试,测试的目的是验证系统能否达到
SRS的要求,因此又称验收测试。
4.1.5 测试步骤
3) 系统测试 (续 )
– ?测试:由一个用户 在开发环境下模拟 实
际操作环境运行程序系统
? 目的是评价软件产品的功能、可用性、可靠
性、性能和支持,系统的界面的特色。
? 方法是由开发者在场记录系统出错情况及使
用中存在的问题。
4.1.5 测试步骤 (续 )
3) 系统测试 (续 )
– ?测试:由系统一个或多个用户 在实际操作
环境中 运行系统
? 目的是评价系统的可支持性,包括文档的完整性、
用户培训和支持、使用系统的能力和满意程度。
? 方法是开发者不在测试现场,由用户记录的问题
可能是系统存在的错误,也可能是用户的主观认
定。
4.1.5 测试步骤 (续 )
白盒法
黑盒法
4.2 测试的基本方法
1) 黑盒测试 (又称功能测试,数据驱动测试,
基于规格说明书的测试 )
将被测试程序对象看作黑盒子,不考虑
其内部程序结构与处理过程,仅仅对于程序
接口进行测试。即检查适当的输入是否能够
产生适当的输出。
一 两种类型的测试
2) 白盒测试 (又称结构测试,玻璃盒测试,基
于覆盖的测试 )
分析程序结构与过程执行路径,按照程
序内部的逻辑 结构设计测试用例,检验程序
的每条通路是否按预期正常进行,力求提高
测试覆盖率 。
一 两种类型的测试 (续 )
3) 黑盒测试与白盒测试比较
黑盒测试是从用户观点,按规格说明书
要求的输入数据与输出数据的对应关系设
计测试用例,是根据程序 外部特征 进行测
试。
白盒测试是根据程序 内部逻辑结构 进行
测试。
一 两种类型的测试 (续 )
4) 彻底的黑盒法或者白盒法 (穷举测试 )
例,输入 三条边长 黑盒测试
可采用的测试用例数
(设字长 16位 )
执行时间, 设测试一次需 1ms
共需一万年
=2 ?2 ? 2 ≈ 3 ?1016 16 16 14
一 两种类型的测试 (续 )
4) 穷举测试 (续 ) 白盒测试
例,
含 4个分支,循环次数
≤ 20,从 A到 B的可能
路径
执行时间, 设测试一次需 2ms
穷举测试需 5亿年,
=5 +5 +..+5 +5
≈10
201 2 19
14
A
B
一 两种类型的测试 (续 )
不论黑盒还是白盒测试都 不能进
行穷尽测试,所以软件测试不可能发
现程序中存在的所有错误,因此需精
心设计测试方案,力争尽可能少的次
数,测出尽可能多的错误,
一 两种类型的测试 (续 )
二 白盒法
基于白盒法的测试思想:
分析被测程序的逻辑结构,选择逻辑执行 路径子集 设计
测试方案。
选择路径子集的覆盖标准:
语句覆盖(点覆盖)
判定覆盖
条件覆盖
判定 /条件覆盖
条件组合覆盖
路径覆盖
点覆盖
边覆盖
例,一个被测程序模块的流程图如右图:
其程序为:
int samp (int a,int b,int x)
{
int y;
if (a>1) && (b=0)
x=x/a;
if (a=2) || (x>1)
x=x+1;
y=x;
return(y);
}
二 白盒法
X=X/A
A>1 and B=0
A=2 or X>1
X=X+1
Y
Y
N
a
c
N
e
b
开始
返回
d
1 语句覆盖(点覆盖)
– 执行足够多的测试用例,使得被测程序中每个可执
行语句至少被执行一次。
– 上例中只需设计一个测试用例,
输入数据,A=2,B=0,X=4
即达到了语句覆盖;
– 语句覆盖是最弱的覆盖标准。
– 将程序模块抽象为程序图,语
句覆盖又被称为点覆盖。
X=X/A
A>1 and B=0
A=2 or X>1
X=X+1
Y
Y
N
a
c
N
e
b
开始
返回
d
二 白盒法 (续 )
2 判定覆盖(边覆盖)
– 执行足够多的测试用例,使得被测程序中每个语句至
少被执行一次,且每个判断的真假
分支至少执行一次。
– 上 例中可设计两组测试用例,
?A=3,B=0, X=3 可覆盖 c,d分支
?A=2,B=1, X=1 可覆盖 b,e分支
两组测试用例可覆盖所有判定
的真假分支
– 判定覆盖仍是弱的覆盖标准。
– 将程序模块抽象为程序图,判
定覆盖又被称为边覆盖。
X=X/A
A>1 and B=0
A=2 or X>1
X=X+1
Y
Y
N
a
c
N
e
b
开始
返回
d
二 白盒法 (续 )
3 条件覆盖
– 执行足够多的测试用例,使得被测程
序中 每个判定的每个条件的可能值 至
少执行一次。
二 白盒法 (续 )
3 条件覆盖 (续 )
– 上例中,
第一判定表达式,A>1 and B=0
设 条件 A>1 取真 记为 T1
假 T1
条件 B=0 取真 记为 T2
假 T2
第二判定表达式,A=2 or X>1
设 条件 A=2 取真 记为 T3
假 T3
条件 X>1 取真 记为 T4
假 T4
二 白盒法 (续 )
3 条件覆盖 (续 )
– 上例中,
测试用例 通过 满足的 覆盖
A B X 路径 条件 分支
1 0 3 abe T1,T2,T3,T4 b,e
2 1 1 abe T1,T2,T3,T4 b,e
两个测试用例覆盖了四个条件八种可能
取值。
– 未覆盖 c,d分支,不满足判定覆盖的
要求。
条件覆盖不一定包含判定覆盖
判定覆盖也不一定包含条件覆盖
X=X/A
A>1 and B=0
A=2 or X>1
X=X+1
Y
Y
N
a
c
N
e
b
开始
返回
d
满足条件, T1,T1; T2,T2
T3,T3; T4,T4
二 白盒法 (续 )
4 判定 /条件覆盖
– 执行足够多的测试用例,使得被测程序中的
判定的每个条件的所有可能取值至少执行一
次,同时每个判定本身的所有可能判定结果
至少执行一次。
– 是判定覆盖与条件覆盖的综合,但不能保证
检查出逻辑表达式的全部错误。
对于上例中 A>1时检查 B=0,而 A<=1时,B<>0
却不去验证了。
二 白盒法 (续 )
4 判定 /条件覆盖 (续 )
– 上例中,
测试用例 通过 满足的 覆盖
A B X 路径 条件 分支
2 0 4 ace T1,T2,T3,T4 c,e
2 1 1 abd T1,T2,T3,T4 b,d
两个测试用例能同时满足判定、条件覆
盖。
X=X/A
A>1 and B=0
A=2 or X>1
X=X+1
Y
Y
N
a
c
N
e
b
开始
返回
d
满足条件, T1,T1; T2,T2
T3,T3; T4,T4
二 白盒法 (续 )
5 条件组合覆盖
– 执行足够多的测试用例,使得被测程序中 所
有可能的条件取值组合至少执行一次 。
– 上例的模块中条件共有 8种可能的条件组合,
(1)A>1,B=0 (2) A>1,B<>0 (3) A<=1,B=0 (4) A<=1,B<>0
(5) A=2,X>1 (6) A=2,X<=1 (7) A<>2,X>1 (8) A<>2,X<=1
– 满足条件组合覆盖必满足判定、条件、判定 /
条件覆盖,但仍不能遍历每条路径。
二 白盒法 (续 )
5 条件组合覆盖 (续 )
– 上例中,测试用例 通过 满足的 覆盖
A B X 路径 条件 分支
2 0 3 ace T1,T2,T3,T4 c,e
2 1 1 abe T1,T2,T3,T4 b,e
0 0 1 abe T1,T2,T3,T4 b,e
0 1 0 abd T1,T2,T3,T4 b,d
2 0 2 ace T1,T2,T3,T4 c,e
2 1 1 abe T1,T2,T3,T4 b,e
3 2 2 abe T1,T2,T3,T4 b,e
3 3 1 abd T1,T2,T3,T4 b,d
二 白盒法 (续 )
5 条件组合覆盖 (续 )
– 另一组测试用例:
测试用例 通过 满足的 覆盖
A B X 路径 条件 分支
2 0 4 ace T1,T2,T3,T4 c,e
2 1 1 abe T1,T2,T3,T4 b,e
1 0 2 abd T1,T2,T3,T4 b,d
1 1 1 abd T1,T2,T3,T4 b,d
二 白盒法 (续 )
6 路径覆盖
– 执行足够多的测试用例,使得被测程序中每条
可能路径至少通过一次。
– 上例中设计测试用例,
测试用例 通过 满足的 覆盖
A B X 路径 条件 分支
1 1 1 abd T1,T2,T3,T4 b,d
1 1 2 abe T1,T2,T3,T4 b,e
3 0 1 acd T1,T2,T3,T4 c,d
2 0 4 ace T1,T2,T3,T4 c,e
– 满足路径覆盖保证了每个可能的路径至少通过
一次,与条件组合覆盖结合使用可能取得较好
效果。
二 白盒法 (续 )
7 点覆盖
测试路径至少经过程序控制流图
中每个节点一次
执行路径,
abdghi和 aceghi
满足点覆盖
S
1
2 3
4
5
6
E
a
cb
d
f
eg
hi
二 白盒法 (续 )
8 边覆盖
测试路径至少经过程序控制流图
中每条边一次,
执行路径,
abdfi和 aceghi
满足边覆盖
― 边覆盖与路径覆盖不同
S
1
2 3
4
5
6
E
a
cb
d
f
eg
hi
二 白盒法 (续 )
1 等价分类法
等价分类法的基本思想是将所有可能的输入数据 (有
效的和无效的 )划分成若干个等价的子集 (称为等价类 ),
使得每个子集中的一个典型值在测试中的作用与这一
子集中所有其它值的作用相同, 可从每个子集中选取
一组数据来测试程序。
等价类划分有两种情况:
– 合理等价类:测试模块是否实现了规定的功能和
性能
– 不合理等价类:测试模块是否能够拒绝无效输入,
被测试对象在运行条件错误时的可靠性如何
三 黑盒法
1 等价分类法 (续 )
划分等价类的规则
(1)如果输入条件代表一个范围,可定义一个有
效等价类和两个无效等价类。
例 输入条件规定:项数可从 1到 999
三 黑盒法 (续 )
1 999
有效
等价类
无效
等价类
> 999
无效
等价类
< 1
1 等价分类法 (续 )
划分等价类的规则
(2)如果输入条件代表集合的某个元素,则可定
义一个有效等价类和一个无效等价类。
(3)如规定了输入数据的一组值,且程序对不同
输入值做不同处理,则每个允许的输入值是
一个有效等价类,并有一个无效等价类 (所有
不允许的输入值的集合 )。
三 黑盒法 (续 )
1 等价分类法 (续 )
划分等价类的规则
(4)如果规定了输入条件必须遵守的规则,则可
划分一个有效等价类 (符合规则 )和若干个无
效等价类 (从不同角度违反规则 )。
*(5)如果规定了输入数据是整型,则可划分出正
整数、零、负整数三个有效等价类。
(6)如已划分的等价类各元素在程序中的处理方
式不同, 则应将此等价类进一步划分成更小
的等价类 。
三 黑盒法 (续 )
1 等价分类法 (续 )
用等价类划分法设计测试用例
例 1:某个待测程序的输入参数, 职称, 的输入
值可以是助教、讲师、副教授、教授四种。
则,可以设计 一个 有效等价类(取四个职称中的
一个值);一个无效等价类(四个职称之外
的任意值)。
三 黑盒法 (续 )
1 等价分类法 (续 )
用等价类划分法设计测试用例
例 1(续 ):如果程序对不同职称有不同的处理方
案,如, 住房分配, 程序。
则,应设计 四个 有效等价类(四个职称每个值为
一类);一个无效等价类(四个职称之外的
任意值)。 (根据规则 (6))
三 黑盒法 (续 )
1 等价分类法 (续 )
用等价类划分法设计测试用例步骤:
(1)形成等价类表,每一等价类规定一个唯一的编
号;
(2)设计一测试用例, 使其 尽可能多地覆盖 尚未覆
盖的有效等价类, 重复这一步骤, 直到所有
有效等价类均被测试用例所覆盖;
(3)设计一新测试用例, 使其 只覆盖一个 无效等价
类, 重复这一步骤直到所有无效等价类均被
覆盖;
三 黑盒法 (续 )
1 等价分类法 (续 )
用等价类划分法设计测试用例 (例 1):
例,某城市电话号码由三部分组成
地区码:空白或 3位数字
前 缀:非 ‘ 0’ 或 ‘ 1’ 开
头的三位数字
后 缀,4位数字
三 黑盒法 (续 )
输入条件 有效等价类 无效等价类
地区码 空白 (1)3位数字 (2)
有非数字字符 (5)
少于 3位数字 (6)
多于 3位数字 (7)
前 缀 从 200到 999之间的 3位数字 (3)
有非数字字符 (8)
起始位为 ‘ 0’ (9)
起始位为 ‘ 1’ (10)
少于 3位数字 (11)
多于 3位数字 (12)
后 缀
有非数字字符 (13)
少于 4位数字 (14)
多于 4位数字 (15)
4位数字 (4)
第一步:电话号码等价类划分
测试数据 测试范围 期望结果
( )276-2345
(635)805-9321
等价类 (1)(3)(4)
等价类 (2)(3)(4)
有
效
有
效
第二步:确定测试用例
对表中 4个有效等价类可公用
下面两个测试用例:
对表中 11个无效等价类应选择 11个测试用例,
测试数据 测试范围 期望结果
(20A)123-4567
(33 )234-5678
(7777)345-6789
.
.
.
无效等价类 (5)
无效等价类 (6)
无效等价类 (7)
.
.
,(15)
无效
无效
无效
.
.
.
本例的 15个等价类至少需要 13个测试用例
第二步:确定测试用例
1 等价分类法 (续 )
用等价类划分法设计测试用例 (例 2):
例,把一个六位数字字符串转化为整数
三 黑盒法 (续 )
边界
分析法
有效输入的等价类 无效输入的等价类
1) 1~6个数字串(最高位非 0) 4)空字符串
2)最高位为 0的数字串 5)不足 6位时,字符串左
边填充不是 0或空格
3)最高位数字左邻是负号的 6)最高位数字右边包含字
数字串 符和空格
7)负号与最高位数字间有
空格
8)在最小负整数与 0之间的负 11)比 -32767还小的负整数
整数
9) 0 12)比 32768还大的正整数
10)在 0和最大正整数之间的正
整数
第一步:等价类划分
根据以上等价类,设计测试方案:
1) 1~6个数字串,输出合法的正整数
2)最高位为 0的数字串,输出合法正整数
3)最高位数字时 0,输出也为 0
4)最高位数字左邻是负号的数字串,输出合法负整数
5)太小的负整数,‘ -47561’,无效输入
6)太大的正整数,‘ 132767’,无效输入
7)空字符串,‘ ’,没有数字,无效输入
8)字符串左部非 0也不是空格,‘ *****1’,填充错误
9)最高位数字后面有空格,‘ 1 2’,无效输入
10)最高位数字后有其它字符,‘ 1**2’,无效输入
11)负号和最高位数字间有空格,‘ - 12’,无效输入
第二步:确定测试用例
2 边界值分析法
边界值分析法与等价类划分法区别
(1)边界值分析不是从某等价类中随便挑一个作
为代表,而是使这个等价类的每个边界都要
作为测试条件。
(2)边界值分析不仅考虑
输入条件,还要考虑输
出空间产生的测试情况
三 黑盒法 (续 )
被测试
子 域
测试内点
测试外点
2 边界值分析法 (续 )
设计测试用例原则,
(1)如输入条件代表以 a和 b为边界的范围,测试
用例应包含 a,b、略大于 a和略小于 b的值。
(2)如输入条件代表一组值,测试用例应当执行
其中的最大值和最小值,还应测试略大于最
大值和略小于最小值的值。
三 黑盒法 (续 )
边界值分析设计测试用例原则
例:邮件收费规定 1~ 5 kg收费 2元
则应设计测试用例,
0.9,1,5,5.1 kg
或 0.99,1,5,5.01 kg。
边界值分析设计测试用例原则
例:一个输入文件可有 1~ 255个记录
则可分别设计有,
1个,255个,0个,256个记录的
输入文件
2 边界值分析法 (续 )
设计测试用例原则,
(3)如规格说明中提出输入输出的有序集(顺序
文件、有序表等 ),取有序集的第一个和最后
一个元素做测试用例。
(4)如程序数据结构有预定的边界,应测试其边
界的数据项。
(5)如输出条件规定了取值范围,取边界上下浮
动值做测试用例。
三 黑盒法 (续 )
边界值分析设计测试用例原则
例:程序中定义一数组,其元素下标的
下界是 0,上界是 100,则应选择达到
这个数组下标边界的值,如 0与 100作
为测试用例。
例:
每日保险扣除额 (输出项 )在 0~ 1165.25 元,
则应设计测试用例使其恰好产生 0元和
1165.25元的结果,此外还应考虑设计结果
为负值或 >1165.25元的测试用例。
(如, -0.01元和 1165.26元 )
由于输入值的边界不与输出值的边界相对
应,所以要检查输出值的边界及产生超出输
出值值域的结果不一定可能。
边界值分析设计测试用例原则
2 边界值分析法 (续 )
上例 2中,应补充下述测试方案:
12)使输出刚好等于 -32768,输出 -32768
13)使输出刚好等于 32767,输出 32767
改 5)使输出刚好小于 -32768,‘ -32769’,无效输
入
改 6)使输出刚好大于 32767,‘ 32768’,无效输
入
三 黑盒法 (续 )
黑盒法
3 错误推测(猜错法)
不同类型的程序通常具有若干特殊的易出错
的情况,这些情况未必可以归结为等价类或
者边界情况。有经验的测试人员往往根据经
验与直觉,例举出程序中可能有的错误和容
易发生错误的特殊情况,根据它们选择测试
用例,实行高效的测试。
三 黑盒法 (续 )
4 因果图法
因果图适合于描述对于多种输入条件
的组合,相应产生多个动作的形式来
设计测试用例。因果图方法最终生成
的是判定表。
三 黑盒法 (续 )
4 因果图法 (续 )
用因果图法生成测试用例的步骤:
(1)分析哪些是原因,哪些是结果,给每个原
因、结果一个标识。
(2)分析语义,找出原因与结果、原因与原因
之间的关系,画出因果图。
(3)在因果图上标明约束或限制条件。
(4)把因果图转化为判定表 。
(5)根据判定表每一列设计测试用例。
三 黑盒法 (续 )
某电力公司有 A,B,C,D四类收费标准,
并规定:
居民用电 <100度 /月 按 A类收费
≥ 100度 /月按 B类收费
动力用电 <10000度 /月,非高峰,B类收费
≥ 10000度 /月,非高峰,C类收费
<10000度 /月,高峰,C类收费
≥ 10000度 /月,高峰,D类收费
因果图方法实例 1
列出输入条件和输出动作并编号:
输入条件 (原因 ) 输出动作 (结果 )
1-居民用电 A- A类计费
2-动力用电 B- B类计费
3- <100度 /月 C- C类计费
4- <10000度 /月 D- D类计费
5-高峰用电
因果图方法实例 1(续 )
组合条件
条件
原因
动作
结果
A
B
C
1
2
3
1 2 3 4 5 6
1
0
1
1
0
0
0
1 1
0 0 0
1 1
0 0 0 0
1 0 0 0
0 1 1 0
4 1 0 1 0
5 0 0 1 1
D 0 0 0 1
1 0
0 1
0 0
0 0
测试用例
把因果图转换为判定表:
因果图方法实例 1(续 )
1列 居民电,90度 /月 A
2列 居民电,110度 /月 B
3列 动力电,非高峰,8000度 /月 B
4列 动力电,非高峰,1.2万度 /月 C
5列 动力电,高峰,0.9万度 /月 C
6列 动力电,高峰,1.1万度 /月 D
条件 测试用例 预期结果
组合 (输入数据 ) (输出动作 )
为判定表每一列设计一个测试用例,
因果图方法实例 1(续 )
某软件规格说明中规定:
输入两个字符,
当第一个字符是 A或 B,且第二个字符是数
字时修改文件。
若第一个字符不是 A,也不是 B 时,输出错
误信息 S,若第二个字符不是数字时,输出错
误信息 P。
因果图方法实例 2
原 因 是:
1-第 1个字符是 A
2-第 1个字符是 B
3-第 2个字符是数字。
结 果 是:
11-修改文件。
12-输出错误信息 S。
13-输出错误信息 P。
约束 E
1
2
(1,2不能同时成立 )
分析规格说明并编号:
因果图方法实例 2(续 )
组合条件
条件
原因
动作
结果
11
12
13
1
2
3
1 2 3 4 5 6 7 8
1
1
1
1
1
0
1
0 0
1 0 0 0 0
1 1 0 0
1 0 1 0 1 0
1 0 1 0 0 0
0 0 0 0 1 1
0 1 0 1 0 1
测试用例 A3 A* B8 BB X6 CC
因果图转换的判定表:
因果图方法实例 2(续 )
因果图转换的判定表分析:
判定表所有条件组合数,23 =8。 第 1,2列条件组合
不可能出现,针对第 3~ 8列设计测试用例如下,
条件 测试用例 预期结果
组合 (输入数据 ) (输出动作 )
3列 A3 修改文件
4列 A*
5列 B8
6列 BB 信息 P
7列 X6 信息 S
8列 CC 信息 S,P
因果图方法实例 2(续 )
黑盒法为主、白盒法为辅,具体如下:
任何情况下都应该使用边界值分析设计测试用例;
必要时采用等价分类法补充用例;
必要时再用错误推测法补充用例;
对照程序逻辑,检查设计用例的逻辑覆盖标准。
根据程序可靠性要求,补充用例使之达到规定的
覆盖标准。
四 综合测试策略
例:程序 TRIANGLE读入三个整数值,代表三条边长,程序
根据这三个值判断三角形属于不等边、等腰或等边三角
形中哪一种。
– 综合使用边界值分析、等价划分、错误推测技术可设
计 9种测试数据,
测试功能 测试数据
1.等边 10,10,10
2.等腰 10,10,17 10,17,10 17,10,10
3.不等边 8,10,12 8,12,10 10,12,8
4.非三角形 10,10,21 10,21,10 21,10,10
5.退化情况 10,5,5 5,10,5 5,5,10
6.零数据 0,0,0 0,0,17 0,10,12
7.负数据 -10,-10,-10 -10,-10,17 -8,10,17
8.遗漏数据 --,--,-- 10,--,-- 8,10,--
9.无效输入 a,b,c =,+,* 8,10,a
综合测试策略实例
– 测试数据覆盖程度检验
编号 测试数据 覆盖的边
1,10,10,10 1,2,3,4,5,6,7,8
2a,10,10,17 1,2,3,4,5,15,19,20,8
2b,10,17,10 1,2,3,4,14,18,19,20,8
2c,17,10,10 1,2,3,4,14,16,17,19,20,8
3a,8,10,12 1,2,3,4,14,16,21,22,8
3b,8,12,10 1,2,3,4,14,16,21,22,8
3c,10,12,8 1,2,3,4,14,16,21,22,8
4a,10,10,21 1,2,3,11,12,13,8
4b,10,21,10 1,2,10,12,13,8
4c,21,10,10 1,9,12,13,8
– 以上测试数据已满足路径覆盖,因此
不需再用白盒法设计测试数据。 图 TRIANGLE对应的程序图
a
d
e
f
b
c
g
k
h
1
2
3
4
5
6
7
8
i
j
l
9 10
11
12
13
m
no
p
14
15
16
1718
19
20
21
22
23
综合测试策略实例 (续 )
4.3 模块测试
一、模块测试内容
模块接口
局部数据结构
重要的执行路径
出错处理问题
影响上述各方面的边界条件
二、模块测试过程
人工测试 (代码审查 )
计算机测试
三、模块测试方法 (黑盒法、白盒法)
被测试模块
桩模块 k桩模块 1
驱动模块
……
测试用例 测试结果
图 模块测试的环境
4.4 集成测试
模块集成测试策略
非渐增式:一次性装配得到目标系统
渐增式:按照一定顺序,将模块逐个安装并
调试
– 自顶向下的结合
– 自底向上的结合
–,三明治”方法
4.4 集成测试 (续 )
1 集成测试方法
在集成测试过程中,要为模块设计一个
驱动模块和若干个桩模块。
驱动模块
桩模块
4.4 集成测试 (续 )
驱动模块
驱动模块是模拟待测模块 X的调用模
块,其作用是将测试数据传送给待测模
块 X,并显示待测模块 X的结果。
A
X Y … …
… …… …
待测模块
X
驱动集成测试:
4.4 集成测试 (续 )
桩模块
桩模块的作用是模拟待测模块 X的下
层模块 E。其作用是接受待测模块 X的控
制并模拟下层模块 E的功能。
A
X Y … …
… ……
待测模块
X
桩 1
集成测试:
E
4.4 集成测试 (续 )
非渐增式:
先分别测试 A,B,C,D、
E,F,然后将六个模块连
接起来再测试。
渐增式 (自底向上 ):
先并行测试 E,C,F,然
后测试 B,D,最后测试 A。
2 渐增式和非渐增式的比较
A
B C
E
D
F
4.4 集成测试 (续 )
2 渐增式和非渐增式的比较 (续 )
非渐增式需要较多的人工编写桩模块和驱动模
块,渐增式较少
渐增式可以较早地发现模块界面之间的错误
渐增式有利于排错
渐增式比较彻底
渐增式需要较多的机器时间
渐增式的测试工作无法并行
结论:总的来说,渐增式比较优越
4.4 集成测试 (续 )
3 渐增式测试
由顶向下
自底向上
两种方式结合 (―三明治, 方式 )
决定测试顺序的基本原则:
–尽早测试关键的模块。 所谓关键的模块是指
较复杂、较可能出错、或含有新的算法的模块。
–尽早测试包含输入输出操作的模块。 这样向
程序送入测试数据、以及检察输出结果就方便
了。
4.4 集成测试 (续 )
3 渐增式测试 (续 )
由顶向下和自底向上的比较
–由顶向下可以较早地形成整个系统的总
体框架,但有模块介入问题 。使测试较
为困难。
–自底向上没有模块介入问题,但总体框
架要到最后一个模块(顶层模块)测试
完才形成。
4.4 集成测试 (续 )
3 渐增式测试 (续 )
A
DCB
IH
J
GFE
LK
右图中 J,I是包含输入输出的模块,
D,F是关键的模块。
则测试顺序可以取:
(自顶向下 )ABCDEFGHIJKL;
ABEFJCGKDHLI;
ADHIJKLCGBFJE;
ABFJDICGEKHL;
(由下而上 ) KLHID以及 JF->E,B->…
(三明治式 )JFBADI->… …
4.5 确认验收测试
目的是向用户表明软件系统的有效性,
确认测试技术以黑盒法为主,以验证软
件是否满足 SRS规定的需求。
SRS (Software Requirement
Specification),软件需求说明书
4.5 确认验收测试
常用测试类型,
功能测试
容量测试 大数据量
紧张度测试 峰值
使用性测试 如,用户界面是否合理?风
格是否统一? 操作是否方便?出错信息是
否简明易用 … 等
安全性测试
4.5 确认验收测试
常用测试类型 (续 ),
可靠性测试
恢复测试
文档测试 确保用户文档的精确性和清晰
性,确保叙述正确无误
工序测试 与人工工序的配合情况
4.6 软件调试
调试的任务:
– 测试阶段发现的是故障的表现,可以成为外部错误。对于
发现的错误必须进行诊断,找到其发生的原因和位置,这
就是调试的任务。
– 测试工作由他人(专业测试小组)进行,而调试要求对程
序结构和算法十分熟悉,因此最好由程序设计者本人完成。
常用调试技术
– 设置程序运行断点,插入打印语句
– 使用自动调试工具
常用调试策略
– 试探法
– 回溯法
– 对分查找
– 归纳法
4.7 测试过程文档
测试计划:
1)每个测试阶段的目的
2)每个测试阶段完成的标准
3)时间进度表
4)每个测试阶段的负责人员
5)测试用例库
6)测试所需的工具
7)每个测试阶段所需机时数
4.7 测试过程文档 (续 )
测试过程中的记录内容:
1)发现的错误
2)纠错时对系统作的修改
3)退化测试情况:即修改后的再测试
4)错误原因、类型、比率的分析和统计
思考
软件测试的基本任务是什么?简述软件测试的
方法。
总结软件测试的基本原则。
什么是软件系统的 ?测试和 ?测试,它们各自的
目的和方法有什么特点?
使用白盒法覆盖了被测试程序的所有逻辑执行
路径能够保证程序正确吗?
为什么综合测试策略中首先考虑边界值分析,
而不是等价分类方法?
5 系统试运行与切换
系统切换:新旧系统的交替过程,也就是
旧的管理信息系统逐渐退出,由新的管理
信息系统来代替
系统测试的同时就可进行试运行
切换的方法
—直接法
—并行法
—阶梯法 (分段法 )
老系统 新系统
老系统
新系统 1
新系统 2
新系统 n
老系统
新系统
直接法
阶梯法
并行法
5 系统试运行与切换 (续 )
切换的方法
用户验收
– 系统验收
– 文档验收
– 签署文件
5 系统试运行与切换 (续 )
系统维护
?维护的理由
?维护类型
?维护内容
?维护的实施 ( 人员、财务 )
系统评价
?评价指标体系
?评价方法
6 系统评价和维护
6.1 系统维护
维护的理由:
– 用户的新需求
– 技术更新、硬件问题
– 公司购并或并购
– 政府政策的调节
– 运行环境的变化
维护的类型:
– 正确性维护
– 适应性维护
– 完善性维护
– 预防性维护
6.1 系统维护 (续 )
维护的内容:
–程序维护
–数据文件维护
–代码维护
–机器、设备维护
6.1 系统维护 (续 )
维护的实施:
–保证维护的队伍
–保证维护的经费
–软件维护的成本
6.1 系统维护 (续 )
使用时间
软
件
维
护
成
本
6.2 系统评价
评价贯穿系统建设的全过程,尤其在设
计、实施阶段更为重要。它分析系统的处
理,以确保系统能按期望运行。
系统评价通常涉及:设计中对系统的运行
及收益的要求与系统实际运行情况及收益
进行比较
系统运行后,重新估价设计中的成本、控
制等复杂因素。
评价的问题反馈给建设的各阶段以便重新
处理
系统评价指标体系
从三个角度来考虑评价指标体系,
?从建设、运行维护角度评价的指标
?从用户角度考虑的指标
?从对外部影响考虑的指标
上述三个角度考虑的指标共有 20个,组
成指标体系。
6.2 系统评价 (续 )
系统的评价方法
?多因素加权平均法
一种简单易用的综合评价方法。该方法
把上述 20项指标列成表一所示的最上层,
然后请专家对每个指标按其重要性打一个
权重,权重最高分为 10分,最低分 1分。
再请每个专家分别对被评价系统 20个指标
打分,最高分也是 10分,最低分 1分。
6.2 系统评价 (续 )
系统的评价方法 (续 )
?层次分析法 (AHP)评价方法
五个步骤,
1.建立层次结构模型
2.构造判断矩阵
3.层次单排序及其一致性检验
4.层次总排序
5.层次总排序的一致性检验
6.2 系统评价 (续 )
系统的评价方法 (续 )
?数据包络 (DEA)评价方法
数据包络分析方法 (DEA)的 CCR模型可以看作
是处理具有多个输入 (输入越小越好 )和多个输
出 (输出越大越好 )的多目标决策问题的方法。
它是根据一个关于输入 ---输出的观察值来估计
有效的生产前沿面。具体来说,DEA是使用数学
规划模型比较决策单元之间的相对效率,对决
策单元作出评价。
6.2 系统评价 (续 )
系统的评价方法 (续 )
?数据包络 (DEA)评价方法 (续 )
企业 MIS的评价中,可以根据投资项目的输入
数据和投资后 MIS的输出数据来评价。输入数据
是指投资项目在投资过程中需要耗费的某些量,
例如投入项目资金总额,投入的总专业人数及素
质情况等。输出数据是指建设项目经过一定的输
入后,所产生的表明该管理信息系统活动成效的
某些信息量,根据输入数据和输出数据来评价信
息系统规模效益的优劣,即所谓评价信息系统间
的相对有效性。
6.2 系统评价 (续 )
系统的评价方法 (续 )
?经济效果评价方法
1.直接经济效果
( 1)年收益增长额( P)。
( 2)投资效果系数( E)。
( 3)投资总额( K)。
2.间接经济效果
6.2 系统评价 (续 )
思考
以你身边的某一组织(如学校或学校中
某一部门、企业、公司、事业单位等)为
调查对象,调查该组织实施信息系统的现
状(包括硬件、软件、网络布局、人员水
平、系统对组织在管理方面所起的作用
等)。