一、实验目的
1、掌握控制流图,独立路径,圈复杂度,程序基本路径集的概念。
2、掌握McCabe程序基本路径集确定方法。
3、掌握基本路径集测试法。
二、实验任务
以下三个任务、至少完成两个
1、程序void score_processing(float score[],int length)的功能说明如下:程序统计数组score前10个元素中有效成绩([0,100]内为有效成绩)的个数、总和及平均值,并输出。参数说明:数组score内按顺序存放着n个学生成绩(n<=length),且以-1作为结束标志,length为数组的长度且length〉10。
试用基本路径集测试法测试该程序,撰写实验报告。
实验步骤:
1)画出程序的控制流图。
程序流程图 控制流程图
2)计算流图G的圈复杂度V(G)。
V(G)= 3
3)确定只包含独立路径的基本路径集。
(1)①②③④⑥③⑦
(2)①②③④⑤⑥③⑦
4)根据上面的独立路径,设计测试用例,得到测试用例表。
测试用例ID | 测试用例 | 预期输出 | 覆盖路径 | ||
number | sum | avg | |||
T1 | 100,80,-2,89,72,60,44,81,64,77,86,97 | 9 | 667.00 | 74.11 | (1) |
T2 | 3,99,59,80,72,66,94,61,75,84,103,93 | 10 | 693.00 | 69.30 | (2) |
5)执行测试,填写软件缺陷报告。(软件缺陷报告格式同实验2)
测试过程:
软件缺陷报告:
测试模块: | 成绩统计 | 开 发 者: | 阿华 |
测 试 员: | 阿华 | 测试日期: | 2024.5.22 |
软件缺陷列表 | |||
缺陷ID | 缺陷详细信息 | ||
BUG1 | 无 | ||
BUG2 | 无 |
测试代码:
#include <stdio.h>
void score_processing(float score[],int length){
int number = 0;
float sum = 0;
float avg = 0;
for( int i = 0;i < 10;i ++){
if(score[i] >= 0 && score[i] <= 100){
sum = sum + score[i];
number++;
}
}
avg = sum/number;
printf("有效个数:%d\n",number);
printf("总分:%.2f\n",sum);
printf("平均分:%.2f\n",avg);
}
int main(){
int length=12;
float temp = 0;
float score[12];
printf("请依次输入12个成绩:\n");
for(int j = 0;j < length;j++){
scanf("%f",&temp);
score[j] = temp;
}
score_processing(score,length);
return 0;
}
2、程序int binsearch(int array[],int length,int key)实现折半查找的功能。数组array元素按升序排列,length为数组array的长度,key为要查找的值。
试用基本路径集测试法测试该程序,撰写实验报告。
实验步骤:同上。
3、对三角问题运用基本路径集测试法设计测试用例,并执行测试,撰写实验报告。
实验步骤:
1)画出程序的控制流图。
流程图 控制流图
2)计算流图G的圈复杂度V(G)。
V(G) = 5
3)确定只包含独立路径的基本路径集。
(1)①③⑪
(2)①②④⑤⑪
(3)①②④⑥⑦⑪
(4)①②④⑥⑧⑨⑪
(5)①②④⑥⑧⑩⑪
4)根据上面的独立路径,设计测试用例,得到测试用例表。
测试用例ID | 测试用例 | 预期输出 | 覆盖路径 | ||
a | b | c | |||
T1 | -1 | 55 | 200 | 输入不合法 | (1) |
T2 | 3 | 197 | 186 | 不构成三角形 | (2) |
T3 | 101 | 89 | 123 | 普通三角形 | (3) |
T4 | 99 | 100 | 99 | 等腰三角形 | (4) |
T5 | 200 | 200 | 200 | 等边三角形 | (5) |
5)执行测试,填写软件缺陷报告。
测试过程:
软件缺陷报告:
测试模块: | 三角形 | 开 发 者: | 阿华 |
测 试 员: | 阿华 | 测试日期: | 2024.5.22 |
软件缺陷列表 | |||
缺陷ID | 缺陷详细信息 | ||
BUG1 | 无 | ||
BUG2 | 无 |
测试代码:
#include <stdio.h>
void triangle( int a, int b, int c );
int main(void)
{
int x,y,z;
printf("please input (length):\n");
printf("a:");
scanf("%d",&x);
printf("b:");
scanf("%d",&y);
printf("c:");
scanf("%d",&z);
triangle( x,y,z );//判断三角形类型
}
void triangle( int a, int b, int c )
{
int temp;
if( a > b )
{//如果a比较b大,就相互转换
temp = a;
a = b;
b = temp;
}
if( a > c )
{//如果a比较c大,就相互调换
temp = a;
a = c;
c = temp;
}
if( b > c )
{//如果b比较c大,就相互调换
temp = b;
b = c;
c = temp;
}
if( a<0||b<0||c<0||a>200||b>200||c>200 )
{
printf("输入不合法\n");
return ;
}
else
{
if( a+b <= c )
{
printf("不构成三角形!!\n");
return ;
}
else
{
if( a == b || b == c)
{
if( a != c )
printf("等腰三角\n");
else
printf("等边三角\n");
}
else
{
printf("普通三角形\n");
}
}
}
}