目的:练习软件测试中白盒测试方法 内容: - 测试如下程序段:
#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 |