以题会题
一、单选题
1、对软件进行测试的根本目的是什么?( C ) A、提高软件的质量 B、确保程序符合用户的需求 C、找出程序中的缺陷 D、确保程序没有缺陷
2、在软件生命周期哪个阶段,软件缺陷修复费用最低?( C ) A、编码阶段 B、产品发布以后 C、需求分析阶段 D、设计阶段
3、如下关于测试用例的描述中错误的是:( B )。 A、测试用例是一组精心设计的输入,目的是为了在最短时间内找到最多、最严重的缺陷 B、测试结果就是测试用例的实际输出 C、测试用例方便了测试人员与开发人员之间的沟通 D、测试用例有利于缺陷的跟踪
4、白盒测试是通过分析程序的( C )来设计测试用例的。 A、应用范围 B、功能 C、内部逻辑 D、输入数据
5、某程序的打印测试,需要考虑4个因素,每个因素有多个选项,详情如下。若采用正交阵列法进行测试用例设计,选择哪个正交表合适?( B ) 打印范围分:全部、当前幻灯片、给定范围; 打印内容分:幻灯片、讲义、备注页、大纲视图; 打印颜色/灰度分: 彩色、灰度、黑白; 打印效果分:幻灯片加框和幻灯片不加框。 A、L12(2261) B、L16(45) C、L49(78) D、L18(3661)
6、有一组测试用例使得每一个被测试程序的判断语句中的每个逻辑条件的可能值至少被满足了一次,它满足的覆盖是:( D )。 A、语句覆盖 B、路径覆盖 C、判定覆盖 D、条件覆盖
7、下列关于单元测试的描述中错误的是:( A )。 A、单元测试完全采用白盒测试方法完成 B、单元测试包括动态测试和静态测试 C、单元测试也需要进行计划、设计、执行、评审等一系列过程 D、单元测试往往需要编写桩模块和驱动模块
8、针对是否对无效数据进行测试,可以将等价类测试划分为( C )。 1)标准(一般)等价类测试 2)健壮等价类测试 3)若等价类测试 4)强等价类测试 A、1)3) B、2)4) C、1)2) D、3)4)
9、以下描述中不正确的是:( A )。 A、性能测试设计的关键是使用测试工具 B、性能测试中,可利用脚本参数化实现让多个虚拟用户使用几个不同的实际发生数据来执行同一脚本的目的 C、性能测试中常见的系统指标包括:平均响应时间、每秒事务数、每秒点击数、吞吐量等 D、不借助测试工具几乎无法展开性能测试
10、功能测试中应采取的措施包括:( C )。 A、只要一个新的功能点开发完成,就立刻开发对应的功能测试脚本 B、录制脚本时不要提前识别被测系统中的对象 C、确保测试脚本相互独立,以避免不同脚本之间的影响 D、录制业务流程尽量长的测试脚本
11、请阅读下面这段程序,现在需要使用逻辑覆盖法进行测试,若时(a, b, c)采用这组输入值组合: (1,1,-1)、(1,1,1)、 (-1,1,1)、 (0,1,1) ,可以实现哪种覆盖?( B ) A、条件覆盖 B、判定覆盖 C、路径覆盖 D、条件组合覆盖
12、比较适合自动化的软件测试活动是:( B ) A、测试用例设计 B、回归测试 C、测试环境的建立 D、探查式测试
13、在软件生命周期( C )阶段,软件缺陷修复费用最低? A、编码阶段 B、产品发布以后 C、需求分析阶段 D、设计阶段
14、以下哪个不是设计测试用例的基本原则。( C ) A、测试用例的代表性 B、测试结果的可判定性 C、测试数据的唯一性 D、测试结果的可再现性
15、对软件进行测试的根本目的是什么?( C ) A、提高软件的质量 B、确保程序符合用户的需求 C、找出程序中的缺陷 D、确保程序没有缺陷
16、通常情况下,如下缺陷不能通过单元测试发现的是:( B )。 A、变量的初始值或缺省值有错误 B、一个模块的功能是否会对另一个模块的功能产生不利影响 C、提示的错误与实际的错误不相符 D、输入的实际参数与形式参数的个数不相同
17、在下面所列举的逻辑测试覆盖中,测试覆盖最强的是( B ),最弱的是( C )。 A.条件覆盖 B. 条件组合覆盖 C.语句覆盖 D.条件/判定覆盖
18、决策表方法在以下哪种情况下不适用?( D ) A、输入输出明确,或输入输出因果关系明确的情况下 B、被分析的特性或功能点复杂,输入条件很多的情况下 C、系统输入之间相互约束多,需要做大范围的组合测试情况下 D、系统输入之间没有相互联系
19、单元测试中用来模拟被测模块调用者的模块是:( C ) A、子模块 B、父模块 C、驱动模块 D、桩模块
20、下列测试中不属于系统测试的是( B ) A、 性能测试 B、集成测试 C、压力测试 D、可靠性测试
21、必须要用户参与的测试阶段是:( C )。 A、集成测试 B、单元测试 C、验收测试 D、确认测试
22、软件测试计划的内容包括:( D ) A、测试目的、背景 B被测软件的功能、输入和输出 C、测试内容和评价标准 D、以上全对
23、请阅读下面这段程序,现在需要使用逻辑覆盖法进行测试,请问使用下面哪一组关于(a, b, c)的输入值组合可以达到条件覆盖?( B ) A、(a, b, c) = (1,1,1)、(-1,1,1) B、(a, b, c) = (1,1,1)、(-1,-1,-1) C、(a, b, c) = (1,1,-1)、(1,1,1) D、(a, b, c) = (1,1,-1)、(-1,1,1)
24、比较适合自动化的软件测试活动是:( B ) A、测试用例设计 B、回归测试 C、测试环境的建立 D、探查式测试
二、多选题
1、软件测试是系统开发不可少的一部分,具有以下那些特征?( ABCD ) A、有助于在软件生命周期中尽早发现问题,以降低修复软件缺陷所需的成本 B、既可以是静态活动,也可以是动态活动 C、可以是对需求规格说明书的审核,而不单是对代码的测试 D、用来预防软件失效
2、按照阶段划分,软件测试分为哪几类?( ABCD ) A、集成测试 B、单元测试 C、系统测试 D、验收测试
3、测试脚本的编写规范强调:( ABCD ) A、可维护性 B、可移植性 C、可读性 D、可重用性
4、如下关于决策表的描述中正确的是( ABC ): A、决策表1方法不适于处理无效域的数据 B、决策表测试方法应与等价划分方法结合起来使用 C、决策表测试是面向数据的测试 D、当输入条件之间相互独立时,最好采用决策表测试方法
5、以下哪些项属于软件质量?(ABCD) A、顾客和用户觉得软件满足其综合期望的程度 B、软件产品中能满足给定需要的性质和特性的总体 C、确定软件在使用中将满足顾客预期要求的程度 D、软件具有所期望的各种属性的组合程度
6、软件测试目的是什么?(ACD) A、发现当前开发工作中所采用的软件过程的缺陷 B.为了证明软件没有错误 C.修正软件错误和缺陷提高软件质量 D.对软件质量进行评度量和评估
7、软件缺陷的常用状态有以下几种情况?(ABCD) A、已解决 B、重新打开 C、打开 D、已拒绝
8、对一段程序结构而言,环形复杂度的计算方法包括: ( ABC ) A、控制流图中区域的数量 B、控制流图中边的个数-顶点的个数+2 C、判定节点的数量+1 D、控制流图中边的个数-顶点的个数+1
9、软件测试与软件开发过程关系,下列描述正确的有: ( ABC ) A、不同的软件开发过程模型中,测试在其中所处的位置不同 B、测试过程是为保证开发过程的产出进行验证和确认的一系列活动 C、没有开发过程就没有测试过程 D、开发比测试更重要
三、判断题
1、软件测试不能保证软件的质量。( √)
2、软件测试在实际开发过程中可以做到穷尽测试 。( × )
3、任何情况下都必须使用边界值测试。( √)
4、正交测试可以达到100%的成对组合覆盖(√)
5、满足判定覆盖的一组测试用例一定满足语句覆盖( √ )
6、对底层或子层模块进行测试所编写的调用这些模块的程序被称为驱动模块。( √ )
7、白盒测试方法了解被测单元/系统内部结构,肯定比黑盒测试方法的效率高 ( × )
8、软件安全性测试不仅包括渗透测试,找出系统安全性漏洞,而且包括对系统安全功能性的验证。( √ )
9、软件测试在实际开发过程中不可能做到穷尽测试 。( √)
10、集成测试阶段,采用双向集成方法不需要写桩模块(√ )
11、满足条件覆盖的一组测试用例一定满足语句覆盖(× )
12、桩模块是指对顶层或上层模块进行测试时所编写的替代下层模块的程序。( √)
13、软件的质量特性有静态质量特性和动态质量特性(√ )
14、条件组合覆盖可以发现代码中所有可能的缺陷。( × )
四、简答题
1、简要画出软件测试过程中的W模型,并结合该模型描述软件测试与软件开发各阶段之间的关系。
W模型由两个V模型组成,分别代表测试与开发过程,明确表示出了测试与开发的并行关系。
软件分析、设计和实现的过程,伴随着软件测试、验证和确认的过程,也就是说,测试过程和开发过程都贯穿软件过程的整个生命周期。
测试与开发是相辅相成、相互依赖的关系。概括起来有以下三个关键点:
- 1) 测试过程和开发过程是同时开始,同时结束的,两者保持同步的关系。
- 2) 测试过程是对开发过程中阶段性成果和最终产品进行验证的过程,所以两者相互依赖。
- 3) 测试过程中的工作重点和开发过程的工作重点,两者有各自的特点,存在差异。
2、什么是测试用例?设计编写测试用例时,需要包括哪些基本属性?
软件测试活动中为特定的目的而设计的测试条件、测试数据及与之相关的测试规程的一个特定的使用实例或场景;测试用例是执行测试的最小实体。
编写测试用例时,应该说明它的基本属性:执行条件、输入、预期结果,除此之外还可以包括标识符、测试项、测试目标、输入数据、操作步骤、优先级、关联的测试用例、关联的缺陷等信息。
3、简述采用捕获/回放工具进行测试脚本开发的一般流程。
第一步:根据测试设计文档,确定自动化测试的范围,使用捕获/回放工具生成初始的测试脚本。
第二步:对生成的脚本进行修改,得到正确的、可复用的、可维护性好的脚本。
第三步:执行修改后的脚本,获得实际的运行结果。
第四步:对观察到的运行结果进行分析和比较,报告发现的缺陷;评价本次运行结果,分析存在的问题与不足,提出下一步的改进方案。
第五步:重复上面的步骤,进行回归测试和其他测试。
4、有二元函数f (x, y),其中x∈[1, 12],y∈[1, 31]。请采用边界值分析法设计测试用例。
可以设计以下测试用例: { <1, 15>, <2, 15>, <11, 15>, <12, 15>, <6, 15>, <6, 1>, <6, 2>, <6, 30>, <6, 31> }
5.什么是软件测试?软件测试的目标是什么?
软件测试是人工地或通过使用工具自动地运行被测软件系统,或静态检查被测系统的过程,其目的在于校验被测系统是否满足需求,或要弄清楚实际的系统输出与预期系统输出之间的差异。
软件测试的目标包括:
- 验证和确认开发的软件产品与用户实际需求/需求规格说明书相符合
- 以最少的时间和成本尽可能多地找出软件缺陷
- 尽早发现至今尚未发现的软件缺陷,不是证明产品中没有软件缺陷
- 收集测试结果数据,为质量分析和产品放行提供依据
6、自动化测试还存在很多局限性,并不能完全取代手工测试。什么是自动化测试?简述自动化测试的局限性。
自动化测试是指利用好的测试工具以自动运行测试用例。自动化测试可以在较少的时间内运行更多的测试用例。
但是自动化测试还存在局限性,包括:
- 自动化测试不能取代手工测试,可作为手工测试的补充;
- 自动测试不会比手工测试发现的错误多;软件自动化测试可能降低测试的效率;
- 如果缺乏测试经验,测试的组织差、文档少或不一致,则自动测试的效果比较差;
- 软件自动化测试工具或测试脚本本身有问题;
- 需要被测试的应用程序相对稳定;
- 测试自动化可能会制约软件开发。
五、综合设计题
1、阅读以下闰年的判别程序,请使用基本路径测试方法设计测试用例。 要求:首先画出控制流图;然后求出程序的独立路径数;最后根据独立路径设计测试用例。
int IsLeap (int year)
1 { int leap=0;
2 if ( year%4 == 0 )
3 {
4 if (year%100 == 0)
5 {
6 if (year%400 == 0)
7 leap=1;
8 else leap=0;
9 }
10 else leap=1;
11 }
12 else leap=0;
13 return leap;
}
1)控制流图
2)环形复杂度及独立路径
环形复杂度:区域的个数4;10-8+2=4;3+1=4 独立路径:2->12->13;2->4->10->13;2->4->6->7->13;2->4->6->8->13
4) 测试用例
用例 | year | leap |
---|
1 | 1001 | 0 | 2 | 1004 | 1 | 3 | 2000 | 1 | 4 | 1100 | 0 |
2、已知NextDate函数用来计算输入日期后一天的日期。该函数包含三个变量month、day和year,要求输入变量month、day和year均为整数值,并且满足1≤ month ≤12、1≤ day ≤31、1950≤ year ≤2050三个条件。请用等价类划分法进行黑盒测试。 要求:请先划分出合理的等价类;然后根据划分好的等价类设计测试用例,测试用例越全面越好。
划分的等价类包括: M1={月份:每月有30天} M2={月份:每月有31天} M3={月份:此月是2月} M4={月份:此月是12月}
D1={日期:1<=日期<=27} D2={日期:日期=28} D3={日期:日期=29} D4={日期:日期=30} D5={日期:日期=31}
Y1={年:年是闰年} Y2={年:年是平年}
测试用例最好能满足强一般等价类要求,参考测试用例表如下:
测试用例 | 月份 日期 年 | 预期输出 |
---|
1 | 6 | 27 | 2 | 6 | 28 | 3 | 6 | 29 | 4 | 6 | 30 | 5 | 6 | 31 | 6 | 8 | 27 | 7 | 8 | 28 | 8 | 8 | 29 | 9 | 8 | 30 | 10 | 8 | 31 | 11 | 2 | 27 | 12 | 2 | 28 | 13 | 2 | 29 | 14 | 2 | 30 | 15 | 2 | 31 | 16 | 12 | 27 | 17 | 12 | 28 | 18 | 12 | 29 | 19 | 12 | 30 | 20 | 12 | 31 | 21 | 6 | 27 | 22 | 6 | 28 | 23 | 6 | 29 | 24 | 6 | 30 | 25 | 6 | 31 | 26 | 8 | 27 | 27 | 8 | 28 | 28 | 8 | 29 | 29 | 8 | 30 | 30 | 8 | 31 | 31 | 2 | 27 | 32 | 2 | 28 | 33 | 2 | 29 | 34 | 2 | 30 | 35 | 2 | 31 | 36 | 12 | 27 | 37 | 12 | 28 | 38 | 12 | 29 | 39 | 12 | 30 | 40 | 12 | 31 |
3、根据以下代码完成下列题目
public static void Example(int i,int j)
{
int x = 0, y = 0;
while(i<20)
{
if(j%2!=0)
{
if(j==1)
{
x = 2;
}
else
{
y = 2;
}
}
else
{
if(j==2)
{
x++;
}
else
{
y++;
}
}
i++;
}
Console.WriteLine("x:{0} y:{1}",x,y);
}
1)画出程序的控制流图。
2)求出程序的独立路径数,列出独立路径集合。
|