下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
测试方法和技术第2版第3章
测试的方法Mobile:1第2章回顾缺陷是
质量的对立面缺陷(Bug)是什么验证和确认测试的分类和阶段单元、集成、系统(性能、适用性、兼容性…)、验收测试测试的工作范畴策略、计划、设计、执行、报告、评估…2第3章
测试的方法白盒测试方法黑盒测试方法静态测试和动态测试主动测试和
测试形式化测试方法基于风险的测试模糊测试方法ALAC测试和随机测试方法3方法论和具体方法从方法论看, 体现了一种哲学的思想,例如辩证的方法,在测试中有许多对立 体,如静态测试和动态测试、白盒测试和黑盒测试、自动化测试和手工测试等。测试的方法论来源于 工程的方法论,例面 象的开发方法,就有面 象的测试方法;有敏捷方法,就有和敏捷方法对应的测试方法。4黑盒子和白盒子功能测试
数据驱动测试结构测试
逻辑驱动测试客户需求事件驱动输入输出5静态的和动态的内审员作者列席技术专业记录员用户代表不正式正式互审走读会议运行程序6自动测试和手工测试手工模拟用户操作73.1白盒测试方法语句覆盖判定覆盖条件覆盖判定条件覆盖条件组合覆盖路径覆盖基本路径测试法8白盒测试方法逻辑覆盖:以程序的逻辑结构为基础,分为语句覆盖、判定覆盖、判定-条件覆盖、条件组合覆盖等基本路径测试:在程序控制流程的基础上,分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例。9白盒测试的基本原则白盒测试主要用于单元测试,其基本原则有:保证每个模块中所有独立路径至少被执行一次完成所有逻辑值分别为True和False的条件下的测试在上下边界及可操作范围内运行所有循环,完成循环覆盖测试检查 数据结构以确保其有效性,完成边界条件的测试103.1.1
语句覆盖语句覆盖法的基本思想是设计若干测试用例,运行被测程序,使程序中的每个可执行语句至少被执行一次如果是顺序结构,就是让测试从头执行到尾如果有分支、条件和循环,需要利用下面的方法,执行足够的测试覆盖全部语句11语句覆盖-example12Dim
a,b
As
IntegerDim
c
As
DoubleIF
(a>0
AND
b>0)
THENc=c/aEnd
IfIF
(a>1
OR
c>1)
THEN7
c=c+1End
Ifc=b+c语句覆盖-continueda>0
and
b>0c=c/aa>1
orc>1c=c+1c=b+cTTFFMKNJPTTFF条件M={a>0
and
b>0}条件N={a>1
or
c>1}简化13语句覆盖-continued2MKNJPFF条件M={a>0
and
b>0}条件N={a>1
or
c>1}1T23T45程序模块有4条不同的路径:M=T
AND
N=T:P1:1-2-4M=T
AND
N=F:P2:1-2-5M=F
AND
N=T:P3:1-3-4M=F
AND
N=F:P4:1-3-5符合语句覆盖的路径为:P1根据P1设计测试用例:a=2,b=1,c=6:a=2,b=1,c=514语句覆盖-continued3使用语句覆盖法设计测试用例时能够使得所有的执行语句都能被测试,但是不能准确的判断运算中的逻辑关系错误。MKNJPFF条件
M={a>0
orb>0}条件N={a>1
or
c>1}1T23T45语句覆盖的路径为:P1输入测试用例:a=2,b=1,c=6:a=2,b=1,c=5153.1.2
判定覆盖判定覆盖法的基本思想是设计若干用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满足。一个判定往往代表着程序的一个分支,所以判定覆盖也被称为分支覆盖。3.1.2
判定覆盖测试用例取值条件判定条件通过路径输入:{a=2,b=1,c=6}输出:{a=2,b=1,c=5}M:a>0,b>0N:a>1,c>1M=TN=TP1(1-2-4)输入:{a=-2,b=1,c=-6}输出:{a=-2,b=1,c=-5}M:a<=0,b>0N:a<=1,c<=1M=FN=FP4(1-3-5)MNKJPT17TFF条件M={a>0
and
b>0}条件N={a>1
or
c>1}12345思考:如果把条件N改为:a>1
and
c>1呢?如果把条件N改为:a>1
or
c<1呢?判定测试-examplePROGRAM som
(
maxint,
N
:
INT
)INT result
:=
0
; i
:=0
;3IF
N
<04THEN
N
:=
-
N
;5WHILE
(
i
<
N
)
AND
(
result
<=
maxint
)6:= i
+1
;7result
:= result
+
i
;8OD;9IF
result
<=
maxint10THEN
OUTPUT
(
result
)11ELSE
OUTPUT(“toolarge”)12END.1819判定测试-continuedi:=i+1;result:=result+i;(i<N)
and(result<=maxint)result<=maxintN
:=
-N;output(too
large);output(result);exitstartYNNYNYN
<
0测试覆盖全部语句:maxint
N10
-10
-1但没有覆盖所有分支;用例采取:maxint
N10
30
-1则覆盖全部分支(N>=0)result=0
i=0203.1.3
条件覆盖条件覆盖的基本思想是设计若干测试用例,执行被测程序以后,要使每个判断中每个条件的可能取值至少满足一次。(i<N)
and
(result<=maxint)TrueFalsei<Nresult<=maxintTrueFalse条件测试目标:保证测试到每个逻辑条件取值为true
和false简单条件:(a
rel-op
b)where
rel-op={<,≤,=,≠,≥,>}(和NOT连用),即a≤b;NOT(a≤b)组合条件:由AND,
OR连接的多个简单条件,即(a>b)
AND
(c<d)关系表达式: (E1
rel-op
E2)
其中
E1
和
E2
是算术表达式,即((a*b+c)>(a+b+c))测试发现的错误:布尔操作符
–
关系操作符布尔变量
–
算术表达式布尔括弧21条件测试
(2)域测试表达式
E1
rel-op
E2,
测试
E1
≧≦
=
<
> ≠
E2如果E1
和E2
正确,发现rel-op的错误发现E1
或E2的错误,全面分析它们的不同如果某表达式含有n个变量,则需要进行2n
测试分支测试组合条件C,
测试C为
true和
false分支、以及每个条件例如
C
=(a>b)
AND
(c<d)
测试:a>b
TRUE,
FALSEc<d
TRUE,
FALSEC
TRUE,
FALSE True
AND
TrueT.
AndF.,
F.
And
T.,F.
AndF.2223条件测试的示例1(i
=result
=0
):
i<Ntrueresult<=maxintfalsemaxint
N-1
11
0
falsetrue测试了所有条件但没有覆盖判定(decision)条件覆盖不等于判定覆盖i:=i+1;result:=result+i;(i<N)
and(result<=maxint)N
<
0N
:=
-N;output(result);output(too
large);exitstartYNNYN
result<=maxintY24测试用例具体取值条件取值条件通过路径输入:{a=2,b=-1,c=-2}输出:{a=2,b=-1,c=-2}M:a>0,b<=0N:a>1,c<=1T1,F2T3,F4P3(1-3-4)输入:{a=-1,b=2,c=3}输出:{a=-1,b=2,c=-6}M:a<=0,b>0N:a<=1,c>1F1,T2F3,T4P3(1-3-4)MNKJPTTFF条件M={a>0
and
b>0}条件N={a>1
or
c>1}12345条件测试的示例2TRUEFALSEa>0T1F1b>0T2F2a>1T3F3c>1T4F4MN条件覆盖不能保证所有的判定(分支)覆盖被测试253.1.4
判定条件覆盖判定-条件覆盖是判定和条件覆盖设计方法的交集,即设计足够的测试用例,使得判断条件中的所有条件可能取值至少执行一次,同时,所有判断的可能结果至少执行一次测试用例取值条件具体取值条件判定条件通过路径输入:a=2,b=1,c=6输出:a=2,b=1,c=5T1,T2,T3,T4a>0,b>0,a>1,c>1M=TN=TP1(1-2-4)输入:a=-1,b=-2,c=-3输出:a=-1,b=-2,c=-5F1,F2,F3,F4a<=0,
b<=0,
M=Fa<=1,
c<=1
N=FP4(1-3-5)b>0?3.1.5
条件组合测试条件组合覆盖的基本思想是设计足够的测试用例,使得判断中每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次。它与条件覆盖的差别是它不是简单地要求每个条件都出现“真”与“假”两种结果,求让这些结果的所有可能组合都至少出现一次26示例(1)组合覆盖条件取值判定条件取值判定-条件组合1T1,T2M=.T.a>0,b>0,M为真2T1,F2M=.F.a>0,b<=0,M为假3F1,T2M=.F.a<=0,b>0,M为假4F1,F2M=.F.a<=0,b<=0,M为假5T3,T4N=.T.a>1,c>1,N为真6T3,F4N=.T.a>1,c<=1,N为真7F3,T4N=.T.a<=1,c>1,N为真8F3,F4N=.F.a<=1,c<=1,N为假27示例(2)测试用例覆盖条件覆盖路径覆盖组合输入:a=2,b=1,c=6输出:a=2,b=1,c=5T1,T2,T3,T4P1(1-2-4)1,5输入:a=2,b=-1,c=-2输出:a=2,b=-1,c=-2T1,F2,T3,F4P3(1-3-4)2,6输入:a=-1,b=2,c=3输出:a=-1,b=2,c=6F1,T2,F3,T4P3(1-3-4)3,7输入:a=-1,b=-2,c=-3输出:a=-1,b=-2,c=-5F1,F2,F3,F4P4(1-3-5)4,8覆盖了所有组合,但覆盖路径有限,1-2-5
没被覆盖283.1.6
路径测试顾名思义,路径覆盖就是设计所有的测试用例,来覆盖程序中的所有可能的执行路径。测试用例覆盖路径覆盖条件覆盖组合输入:a=2,b=1,c=6输出:a=2,b=1,c=5P1(1-2-4)T1,T2,T3,T41,5输入:a=1,b=1,c=-3输出:a=1,b=1,c=-2P2(1-2-5)T1,T2,F3,F41,8输入:a=2,b=-1,c=-2输出:a=2,b=-1,c=-2P3(1-3-4)T1,F2,T3,F42,6输入:a=-1,b=2,c=3输出:a=-1,b=2,c=6P3(1-3-4)F1,T2,F3,T43,7输入:a=-1,b=-2,c=-3输出:a=-1,b=-2,c=-5P4(1-3-5)F1,F2,F3,F44,8293.1.6
路径测试
实际问题中,一个不太复杂的程序,其路径都是一个庞大的数字,要在测试中覆盖这样多的路径是无法实现的。所以,路径覆盖测试是相对的,要尽可能把路径数压缩到一个可承受范围。对于一个简短的程序段即使做到了路径覆盖测试,也不能保证源代码不存在其他问题了。其他的测试也必要的,它们之间是相辅相成的。
没有一个测试方法能够找尽所有缺陷,只能说是尽可能多地查找缺陷。303.1.7
基本路径测试依据代码绘制流程图确定流程图的圈复杂度(cyclomatic
complexity
)确定线性独立路径的基本集合(basis
set)设计测试用例覆盖每条基本路径31示例1–源代码32Procedure:
process
recordsDo
While
records
remainRead
record;If
record
field
1
=
0
Thenstore
in
buffer;increment
counter;Else
If
record
field
2
=
0
Thenreset
counter;Else
store
in
file;End
IfEnd
IfEnd
DoEnd示例1–流程图36V(G)
=433基本路径测试:流程图简化12,387694,5101134流程图的圈复杂度V(G)
V(G)=区域数量(由节点、连线包围的区域,包括图形外部区域)
V(G)=边界数目
-节点数目
+2
V(G)=判段节点数目
+1圈复杂度(Cyclomaticcomplexity):代码逻辑复杂度的度量,提供了被测代码的路径数量。复杂度越高,出错的概率越大modules35流程图复杂度-示例1V(G)=42,33678694,510111Region
1Region
2Region
3Region
4确定线性独立的路径集合37独立路径:至少引入一系列新的处理语句或条件的任何路径
基本集:由独立路径构成的集合由基本集导出的测试用例,保证每行代码语句至少被执行一次;根据独立路径组成基本路径集合,并由此得到能够覆盖所有程序语句的测试用例。基本集合不一定唯一Path1:
1-2-3-6-7-9-10-1-11示例1:基本路径测试用例Path2:
1-2-3-6-8-9-10-1-11Path3:
1-2-3-4-5-10-1-11Path4:
1-113638示例2–源代码39Dim
a,b
As
IntegerDim
c
As
DoubleIF
(a>0
AND
b>0)
THENc=c/aEnd
IfIF
(a>1
OR
c>1)
THEN7
c=c+1End
Ifc=b+c示例2–流程图a>0
and
b>0c=c/aa>1
orc>1c=c+1c=b+cTTFFABDCE40示例2–
环路复杂度ABDCE①41②③法一:V(G)=区域数目=3法二:V(G)=边界数目-节点数目+2=6-5+2=3法三:V(G)=判断节点数目+1=2+1=3法四:图形矩阵示例2–
环路复杂度ABDCE①42②③法四:图形矩阵111111ABCDEABCDE判定节点判定节点示例2–
确定基本路径ABDCE①43②③①
A-C-E②
A-B-C-E③
A-B-C-D-E①
A-C-E②
A-C-D-E③
A-B-C-D-E①
A-C-E②
A-B-C-E③
A-C-D-E示例2–
设计测试用例44①
A-C-E②
A-B-C-E③
A-B-C-D-Ea=-1,b=-2,c=-3a=1,b=1,c=-3a=2,b=1,c=6根据独立路径,设计测试用例(Test
Case
)的输入数据和预期输出。测试用例输入数据预期输出Test
Case
1a=-1,b=-2,c=-3a=-1,b=-2,c=-3Test
Case
2a=1,b=1,c=-3a=1,b=1,c=-2Test
Case
3a=2,b=1,c=6a=2,b=1,c=5测试用例覆盖集合中每条路径45基本路径测试并不是测试所有路径的组合,仅仅保证每条基本路径被执行一次。不需要活动图,但最好绘制程序流程图计算每个逻辑测试,也就是布尔操作符数加1
最好每个单元都进行基本路径测试,对关键组件则是必要的46课后作业利用基本路径测试方法设计下面C程序的测试用例。1 main
()2
{3 int
num1=0,
num2=0,
score=100;4 int
i;5 charstr;6 scanf
(“%d,%c\n”,&i,
&str);7 while
(i<5)8
{9 if
(str==’T’)10
num1++;11 else
if(str==’F’)12
{13
score=score-10;14 num2
++;15
}16
i++;17
}18 printf
(“num1=%d,
num2=%d,
score=%d\n”,
num1,
num2,
score);19
}3.2
黑盒测试方法等价类划分法边界值分析法判定表方法因果图法正交试验法功能图法错误推测法47黑盒测试方法概述“黑盒”测试又称为数据驱动测试或基于规格说明的测试。执行黑盒测试的虑程序或
的在完全不考逻辑结构和处理过程的情况下,测试根据 的需求规格说明书设计测试用例,在程序或的界面上进 试。黑盒测试是从用户角度出发进行的测试。48黑盒测试过程产生需求说明被测程序输出49黑盒测试有两种基本类型,即通过测试和失败测试。在进行通过测试时,实际上是确认能做什么,而不会去考验其能力如何。测试员只运用最简单,最直观的测试案例。在设计和执试案例时,总是先要进行通过测试。在进行破坏性试验之前,看一看基本功能是否能够实现。这一点很重要,否则在正常使用时就会奇怪地发现,为什么会有那么多的缺陷出现?在确信了正确运行之后,就可以采取各种通过搞
“垮”来找出缺陷。纯粹为了破坏而设计和执行的测试案例,被称为失败测试或迫使出错测试。黑盒测试的类型50黑盒测试主要是为了发现以下错误:功能错误或遗漏。在接口上,输入能否正确地接受。能否输出正确的结果。是否有数据结构错误或外部信息(例如数据文件)访问错误。性能上是否能够满足要求。是否有初始化或终止性错误。界面错误,不美观51黑盒测试方法概述黑盒方法不可能实现穷举测试,是因为:在测试某功能时不可能对其所有输入值进试,更不可能对其所有输入取值组合进试。无法对需求规格说明书中未规定的潜在需求进试。黑盒测试方法概述黑盒测试的对象既可以是单个程序,也可以是模块集成过程中的多个临时版本及最终52黑盒测试的难点53黒盒测试的难点在于如何构造有效的输入。由于输入空间通常是无限的,穷举测试显然行不通。寻找最小最重要的用例集合以精简测试复杂性。黑盒测试的优点黑盒测试不考虑程序或 的具体实现,若程序或的 实现发生了变化,原先的测试用例依然可用。从用户角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问题。基于
开 档,所以也能知道 实现了文档中的哪些功能。黑盒测试用例的设计可以与 的实现同时进行,因而加快了 测试与开发的速度。在做
自动化测试时较为方便。黑盒测试方法概述54黑盒测试方法概述黑盒测试的局限性从程序的界面上进试,有时难以查找出错误的具体原因和位置,还需要通过执行白盒测试来进行更细致的错误定位。黑盒测试的惟一依据是的需求规格说明书,它无法发现需求规格说明本身存在的问题。不可能覆盖所有的代码,覆盖率较低,大概只能达到总代码量的30%。自动化测试的复用性较低。因此,在实际测试工作中,还要结合白盒测试方法进行条件、逻辑和路径等方面的测试。55为什么需要不同类型的测试方法?假设一个程序P有输入量X和Y及输出量Z。在字长为32位的计算机上运行。若X、Y取整数,按黑盒方法进行穷举测试,请问需要多少时间?(假设1毫秒钟执行一组数据)PXYZ232×232
/365×24×60×60×1000=5亿年3.2.1
等价类划分方法563.2.1
等价类划分方法将程序可能的输入数据分成若干个子集,从每个子集选取—
性的数据作为测试用例,等价类是某个输入域的子集,在该子集中每个输入数据的作用是等效的分为有效等价类和无效等价类。有效等价类是有意义的、合理的输入数据,可检查程序是否实现了规格说明中所规定的功能和性能。无效等价类与有效等价类的意义相反在分析需求规格说明的基础上划分等价类,列出等价类表设计测试用例时,要同时考虑这两种等价类。因为
不仅要能接收合理的数据,也要能经受意外的考验。经过正反的测试才能确保具有更高的可靠性。allinputsi1i4i2i35758确定等价类的方法(1)在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类in
rangegreater
thanrangeless
than
rangeless
than
value
value greater
than
value例如:程序的输入条件为满足大于10小于100的整数x有效等价类:
10<x<100无效等价类:
x≤10和
x≥10在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可以确立一个有效等价类和一个无效等价类。确定等价类的方法(2)not
member
of
setmember
of
set59例如:用户的口令长度必须是4位的串有效等价类:无效等价类:串的长度是4串的长度不为4确定等价类的方法(3)在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类Non-BooleanBoolean60例如:程序的输入条件为Bool
x=false有效等价类:无效等价类:x=falsex=true确定等价类的方式
(4)61在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。
例如:程序的输入条件x的取值为一个固定的枚举类型{Mon,Tues,Wed,Thur,Fri,Sat,Sun}有效等价类:无效等价类:x=Mon,x=Tues,x=Wed,x=Thur,x=Fri,x=Sat,x=Sunx≠{Mon,Tues,Wed,Thur,Fri,Sat,Sun}的集合确定等价类的方式
(5)在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度
规则)。
例如:C语言中输入一个合法的变量名有效等价类:⑴变量名当中包含字母、数字或下划线_无效等价类:⑵变量名应当以字母或下划线开始不满足条件⑴或不满足条件⑵或条件⑴⑵都不满足62确定等价类的方式
(5)在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度
规则)。
例如:程序的输入条件为以字母‘a’开头、长度为8的字符串,并且字符串不包含‘a’~‘z’之外的其它字符。有效等价类:
同时满足上述三个条件的字符串无效等价类:⑴不以字符’a’开头的字符串⑵长度不为8的字符串⑶包含‘a’~‘z’之外的其它字符的字符串63根据等价类创建测试用例的步骤a)建立等价类表,列出所有划分出的等价类:为每个等价类规定一个唯一的
;设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类重复c),最后使得所有有效等价类均被测试用例所覆盖;设计一个新的测试用例,使其只覆盖一个无效等价类。重复e)使所有无效等价类均被覆盖。输入条件有效等价类无效等价类………………64等价类测试用例-Example165一个报表处理系统,要求用户输入处理报表的日期,日期范围是2000年1月至2020年12月,如果用户输入的日期不在该范围内,则显示错误信息,系统规定日期由年月的6位数字组成,前4位代表年,后2位代表月。输入有效等价类无效等价类报表日期①6位数字字符②存在非数字字符③多于6个数字字符④少于6个数字字符年份范围⑤在2000年~2020年之间⑥小于2000⑦大于2020月份范围⑧在1~12之间⑨等于0⑩大于12①⑤⑧
201006②
200aob③
1012012④
20102⑥
198802⑦
203011⑨
200000⑩
202013根据下面给出的规格说明,利用等价类划分的方法,给出足够的测试用例。“一个程序读入3个整数,把这3个数值看作一个三角形的3条边的长度,根据3条边长确定该三角形是普通的、等腰的还是等边的,并打印出结论。”66等价类测试用例-Example2
可以设三角形的3条边分别为A,B,C。如果它们能够构成三角形的3条边,必须满足:A>0,B>0,C>0,且A+B>C,B+C>A,A+C>B如果是等腰的,还要判断A=B,或B=C,或A=C。如果是等边的,则需判断是否A=B,且B=C,且A=C。等价类测试用例-Example2673.2.2
边界值分析方法长期的测试工作经验告诉 ,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的。因此针对各种边界情况设计测试用例,可以查出的错误。对其 进行了研究,令人吃惊地发现,大量ysis缺陷都是边界值缺陷。BVA
–
Boundary
Value设计方法:确定边界情况(输入或输出等价类的边界),边界值分析关注输入空间的边界,并从中标识测试用例。选取正好等于、刚刚大于或刚刚小于边界值作为测试数据。68确定边界值的方法(1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚这个范围边界的值作为测试输入数据。ab例如:如果输入值的有效范围是0~100那么应针对-1,0,1,99,100,101设计测试用例69确定边界值的方法(2)如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少一、比最大个数多一的数作为测试数据。a
b例如:如果某个输入文件可容纳1-255条记录那么应根据0、1、255和256条记录的情况设计测试用例70确定边界值的方法(3)71如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。例如:排序程序的边界值分析排序序列为空排序序列仅有一个数据排序序列为最长序列排序序列已经按要求排好序排序序列的顺序与要求的顺序恰好相反排序序列中的所有数据全部相等确定边界值的方法(4)如果程序中使用了一个 数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。Test
cases
for
ABS(x)
:class
x
<
0, arbitrary
value:x=-10class
x
>=
0,
arbitrary
valuex=100classes
x
<
0, x
>=
0, on
boundary
:x=0classes x
<
0, x
>=
0, below
andabove:x=-1, x
=
172目标:在循环及边界上执试循环测试-1简单循环(迭代次数n)完全跳过循环只经过循环一次经过循环两次经过循环m(
m<n)次分别经过循环n-1,n,n+1
次73循环测试-2嵌套(Nested)循环在最里面的循环完成前面所述的简单循环测试,同时设定外部循环的最小迭代次数逐步向外循环进行直到所有循环被测试74数值的边界值检查—二进制Term取值范围Bit0
or
1Nibble0-15 <Half
byte>Byte0-255Word0-65535
or
0-Kilo1024Mega1048576Giga1073741824Tera10995116277760
和1,byte
由8
bits
构成,字由4
bytes构成,…75字符的边界值检查—ASCIITableCharacterASCII
ValueCharacterASCIIValueNull0B66Space32Y89/47Z90048[91149‘96250a97957b98;58y121@64z122A65{12376字符编辑域DefaultEmptyBlankNullZeroNone77一些特殊的边界值数值字符位置数量速度位置体积/last,
-1/Last+1Min/Max,Min-1/max+1Star/Finish,
Start-1/Finish+1Empty/FullLess
than
empty/
more
than
fullSlower/FasterLargest/SmallestOver/Under,
just
Over/JustUnderShortest/Longest…
…7879正常值(有效类):X1
=123123边界值:X2=12345边界值:X3=1234567边界值:边界值:X4=
1X5=
0无效类的值:无效类的值:X6=
-123123X7=asdasdBVA
示例1测试限制性用户输入:6位正整数其它?无效值:X8
=
000123X9=asd123X10=Empty80BVA
示例2Test
cases
:任意的正常值:
随机选择几个选项边界值:边界值:选择所有选项一个都不选边界值:选择一个选项abc有两个变量x1和x2的函数F。如果函数F实现为一个程序,则输入两个变量x1和x2会有一些(可能未规定)边界:a≤x1
≤bc≤x2
≤dd81边界值分析测试用例的两变量函数F的边界值分析测试用例是:{<X1nom,X2min>,<
X1nom
,X2min+
>,<
X1nom
,X2nom
>,<
X1nom
,X2max
>,>,<X1nom,X2nom>,<X1nom
,X2max-
>,<X1min,X2nom
>
,<
X1min+
,X2nom<X1max,X2nom
>
,<
X1max-
,X2nom
>}abcd82三角形问题有三个输入,即三条边a、b、c,其取值范围为:831≤a≤2001≤b≤2001≤c≤200a
=
{1,2,100,199,200}b
=
{1,2,100,199,200}c
=
{1,2,100,199,200}BVA
示例3-三角形问题的边界值测试用例ABC预期输出11001001等腰三角形21001002等腰三角形3100100100等边三角形4100100199等腰三角形5100100200非三角形61001100等腰三角形71002100等腰三角形8100100100等边三角形9100等腰三角形200100非三角形111100100等腰三角形122100100等腰三角形等边三角形等腰三角形非三角形BVA
示例3-三角形问题的边界值测试84NextDate是一个有三个变量(月份、日期和年)的函数,函数返回输入日期后面的那个日期。变量月份、日期和年都具有整数值,且满足以下条件:1≤月份≤121≤日期≤311812≤年≤201285月份={1,2,6,11,12}日期={1,2,15,30,31}年={1812,1813,1912,2011,2012}BVA
示例4-NextDate函数的边界值分析用例月份日期年预期输出161518126/16/1812261518136/16/1813361519126/16/1912461520116/16/2011561520126/16/201266119126/2/6/3/1912861519126/16/1912963019127/1/1912106311912输入1111519121/16/19121221519122/16/19121361519126/16/1912141115191211/16/1912151215191212/16/1912BVA
示例4-NextDate函数的边界值测试用例863.2.3
判定表方法87在实际应用中,许多输入是由多个因素构成,而不是单一因素,这时就需要多因素组合分析。对于多因素,有时可以直接对输入条件进行组合设计,不需要进行因果分析,即直接采用判定表方法。一个判定表由“条件和活动”两部分组成,也就是列出了一个测试活动执行所需的条件组合,所有可能的条件组合定义了一系列的选择,而测试活动需要考虑每一个选择。判定表元素88条件桩,列出问题的所有条件动作桩:列出可能针对问题所采取的操作条件项:针对所列条件的具体赋值动作项:列出在条件项(各种取值)组合情况下应该采取的动作。规则:任何一个条件组合的特定取值及其相应要执行的操作。判定表的构造形式。判定表89判定表方法步骤90列出所有的条件桩和动作桩;填入条件项;填入动作项,制定初始判定表;简化、合并相似规则或者相同动作91条件桩⑴驱动程序是否正确⑵是否有纸张⑶是否有墨粉动作桩⑴打印内容⑵不同的错误提示警告优先(高→低)⑴缺纸⑵缺墨粉⑶驱动程序不正确判定表实例—打印文件序
号12345678条件驱动程序是否正确?10101010是否有纸张?11001100是否有墨粉?11110000动作打印内容10000000提示驱动程序不对01000000提示没有纸张00110011提示没有墨粉00001100打印文件问题初始化的判定表:说明:其中“1”表示“是”,“0”表示“否”92序
号125/63/4/7/8条件驱动程序是否正确?10——是否有纸张?1110是否有墨粉?110—动作打印内容1000提示驱动程序不对0100提示没有纸张0001提示没有墨粉0010打印文件问题优化后的判定表:说明:其中“-”表示某些因素取“1”或“0”没有影响93问题描述:“…对功率大于50马力且已运行10年以上的机器或者维修记录不全且已运行10年以上的机器,给予优先的维修处理…”条件:1.
功率大于50马力维修记录不全运行10年以上采取的措施:进行优先的维修处理做其它处理94说明:其中“1”表示“是”;“0”表示“否”12345678问题功率大于50马力吗?11110000维修记录不全吗?11001100运行10年以上吗?10101010建议进行优先的维修处理√√√√√做其它处理√√√机器维修问题优化后的判定表9512345问题功率大于50马力吗?11100维修记录不全吗?—10——运行10年以上吗?10010建议进行优先的维修处理√√√做其它处理√√机器维修问题说明:其中“-”表示某些因素取“1”或“0”没有影响1345
6
7
8问题YYY
N
N
N
NYNN
Y
Y
N
N你觉得疲倦吗?你对内容感
吗?内容使你糊涂?
YYN
Y
N
Y
N建议请回到本章开头重读√继续读下去√跳到下一章去读,请休息√2YYN√√
√ConditionStub:列出问题的所有条件(条件桩)Condition
Entry:针对左列条件取值,给出真假值(条件项)ActionStub:列出问题规定可能采取的行动(动作桩)√
√Action
Entry:在条件组合下应采取的行动(动作项)规则读书指南判定表判定表的化简:设法合并具有相同动作、且条件项相似的规则读书指南判定表12345678问题你觉得疲倦吗?YYYYNNNN你对内容感 吗?YYNNYYNN内容使你糊涂?YNYNYNYN建议请回到本章开头重读√继续读下去√跳到下一章去读√√停止阅读,请休息√√√√9798简化后的判定表读书指南判定表12345问题你觉得疲倦吗?YYNNN你对内容感 吗?YNYYN内容使你糊涂?——YN—建议请回到本章开头重读√继续读下去√跳到下一章去读√停止阅读,请休息√√99简化后的判定表读书指南判定表1234问题你觉得疲倦吗?YNNN你对内容感 吗?—YYN内容使你糊涂?—YN—建议请回到本章开头重读√继续读下去√跳到下一章去读√停止阅读,请休息√说明:其中“-”表示某些因素取“Y”或“N”没有影响3.2.4
因果图法多种输入条件的组合,产生多种结果设计测试用例。设计方法:规格说明文档描述的哪些是原因(输入条件),哪些是结果(输出条件),给每个原因和结果赋予一个标示符。找出原因与结果,原因与原因之间的对应关系,划出因果图在因果图上标上哪些不可能发生的因果关系,表明约束或限制条件根据因果图,创建判定表,将复杂的逻辑关系和多种条件组合很具体明确的表示出来把判定表的每一行作为依据设计测试用例。1003.2.4
因果图法因果图中因果关系的基本符号。因果图中有4种因果关系的基本符号,通常在因果图中,用ci表示原因,ei表示结果。c1恒等e1
c1
∽
e1非或c2c1∨
e1与c2c1∧
e11013.2.4
因果图法102因果图中因果关系的基本符号。
恒等:若原因出现,则结果出现;若原因不出现,则结果不出现。
非(∽):若原因出现,则结果不出现;若原因不出现,则结果出现。
或(∨):若几个原因中有一个出现,则结果出现;若几个原因都不出现,则结果不出现。
与(∧):若几个原因都出现,结果才出现;若其中有一个原因不出现,则结果不出现。3.2.4
因果图法103因果图中的约束。在实际问题中输入状态相互之间、输出状态相互之间可能存在某种依赖关系,称为“约束”。对于输入条件的约束有E、I、O、R这四种约束。对于输出条件的约束只有M约束。3.2.4
因果图法因果图中的约束。E约束(异):a、b中最多有一个可能为出现,即a和b这两个条件不能同时出现。aEb异(互斥)1043.2.4
因果图法c或(包含)因果图中的约束。I约束(或):a、b、c中至少有一个必须出现,即a、b、c中不能都不出现。aIb1053.2.4
因果图法因果图中的约束。O约束(唯一):a和b中必须有一个而且仅有一个出现。aOb唯一1063.2.4
因果图法因果图中的约束。R约束(要求):a出现时,b必须出现,a出现时,b不能不出现。aRb要求1073.2.4
因果图法因果图中的约束。M约束(强制):若结果a出现,则结果b强制不能出现。aMb强制108因果图法-示例1原因结果C1第一列字符是AE1修改文件C2第一列字符是BE2给出信息LC3第二列字符是一个数字E3给出信息M11中间原因某 规格说明中包含以下要求:⑴第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改。⑵如果第一列字符不正确,则输出信息L⑶如果第二列字符不是数字,则给出信息M因果关系表109110因果图法-示例1原因结果C1
第一列字符是AE1修改文件C2
第一列字符是BE2给出信息LC3
第二列字符是一个数字E3给出信息M11中间原因C111C2C3E2E1E3E∨∧~~111因果图法-示例112345678原因C110101010C211001100C311110000中间结果11110110结果E1110000E2001001E3000111判定表C1C211C3E2E1E3E∨∧~~因果图法-示例112345原因C1010—0C2100—0C311100中间结果1111010结果E111000E200101E300011优化后的判定表112因果图法-示例112345原因C1010—0C2100—0C311100结果E111000E200101E300011用例首字符为B,第2个字符为数字首字符为A,第2个字符为数字首字符非A,非B,第2个字符为数字首字符为任意字符,第2个字符不是数字首字符非A,非B,第2个字符不是数字优化后的判定表113114因果图法-示例2.有效类N
0,
N
0
k
maxint,
k
>
maxint有效等价类:输入条件abs(N)maxint测试用例:maxint
Nresultmaxint
Nresult551055100005410error100-1000…1…给定maxint
和
N
,如果结果
<= maxint
,则按以下公式计算;否则提示出错:|N|result =
kK=0
k
maxint
k
maxintN
0N
0errorand
k115xorandCauses
k
maxint1100Inputs
k
maxint0011N
01010N
00101Effects
k1100Outputserror0011因果图法-示例21234原因
k
maxint1100
k
maxint0011N
01010N
00101结果
k1100error0011116因果图法-示例2117测试用例的设计。其一个处理单价为5角钱的饮料的自动售货机规格说明如下:若投入5角钱或1元钱的硬币,按下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就送出来。若售货机没有零钱找,则一个显示〖零钱找完〗的红灯亮,这时在投入1元硬币并押下按钮后,饮料不送出来而且1元硬币也退出;若售货机有零钱找,则显示〖零钱找完〗的红灯灭,在送出饮料的同时退还5角硬币。结果:21.
售货机〖零钱找完〗灯亮退还1元硬币退还5角硬币送出橙汁饮料送出啤酒饮料原因:1.
售货机有零钱找投入1元硬币投入5角硬币按下橙汁饮料按下啤酒饮料投入1元硬币并按下饮料按钮
13.应当找5角零钱且售货机有钱找按下〖橙汁〗或〖啤酒〗按钮
14.钱已付清因果图法-示例31182345送出橙汁饮料送出啤酒饮料找完〗灯亮退还1元硬币退还5角硬币2425131114E投入5角硬币按下橙汁按钮E按下啤酒按钮把钱付清12按下按钮该找5角可找5角因果图法-示例3售货机有
1
∽
21 售货机〖零钱零钱找投入1元硬币∧∨∧∧∨~∧∧因果图法-示例3判定表因果图法-课后思考题以中国象棋中马的走法为例,请绘制出因果图和判定表。马的走法说明:如果落点在棋盘外,则不移动棋子。如果落点与起点不构成日字型,则不移动棋子。如果落点处有自己方棋子,则不移动棋子。如果在落点方向的
交叉点处有棋子(绊马腿),则不移动棋子。如果不属于1-4条,且落点处无棋子,则移动棋子。如果不属于1-4条,且落点处为对方棋子(非老将),则移动棋子并除去对方棋子。如果不属于1-4条,且落点处为对方老将,则移动棋子,并提示战胜对方,
结束。120为什么要采用正交试验法?在许多应用系统的测试工作中,不会象判断三角形那样简单,输入条件的因素很多,而且每个因素也不能简单用“是”和“否”来回答。比如,微软
程序的打印测试,也需要考虑4个因素,每个因素也有多个选项打印范围分:全部、当前幻灯片、给定范围打印内容分:幻灯片、讲义、备注页、大纲视图打印颜色/灰度分:彩色、灰度、黑白打印效果分:幻灯片加框和幻灯片不加框。测试组合会变得很多,如果按照传统的测试方导致很大的测试工作量121正交实验法原理1223.2.5
正交实验法基本概念
因子(factors)影响的条件因素称为因子(变量)水平数(levels)每个因素的取值个数权值表示各个因子及状态的作用大小、出现的频率大小等1233.2.5
正交实验法确定影响功能的因子与状态选择一个合适的正交表(拉丁方和正交拉丁方)利用正交表构造测试数据集一般用L代表正交表,常用的有L8(27),L9(34),L16(45)等。其中L8(27)中的7为因子数(正交表的列数);2为因子的水平数;8为测试的次数(正交表的行数)参考
/~njas124实例信息系统中,员工信息查询功能是常见的。例如,设有3个独立的查询条件,以获得特定员工的个人信息员工号(ID)。员工
(Name)。员工邮件地址(Mail
Address)1253.2.5
正交实验法126对于因子数、水平数较高的情况,测试组合数会很多,这时利用正交实验法可以实现用最小的测试用例集合去获取最大的测试覆盖率,从而有效的降低测试用例数和测试工作量,3.2.6
功能图法-简介127功能图方法其实是一种灰盒测试一个程序的功能说明通常由动态说明和静态说明组成。动态说明描述了输入数据的次序或转移的次序。静态说明描述了输入条件与输出条件之间的对应关系。对于较复杂的程序,由于存在大量的组合情况,因此,仅用静态说明组成的规格说明对于测试来说往往是不够的。必须用动态说明来补充功能说明。3.2.6
功能图法-构成128功能图法就是为了解决动态说明问题的一种测试用例的设计方法功能图由状态迁移图(state
transition
diagram,STD)和逻辑功能模型(logic
function
model,LFM)构成状态迁移图用于表示输入数据序列以及相应的输出数据。在状态迁移图中,由输入数据和当前状态决定输出数据和后续状态。逻辑功能模型只适合于描述静态说明,用于表示在状态中输入条件和输出条件之间的对应关系。输出数据仅由输入数据决
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 墨锭制作工安全宣传考核试卷含答案
- 金属屋面工达标能力考核试卷含答案
- 珍珠岩制品工岗位应急技能考核试卷含答案
- 炭素煅烧工岗前培训效果考核试卷含答案
- 冷链食品安全管理员变革管理能力考核试卷含答案
- 渔船无线电操作员环保竞赛考核试卷含答案
- 内控管理职业进阶指南
- 百威集团职业发展体系
- 全国儿童预防接种日宣传工作总结
- CBD项目EPC总承包协调管理方案-施工组织设计
- 五升六数学暑假衔接作业完整版 人教部编版(可直接打印)
- 风电场项目部重大危险源监控管理制度培训
- 特种设备维护保养检查记录表(低温压力容器)
- 2026年救助管理机构工作规范竞赛题库
- 电力重大事故隐患判定标准及治理监督管理规定宣贯
- 2025~2026学年湖北省云学联盟高一上学期12月阶段性练习语文试卷
- 2026年数据流通交易合同示范文本应用与合同备案规程操作手册
- 老年骨科患者跌倒风险评估与预防
- 2025年智能制造工程技术竞赛试题及答案
- 2025年招标采购从业人员专业技术能力考试(初级)题库
- 黑马程序员课件Java
评论
0/150
提交评论