基于代码测试(软件静态测试)
PAGE \* MERGEFORMAT
PAGE \* MERGEFORMAT 10
成绩
辽宁工程技术大学上机实验报告
课程名称
软件测试与评估
实验题目
基于代码的测试技术
院系
软件学院
专业
软件工程
班级
软件13-9班
姓名
王朝晖
学号
1320010920
实验日期
2016.5.12
实验
目的
1.初步了解软件测试的基本知识。
2.应用基本知识进行简单的测试。
3.掌握代码测试技术的基本方法。
4.针对案例,能够运用代码测试技术中的具体方法进行测试用例的设计。
实验
准备
1.计算机一台,有 c与c++程序设计学习与实验系统的软件。
2.了解至少一门程序设计语言,并能熟练应用。能够编写并运行有关实验的相关代码。
3.了解程序数据流分析的方法并能应用方法分析程序。
4.了解程序控制流分析的方法并能应用。
实验
进度
本次共有 1 个练习,完成 1 个。
实验
内容
1.根据三角形问题进行编程,分为等腰三角形,等边三角形,普通三角形以及不能构成三角形。
2.对程序进行数据流分析。
3.画出程序的控制流图。计算程序的环形复杂度,导出程序基本路径集中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界;
4.导出基本路径集,确定程序的独立路径;
5.根据独立路径,设计测试用例的输入数据和预期输出。
实验
分析
一.实验步骤
1.打开c与c++程序设计学习与实验系统平台,编写有关三角形问题的相关程序。
2.对程序进行数据流分析。
3. 对程序进行程序控制流分析。
4.计算环形复杂度。
5. 给出程序的独立路径集合。
6. 进行用例设计。
7.总结归纳。
二.程序分析
1.程序代码
1)#include
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,构成一个三角形判定三角形的类型为等边三角形、等腰三角形、普通三角形还是构成不了三角形。
要求输入的三个整数都是正数且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,输出“该三角形是等腰三角形!”。如果不是以上这两种情况,输出“该三角形是普通三角形!”。
数据流分析
数据流测试是以静态测试技术来发现缺陷的手段与方法。数据流测试是关注变量的赋值与使用位置的结构性测试方法。
定义du-path。如果路径集合中的某个路径,定义两个节点,分别为该路径的起始节点和该路径的终止节点,该路径就为定义-使用路径。
定义dc-path,如果某个定义-使用路径,除了起始节点之外没有其他定义节点,则该路径有定义-清除路径。
数据流覆盖指标层次结构图描述数据“定义-使用”对,找出所有变量的定义-使用路径,考察测试用例对这些路径的覆盖程度,就可作为衡量测试效果的分析参考。
由代码可得出节点4为定义a,b,c。节点7,9,12为使用a,b,c。根据数据流测试数据流覆盖指标,拉普斯-韦约克层次结构图来描述程序的数据“定义-使用”对,并找出所有变量的定义-使用路径,可得到程序图G(P),如图1。使用路径du-path与清除路径dc-path,定义/使用节点和定义/使用路径,如表1,表2。
1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
图1 G(P)
表1 定义/使用路径
变量
路径(开始、结束)节点
是定义清除吗
a
4,7
4,9
4,12
否
否
是
b
4,7
4,9
4,12
否
否
是
c
4,7
4,9
4,12