一、选择题
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。 1、以下叙述中不属于软件产品质量要求的是 A) 应满足客户的功能需求和性能要求
B) 应具备一定的可扩展性和灵活性,以适应需求的变化 C) 应能够有效地处理例外或异常情况 D) 应保证数据库的完整性和安全性
2、以下有关软件缺陷产生的原因中属于软件技术问题的是 A) 系统需求分析时对客户的需求理解不清楚 B) 文档错误、内容不正确或拼写错误 C) 系统结构不合理、算法不正确
D) 不同阶段的开发人员对需求的理解不一致
3、在软件测试的生命周期模型中建立测试脚本任务的阶段应是 A) 制定测试计划 B) 测试设计 C) 实施测试 D) 评估测试
4、软件设计一般包括外部设计和内部设计。外部设计通常是指 A) 用户界面设计 B) 结构设计 C) 数据设计 D) 逻辑设计
5、在做静态错误分析时进行浮点数计算误差的检查应属于 A) 类型和单位分析 B) 表达式分析 C) 引用分析 D) 接口分析
6、如果一个小程序中有一个由8个两分支判断组成的连锁分支结构,如图
采用正交实验设计法可导出的最少测试路径数为 A) 28 B) 16 C) 9 D) 8
7、如果执行下面的C程序,并做了成功的存储分配: char * pBuf=NULL;
pBuf=(char*)malloc(100); if(pBuf==NULL){
printf(\"Not Enough Memory\\n\"); return 1; }
则此段程序测试的指令块(即顺序执行的一段指令)覆盖率是 A) 100% B) 60%
C) 50%D) 40%
8、在执行单元测试时最有用的测试方法是 A) 基本路径覆盖 B) 事件序列走查 C) 事件响应驱动 D) 判定表
9、MM—路径集成是一种基于消息的路径集成方法,其中MM—路径是指 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、以下关于软件可靠性测试的说法中,错误的是
A) 软件可靠性测试能有效地减少软件在恶意使用下出现崩溃的次数 B) 定义软件运行剖面是软件可靠性测试的重要步骤 C) 软件可靠性测试通常需要基于软件可靠性预测模型 D) 软件可靠性测试不能沿用硬件可靠性测试的方法
15、以下关于面向对象程序测试的说法中,正确的是
A) 面向对象程序与传统程序的黑盒测试方法完全相同 B) 面向对象程序与传统程序的白盒测试方法有明显区别
C) 单个类树的测试不属于面向对象程序单元测试关注的范畴
D) 对一个类的每个成员方法都进行充分的测试就完成了对该类充分的测试
16、以下关于面向对象程序测试的说法中,错误的是
A) 方法名的重载是面向对象软件测试区别于传统程序测试的一个根本因素 B) 展平测试是测试一棵继承树叶结点类的一种策略
C) 基于判定表的测试可以用于面向对象程序的单元测试 D) 等价类划分测试能用于方法层次的测试
17、以下关于面向对象软件测试的说法中,错误的是 A) 测试动态绑定是类树测试的一个重要目标
B) 面向对象软件协作集成测试是指对一个类的多个实例间协作进行的测试 C) 面向对象软件的自底向上集成测试需要为集成测试开发相应代码 D) 面向对象软件的单元测试需要考虑对一个类中单个方法的测试
18、以下关于Web应用软件测试的说法中,正确的是 A) Web应用软件测试通常不用考虑安全性测试 B) 与传统软件相比,Web应用软件测试更简单
C) 表单测试是Web应用软件功能测试的一项重要内容
D) 测试是否存在无效链接是Web应用软件安全性测试一项重要内容
19、以下哪一项是软件易用性测试关注的内容
A) 杀毒软件在清除病毒时是否会破坏办公软件的文档 B) 软件提供的功能是否丰富
C) 软件是否支持用户根据自己的需要进行定制 D) 软件是否能在多种操作系统下运行
20、以下关于软件兼容性测试的说法中,正确的是 A) 软件兼容性测试不关注软件与硬件间的兼容性 B) 等价类划分测试是软件兼容性测试的主要手段 C) 极限测试是一种软件兼容性测试
D) 排版软件是否可以打开该软件以前版本保存的文件属于软件兼容性测试关注的范畴
21、以下有关测试用例设计与开发的说法中,错误的是 A) 白盒测试的测试用例设计不必考虑软件功能
B) 软件测试用例设计要关注测试用例设计的测试需求覆盖率 C) 自动化测试的测试脚本开发属于测试用例设计工作的一部分 D) 测试用例设计的主要依据是测试计划中的测试需求定义
22、以下有关测试环境的说法中,错误的是
A) 在实际的软件测试中,软件测试环境可分为主测试环境和辅测试环境 B) 软件测试只能在软件真实运行环境下开展
C) 在测试环境准备中,无法获取真实数据时,可使用仿真数据 D) 测试工具的准备是属于测试环境准备的一项工作
23、以下有关测试自动化的说法中,错误的是
A) 在自动化测试基本结构中,数据库服务器用于存储测试用例和测试结果 B) 自动化测试过程中,除选择测试用例和分析失败原因外,其他过程都是自动化开展的
C) 结构化脚本的优点是健壮性更好,可以对一些容易导致测试失败的特殊情况进行处理
D) 共享脚本的维护开销高于线性脚本
24、下列有关软件集成测试的说法中,错误的是
A) 软件集成测试一般由软件供方组织并实施,测试人员与开发人员应相对独立
B) 软件集成测试可委托第三方进行
C) 软件集成测试的技术依据是软件需求文档
D) 进入集成测试要求待集成的软件单元已通过单元测试
25、下列有关软件回归测试的说法中,错误的是
A) 回归测试的对象包括:在软件单元测试、集成测试、软件配置项测试和系统测试中未通过的软件
B) 回归测试首先应对原来未变更的软件单元进行测试,然后再对变更的软件单元进行测试
C) 回归测试的内容包括原软件测试做过的测试内容、修改原软件测试做过的测试内容以及在此基础上新增的测试内容
D) 回归测试可根据被测软件的具体情况对软件的测试内容进行剪裁
二、论述题
一个简化的高铁售票系统的规格说明如下:
●乘客未使用系统前系统处于“等待”状态,屏幕显示沿线各车站的站名。 ●乘客选择了到达站并按下[购票]键之后,系统进入“待付款”状态,屏幕显示票价,等待乘客付款。
●如果乘客在限时之内付款,系统进入“出票”状态,打印并吐出相应车票,同时找回余额,然后系统重置回到“等待”状态。
●如果乘客在限时之内未付款之前按下[取消]键取消购票,系统进入“等待”状态。
●如果乘客在限时之内没有付款,系统进入“超时”状态,显示“超时”“取消购票”等信息,然后系统重置回到“等待”状态。
●如果乘客在拿到车票后要求退票,在“等待”状态下按下[退票]键,系统进入“查证”状态。
●如果查证成功,系统进入“退票”状态。回收车票,退回票款,然后系统重置回到“等待”状态;如果查证不成功,系统进入“警告”状态,屏幕显示“车票无效”信息,然后系统重置回到“等待”状态。
1、请根据上述规格说明,画出相应的状态转换图。
2、计算该状态转换图的圈复杂度并给出基本测试路径。
2、下表是某一个软件问题的操作历史信息,请依据QESuite Web Version 1.0的软件问题生命周期定义,填写表中空缺的10项操作历史信息。
操作序号 操作者 执行操作 操作后的问题状态 测试版本 1 赵艳菲 新建 新建 测试版本1 2 李 鑫 打开/再现 测试版本1 3 陈 鹏 待验/修复 4 验证/不同意 测试版本2 5 修复/修复 待验/修复 6 李 鑫 验证/同意 解决/修复 测试版本3 7 李 鑫 回归测试 8 李 鑫 解决/通过回归测试 测试版本4
已知检查括号匹配及注释、字符串处理的C源程序如下: #include<stdio.h>
int brace,brack,paren;
void in_quote(int c); void in_comment(void); void search(int c);
/*rudimentary syntax checKer for C program*/ int main() {
int c;
extern int brace,brack,paren; while((c=getchar())!=EOF){ if(c=='/'){
if((c=getchar())=='*')
in_comment(); /*inside comment*/
else
search(C) ; }else if(c=='\\\"||c==\"\")
in_quote(c); /*inside quote*/ else
search(c);
if(brace<0){ /*output errors*/
printf(\"Unbalanced braces\\n\");
brace=0; }else if(brack<0){
printf(\"Unbalanced brackets\\n\"); brack=0; }else if(paren<0){
printf(\"Unbalanced parentheses\\n\"); paren=0; } }
if(brace>0) /*output errors*/
printf(\"Unbalanced braces\\n\"); if(brack>0)
printf(\"Unbalanced brackets\\n\"); if(paren>0)
printf(\"Unbalanced parentheses\\n\"); return 0; }
/*search:search for rudimentary syntax errors*/ void search(int c) {
extern int brace,brack,paren; if(c=='{') ++brace; else if(c=='}') --brace; else if(c=='[') ++brack; else if(c==']') --brack; else if(c=='(') ++paren; else if(c==')') --paren; }
/*in_comment:inside of a valid comment*/ void in_comment(void) {
int c,d; c=getchar();
d=getchar(); /*curr character*/
while(c!='*'||d!='/'){ /*search for end*/
c=d;
d=getchar(); } }
/*in_quote:inside quote*/ void in_quote(int c) {
int d;
while((d=getchar())! =c) /*search end quote*/
if(d=='\\\\')
getchar(); /*ignore escape seq*/ }
4、画出程序中main函数的控制流程图;
5、设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖率均能达到100%。如果认为该程序的语句覆盖率或分支覆盖率无法达到100%,需说明为什么。
答案:
一、选择题
1、D
[解析] 软件产品质量要求包括:①满足客户的功能需求;②具备一定的可扩展性和灵活性,以适应一定程度的需求变化;③能够有效地处理例外或异常情况。 2、C
[解析] 软件缺陷产生的原因中,软件技术问题包括:①算法错误;②语法错误;③计算和精度问题;④系统结构不合理、算法选择不科学,造成系统性能低下;⑤接口参数传递不匹配,导致模块集成出现问题。 3、C
[解析] 在软件测试的生存周期模型中,建立测试脚本的阶段是实施测试阶段。 4、A
[解析] 外部设计主要是设计用户界面。在设计前对任务和用户进行分析。 5、B
[解析] 对浮点数计算的误差进行检查是最复杂的一类表达式分析。 6、C
[解析] 一般地,在串联型分支结构的情形中,若有n个判定,利用正交实验设计法,测试路径数目可以从2n条减少到n+1~2n。
7、C
[解析] 指令块是函数内部的一组语句,在这组语句中不存在(会引起分支的)控制语句。IB覆盖率=被执行到的指令块数量/程序中指令块总数×100%。 8、A
[解析] 大部分情况下单元测试会选择白盒测试。故选择A选项基本路径覆盖。 9、D
[解析] MM—路径是指穿插出现在模块执行方法和消息的序列。 10、D
[解析] 黑盒测试测试用例设计的方法有:基于判定表、基于因果图、基于状态图、基于场景、基于接口、基于故障、基于风险的测试。基于数据流和控制流的测试用例属于白盒测试。 11、C
[解析] 响应时间属于软件的性能指标。压力测试和负载测试则属于软件性能测试的分类,故选项C项。 12、D
[解析] 软件性能测试的目标是发现缺陷、性能调优、能力检验与规划。软件性能测试和可靠性测试是同一级别的测试。 13、A
[解析] 可靠性测试的目的是通过受控的软件测试过程来预测软件在实际运行中的可靠性。故B错。可靠性测试是针对软件系统,故C错。安全性测试是发现软件安全性的主要手段,故D错。 14、A
[解析] 软件可靠性测试是通过受控的软件测试过程来预测软件在实际运行中的可靠性,不能减少软件在恶意使刚下出现崩溃的次数,故A错。15、B 16、B
[解析] 展平测试是对子类的测试。17、B 18、C
[解析] Web应用软件在安全性方面也需要达到较高的要求,故A错。Web应用软件的测试难度较高,故B错。Web应用软件功能测试包括:链接测试、表单测试、Cookie测试,故C对。测试是否存在无效链接是Web表示层的测试,故D错。 19、C
[解析] 易用性测试包括:易安装性测试、功能易用性测试、用户界面测试。选项C属于功能易用性测试,故选C。 20、A
[解析] 软件兼容性测试包括:与操作系统的兼容性,与数据库的兼容性,与浏览器的兼容性,与中间件的兼容性,与其他软件的兼容性,平台软件的兼容性,故A对。等价类划分测试属于面向对象软件的单元测试。极限测试不属于软件兼容性测试。排版软件是否可以打开该软件以前保存的文件属于数据兼容性测试关注的范畴。 21、D
[解析] 白盒测试又称为逻辑驱动的测试,这种测试策略对程序的逻辑结构进行检查,从中获取测试数据,故A对。自动化测试的测试脚本开发属于自动化测试用例设计工作一部分,故C对。根据产品需求分析、系统设计等规格说明书,
在测试的技术方案基础上设计具体的测试用例,故D错。测试用例是否完整、
边界是否考虑,其覆盖率能达到多高,是软件测试设计要点的一部分,故B对。 22、B
[解析] 由于各种资源的限制、软件测试只能在近似的模拟环境中进行。 23、D
[解析] 自动化测试中,除了选择确认要执行的测试用例和分析失败原因外,其他过程都是可以自动开展的,故B对。结构化脚本的优点是健壮性更好,可以对一些容易导致测试失败的特殊情况进行处理,故C对。共享脚本的维护开销低于线性脚本,故D错。 24、A
[解析] 集成测试一般是由项目负责人组织测试人员依据概要设计规格说明和集成测试计划进行的,故A错。 25、B
[解析] 回归测试有两种:①一经发现并改正了程序中隐藏的缺陷,然后再重新执行以前发现这个缺陷的测试,看这个缺陷是否重现。②当对发现的缺陷进行修改之后,执行一系列基准测试,以确认程序的修改没有对程序的其他部分产生干扰。故B错。 二、论述题
1、 S1:等待 S2:待付款 S3:查证 S4:警告 S5:超时 S6:出票
S7:退票 2、边数m=11,结点数n=7,因此圈复杂度V(G)=m-n+2=7 基本测试路径: ①S1→S2→S1
②S1→S2→S5→S1 ③S1→S2→S6→S1 ④S1→S3→S7→S1 ⑤S1→S3→S4→S1
⑥S1→S2→S6→S1→S3→S7→S1 3、
操作序号 操作者 执行操作 操作后的问题状态 测试版本 1 赵艳菲 新建 新建 测试版本1 2 李鑫 校验/再现 打开/再现 测试版本1 3 陈鹏 修复/修复 待验/修复 测试版本2 4 李鑫 验证/不同意 打开/再现 测试版本2 5 陈鹏 修复/修复 待验/修复 测试版本3 6 李鑫 验证/同意 解决/修复 测试版本3 7 李鑫 回归测试 待验/修复 测试版本4 8 李鑫 验证/同意 解决/通过回归测试 测试版本4
4、 5、测试用例: ①依次输入:c==EOF
②依次输入:c=='/',c=='*',c=='*',d=='/'
③依次输入:c=='/',c=='*',c=='*',d=='{',d=='/' ④依次输入:c=='/',c=='*',c=='/',d=='/',d=='/' ⑤依次输入:c=='/',c=='/' ⑥依次输入:c=='/',c=='{' ⑦依次输入:c=='/',c=='}' ⑧依次输入:c=='/',c=='[' ⑨依次输入:c=='/',c==']' ⑩依次输入:c=='/',c=='(' (11)依次输入:c=='/',c==')' (12)依次输入:c=='\\',d=='\\' (13)依次输入:c=='\\',d=='*' (14)依次输入:c=='\\',d=='\\\\' (15)依次输入:c==\"\",d=='\\' (16)依次输入:c==\"\",d=='*' (17)依次输入:c==\"\",d=='\\\\' (18)依次输入:c=='{' (19)依次输入:c=='}' (20)依次输入:c=='[' (21)依次输入:c==']' (22)依次输入:c=='(' (23)依次输入:c=='\\\\'
该程序的语句覆盖率和分支覆盖率无法达到100%。
因为该程序中有好几个判断语句,对于有的判断语句,若取真,则取假无法执行;若取假,则取真无法执行。所以,语句覆盖率和分支覆盖率无法达到100%。
因篇幅问题不能全部显示,请点此查看更多更全内容