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