第三章结构性测试
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
c
comm=comm+150
2.判定覆盖 若选用另外两组测试用例:
Test4 age=40, sex=M, comm.=1500
F d
(age>=50)(comm>2000.0)
T e
comm=comm-200
图5-2 被测程序段流程图
Test5 age=50, sex=F, comm.=2500
逻辑覆盖
语句覆盖是比较弱的测试覆盖准则。
作到了语句覆盖可能给人们一种心理的满足, 以为每个语句都执行过,似乎可以放心了,其 实仍然是不十分可靠的。
我们必须意识到,被测程序并非语句的无序 堆积,语句之间存在着许多有机的联系。
逻辑覆盖
它的程序流程图如下:
a、b、c、d和e为控制流上的若干程序点。
F b
第三部分 结构性测试
结构性测试
结构性测试方法的突出特点是它们都基 于被测程序的源代码,而不是软件规格 说明。 和其它软件测试技术相比,结构性测试 方法更容易发现软件故障,常用于单元 测试中。
白盒测试是否可以做到穷举测试呢?白盒测 试又称结构测试或基于程序的测试。该方法将被 测对象看作一个打开的盒子,允许人们检查其内 部结构。测试人员根据程序内部的结构特性,设 计、选择测试用例,检测程序的每条路径是否都 按照预定的要求正确地执行。
Test 1:
age=50, sex=M, comm.=2500
Test3:
age=20, sex=M, comm.=1500 则分别执行路径ace和abd, 从而使两个判断的4个分支 c,e和b,d分别得到检测。
逻辑覆盖
它的程序流程图如下:
a、b、c、d和e为控制流上的若干程序点。
F b
a
T
(age>25)(sex=M)
逻辑覆盖要求对被测程序的结构作到一定程 度的覆盖。 由于覆盖测试的目标不同,逻辑覆盖又可分为: 语句覆盖、判定覆盖、条件覆盖、判定—条件 覆盖及路径覆盖。
逻辑覆盖
为说明几种逻辑覆盖测试方法之间的不同,我 们结合下面的一小段程序来讨论。
begin commission=500; if ((age>25)AND(sex=M)) then commission = commission +1500; if (age>=50 OR (commission >2000.0)) then commission = commission -200;
这样该程序段的4个语句都得到执
行,从而作到了语句覆盖。
逻辑覆盖
它的程序流程图如下:
a、b、c、d和e为控制流上的若干程序点。
F b
a
T
(age>25)(sex=M)
c
comm=comm+150
F d
(age>=50)(comm>2000.0)
T e
comm=comm-200
图5-2 被测程序段流程图
1.语句覆盖
如果我们选择: Test 2: age=50, sex=F, comm=2500
程序则按abe执行,没有达到 语句覆盖。
逻辑覆盖
它的程序流程图如下:
a、b、c、d和e为控制流上的若干程序点。
a
F
T
(age>25)(sex=M)
c b
1.语句覆盖
comm=comm+150 从程序中每个语句都得到执行
这一点来看,语句覆盖的方法
Βιβλιοθήκη Baidu
F
T
(age>=50)(comm>2000.0)
似乎能够比较全面地检验被测
d
e 程序的每一个语句。
comm=comm-200
但语句覆盖是很弱的逻辑覆盖准则。
图5-2 被测程序段流程图
逻辑覆盖
它的程序流程图如下: Test 1: age=50, sex=M, comm=2500
comm=comm+150 这里所谓“若干”,自然是越少越好。
F
T
(age>=50)(comm>2000.0)
在上述程序段中,我们如果选择:
e
d
Test 1: age=50, sex=M, comm=2500
comm=comm-200 作为测试用例,则程序按路径ace
执行。
图5-2 被测程序段流程图
白盒测试
常见的白盒测试方法有: 逻辑覆盖、 数据流测试、 域测试、 符号测试、 路径分析、 程序变异 程序插装技术等。
逻辑覆盖
逻辑覆盖是一种使用最广泛的结构测试方法。
逻辑覆盖以程序内部的逻辑结构为基础设计 测试用例,要求对被测程序的逻辑结构有清楚 的了解,甚至要能掌握源程序的所有细节。
判定覆盖又称为分支覆盖。
逻辑覆盖
它的程序流程图如下:
a、b、c、d和e为控制流上的若干程序点。
F b
a
T
(age>25)(sex=M)
c
comm=comm+150
F d
(age>=50)(comm>2000.0)
T e
comm=comm-200
图5-2 被测程序段流程图
2.判定覆盖 若选用两组测试用例:
a
T
(age>25)(sex=M)
c
comm=comm+150
F d
(age>=50)(comm>2000.0)
T e
comm=comm-200
图5-2 被测程序段流程图
2.判定覆盖 判定覆盖要求设计若干测试用例, 运行被测程序,使得程序中每个 判断的取真分支和取假分支至少 执行一次,即判断的真假值均要 被检测。
则分别路径acd及abe, 同样也可覆盖4个分支.
逻辑覆盖
它的程序流程图如下:
a、b、c、d和e为控制流上的若干程序点。
a、b、c、d和e为控制流上的若干程序点。
F b
a
T
(age>25)(sex=M)
c
comm=comm+150
F d
(age>=50)(comm>2000.0)
T e
comm=comm-200
图5-2 被测程序段流程图
1.语句覆盖
假如这一程序段中两个判断的 逻辑运算有问题, 例如,第一个判断的运算符“” 错成运算符“”或是第二个判断 中的运算符“”错成了运算符“” 仍使用上述前一个测试用例Test 1, 程序仍将按路径ace执行, 但没有发现判断中逻辑运算的错误。
end;
三个输入参数是年龄age (整数)、性别sex(男或女)和佣金 commission(实数)。
逻辑覆盖
它的程序流程图如下:
a、b、c、d和e为控制流上的若干程序点。
a
1.语句覆盖
F
T
语句覆盖要求设计若干个测试用
(age>25)(sex=M)
c 例,运行被测程序,使程序中的
b
每个可执行语句至少被执行一次。
comm=comm+150
2.判定覆盖 若选用另外两组测试用例:
Test4 age=40, sex=M, comm.=1500
F d
(age>=50)(comm>2000.0)
T e
comm=comm-200
图5-2 被测程序段流程图
Test5 age=50, sex=F, comm.=2500
逻辑覆盖
语句覆盖是比较弱的测试覆盖准则。
作到了语句覆盖可能给人们一种心理的满足, 以为每个语句都执行过,似乎可以放心了,其 实仍然是不十分可靠的。
我们必须意识到,被测程序并非语句的无序 堆积,语句之间存在着许多有机的联系。
逻辑覆盖
它的程序流程图如下:
a、b、c、d和e为控制流上的若干程序点。
F b
第三部分 结构性测试
结构性测试
结构性测试方法的突出特点是它们都基 于被测程序的源代码,而不是软件规格 说明。 和其它软件测试技术相比,结构性测试 方法更容易发现软件故障,常用于单元 测试中。
白盒测试是否可以做到穷举测试呢?白盒测 试又称结构测试或基于程序的测试。该方法将被 测对象看作一个打开的盒子,允许人们检查其内 部结构。测试人员根据程序内部的结构特性,设 计、选择测试用例,检测程序的每条路径是否都 按照预定的要求正确地执行。
Test 1:
age=50, sex=M, comm.=2500
Test3:
age=20, sex=M, comm.=1500 则分别执行路径ace和abd, 从而使两个判断的4个分支 c,e和b,d分别得到检测。
逻辑覆盖
它的程序流程图如下:
a、b、c、d和e为控制流上的若干程序点。
F b
a
T
(age>25)(sex=M)
逻辑覆盖要求对被测程序的结构作到一定程 度的覆盖。 由于覆盖测试的目标不同,逻辑覆盖又可分为: 语句覆盖、判定覆盖、条件覆盖、判定—条件 覆盖及路径覆盖。
逻辑覆盖
为说明几种逻辑覆盖测试方法之间的不同,我 们结合下面的一小段程序来讨论。
begin commission=500; if ((age>25)AND(sex=M)) then commission = commission +1500; if (age>=50 OR (commission >2000.0)) then commission = commission -200;
这样该程序段的4个语句都得到执
行,从而作到了语句覆盖。
逻辑覆盖
它的程序流程图如下:
a、b、c、d和e为控制流上的若干程序点。
F b
a
T
(age>25)(sex=M)
c
comm=comm+150
F d
(age>=50)(comm>2000.0)
T e
comm=comm-200
图5-2 被测程序段流程图
1.语句覆盖
如果我们选择: Test 2: age=50, sex=F, comm=2500
程序则按abe执行,没有达到 语句覆盖。
逻辑覆盖
它的程序流程图如下:
a、b、c、d和e为控制流上的若干程序点。
a
F
T
(age>25)(sex=M)
c b
1.语句覆盖
comm=comm+150 从程序中每个语句都得到执行
这一点来看,语句覆盖的方法
Βιβλιοθήκη Baidu
F
T
(age>=50)(comm>2000.0)
似乎能够比较全面地检验被测
d
e 程序的每一个语句。
comm=comm-200
但语句覆盖是很弱的逻辑覆盖准则。
图5-2 被测程序段流程图
逻辑覆盖
它的程序流程图如下: Test 1: age=50, sex=M, comm=2500
comm=comm+150 这里所谓“若干”,自然是越少越好。
F
T
(age>=50)(comm>2000.0)
在上述程序段中,我们如果选择:
e
d
Test 1: age=50, sex=M, comm=2500
comm=comm-200 作为测试用例,则程序按路径ace
执行。
图5-2 被测程序段流程图
白盒测试
常见的白盒测试方法有: 逻辑覆盖、 数据流测试、 域测试、 符号测试、 路径分析、 程序变异 程序插装技术等。
逻辑覆盖
逻辑覆盖是一种使用最广泛的结构测试方法。
逻辑覆盖以程序内部的逻辑结构为基础设计 测试用例,要求对被测程序的逻辑结构有清楚 的了解,甚至要能掌握源程序的所有细节。
判定覆盖又称为分支覆盖。
逻辑覆盖
它的程序流程图如下:
a、b、c、d和e为控制流上的若干程序点。
F b
a
T
(age>25)(sex=M)
c
comm=comm+150
F d
(age>=50)(comm>2000.0)
T e
comm=comm-200
图5-2 被测程序段流程图
2.判定覆盖 若选用两组测试用例:
a
T
(age>25)(sex=M)
c
comm=comm+150
F d
(age>=50)(comm>2000.0)
T e
comm=comm-200
图5-2 被测程序段流程图
2.判定覆盖 判定覆盖要求设计若干测试用例, 运行被测程序,使得程序中每个 判断的取真分支和取假分支至少 执行一次,即判断的真假值均要 被检测。
则分别路径acd及abe, 同样也可覆盖4个分支.
逻辑覆盖
它的程序流程图如下:
a、b、c、d和e为控制流上的若干程序点。
a、b、c、d和e为控制流上的若干程序点。
F b
a
T
(age>25)(sex=M)
c
comm=comm+150
F d
(age>=50)(comm>2000.0)
T e
comm=comm-200
图5-2 被测程序段流程图
1.语句覆盖
假如这一程序段中两个判断的 逻辑运算有问题, 例如,第一个判断的运算符“” 错成运算符“”或是第二个判断 中的运算符“”错成了运算符“” 仍使用上述前一个测试用例Test 1, 程序仍将按路径ace执行, 但没有发现判断中逻辑运算的错误。
end;
三个输入参数是年龄age (整数)、性别sex(男或女)和佣金 commission(实数)。
逻辑覆盖
它的程序流程图如下:
a、b、c、d和e为控制流上的若干程序点。
a
1.语句覆盖
F
T
语句覆盖要求设计若干个测试用
(age>25)(sex=M)
c 例,运行被测程序,使程序中的
b
每个可执行语句至少被执行一次。