
1.软件测试的目的是尽可能多的找出软件的缺陷。(√)
2.如果测试覆盖充分,通过对软件的反复测试,可以检测出软件中的所有缺陷。(×)
3.测试是最有效的排除和防止软件缺陷与故障的手段(√)
4.黑盒测试是一种确认技术,目的是确认“设计的系统是否正确”。 (√)
5.软件设计不合理不属于软件缺陷。(×)
6.软件缺陷中致命的缺陷才需要修改。(×)
7.软件测试与软件开发不能并行进行,一定要等编码完成以后才能开始(×)
8. 集成测试既可以使用白盒测试技术,也可以使用黑盒测试技术(×)
9. 通常情况下,在进行单元测试时采用白盒测试,而其他测试采用黑盒测试。(√)
10.黑盒测试能发现程序性能是否满足要求。(√)
11.程序测试只能证明错误的存在,但不能证明错误的不存在(√)
12. 一次性集成测试方式不需要进行桩模块和驱动模块的开发(√)
二、选择题
1、软件缺陷出现最多的是(A)
A)软件规格说明书 B)概要设计说明书
C)详细设计说明书 D)程序代码
2、下面哪个不属于静态测试的内容(B)?
A)代码结构分析 B)等价类划分
C)代码检查 D)代码质量度量
3.下列关于静态测试的描述不正确的是:(D)
A.静态测试可以发现不会执行的语句
B.静态测试可以由人工进行,也可以借助软件测试工具自动进行
C.静态测试不真正运行被测试的程序,只进行分析
D.静态测试不检查算法的逻辑正确性
4、下面哪个不能称为黑盒测试(C)?
A)功能测试 B)基于规格说明的测试
C)结构测试 D)数据驱动测试
5、下面哪个不属于黑盒测试的缺点(B)
A)某些代码得不到测试 B)不容易生成测试数据
C)不容易进行充分的测试 D)如果规则有误,则无法发现该缺陷
6、下面哪个不属于单元测试的内容(A)
A)兼容性测试 B)路径测试
C)边界条件测试 D)局部数据结构测试
7、下面测试阶段耗时最长的测试是(C)
A)单元测试 B)集成测试
C)系统测试 D)确认测试
8、下面哪种测试策略属于验收测试(D)
A)性能测试 B)安全测试
C)压力测试 D)Beta 测试
三、简答题
1、简述软件测试的原则
答:
1尽早地测试、不断地进行软件测试
2设计与测试数据对应的预期输出结果
3避免检查自己的程序
4在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。
5充分注意测试中的群集现象。测试时不要以为找到了几个错误问题就已解决,不需继续测试了。应当对错误群集的程序段进行重点测试,以提高测试投资的效益。
6严格执行测试计划,排除测试的随意性。对于测试计划,要明确规定,不要随意解释。
7应当对每一个测试结果做全面检查。这是一条最明显的原则,但常常被忽视。必须对预期的输出结果明确定义,对实测的结果仔细分析检查,抓住关键,暴露错误。
8妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。
2、软件测试的目的是什么?
答:软件测试的目标是以最少的时间和人力找出软件中潜在的各种错误和缺陷。
3、简述动态测试方法的基本步骤
答:动态测试方法的基本步骤如下:
1)选取定义域的有效值或定义域外的无效值
2)对选取的值觉得预期的结果
3)用选取值执行待测程序
4)比较执行结果与预期结果,不吻合则说明程序有错
4、从测试的策略和过程的角度,简述软件测试的分类
答:单元测试,集成测试,确认测试,系统测试,验收测试
5、简述等价类划分方法的思想
答:等价类划分法是把所有可能的输入数据划分成若干子集,然后从每个子集中选取少量的具有代表性的数据作为测试数据。
6、简述边界值分析法的思想
答:边界值分析法是一种补充等价类划分法的测试用例设计技术,它不是选择等价类的任意元素,而是选择等价类边界的测试用例。在测试过程中,可能会忽略边界值的条件,而软件设计中大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。
7、简述白盒测试的优缺点
答:
白盒测试的优点如下:
1可构成测试数据使得特定程序部分得到测试;
2有一定充分性度量手段;
3可获较多工具支持。
白盒测试的缺点如下:
1不容易生成测试数据;
2无法对未实现规格说明的部分进行测试;
3工作量大,通常只是用于单元测试。
8、试比较一次性集成测试方式与增值式集成测试方式的优劣
答:
•增值式集成方式需要编写的软件较多,工作量较大,花费的时间较多。一次性集成方式的工作量较小;
•增值式集成方式发现问题的时间比一次性集成方式早;
•增值式集成方式比一次性集成方式更容易判断出问题的所在,因为出现的问题往往和最后加进来的模块有关;
•增值式集成方式测试的更为彻底;
•使用一次性集成方式可以多个模块并行测试。
这两种模式各有利弊,在时间条件允许的情况下采用增值式集成测试方式有一定的优势。
9、 解释驱动模块和桩模块概念
答:
模块接口测试中的被测模块并不是一个的程序,在考虑测试模块时,同时要考虑它和外界的联系,用一些辅助模块去模拟与被测模块相关联的模块。这些辅助模块可分为两种:
(1) 驱动模块(driver):相当于被测模块的主程序。它接收测试数据,把这些数据传送给被测模块,最后输出实测结果。
(2) 桩模块(stub):用以代替被测模块调用的子模块。桩模块可以做少量的数据操作,不需要把子模块所有功能都带进来,但不允许什么事情也不做。
10. 简述软件测试技术从不同角度加以划分的多种方法
答:(1)从是否需要执行被测软件的角度分类:静态测试和动态测试
(2)从软件测试用例设计方法的角度分类:黑盒测试和白盒测试
(3)从软件测试的策略和过程的角度分类:单元测试,集成测试,确认测试,系统测试和验收测试
11、什么是系统测试?
答:系统测试是将已经集成好的软件系统,作为整个计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。
四、路径测试的步骤包括哪些?试根据给出的程序代码说明路径测试的设计流程
1 main ()
2 {
3 int num1=0, num2=0, score=100;
4 int i;
5 char str;
6 scanf (“%d, %c\\n”, &i, &str);
7 while (i<5)
8 {
9 if (str=’T’)
10 num1++;
11 else if (str=’F’)
12 {
13 score=score-10;
14 num2 ++;
15 }
16 i++;
17 }
18 printf (“num1=%d, num2=%d, score=%d\\n”, num1, num2, score);
19 }
答:路径测试的步骤包括三个方面:
1)导出程序控制流图
2)求出程序环形复杂度
3)设计测试用例(Test Case )
第一步,导出程序控制流图
第二步,程序环形复杂度
公式1:V(G)=10-8+2,其中10是控制流图G中边的数量,8是控制流图中节点的数目。
公式2:V(G)=3+1,其中3是控制流图G中判断节点的数目。
公式3:V(G)=4,其中4是控制流图G中区域的数目。
因此,控制流图G的环形复杂度是4。就是说至少需要4条路径组成基本路径集合,并由此得到能够覆盖所有程序语句的测试用例。
第三步,设计测试用例
根据上面环形复杂度的计算结果,源程序的基本路径集合中有4条路径:
path1:7->18
path2:7->9->10->16->7->18
path3:7->9->11->15->16->7->18
path4:7->9->11->13->14->15->16->7->18
根据上述4条路径,设计了测试用例
| 测试用例 | 输入 | 期望输出 | 执行路径 | |||
| i | str | num1 | num2 | score | ||
| Test Case 1 | 5 | ‘T’ | 0 | 0 | 100 | 路径1 |
| Test Case 2 | 4 | ‘T’ | 1 | 0 | 100 | 路径2 |
| Test Case 3 | 4 | ‘A’ | 0 | 0 | 100 | 路径3 |
| Test Case 4 | 4 | ‘F’ | 0 | 1 | 90 | 路径4 |
主要从软件开发过程(自顶向下)与测试过程(自底向上),并行关系,开发和测试活动的交叉集成
六、谈谈你对软件测试重要性的理解。
七、下图的最优测试量示意图说明了发现软件缺陷数量和测试量之间的关系,请根据此图讨论软件测试的复杂性与经济性。
答:
从示意图可以观察到,当软件缺陷降低到某一数值后,随着测试从量的不断上升软件缺陷并没有明显地下降,而随着测试量的增加,测试成本将呈几何数级上升,最优测量值就是这两条曲线的交点。如何把测试数据量巨大的软件测试减少到可以控制的范围,如何针对风险做出最明智的选择是软件测试人员必须能够把握的关键问题,实现测试成本与测试效果的统一。
八、试论软件测试的误区
答:
随着软件产业工业化、模块化地发展,在软件开发组中软件测试人员的重要性也不断地突出。在国外,很多著名企业早已对软件测试工作十分重视。比如著名的微软公司,其软件测试人员与开发人员的比例已经达到2:1。可见软件测试对于一个软件开发项目的成功与否具有十分重要的意义。但是在实际的项目开发与管理中仍然存在很多管理上或者技术上的误区:
(1) 期望用测试自动化代替大部分人工劳动
(2) 忽视需求阶段的参与
(3) 软件测试是技术要求不高的岗位
一、判断题
1.软件测试环境贯穿了测试的各个阶段,每个测试阶段中环境对测试的影响不同。(√)
2.软件测试环境搭建后,为保证环境的统一性,在测试各阶段尽量不产生变化。(×)
3.由于测试环境复杂,测试环境搭建好后不需要进行备份 (×)
4.测试环境的维护是管理员的职责,其他测试人员直接使用测试环境。(×)
5.测试用例就是测试数据。 (×)
6.尽管测试的每个步骤都是的,但必须要有一个起到框架结构作用的测试计划(√)
二、选择题
1.每个测试项目或测试小组( A)
A.应当配备一名专门的测试环境管理员
B.应当配备二名专门的测试环境管理员
C.应当配备三名以上专门的测试环境管理员
D.可以不配备专门的测试环境管理员
2.下列哪个要素不属于测试用例的编制要素(C)
3.下列哪个测试用例不符合测试用例编写规范(D)
A. 输入:10,5 预期结果:输出 20
B. 输入:“Str”,100 预期结果:输出提示“输入值超过范围”
C. 输入:1,6 预期结果:打印机打印计算结果
D. 输入:非法操作,预期结果:系统不能正常运行
4.下列哪个部分不属于测试测试计划的内容(A)
三、简答题
1.测试环境有哪些要素?
答:配置测试环境应该满足5个基本要素是:硬件、软件、网络环境、数据准备、测试工具。其中硬件、软件是测试环境中的最基本的两个要素,并派生出后三者。
2.简述搭建测试环境实验室的步骤。
答:机房环境建设、硬件环境的建立、网络环境的建立、软件环境的建立、对整个测试环境杀毒、测试环境说明及备案
3.简述测试用例的定义。
答:测试用例是为了高效率地发现软件缺陷而精心设计的少量测试数据,以及对应的预期测试结果。
4.简述测试用例的设计过程
答:(1)分析系统程序的工作流程
(2)确定并制定测试用例
(3)确定测试用例数据
(4)测试用例的修改更新
5. 简述在软件生命周期中测试阶段的交付的文档
答:测试记录;测试事故报告;测试总结报告
四、什么是条件覆盖?请为下面的代码设计满足条件覆盖的测试数据。
void TEST(int x, int a, int b)
{
a>2)&&(b==0))
x=x/a;
a==3)||(x>1))
x=x+1;
}
答:条件覆盖是指设计若干个测试用例,执行被测试程序时,程序中每个判断条件中的每个判断式的真值和假值至少被执行一遍。
满足a>2,不满足a>2,满足b=0,不满足b=0,满足a=3,不满足a=3,满足x>1,不满足x>1
根据这些条件设计测试用例
取a=1,让不满足a>2,不满足a=3成立,取b=1,让不满足b=0成立,取x=0, 让不满足x>1成立
得到测试数据1:x=0 ,a=1,b=1
取a=3,让满足a>2,满足a=3成立,取b=0,让满足b=0成立,取x=5, 让满足x>1成立
得到测试数据2:x=5 ,a=3,b=0
这两个测试数据就满足了条件覆盖标准。
五、下面是某股票公司的佣金,根据决策表方法设计具体测试用例。
如果一次销售额少于1000元,那么基础佣金将是销售额的7%;如果销售额等于或多于1000元,但少于10000元,那么基础佣金将是销售额的5%,外加50元;如果销售额等于或多于10000元,那么基础佣金将是销售额的4%,外加150元。另外销售单价和销售的份数对佣金也有影响。如果单价低于15元/份,则外加基础佣金的5%,此外若不是整百的份数,再外加4%的基础佣金;若单价在15元/份以上,但低于25元/份,则加2%的基础佣金,若不是整百的份数,再外加4%的基础佣金;若单价在25元/份以上,并且不是整百的份数,则外加4%的基础佣金。
解:设销售额为变量s, 基础佣金为变量y, 销售单价为变量d,销售分数为f,外加佣金j
1、确定规则的个数,这里有销售额,销售单价,销售份数3个条件,由此可见,共有3*3*2=18种规则
2、列出所有的条件桩和动作桩:
条件桩
S1={s<1000}
S2={10000>s≧1000}
S3={s≧10000}
D1={d<15}
D2={25>d≧15}
D3={d>=25}
F1={整百的份数}
F2={不是整百的份数}
动作桩
A1:基础佣金=s*7%
A2:基础佣金=s*5%+50
A3:基础佣金=s*4%+150
A4:加基础佣金的5%
A5:加基础佣金的4%
A6:加基础佣金的2%
"
规则
| 选项 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 条件: | ||||||||||||||||||
| C1: 销售额 | S1 | S1 | S1 | S1 | S1 | S1 | S2 | S2 | S2 | S2 | S2 | S2 | S3 | S3 | S3 | S3 | S3 | S3 |
| C2: 单价 | D1 | D1 | D2 | D2 | D3 | D3 | D1 | D1 | D2 | D2 | D3 | D3 | D1 | D1 | D2 | D2 | D3 | D3 |
| C3: 份数 | F1 | F2 | F1 | F2 | F1 | F2 | F1 | F2 | F1 | F2 | F1 | F2 | F1 | F2 | F1 | F2 | F1 | F2 |
| 动作: | ||||||||||||||||||
| A1: | √ | √ | √ | √ | √ | √ | ||||||||||||
| A2: | √ | √ | √ | √ | √ | √ | ||||||||||||
| A3: | √ | √ | √ | √ | √ | √ | ||||||||||||
| A4: | √ | √ | √ | √ | √ | √ | ||||||||||||
| A5: | √ | √ | √ | √ | √ | √ | √ | √ | √ | |||||||||
| A6: | √ | √ | √ | √ | √ | √ |
8.自动化测试比人工测试更适合进行新版本的回归测试。(√ )
9.由于每次自动化测试运行的脚本是相同的,因此每次执行的测试具有一致性。(√)
10.WEB网站测试中的图形用户界面测试可以采用自动化测试技术进行。(× )
11.在WEB服务器的每个目录下都放置index.html或main.html页面,是增强WEB安全的一种手段。(√)
二、选择题
1、下面哪种情况不适合采用自动化测试(C )
A)产品型项目 B)回归测试
C)开发周期短的项目 D)增量式开发、持续集成项目
2、下面哪个不属于自动化测试的运用步骤(B )
A)改进软件测试过程 B)编写文档
C)定义需求 D)有计划地部署
3、下面哪种情况不属于安全性测试(A )
A)WEB系统的主要功能是否可以通过主页访问 B)是否记录失败的注册企图
C)测试目录设置是否正确 D)是否可以不登陆而直接浏览某个页面
4、测试团队总的职责不包括(D)
A)尽早发现软件产品中的所有问题
B)协助完善软件开发流程,提高产品开发的效率
C)督促开发人员及时节的测试中发现的缺陷
D)批准软件设计说明书
5、CMM模型共分为(C)级
A)3 B)4
C)5 D)6
三、简答题
1、简述WEB网站测试中配置和兼容性测试的测试内容
答:1)平台测试;2)浏览器测试;3)打印机测试;4)组合测试
2、按照工具所完成的任务,测试工具可以分为哪几类?
答:测试设计工具、静态分析工具、单元测试工具、功能测试工具、性能测试工具、测试过程管理工具。
3、面向对象的集成测试内容
答:1)基于类间协作关系的横向测试;2)基于类间继承关系的纵向测试
4、简述软件质量的三个特性
答:可说明性;有效性;易用性。
5、面向对象开发的特点是遵循哪三项原则?
答:抽象原则、封装原则、继承原则
五、谈谈面向对象测试与传统测试的区别。
传统测试模式与面向对象的测试模式的最主要的区别在于,面向对象的测试更关注对象而不是完成输入/输出的单一功能,这样的话测试可以在分析与设计阶段就先行介入,便得测试更好的配合软件生产过程并为之服务。与传统测试模式相比,面向对象测试的优点在于:更早地定义出测试用例;早期介入可以降低成本;尽早的编写系统测试用例以便于开发人员与测试人员对系统需求的理解保持一致;面向对象的测试模式更注重于软件的实质。具体有如下不同:
(1)测试的对象不同:传统软件测试的对象是面向过程的软件,一般用结构化方法构
建;面向对象测试的对象是面向对象软件,采用面向对象的概念和原则,用面向对象的方法构建。
(2)测试的基本单位不同:前者是模块;面向对象测试的基本单元是类和对象。
(3)测试的方法和策略不同:传统软件测试采用白盒测试,黑盒测试,路径覆盖等方
法;面向对象测试不仅吸纳了传统测试方法,也采用各种类测试等方法,而且集成测试和系统测试的方法和策略也很不相同。
六、你怎么看待软件质量保证与软件测试的关系?
答:软件质量保证与软件测试二者之间既存在包含又存有交叉的关系。软件测试能够找出软件缺陷,确保软件产品满足需求。但是测试不是质量保证,二者并不等同。测试可以查找错误并进行修改,从而提高软件产品的质量。软件质量保证则是避免错误以求高质量,并且还有其他方面的措施以保证质量问题。
从共同点的角度看,软件测试和软件质量保证的目的都是尽力确保软件产品满足需求,从而开发出高质量的软件产品。两个流程都是贯穿整个软件开发生命周期中。正规的软件测试系统主要包括:制定测试计划、测试设计、实施测试、建立和更新测试文档。而软件质量保证的工作主要为:制定软件质量要求、组织正式审查、软件测试管理、对软件的变更进行控制、对软件质量进行度量、对软件质量情况及时记录和报告。软件质量保证的职能是向管理层提供正确的可行信息,从而促进和辅助设计流程的改进。软件质量保证的职能还包括监督测试流程,这样测试工作就可以被客观地审查和评估,同时也有助于测试流程的改进。
二者的不同之处在于软件质量保证工作侧重对软件开发流程中的各个过程进行管理与控制,杜绝软件缺陷的产生。而测试则是对已产生的软件缺陷进行修复。
七、自动化测试不适合测试哪些项目?
答:
(1) 定制型项目
为客户定制的项目,维护期由客户方承担的,甚至采用的开发语言、运行环境也是客户特别要求的,即公司在这方面的测试积累就少,这样的项目不适合作自动化测试。
(2)项目周期很短的项目
项目周期很短,测试周期很短,就不值得花精力去投资自动化测试,好不容易建立起的测试脚本,不能得到重复的利用是不现实的。
(3)业务规则复杂的对象
业务规则复杂的对象,有很多的逻辑关系、运算关系,工具就很难测试。
(4)美观、声音、易用性测试
人的感观方面的:界面的美观、声音的体验、易用性的测试,也只有人来测试。
八、你怎样看待自动化测试的误区?
答:自动化测试好处很多,但也有很多的局限,正因为一些人只认识到了自动化测试的优点,导致对它的期望太高,所以产生了很多执行自动化测试失败的例子。
(1)期望自动化测试能取代手工测试
某些情况下自动化测试并不适用,所以不能期望在所有的情况下都使用自动化测试来取代手工测试,测试主要还是要靠人工的。
(2)期望自动测试发现大量新缺陷
自动化测试只能发现已知的问题,所以不能期望自动化测试去发现更多新的缺陷,事实证明新缺陷越多,自动化测试失败的几率就越大。发现更多的新缺陷应该是手工测试的主要目的。
(3)工具本身不具有想象力
对于一些界面美观和易用性方面的测试,自动化测试工具为力。
(4)只要使用自动化测试,就能缩短测试时间、提供测试效率
自动化测试的前期实现要花费更多的时间,相比创建和执行一个手工测试用例,要花费3~10倍的时间来开发、验证和文档化一个自动化测试用例。
(5)自动化测试工具使用了图形化界面,很容易上手,对人员的要求不高
简单的“录制/ 回放”方法并不能实现有效的、长期的自动化测试,测试人员还需要对脚本进行优化,这就需要测试人员具有设计、开发、测试、调试和编写代码的能力,最理想的候选人是既有编程经验,又有测试经验。测试过程中还需要安排专业人员对测试脚本库中的脚本进行维护。
