基本路径法练习
练习3(第7章)编码和测试

1设计下列伪码程序的语句覆盖和路径覆盖测试用例:STARTINPUT(A,B,C)IF A>5THEN X=10ELSE X=1END IFIF B>10THEN Y=20ELSE Y=2END IFIF C>15THEN Z=30ELSE Z=3END IFPRINT(X,Y,Z)STOP答:(1)语句覆盖的测试用例因为每个判定表达式为真或为假时均有赋值语句,为了使每个语句都至少执行一次,总共需要两组测试数据,以便使得每个判定表达式取值为真或为假各一次。
下面是实现语句覆盖的典型测试用例:l使3个判定表达式之值全为假输入:A=1,B=1,C=1预期的输出:X=1,Y=2,Z=3l使3个判定表达式之值全为真输入:A=20,B=40,C=60预期的输出:X=10,Y=20,Z=30(2)路径覆盖的测试用例本程序共有8条可能的执行通路,为做到路径覆盖总共需要8组测试数据。
下面是实现路径覆盖的典型测试用例:l3个判定表达式之值全为假输入:A=1,B=1,C=1预期的输出:X=1,Y=2,Z=3l3个判定表达式依次为假、假、真输入:A=1,B=1,C=60预期的输出:X=1,Y=2,Z=30l3个判定表达式依次为假、真、假输入:A=1,B=40,C=1预期的输出:X=1,Y=20,Z=3l3个判定表达式依次为假、真、真输入:A=1,B=40,C=60预期的输出:X=1,Y=20,Z=30l3个判定表达式依次为真、假、假输入:A=20,B=1,C=1预期的输出:X=10,Y=2,Z=3l3个判定表达式依次为真、假、真输入:A=20,B=1,C=60预期的输出:X=10,Y=2,Z=30l3个判定表达式依次为真、真、假输入:A=20,B=40,C=1预期的输出:X=10,Y=20,Z=3l3个判定表达式全为真输入:A=20,B=40,C=60预期的输出:X=10,Y=20,Z=302设计下列伪码程序的分支覆盖和条件组合覆盖测试用例:STARTINPUT(A,B,C,D)IF (A>0) AND (B>0)THEN X=A+BELSE X=A-BEND IFIF (C>A) OR (D<B)THEN Y=C-DELSE Y=C+DEND IFPRINT(X,Y)STOP答:(1)分支覆盖(即判定覆盖)标准为,不仅使每个语句至少执行一次,而且使每个判定表达式的每个分支都至少执行一次。
淮海工学院软件测试技术课堂练习题(考)

第一章选择题1. Myers在1979年提出了一个重要观点,即软件测试的目的是为了( B )。
(A)证明程序正确(B)查找程序错误(C)改正程序错误(D)验证程序无错误2. 以下哪个选项不属于软件缺陷( D )。
(A)软件没有实现产品规格说明所要求的功能(B)软件中出现了产品规格说明不应该出现的功能(C)软件实现了产品规格说明中的部分功能(D)软件实现了产品规格说明所要求的功能但因受性能限制而未考虑可移植性问题3. 下列关于缺陷产生原因的叙述中,不属于技术问题的是( A )。
(A)文档错误,内容不正确或拼写错误(B)系统结构不合理(C)语法错误(D)接口传递不匹配,导致模块集成出现问题4. 对于软件测试分类,下列各项都是按照不同阶段来进行的划分,除了( C )。
(A)单元测试(B)集成测试(C)黑盒测试(D)系统测试5. 软件产品必须首先提供用户所需要的( D )。
(A)性能(B)人机界面(C)可靠性(D)功能简答题1. 简述软件测试与软件开发的关系。
2. 回忆自己用过的所有软件中遇到的bug,请写出软件名及其bug的表现形式。
3. 写写你对于国内市场对软件测试工程师的需求及能力要求的看法。
4. 如果你想从事软件测试工作,你怎样做职业准备,应具备怎样的素质。
第六章1. 评审方法按照正式化程度逐渐增强的是( D )。
(A)临时评审、走查、同行评审、轮查、会议评审(B)临时评审、走查、轮查、同行评审、会议评审(C)会议评审、小组评审、走查、同行评审、临时评审(D)临时评审、轮查、同行评审、走查、会议评审2. 对于软件需求分析报告和核心模块的代码,一般最好采用( C )。
(A)临时评审(B)同行评审(C)会议评审(D)轮查第七章1.测试程序时不在机器上直接运行程序,而是采用人工检查或计算机辅助静态分析的手段检查程序,这种测试称为_______。
(10分)A.白盒测试B.黑盒测试C.静态测试D.动态测试2. 评审方法按照正式化程度逐渐增强的是_____。
基本路径测试法

画出程序控制流程图 计算程序环路复杂性 确定独立路径集合
准备测试用例
4
例:下面是一个程序段,试设计基本路径测试的测试用
例,设计出的测试用例要保证每一个基本独立路径至少要执 行一次
22 24
I
H
1. int Test(int i_count, int i_flag) 2. { 3. int i_temp = 0; 4. while (i_count > 0) 5. { 6. if (0 == i_flag) 7. { 8. i_temp = i_count + 100; 9. break; 10. } 11. else 12. { 13. if (1 == i_flag) 14. { 15. i_temp = i_temp + 10; 16. } 17. else 18. { 19. i_temp = i_temp + 20; 20. } 21. } 22. i_count- -; 23. } 24. return i_temp; 25. }
1
控制流程图的图形符号
程序控制流程图
1 边 1
3
结点 区域
2 6 3 6 7 8 4 5 7 R3 8 R1 R2
4
9 10 R4
11 (a)程序流程图 )
11 (b)控制流图
2
程序控制流程图 a b x y y
if a and b then x else y
复合逻辑下的控制流程图
3
基本路径测试的步骤
画出程序控制流程图
4
C
6
A
D
E
13
F
G
8 19
基本路径覆盖法

具体图片请看上面的图,这是一个流图,现在要导出独立路径,
书本给出的答案是这样的:有3条路径
3-4-5-6-7,8
3-5-7,8
3-5-6-7,8
请问为什么不可以是这样的答案呢?
3-4-5-6-7,8
3-5-7,8
3-4-5-7,8(这是多出来的路径,为什么不可以还是什么原因呢)
3-5-6-7,8
路径集所要求的是覆盖所有语句,而不是所有路径,而且一般要求用尽可能少的路径完成用例设计,以便用例数尽可能少。
所谓独立路径,是指至少包含一条新边的路径,也就是包含一些前面的路径未包含的语句,当所有的语句都包含了,基路径集就够了。
基路径集是非唯一的。
3-4-5-7,8(这是多出来的路径,为什么不可以还是什么原因呢),这条路径的所有边都已被其他路径包含,所以不算它。
void Sort(int iRecordNum,int iType)
1 {
2 int x=0;
3 int y=0;
4 while (iRecordNum-- > 0)
5 {
6if(0= =iType)
7x=y+2;
8 else
9if(1= =iType)
10 x=y+10;
11 else
12 x=y+20;
13 }
14 printf(“x=%d,y=%d”,x,y);}。
白盒测试的基本路径测试法

白盒测试的基本路径测试法一、白盒测试的主要测试方法1、代码检查法2、静态结构分析法3、静态质量度量法4、逻辑覆盖法5、基本路径测试法(应用最广泛)6、域测试7、符号测试8、Z路径覆盖9、程序变异二、基本路径测试法1、定义:基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。
设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。
2、基本路径测试法的基本步骤1) 程序的控制流图:描述程序控制流的一种图示方法。
2)程序圈复杂度:McCabe复杂性度量。
从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。
3) 导出测试用例:根据圈复杂度和程序结构设计用例数据输入和预期结果.4) 准备测试用例:确保基本路径集中的每一条路径的执行.3、基本路径测试法的工具方法1)图形矩阵:是在基本路径测试中起辅助作用的软件工具,利用它可以实现自动地确定一个基本路径集。
三、程序的控制流图控制流程图是描述程序控制流的一种图示方法。
圆圈称为控制流图的一个结点,表示一个或多个无分支的语句或源程序语句流图只有二种图形符号:图中的每一个圆称为流图的结点,代表一条或多条语句。
流图中的箭头称为边或连接,代表控制流。
任何过程设计都要被翻译成控制流图。
1、根据程序流程图化成控制流图在将程序流程图简化成控制流图时,应注意:1)在选择或多分支结构中,分支的汇聚处应有一个汇聚结点.2)边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域。
如下页图所示:如果判断中的条件表达式是由一个或多个逻辑运算符(OR,AND, NAND,NOR) 连接的复合条件表达式,则需要改为一系列只有单条件的嵌套的判断。
例如:1 if a or b2 x3 else4 y对应的逻辑为:独立路径:至少沿一条新的边移动的路径2、实例说明基本路径测试法的步骤:第一步:画出控制流图流程图用来描述程序控制结构。
软件测试 实验2 基本路径测试法

布置作业
实验后记
1、画出给定实验题目的程序流程图;
Y
N
N
Y
Y
N
2、以程序流程图为基础,画出相应的控制流图;
1:开始2:X++<10 3:A>1 4:C=C/A 5:B=0 6:C<0 7:X>1 8:X=X+1 9:A=B+C 10:
3、分别用三种方法计算该程序的环形复杂性V(G);
使用基本路径测试方法为以下程序段设计测试用例
实验2基本路径测试法
重点:掌握环形复杂性的概念及基本路径测试法。
难点:掌握基本路径测试法的步骤及测试用例的编写。
主要内容:
使用基本路径测试方法,为以下程序段设计测试用例。
void Do (int X,int A,int B, int C)
{
while (X++<10)
(1):V(G)=区域数目=6
(2):V(G)=边界数目-节点数目+2=14-10+2=6
(3):V(G)=判断节点数目+1=5+1=6
4、测试用例:
测试用例
覆盖路径
X=11,A=1,B=1,C=1
1-----2-----10
X=1,A=2,B=1,C=1
1-----2-----3-----4-----9-----2
X=2,A=1,B=1,C=2
1-----2-----3-----5-----6-----9-----2
X=1,A=1,B=1,C=-1
1-----2-----3-----5-----6-----7-----9-----2
白盒测试-基本路径法

⽩盒测试-基本路径法⼀、定义基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执⾏路径集合,从⽽设计测试⽤例的⽅法。
⼆、基本路径测试的步骤1)画出程序控制流图(前提是已经有了程序流程图)2)计算环路复杂度3)导出独⽴路径(可执⾏路径)4)设计测试⽤例三、认识控制流图1、描述程序控制流的⼀种图⽰⽅法,控制流图中只有2种图形符号:结点:标有编号的圆圈表⽰控制流线或边或连接:以箭头表⽰2、各种语句结构的控制流图3、认识什么是区域区域:边和结点圈定的区域叫做区域。
封闭区域+开放区域4、如果判断中的条件表达式是由⼀个或多个逻辑运算符(OR, AND, NAND, NOR) 连接的复合条件表达式,则需要改为⼀系列只有单条件的嵌套的判断。
If(a>1 and b<2){…}If(a>1){If(b<2){…}}(a)流程图四、环形复杂度的计算有以下三种⽅法计算环形复杂度:a)流图中封闭区域的数量+1个开放区域=总的区域数=环形复杂度b)给定流图G的环形复杂度V(G),定义为V(G)=E-N+2,E是流图中边的数量,N是流图中结点的数量;c)给定流图G的环形复杂度V(G),定义为V(G)=P+1,P是流图G中判定结点的数量。
五、举例1)画出程序控制流图2)计算环形复杂度a)流图中封闭区域的数量+1个开放区域=总的区域数=环形复杂度3个封闭区域+1个开放区域=4b)给定流图G的环形复杂度V(G),定义为V(G)=E-N+2,E是流图中边的数量,N是流图中结点的数量;V(G)=E-N+2=11-9+2=4c)给定流图G的环形复杂度V(G),定义为V(G)=P+1,P是流图G中判定结点的数量。
V(G)=P+1=3+1=43)导出独⽴路径注:因为环形复杂度为4,所以有四条独⽴路径PATH1:1-11PATH2:1-2-3-4-5-10-1-11PATH3:1-2-3-6-7-9-10-1-11PATH4:1-2-3-6-8-9-10-1-114)设计测试⽤例(略)。
白盒测试基本路径法实训报告三角形

白盒测试基本路径法实训报告三角形本次实训我选择了使用白盒测试基本路径法对三角形程序进行测试。
1. 程序代码下面是被测试的三角形程序的代码:```#include <stdio.h>#include <stdlib.h>int triangle(int a, int b, int c){if (a <= 0 || b <= 0 || c <= 0) {return 0;}if (a + b <= c || b + c <= a || c + a <= b) {return 0;}if (a == b && b == c) {return 1;}if (a == b || b == c || c == a) {return 2;}}int main(){int a, b, c;printf("Please input the length of three sides: ");scanf("%d %d %d", &a, &b, &c);int t = triangle(a, b, c);if (t == 0) {printf("Not a triangle.");} else if (t == 1) {printf("Equilateral triangle.");} else if (t == 2) {printf("Isosceles triangle.");} else {printf("Scalene triangle.");}}```2. 基本路径设计为了得到程序的所有可能执行路径,我们首先需要构建其控制流程图。
下面是三角形程序的控制流程图: 我们可以通过该图来得到程序的基本路径:1. 1-2-3-142. 1-2-4-5-6-8-9-10-11-12-13-143. 1-2-4-5-6-7-8-9-10-11-12-13-143. 测试用例设计根据基本路径,我们需要设计测试用例来覆盖所有的基本路径。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
词结点。
8
步骤3:确定基本路径集合(即
1
独立路径集合)。于是可确定6
条独立的路径:
2
路径1:1-2-9-10-12
9
R4 3
路径2:1-2-9-11-12
路径3:1-2-3-9-10-12 路径4:1-2-3-4-5-8-2… 路径5:1-2-3-4-5-6-8-2… 路径6:1-2-3-4-5-6-7-8-2…
T 10ቤተ መጻሕፍቲ ባይዱ
average=sum/n1
12 返回
3)路径3(1-2-3-9-10-12) 的测试用例:满足条件2 ,不满足条件3,满足条 件9
输 入 多 于 50 个 有 效 分 数 , 即试图处理51个分数
期望结果:n1=50、且算出 正确的总分和平均分。
开始 1
i =1,n1=n2=0,sum=0
7
T
n1=n1+1,sum=sum+score[i]
8 i = i +1
F 11 average= – 1
9 n1>0
T 10
average=sum/n1
12 返回
步骤1:导出程序的流图。
开始 1
i =1,n1=n2=0,sum=0
F
2和3 Score[ i ]<>-1 AND n2<50
4
T
n2=n2+1
8
步骤2:确定环形复杂性度量V(G):
1
1)V(G)= 6 (个区域)
2
2)V(G)=E–N+2=16–12+2=6 其中E为流图中的边数,N为结点数
9
R4 3
; 3)V(G)=P+1=5+1=6
11 R5 10 12
4 5 R3
其中P为谓词结点的个数。在流 图中,结点2、3、5、6、9是谓
R6
R1 6 R2 7
7
T
n1=n1+1,sum=sum+score[i]
8 i = i +1
F 11
average= – 1
9 n1>0
T 10
average=sum/n1
12 返回
2 ) 路 径 2(1-2-9-1112)的测试用例:不 满足条件2,不满足 条件9
score[ 1 ]=– 1 ;
期望的结果:average = – 1 ,其他量保 持初值。
F
2和3 Score[ i ]<>-1 AND n2<50
4
T
n2=n2+1
F
5和6
Score[ i ]>0 AND score[i]<100
7
T
n1=n1+1,sum=sum+score[i]
8 i = i +1
F 11
average= – 1
9 n1>0
T 10
average=sum/n1
12 返回
开始 1
i =1,n1=n2=0,sum=0
F
2和3 Score[ i ]<>-1 AND n2<50
4
T
n2=n2+1
F
5和6
Score[ i ]>0 AND score[i]<100
7
T
n1=n1+1,sum=sum+score[i]
8 i = i +1
F 11
average= – 1
9 n1>0
基本路径法
案例2
下例程序流程图描述了最多输入50个值(以–1作为 输入结束标志),计算其中有效的学生分数的个数、总 分数和平均值。
开始 1
i =1,n1=n2=0,sum=0
F
2和3 Score[ i ]<>-1 AND n2<50
4
T
n2=n2+1
F
5和6 Score[ i ]>0 AND score[i]<100
11 R5 10 12 R6
4 5 R3
R1 6 R2 7
注: “…”表示后面剩下的路径是可
8
以选择的。原因在于存在循环结构
步骤4:为每一条独立路径 各设计一组测试用例, 以便强迫程序沿着该路 径至少执行一次。
1 ) 路 径 1(1-2-9-10-12) 的 测试用例:不满足条件2 ,满足条件9
score[1]=60; score[2]=–1
4 ) 路 径 4(1-2-3-4-5-82…) 的 测 试 用 例 : 满 足 条件2,满足条件3,不 满足条件5
score[1]=-0.5
;
score[2]=60
,
score[3]=-1 ;
期望结果:根据输入的有 效分数算出正确的分数 个 数 n1=1 、 总 分 sum=60 和平均分average=60。
T 10
average=sum/n1
12 返回
5 ) 路 径 5(1-2-3-4-5-68-2…)的测试用例:满 足条件2,满足条件3, 满足条件5,不满足条 件6
score[1]=101
score[2]=60,
score[3]=-1 ;
期望结果:根据输入的有 效分数算出正确的分数 个数n1=1、总分sum=60 和平均分average=60。
F
5和6
Score[ i ]>0 AND score[i]<100
7
T
n1=n1+1,sum=sum+score[i]
8 i = i +1
F 11
average= – 1
9 n1>0
T 10
average=sum/n1
12 返回
1
2
9
R4 3
11 R5 10 12 R6
4 5 R3
R1 6 R2 7
开始 1
i =1,n1=n2=0,sum=0
F
2和3 Score[ i ]<>-1 AND n2<50
4
T
n2=n2+1
F
5和6
Score[ i ]>0 AND score[i]<100
7
T
n1=n1+1,sum=sum+score[i]
8 i = i +1
F 11
average= – 1
9 n1>0
期望结果:根据输入的有 效分数算出正确的分数 个 数 n1=1 、 总 分 sum=60 和平均分average=60。
开始 1
i =1,n1=n2=0,sum=0
F
2和3 Score[ i ]<>-1 AND n2<50
4
T
n2=n2+1
F
5和6
Score[ i ]>0 AND score[i]<100
开始 1
i =1,n1=n2=0,sum=0
F
2和3 Score[ i ]<>-1 AND n2<50
4
T
n2=n2+1
F
5和6
Score[ i ]>0 AND score[i]<100
7
T
n1=n1+1,sum=sum+score[i]
8 i = i +1
F 11
average= – 1
9 n1>0
T 10
average=sum/n1
12 返回
6 ) 路 径 6(1-2-3-4-5-67-8-2…)的测试用例: 满足条件2,满足条件3 ,满足条件5,满足条 件6
score[1]=60
,
score[2]=60
;
score[3]=-1 ;
期望结果:根据输入的有 效分数算出正确的分数 个 数 n1=2 、 总 分 sum=120 和 平 均 分 average=60。