资源描述
成绩
辽宁工程技术大学上机实验报告
课程名称
软件测试与评估
实验题目
基于覆盖测试技术
院系
软件学院
专业
软件工程
班级
软件13-9班
姓名
王朝晖
学号
1320010920
实验日期
2016.5.13
实验
目的
1.了解软件覆盖测试的相关知识。
2.能根据三角形案例分析问题。
3.掌握软件覆盖测试的基本方法。
4.针对案例,能够运用覆盖测试技术中的具体方法进行测试用例的设计。
实验
准备
1.计算机一台,有 c与c++程序设计学习与实验系统的软件。
2.了解至少一门程序设计语言,并能熟练应用。能够编写并运行有关实验的相关代码。
3.了解覆盖测试的基本方法。主要是判定覆盖。
4.了解测试用例的方法,并进行适当的测试用例。
实验
进度
本次共有 1 个练习,完成 1 个。
实验
内容
1.根据三角形问题进行编程,分为等腰三角形,等边三角形,普通三角形以及不能构成三角形。
2.对程序进行语句覆盖测试。
3.对程序进行判定覆盖测试。绘制出程序流程图,分支覆盖要求测试每个判定的结果。使得程序中的每个判定至少都获得一次真值和假值。即要使程序中的每个取真分支和取假分支至少均经历一次。
4.对程序进行分支条件测试
5.对程序进行分支条件组合测试
6.选用基于覆盖测试的方法对三角形问题设计测试用例。
实验
分析
一.实验步骤
1.打开c与c++程序系统平台,编写有关三角形问题的相关程序。
2.对程序进行语句覆盖测试。
3.对程序进行判定覆盖测试。
4.对程序进行分支条件测试。
5.对程序进行分支条件组合测试。
6. 进行用例设计。选择分支覆盖测试的方法进行测试。
二.程序分析
1.程序代码
1)#include<stdio.h>
2)main()
3){
4) int A,B,C;
5) printf("请输入三角形的三条边:");
6) scanf("%d %d %d",&A,&B,&C);
7) if((A>0&&B>0&&C>0)&&((A+B)>C&&(A+C)>B&&(B+C)>A))
8) {
9) if(A==B&&A==C)
10) printf("该三角形是等边三角形!\n");
11) else
12) if((A==B&&B!=C)||(B==C&&B!=A)||(A==C&&A!=B))
13) printf("该三角形是等腰三角形!\n");
14) else
15) printf("该三角形是普通三角形!\n");
16) }
17) else
18) {
19) printf("ERROR!\n");
20) return main();
21) }
22)}
2. 程序流程图
根据代码绘制程序流程图,各边编号为a,b,c,d,e,f。如图1。
开始
a+b>c&&b+c>a&&a+c>b
a=b&&b=c
a=b||b=c||a=c
Y
Y
N
N
等腰三角形
等边三角形
普通三角形
Y
N
结束
ERROR
a
b
c
d
f
e
图1 程序流程图
3.分析
程序主要是根据三个整数a,b,c,构成一个三角形判定三角形的类型为等边三角形、等腰三角形、普通三角形还是构成不了三角形。
要求输入的三个整数都是正数,三边都是大于等于1,小于等于100,且a+b>c,a+c>b,b+c>a,才能进行以后的判断。否则输出“ERROR!”,返回主程序。重新输入三个整数a,b,c。然后判断三角形的类型。如果a=b且a=c,输出“该三角形是等边三角形!”。如果a=b,b不等于c,或b=c,b不等于a,或a=c,a不等于b,输出“该三角形是等腰三角形!”。如果不是以上这两种情况,输出“该三角形是普通三角形!”。
三. 语句覆盖测试分析
运行若干测试用例,使被测试的程序的每一条可执行语句至少执行一次。根据控制流图得出测试用例。如表1。
表1 语句覆盖测试用例
测试用例
a
b
c
执行路径
预期结果
1
5
6
7
acf
普通三角形
2
5
5
6
ad
等腰三角形
3
5
5
5
ace
等边三角形
4
3
4
7
b
ERROR
四.判定测试覆盖分析
执行足够的测试用例,使得程序中每一个判定至少获得一次“真”值和“假”值,从而使得程序的每个分支都经历一次。
1.条件
条件1 1≤a≤100
条件2 1≤b≤100
条件3 1≤c≤100
条件4 a<b+ c
条件5 b<a+ c
条件6 c<a+ b
2.分析
如果输入值a、b、c不满足条件1、条件2和条件3 ,输出ERROR。
如果输入值a、b、c 满足条件1、条件2和条件3:
(1)如果不满足条件4、条件5和条件6中的一个,则程序输出为ERROR;
(2)如果三条边相等,则程序输出为“等边三角形”;
(3)如果恰好有两条边相等,则程序输出为等腰三角形;
(4)如果三条边都不相等,则程序输出为普通三角形。
3.根据以上分析及流程图得出测试用例,如表2。
表2 判定覆盖测试用例
测试
用例
a
b
c
a+b>c&&b+c>a&&a+c>b
a=b&&b=c
a=b||b=c||a=c
预期
结果
1
3
4
7
假
-
-
ERROR
2
5
5
5
真
真
真
等边三角形
3
5
5
6
真
假
-
等腰三角形
4
5
6
7
真
真
假
普通三角形
五.分支条件测试分析
设计足够的测试用例,运行被测程序,使程序中的每个判定的每个条件的所有可能值至少执行一次,并且每个可能的判定结果也至少执行一次,即要求各个判定的所有可能的条件取值组合至少执行一次。
根据流程图得出测试用例,如表3。
表3 分支条件测试用例
测试
用例
a
b
c
覆盖条件
a+b>c&&b+c>a&&a+c>b
a=b&&b=c
a=b||b=c||a=c
预期
结果
1
1
2
1
T1,T2,-T3
假
-
-
ERROR
2
2
1
1
T1,-T2,T3
假
-
-
ERROR
3
1
1
2
-T1,T2,T3
假
-
-
ERROR
4
5
5
5
T1,T2,T3,T4,T5,T6
真
真
真
等边三角形
5
5
5
6
T1,T2,T3,-T4,-T5
真
假
-
等腰三角形
6
5
6
7
T1,T2,T3,T4,T5,-T6
真
真
假
普通三角形
六.分支条件组合测试分析
设计的测试用例,需要将原子条件的所有true-false组合至少执行一遍。并且满足分支条件组合测试包括语句覆盖和分支覆盖。
根据流程图得出测试用例,如表4。
表4 分支条件组合测试分析
测试
用例
a
b
c
覆盖条件
a+b>c&&b+c>a&&a+c>b
a=b&&b=c
a=b||b=c||a=c
预期
结果
1
1
2
1
T1,T2,-T3
假
-
-
ERROR
2
2
1
1
T1,-T2,T3
假
-
-
ERROR
3
1
1
2
-T1,T2,T3
假
-
-
ERROR
4
6
6
6
T1,T2,T3,T4,T5,T6
真
真
真
等边三角形
5
5
5
6
T1,T2,T3,-T4,-T5
真
假
-
等腰三角形
6
5
6
7
T1,T2,T3,T4,T5,-T6
真
真
假
普通三角形
七. 测试用例截图
使用判定覆盖进行用例测试,参见表2。
1. 测试用例1,如图1。
图1 测试用例1
2. 测试用例2,如图2。
图2 测试用例2
3. 测试用例3,如图3。
图3 测试用例3
4. 测试用例4,如图4。
图4 测试用例4
心得
体会
本次实验是关于覆盖测试方面的知识。这方面的内容很少,主要靠自己的理解。在做实验之前,我复习了关于覆盖测试相关的内容,在做实验的时候更加熟练。有清晰的思路,使实验更简单。
在做语句覆盖的时候,觉得三角形问题没有语句覆盖,一直以为语句覆盖只能测试一次。如果测试一次,不管怎样都不能将所有的语句都覆盖到,通过进一步的更深入的查阅资料,才明白,可以进行多次测试使被测试的程序的每一条可执行语句至少执行一次。
判定覆盖和分支条件覆盖是很容易弄混的知识点。刚开始学习这两种覆盖的时候,我就很难分清。在实验之前复习之后,有了很深的印象。判定覆盖要求测试每个判定的结果,是IF,CASE语句中的所有可能。使得程序中的每个判定至少都获得一次真值和假值。即要使程序中的每个取真分支和取假分支至少均经历一次。在本次的实验中,只要测试三个IF语句就行。
分支条件测试是将IF,CASE这种语句的原子条件的所有真分支和取假分支至少均经历一次。一个条件包含多个原子条件。就是将分支语句分解。较判定覆盖较麻烦,但测试的更加细致,具体。分支条件组合测试和分支条件测试差不多。只是在分支条件测试的基础上,加入了判定测试。条件组合只针对同一个判断语句存在多个条件的情况,让这些条件的取值进行笛卡尔乘积组合。 不同的判断语句内的条件取值之间无需组合。 对于但条件的判断语句,只需要满足自己的所有取值即可。
在以后的学习中,我会更加仔细认真。在做实验之前,一定要做好复习,这次在实验之前准备的很充分,实验做的也很顺利。在做实验的时候发现不懂的不会的,不太清楚的,不能就这样过去了。要把模糊的知识点弄清楚,在做实验。这样越拖越多,越欠越多,对自己的学习是一种敷衍,对以后的发展造成了阻碍。及时进行总结归纳,将相似的问题放在一起。找出共性。找出不同的地方,方便记忆。避免弄混知识点。相信在以后的学习中,我能更好的学好每一科,为以后步入社会打下坚实的基础。
展开阅读全文