一、实验目的
1、掌握控制流图,独立路径,圈复杂度,程序基本路径集的概念。
2、掌握McCabe程序基本路径集确定方法。
3、掌握基本路径集测试法。
二、实验任务
程序void score_processing(float score[],int length)的功能说明如下:程序统计数组score前10个元素中有效成绩([0,100]内为有效成绩)的个数、总和及平均值,并输出。参数说明:数组score内按顺序存放着n个学生成绩(n<=length),且以-1作为结束标志,length为数组的长度且length〉10。
试用基本路径集测试法测试该程序,撰写实验报告。
三、实验步骤
1、画出程序的控制流图。
程序流程图
控制流图
2、计算流图G的圈复杂度V(G)。
控制流图中共涉及:4、6、7、4和4、6、8、9、4两条封闭路径,所以环路复杂度V(G)=2+1=3;
3、确定只包含独立路径的基本路径集。
该程序涉及的独立路径是:
- 1、2、3、10
- 1、2、3、4、6、7、4、5、10
- 1、2、3、4、6、8、9、4、5、10
4、根据上面的独立路径,设计测试用例,得到测试用例表(有效成绩个数只计算前10个)。
测试用例ID | score[] | 有效成绩个数 | 总和 | 平均值 |
T1 | 90,65,70,60,87,-1 | |||
T2 | 89,65,78,67,98,62,83,95,97,69,-1 | 10 | 803.00 | 80.30 |
T3 | 68,97,63,75,94,25,69,73,76,84,87,92,-1 | 10 | 724.00 | 72.40 |
5、执行测试,填写软件缺陷报告。
四、测试代码
#include <stdio.h>
void score_processing(float score[], int length) {
int count = 0;
float sum = 0.0;
float average = 0.0;
// 只处理前10个元素或直到遇到-1
for (int i = 0; i < length && i < 10 && score[i] != -1; ++i) {
if (score[i] >= 0 && score[i] <= 100) {
count++;
sum += score[i];
}
}
// 如果至少有一个有效成绩,则计算平均值
if (count > 0) {
average = sum / count;
}
// 输出结果
printf("有效成绩个数 = %d\n", count);
printf("总和 = %.2f\n", sum);
if (count > 0) {
printf("平均值 = %.2f\n", average);
} else {
printf("没有有效成绩\n");
}
}
int main() {
// 测试用例数组
float score[1001];
int i,length;
// 输入数组长度
printf("请输入数组长度:");
scanf("%d",&length);
if(length<=10){
printf("数组长度不足!");
return 0;
}else{
printf("请输入相应分数:");
for(i=0;i<length;i++){
scanf("%f",&score[i]);
}
score_processing(score,length);
}
return 0;
}
五、测试缺陷报告
测试模块: | 程序统计数组 | 开 发 者: | XXX |
测 试 员: | XXX | 测试日期: | 2024.5.22 |
软件缺陷列表 | |||
缺陷ID | 缺陷详细信息 | ||
BUG1 | 无 | ||
BUG2 | 无 | ||
BUG3 | 无 | ||
BUG4 | 无 |