问答题 已知C源程序如下:
/* 分数运算fsys.c */
include <stdio.h>
int main()
{
long int a, b, c, d, i, x, y, z;
char op;
printf("两分数b/a, d/c作+、-、*、/四则运算,结果为分数。/n");
printf(请输入分数运算式: b/a op d/c /n");
scanf("% ld/% ld% c% ld/ % ld", &b, &a, &op, &d, &c);
if(a==0 || c==0) {
printf("分母为0,输入错误! /n");
return(0);
}
if(op=='+') {
y=b*c+d*a;
x=a*c; /* 运算结果均为y/x */
}
if(op=="-') {
y=b*c-d*a;
x=a*c;
}
if(op=='*') {
y=b*c;
x=a *d;
}
z=x;
if(x>y)z=y;
i=z;
while(i>1) {
if(x % i==0 && y % i==0) {
x=x/i;
y=y/i;
continue;
}
i--;
}
printf("% ld/% ld% c% ld/% ld=% ld/% ld./n", b, a, op, d, c, y, x);
return 0;
}
问答题 画出程序中main函数的控制流程图。
【正确答案】main函数的控制流程图: [*]
【答案解析】
问答题 设计一组测试用例,是该程序所有函数的语句覆盖率和分支覆盖率均能达到100%。如果认为该程序的语句覆盖率或分支覆盖率无法达到100%,需说明为什么。
【正确答案】测试用例 用例1:输入:2/0+3/1;输出:分母为0,输出错误!返回; 用例1:输入:2/1+3/0;输出:分母为0,输出错误!返回; 用例1:输入:2/1+3/1;输出:2/1+3/1=5/1;正常;返回; 用例1:输入:3/1-2/1;输出:3/1-2/1=1/1;正常;返回; 用例1:输入:3/1*2/1;输出:2/1*3/1=6/1;正常;返回; 用例1:输入:3/1/2/1;输出:3/1/2/1=3/2;正常;返回; 用例1:输入:1/5+3/5;输出:1/5+3/5=4/5;正常;返回; 用例1:输入:2/8+6/8;输出:2/8+6/8=1/1;正常;返回; 结论:利用上面的测试用例,即可使该程序的语句覆盖率或分支覆盖率达到100%。
【答案解析】
问答题 已知张明在功能区域“我的安全区/导入和导出”下发现一个软件问题,下表中时该软件问题的操作历史信息,请依据QESuite Web Version 1.0的软件问题生命周期定义和题中所述的相关人员分配和测试版本信息,假设下表中“执行操作”的信息均正确,请找出表中的错误,并说明理由。
功能区域 功能区域 测试人员 开发人员
安装 李鸣 郁离
我的安全区 本地安全区 李鸣 郑军
导入与导出 李鸣 郑军
…… …… ……
服务端安全区 张明 陈剑锋
性能 并发传输响应能力 李晓军 张然
…… …… …… ……
  已知张明在功能区域“我的安全区/导入和导出”下发现一个软件问题,下表中时该软件问题的操作历史信息,请依据QESuite Web Version 1.0的软件问题生命周期定义和题中所述的相关人员分配和测试版本信息,假设下表中“执行操作”的信息均正确,请找出表中的错误,并说明理由。
  QESuite Web Version 1.0中,已知某安全文档管理系统测试项目的部分信息如下:
  ● 在测试过程中先后产生4个测试版本,按日期排序分别为SEDM1.0_101009,SEDM1.0_101025,SEDM1.0_101103,SEDM1.0_101106。
  ● 功能分类视图中部分待测区域及人员分配定义如下表所示:
操作序号 操作者 执行操作 操作后的问题状态 测试版本
1 张明 新建 打开 SEDM1.0_101009
2 李晓军 校验/再现 打开/再现 SEDM1.0_101025
3 郑军 修复/修复 检验/修复 SEDM1.0_101103
4 李鸣 验证/同意 解决/不修复 SEDM1.0_101103
5 李鸣 重新打开 待验/修复 SEDM1.0_101025
【正确答案】
操作
序号
操作者 执行
操作
操作后的
问题状态
测试版本
1 张明 新建 新建 SEDM1.0_101009
2 李鸣 校验/再现 打开/再现 SEDM1.0_101025
3 郑军 修复/修复 检验/修复 SEDM1.0_101103
4 李鸣 验证/同意 解决/修复 SEDM1.0_101106
5 李鸣 重新打开 打开/再现 SEDM1.0_101106
理由如下:
(1)题中说产生4个版本,应该把4个版本都考虑进去。还有最后一个要用最新的版本进行测试。如果用“解决”以前的版本进行测试,并不能反映真实的情况。用最新的版本进行测试,有问题的话,才修改状态为“打开/再现”,证明这个错误并没有真正解决。
(2)操作序号1中一般测试人员只能提交新的软件问题入库,并将其状态置为“新建”,该行“操作后问题状态”应为“新建”。
(3)操作序号4中测试人员查询状态为“待验”的软件问题,验证是否修复,如果已修复,则置软件问题状态为“解决”,如果没有解决则置状态为“打开”,该行“操作后的问题状态”应为“解决/修复”。
(4)操作序号5中在以后的测试版本中,如果该问题重新出现,测试人员应该重新打开此问题,并将问题状态更改为“打开/再现”。
【答案解析】