四级软件测试工程师-4
(总分71, 做题时间90分钟)
一、选择题
1. 
以下关于软件回归测试的说法中错误的是______。
A 软件变更后,应对软件变更部分的正确性和对变更需求的符合性进行测试
B 软件变更后,首先应对变更的软件单元进行测试,然后再进行其他相关的测试
C 软件变更后,不必再对软件原有正确的功能、性能和其他规定的要求进行测试
D 对具体的软件,可以根据软件测试合同及软件的重要性、完整性级别对回归测试内容进行剪裁
2. 
在理想情况下,只要软件发生了变更,就要对其进行______。
A 验证测试
B 回归测试
C 确认测试
D 验收测试
3. 
以下关于面向对象软件测试的说法中,正确的是______。
A 不需要对抽象类进行单元测试
B 等价类划分测试是一种类层次的测试技术
C 不变式边界测试是一种类层次的测试技术
D 测试动态绑定是类树测试的唯一目标
4. 
压力测试(Stress Testing)又称强度测试,其目标是______。
A 测试各种资源在超负荷的情况下的运行情况
B 检测系统可以处理目标内确定的数据容量
C 度量系统的性能和预先定义的目标有多大差距
D 验证系统从软件或者硬件失效中恢复的能力
5. 
关于逻辑覆盖,说法错误的是
A DDP覆盖是判定覆盖的一个变体
B 满足条件覆盖一定也满足判定覆盖
C 指令块覆盖属于语句覆盖
D 若判定覆盖率迭100%,则语句覆盖率一定也是100%
6. 
极限编程中,完成开发任务的标志是 ______。
A 通过的单元测试
B 编码完成
C 测试用例设计完成
D 通过验收测试
7. 
程序流程图如下图所示,采用路径覆盖法进行测试,则至少需要几个测试用例可以覆盖所有可能的路径______。
A 24个
B 12个
C 6个
D 48个
8. 
下列有关软件质量的叙述中,错误的是______。
A 软件质量不仅包括软件产品的质量,还包括软件过程的质量
B 明确的软件质量属性是指在合同或行业标准中规定必须实现的质量要求
C 隐含的软件质量属性在合同或行业标准中没有规定,因此在产品开发时不必专门考虑?
D 软件的功能和性能必须结合在一起考虑
9. 
下列关于面向对象集成测试的说法中,正确的是______。
A 大突击集成是面向对象集成测试最常用且最有效的方法
B 自底向上集成和自顶向下集成都需要为集成测试开发大量代码
C 协作集成在任何情况下都优于自底向上集成和自顶向下集成
D 高频集成是以自底向上集成为基础,利用冒烟测试进行的集成测试
10. 
下列关于测试方法的叙述中不正确的是______。
A 从某种角度上讲,白盒测试与黑盒测试都属于动态测试
B 功能测试属于黑盒测试
C 对功能的测试通常是要考虑程序的内部结构的
D 结构测试属于白盒测试
11. 
关于软件可靠性测试的目的,下列说法错误的是______。
A 通过受控的软件测试过程来实现
B 预测软件在实际运行中的可靠性
C 不通过测试揭示该软件缺陷
D 通过修改缺陷来提高软件的可靠性
12. 
下列关于测试方法,说法正确的是______。
A 白盒测试不同于黑盒测试之处是它可以减少测试用例数量
B 覆盖所有独立路径就能够覆盖所有分支
C 在单元测试中不使用黑盒测试技术
D 满足分支覆盖就满足条件覆盖和语句覆盖
13. 
以下哪一项属于易用性测试关注的范畴
A 软件使用的图标是否能准确反映相应的功能
B 软件是否具有良好的性能
C 软件是否能够在多种操作系统环境下运行
D 软件提供的功能是否丰富
14. 
GUI是一个分层的图形化的软件前端,下面不属于GUI系统的层次是______。
A 数据层
B 界面层
C 接口层
D 功能层
15. 
关于软件性能测试的指标,下列说法不正确的是______。
A 系统的响应时间通常是指该系统所有功能的平均响应时间或者所有功能的最大响应时间
B 响应时间是一个合理且准确的性能指标,其绝对值可以直接反映软件性能的高低
C 对于无并发的应用系统而言,吞吐量与响应时间成严格的反比关系
D 吞吐量不能无限的增大,关键原因在于资源利用率不能无限的提高
16. 
下面面向对象程序单元测试中,模态类测试是基于 ______ 图生成测试用例。
A 用例图
B 顺序图
C 协作图
D 状态转换图
17. 
在黑盒测试中,着重检查输入条件的组合是______。
A 等价类划分法
B 边界值分析法
C 错误推测法
D 因果图法
18. 
软件可靠性的研究很大程度借鉴了硬件可靠性的研究,但二者还是有很多区别,主要体现在
A 软件设计出来后,每份拷贝都完全一样,而硬件设计出来后,每个按照设计生产的都不可能完全相同
B 软件是纯逻辑产品,内部逻辑复杂度高,而硬件的内部逻辑相对简单
C 软件版本更新很频繁,但硬件版本更新通常很慢
D 以上全部
19. 
硬件因素和软件因素的综合是 ______。
A 数据库环境
B 接口环境
C 网络环境
D 社会物理环境
20. 
一般来说,大多数软件缺陷源于软件开发项目的______阶段。
A 软件测试
B 程序编写和调试
C 需求和设计
D 加班工作期间
二、论述题
1. 
已知C源程序如下:
/*Input today"s date,output tomorrow"s date * /
/* version 2 * /
#include<stdio. h>
struct ydate
{ int day; int month; int year;};
int leap(struct ydate d)
{ if((d. year%4==0&&d. year%100 ! =0)||(d. year%400==0))
return 1;
else
return 0;
}
int numdays(struct ydate d)
{ int day;
static int daytab[]=
{31,28,31,30,31,30,3l,31,30,31,30,31};
if(1eap(d)&&d. month==2)
day=29;
else
day=daytabEd. month-1];
return day;
}
int main(void)
{ struct ydate today,tomorrow;printf("format of date is:year,month,day输入的年、月、日之间应用逗号隔开\n);
printf(" today is:");
scanf(“%d,%d.%",&today.year,&today.month,&today.day);
while(0>=today. year
|| today. year>65535||0>=today. month||today. month>12)||
0>=today. day||today. day>numdays(today))
{ printf("input date error!reenter the day!\n");
printf(" today is:");
scanf("%d,%d,%d",&today. year,&today.month,&today. day);
}
if(today. day!=numdays(today))
{tomorrow. year=today. year;
tomorrow. month=today. month;
tomorrow. day=today. day+1;
}
else if(today.month==12)
{tomorrow. year=today. year+1;
tomorrow. month=1;
tomorrow. day=1;
}
else
{tomorrow. year=today. year;
tomorrow. month=today. month+1:
tomorrow.day=1;
}
printf("tomorrow is:%d,%d,%d\n\n",
tomorrow. year,tomorrow. month,tomorrow. day);
}
(1) 画出程序中所有函数的控制流程图;
(2) 设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖率均能达到100%。如果认为该程序的语句或分支覆盖率无法达到100%,需说明为什么。
以下是班级成绩处理平台的程序流程图,请仔细阅读程序并完成要求。
该平台允许最多输入100个学生的成绩,以-1作为输入结束标志。N2存放输入的学生成绩个数,NI存放输入成绩中有效成绩的个数,sum存放成绩总和。初始化N2=N1=0,sum=0。计算其中有效的学生分数的个数、总分数和平均值。请针对该程序流程图进行基本路径覆盖测试用例设计。
2. 
导出过程的控制流图。
3. 
确定基本测试路径集合。
4. 
设计满足基本路径覆盖的测试用例。
答题卡