目的:练习软件测试中白盒测试方法 内容:
- 测试如下程序段:
#include <stdio.h>
int main() {
int i = 1, n1 = 0, n2 = 0;
float sum = 0.0;
float average;
float score[100];
printf("请输入分数(输入-1结束,最多输入50个分数):\n");
while (n2 < 50) {
printf("请输入第%d个分数:", i);
scanf("%f", &score[i]); // 读取用户输入的分数
if (score[i] == -1) {
break; // 如果输入-1,退出循环
}
n2 = n2 + 1;
if (score[i] > 0 && score[i] <= 100) { // 检查分数是否在有效范围内
n1 = n1 + 1;
sum = sum + score[i];
} else {
printf("无效的分数,已忽略。\n");
}
i = i + 1;
}
if (n1 > 0) {
average = sum / n1;
} else {
average = -1; // 如果没有有效分数,平均值设为-1
}
printf("n1=%d, sum=%.2f, average=%.2f\n", n1, sum, average);
return 0;
} 要求:①画出这段代码的程序流程图和控制流程图;②计算环路复杂度;③列出独立路径;④设计测试用例。 步骤: 步骤 1: 画出程序流程图和控制流程图 1.1程序流程图:  1.2控制流程图  步骤 2: 计算环路复杂度 V(G) = E - N + 2=4 步骤 3: 列出独立路径
- 初始化 -> 循环条件(不满足)-> 计算平均值(n1 为 0)-> 输出 -> 结束
- 初始化 -> 循环条件(满足)-> 循环体(score[i] 无效)-> ... -> 循环条件(不满足)-> 计算平均值(n1 为 0)-> 输出 -> 结束
- 初始化 -> 循环条件(满足)-> 循环体(score[i] 有效)-> ... -> 循环条件(不满足)-> 计算平均值(n1 不为 0)-> 输出 -> 结束
- 初始化 -> 循环条件(满足)-> 循环体(score[i] 始终有效)-> ... -> 循环条件(因为 n2 达到 50)-> 计算平均值(n1 不为 0)-> 输出 -> 结束
步骤 4: 设计测试用例 基于上述独立路径,我们可以设计以下测试用例: 测试用例 1:空数组(score 中所有元素都为初始值或未定义) 预期输出:n1=0, sum=0.000000, average=-1.000000 测试用例 2:数组中仅有一个无效分数(例如 -2 或 101) 预期输出:n1=0, sum=0.000000, average=-1.000000 测试用例 3:数组中有多个有效分数(例如 80, 90, 60)但总数少于 50 预期输出:n1=实际有效分数数量, sum=分数总和, average=分数平均值 测试用例 4:数组中有 50 个有效分数,然后一个无效分数(例如 80, ..., 80 |