软件测试作业及答案

软件测试作业及答案
软件测试作业及答案

第一章

1.选择题

(1)软件本身的特点和目前软件开发模式使隐蔽在软件内部的质量缺陷不可能完全避免,在下列关于导致软件质量缺陷的原因的描述中,不正确的是(C)

A.软件需求模糊以及需求的变更,从根本上影响着软件产品的质量

B.目前广为采用的手工开发方式难以避免出现差错

C.程序员编码水平低下是导致软件缺陷的最主要原因

D.软件测试技术具有缺陷

(2)缺陷产生的原因是(D)

A.交流不充分及沟通不畅、软件需求的变更、软件开发工具的缺陷

B.软件的复杂性、软件项目的时间压力

C.程序开发人员的错误、软件项目文档的缺乏

D.以上都是

2.判断题

(1)缺乏有力的方法学指导和有效的开发工具的支持,往往是产生软件危机的原因之一。(√)

(2)目前的绝大多数软件都不适和于快速原型技术。(√)

(3)在程序运行之前没法评估其质量。(×)

(4)下列哪些活动是项目

探索火星生命迹象(√)

向部门经理进行月工作汇报(×)

开发新版本的操作系统。(√)

每天的卫生保洁。(×)

组织超级女声决赛。(√)

一次集体婚礼。(√)

3.简答题

(1)什么是软件?软件经历了哪几个发展阶段?

答:软件是一系列按照特定顺序组织的计算机数据和指令的集合。一般来讲软件北划分为系统软件,应用软件和介于着两者之间的中间件。其中系统软件为计算机使用提供最基本的功能,但是并不是针对某一特定领域,而应用软件则恰好相反,不同的应用软件更根据用户和所服务的领域提供不同的功能。

20世纪50年代初期至60年代中期是软件发展的第一阶段(又称程序设计阶段);

第二阶段从20世纪60年代中期到70年代末期是程序系统阶段。

第三阶段称为软件工程阶段,从20世纪70年代中期到80年代中期,由于微处理器的出现,分布式系统广泛应用,以软件的产品化,系列化,工程化和标准化为特征的软件产业发展起来,软件开发有了可以遵循的软件工程化的设计原则,方法和标准。

第四阶段是从20世纪80年代中期至今,客户端/度武器(C/S)体系结构,特别是Web技术和网络分布式对象技术法飞速发展,导致软件体系结构向更加灵

活的多层分布式结构演变,CORBA,EJB,COM/DCOM等三大分布式的对象模型技术相继出现。

(2)软件质量与软件测试有什么关系?

答:软件测试和软件质量的概念是分不开的。测试是手段,质量是目的。软件测试能够提高软件质量,但是软件测试和软件质量保证二者之间既存在包含又存有交叉的关系。软件测试能够找出软件缺陷,确保软件产品满足需求。但是测试不是质量保证。测试可以查找错误并进行修改,从而提高软件产品的质量。软件质量保证则是避免错误以求高质量,并且还有其他方面的措施以保证质量问题。

(3)软件质量框架是什么?包括什么内容?

答:第一部分是前提,说明了软件框架的适用范围,以及适合的环境,和方法学一样,没有泛之四海皆准的方法学,所以软件质量框架也需要一个上下文环境。

第二部分是价值观,价值观说明了软件质量框架中强调的价值,在软件框架的结构和实践中,都将充分的的表现出一开始我们定义的价值。

第三部分是结构。结构定义了软件质量框架的组成部分,以及软件质量框架和开发过程之间的关系。

第四部分是文章中着墨最多的部分,即优秀实践。优秀实践通过具体、实际的分析、举例,深入阐述了软件质量框架的价值观和结构。

(4)CMM是什么?具体内容是什么?CMMI与CMM的关系是什么?

答:CMM是由美国软件工程学会(Software Engineering Institute)制定的一套专门针对软件产品的质量管理和质量保证标准。该标准最初是为美国军方选择软件产品提供商时评价软件企业的软件开发质量保证能力而制定,所以称为软件企业能力成熟度模型(Capability Maturity Model,简称CMM)。该标准将软件企业的能力成熟度划分为5个等级,级别越高表明该企业在提供合格软件产品方面的能力越强。

软件过程包括管理过程(软件项目策划、软件项目管理)、组织过程(跨项目过程、培训、基础设施)、工程过程(需求分析、设计、编码、测试)。CMM分为五个等级:一级为初始级,二级为可重复级,三级为已定义级,四级为已管理级,五级为优化级。成熟度反映了软件过程能力的大小,任何一个软件机构的软件过程必定属于其中某个级别。除了第一级以外,每级成熟度又由若干关键过程域构成。CMM结构中关键实践描述了对关键过程域有效实施和制定化起重要的作用的基础设施和活动,有5个共同特征:执行约定、执行能力、进行的活动、测量和分析、验证实施。

CMM:软件能力成熟度模型,是对组织软件过程能力的描述。CMMI:能力成熟度模型集成,目的是帮助软件企业对软件工程过程进行管理和改进,增强开发与改进能力,从而能按时地、不超预算地开发出高质量的软件。

CMMI 模型的前身是 SW-CMM 和 SE-CMM,前者就是我们指的CMM。CMMI 与SW-CMM的主要区别就是:

一、覆盖了许多领域;到目前为止包括四个下面领域:(1)、软件工程(SW-CMM);(2)、系统工程(SE-CMM);(3)、集成的产品和过程开发(IPPD-CMM);(4)、采购(SS-CMM)。

二、CMMI有两种表示方法,一种就是与CMM一样的阶段式表现方法(把CMMI中

的若干个过程区域分成5个成熟度级别);另一种是连续式的表现方法(将CMMI 中过程区域分为四大类:过程管理、项目管理、工程以及支持)。

三、CMM2级有6个关键过程区域,在CMMI中增加了一个:度量与分析;CMM4级有2个关键过程区域,在CMMI中也是2个,只是名称与内容有所改变;在CMM5级中有3个KPA,在CMMI中合并了,改为2个。最显著还是在CMM3级中,原来的7个KPA改为14个。

(5)软件测试与软件开发具有什么关系?

答:1、没有软件开发就没有测试,软件开发提供软件测试的对象。

2、软件开发和软件测试都是软件生命周期中的重要组成部分

3、软件开发和软件测试都是软件过程中的重要活动。

4、软件测试是保证软件开发产物质量的重要手段。

第二章

1.选择题

(1)软件测试按照测试技术划分为(C)

A.性能测试、负载测试、压力测试

B.恢复测试、安全测试、兼容测试

C.A与B都是

D.单元测试、集成测试、验收测试

(2)软件测试目的(C)

A.避免软件开发中出现错误

B.发现软件开发中出现错误

C.尽可能发现并排除软件中潜藏的错误,提高软件的可靠性

D.修改软件中出现错误

(3)各个地方对软件测试定义不同,请根据软件测试方面、理论方面、代码角度测试填空。

代码方面分为(A)、集成测试、系统测试、验收测试

理论方面分为(C)、动态测试、静态测试

测试方面分为(B)、压力测试、回归测试、负载测试、恢复测试、安全性测试、兼容性测试、内存泄露测试、比较测试等。

A.单元测试

B.黑盒测试

C.白盒测试

D.负载测试

4.判断题

(1)Beta测试是验收测试的一种。(√)

(2)尽量用公共过程或子程序去替代重复的代码段。(√)

(3)测试是为了验收该软件已正确的实现了用户的要求。(×)

(4)发现错误多的程序模块,残留在模块中的错误也多。(×)

(5)尽量采用复合的条件测试,以避免嵌套的分支结构。(√)

3.简答题

(1)软件测试的目的是什么?

答:软件测试的目的有:

①软件测试是为了发现错误而执行程序的过程。

②一个好的测试用例能够发现至今尚未发现的错误。

③一个成功的测试是发现了至今尚未发现的错误。

(2)软件测试中应注意哪些事项?

答:软件测试应注意以下事项:

1.应当把“尽早和不断地测试”作为开发者的座右铭。

2.程序员应该避免检查自己的程序,测试工作应该由独立的专业的软件测试机构来完成。

3.设计测试用例时,应该考虑到合法的输入和不合法的输入,以及各种边界条件,特殊情况下要制造极端状态和意外状态,比如网络异常中断、电源断电等情况。

4.一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有很大的关系。

5.对测试错误结果一定要有一个确认的过程。一般有A测试出来的错误,一定要有一个B来确认,严重的错误可以召开评审会进行讨论和分析。

6.制定严格的测试计划,并把测试时间安排得尽量宽松,不要希望在极短的时间内完成一个高水平的测试。

7.回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多错误出现的现象并不少见。

8.妥善保存一切测试过程文档,意义是不言而喻的,测试的重现性往往要靠测试文档。”

(3)按执行主体划分,软件测试分哪几类?

答:哪找测试实施组织划分,软件测试分为α测试,β测试和第三方测试。

(4)V模型和W模型各自的优缺点是什么?

答:V模型:

优点是:如此简单的模型适合工程量小、人力投入也少的情况。而且项目的改动不大,风险不高的情况。

缺点:在实际中能用上V模型的项目很少。错误也发现得迟。采用V 模型的而产生的风险费用很高

W模型:

优点:能在前期发现需求错误,在测试过程中也有利于及时了解项目难度。适合做中型软件。

缺点:W模型继承V模型而来,仍要求项目需求不能有大变动,否则前期准备很容易白费。也不适合于大型的项目,大型项目不能一开始就有完整的需求,而且风险大而造成需求变动大。人力上也要求有专门测试的人员。

(5)测试用例是什么?有什么属性?

答:测试用例是指对一项特定的软件产品进行测试任务的描述,体现在测试方案,方法,技术,策略等。测试用例的内容包括测试目标,测试环境,输入数据,测试步骤,预期结果,测试脚本等,并形成文档。

测试用例的属性:

1.测试用例具有优先性。

2.测试用例具有目标性。

3.测试用例具有范围性。

4.测试用例具有关联性。

5.测试用例具有阶段性。

6.测试用例具有状态性。

7.测试用例具有代表性。

8.测试用例具有时效性。

第三章

1.选择题

(1)软件测试是软件质量保证的重要手段,下述测试中属于软件测试最基础环节的是(B)

A.功能测试

B.单元测试

C.结构测试

D.确认测试

(2)从下列叙述中,能够与软件开发各阶段,如需求分析、设计、编码相对应的软件测试是(D)

A.组装测试、确认测试、单元测试

B.单元测试、组装测试、确认测试

C.单元测试、确认测试、组装测试

D.确认测试、组装测试、单元测试(3)单元测试的测试对象是(B)

A.系统

B.程序模块

C.模块接口

D.系统功能

(4)单元测试时用于代替被调用模块的是(A)

A.桩模块

B.通信模块

C.驱动模块

D.代理模块

(5)下列关于a测试的描述中准确的是(A)

A.a测试需要用户代表参加

B.a测试不需要用户代表参加

C.a测试是系统测试的一种

D.a测试是验收测试的一种

(6)对于软件的β测试,下列描述中正确的是(D)

A.β测试就是在软件公司内部展开的测试,由公司专业的测试人员窒息感测试

B.β测试就是在软件公司内部展开的测试,由公司的非专业测试人员执行的测试

C.β测试就是在软件公司外部展开的测试,由专业的测试人员执行的测试

D.β测试就是在软件公司外部展开的测试,由非专业的测试人员执行的测试

2.简答题

(1)软件测试的生命周期是如如何定义的?

答:在软件工程环境中的测试事实上是顺序实现的单元测试、集成测试、确认测试、系统测试四个纵向步骤的序列。

(2)α测试与β测试的区别是什么?

答:Alpha测试:

在系统开发接近完成时对应用系统的测试;

测试后仍然会有少量的设计变更。

这种测试一般由最终用户或其它人员完成,不能由程序或测试员完成。

Beta测试:

当开发和测试根本完成时所做的测试;

最终的错误和问题需要在最终发行前找到。

这种测试一般由最终用户或其它人员完成,不能由程序员或测试员完成。

(3)单元测试是什么?其主要任务是什么?

答:单元测试:在软件开发过程中要进行的最低级别的测试活动,在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。

主要任务:

单元中所独立执行路经测试(常见的错误如下:)

①误解或用错了算符优先级②混合类型运算③变量处置错误④精度不够⑤表达是符号错误。

⑵单元局部数据结构测试

①不合适或不相容的类型说明②变量无初值③变量初始化或默认值有错误④不正确的变量名(拼错或不正确的截断)⑤发现上溢、下溢和地址异常

⑶单元接口测试

①输入的实际参数与形式参数的个数、类型等是否匹配、一致②调用其他单元时所给实际参数与被调单元的形式参数个数、属性和量纲是否匹配③调用预定义函数时所用参数的个数、属性和次序是否正确④是否存在与当前入口点无关的参数引用⑤是否修改只读型参数⑥对全程变量的定义个单元是否一致⑦是否把某些约束作为参数传递。

⑷单元边界值测试

边界条件测试是单元测试中重要的一项任务。众所周知,软件经常在边界上

失效,采用边界值分析技术,针对边界值及其边界值的左、右设计测试用例,很有可能发现新的错误。

⑸单元的各条错误处理通路测试

①输出错误的信息难以理解②记录的错误与实际遇到的错误不相符合③在程序自定义的出错处理段运行之前,系统已介入④异常处理不当⑤错误陈述中未能提供足够的定位出错信息

⑹内存分析

内存泄露会导致系统运行的崩溃,尤其对于嵌入式系统这种资源比较匮乏、应用非常广泛,而且往往又处于重要部位,将可能导致无法预料的重大损失。通过测量内存使用情况,可了解程序内存分配的真实情况,发现对内存的不正常使用,在问题出现前发现征兆,在系统崩溃前发现内存泄露错误,发现内存分配错误,并精确显示发现错误时的上下文情况,指出发生错误的理由。

(4)集成测试方法有几种?集成测试与单元测试的区别是什么?

答:1. 模块内的集成,主要是测试模块内各个接口间的交互集成关系;

2. 子系统内的集成,测试子系统内各个模块间的交互关系;

3. 系统集成,测试系统内各个子系统和模块间的集成关系.

集成测试与单元测试的区别:

1. 测试的单元不同

单元测试是针对软件的基本单元(如:函数)所做的测试,而集成测试则是以模块和子系统为单元进行的测试,主要测试接口间的关系。

2. 测试的依据不同

单元测试是针对软件的详细设计做的测试,测试用例的主要依据也是详细设计。而集成测试是针对软件的概括设计做的测试,测试用例的主要依据则是概括设计。

3. 测试空间不同

集成测试主要测试的是接口层的测试空间,单元测试主要测试的是内部实现层的测试空间。

4. 集成测试使用的方法和单元测试不同

集成测试关注的是接口的集成,和单元测试只关注单个单元,因此在具体测试方法上也不同

(5)如何理解系统测试?

答:系统测试的目标不是找出软件故障,而是也要证明系统的性能。

(6)回归测试与一般测试有几点不同?分别是什么?

答:测试计划的可获性:回归测试面临的可能更改的规格说明书、修改过的程序和一个需要更新的旧的测试计划。

测试范围:一般测试过程目标是要检测整个程序的正确性,而回归测试目标是要检测被修改的相关部分正确性

时间分配:回归测试所需的时间、资源需要根据开发具体情况进行(尤其是修正性的回归测试)。

开发信息:回归测试可能会在不同的地点和时间上进行,及时记录开发信息以保证回归测试的正确进行。

完成时间:通常比一般测试所需时间少,因为回归测试只需测试程序的一部分,且采用测试脚本自动化执行。

执行频率:在一个系统的生命周期内往往要多次进行,一旦系统经过修改就需要进行回归测试。

第四章

1.选择题

(1)黑盒测试是通过软件的外部表现来发现软件缺陷和错误的测试方法,具体地说,黑盒测试用例设计技术包括(D)等

A.等价类分法、因果图法、边界值分析法、错误推测发、判定表驱动法

B.等价类分法、因果图法、边界值分析法、正交试验法、符号发

C.等价类分法、因果图法、边界值分析法、功能图法、基本路径法

D.等价类分法、因果图法、边界值分析法、静态质量度量法、场景法

(2)常用的黑盒测试方法有边值分析、等价类划分、错误猜测、因果图等。其中(A)经常与其他方法结合起来使用。

A.边值分析

B.等价类划分

C.错误猜测

D.因果法

(3)等价类划分完成后,就可得出(C),它是确定测试用例的基础。

A.有效等价类

B.无效等价

C.等价类表

D.测试用例案

(4)在设计测试用例时,(A)是用的最多的一种黑盒测试方法。

A.等价类划分

B.边界值划分

C.错误推测法

D.功能图

(5)在黑盒测试中,着重检查输入条件的组合的测试用例设计方法是(D)

A.等价类划分

B.边界值划分

C.错误推测法

D.因果图法

(6)除了测试程序外,黑盒测试还适应于对(C)阶段的软件文档进行测试。

A.编码

B.软件详细设计

C.软件总设计

D.需求分析

(7)由因果图转换出来的(A)是确定测试用例的基础。

A.判定表

B.约束条件表

C.输入状态表

D.输出状态表

2.判断题

(1)用黑盒测试时,测试用例是根据程序内部逻辑设计的(×)

(2)黑盒测试方法中最有效的是因果图法。(√)

(3)对于连锁分支结构,若有n个判定语句,则有2n条路径。(√)

(4)尽量采用复合的条件测试,一避免嵌套的分支结构。(√)

(5)GOTO语句概念简单,使用方便,在某些情况下,保留GOTO语句反能使写出的程序更加简洁。(×)

3.简答题

(1)等价类划分的原则是什么?

答:

1、如果规定了输入条件的取值范围或者个数,则可以确定一个有效等价类和两个无效等价类。

2、如果规定了输入值的集合,则可以确定一个有效等价类和一个无效等价类。

3、如果规定了输入数据的一组值,并且程序要求每一个输入值分别进行处理,则可以为每一个确定一个有效等价类,此外根据这组值确定一个无效等价类,即所有不允许的输入值的集合。

4、如果规定了输入数据必须遵守的规则,则可以确定一个有效等价类和若干个无效等价类。

5、如果已知的等价类中各个元素在程序中的处理方式不同,则应将等价类进一步划分成更小的等价类。

(2)边界值分析设计原则是什么?有函数f(x,y,z),其中x属于[1900,2100],y 属于[1,12],z属于[1,31]。请写出该函数采用边界值分析设计的测试用例。答:{ <2000,6,1>, <2000,6,2>, <2000,6,30>, <2000,6,31>, <2000,1,15>, <2000,2,15>, <2000,11,15>, <2000,12,15>, <1900,6,15>, <1901,6,1 5>, <2099,6,15>, <2100,6,15>, <2000,6,15> }

(3)采用等价类划分方法设计三角行类型的测试用例。

答:覆盖有效等价类的测试用例:

a b c 覆盖等价类号码

3 4 5 (1)--(7)

4 4

5 (1)--(7),(8)

4 5 5 (1)--(7),(9)

5 4 5 (1)--(7),(10)

4 4 4 (1)--(7),(11)

覆盖无效等价类的测试用例:

第五章

1.选择题

(1)以下不属于白盒测试技术的是(D)

A.逻辑覆盖

B.基本路径测试

C.循环覆盖测试

D.等价类划分

(2)以下不属于逻辑覆盖的是(D)

A.语句覆盖

B.判定覆盖

C.条件覆盖

D.基本路径

(3)McCabe建议模块规模应满足:V(G)≦(A)

A.20

B.10

C.30

D.40

(4)下列关于覆盖逻辑,说法错误的是(B)

A.满足条件覆盖并不一定满足判断覆盖

B.满足条件组合覆盖的测试一定满足判断覆盖、条件覆盖和判定/条件覆盖

C.满足路径覆盖也一定满足条件组合覆盖

D.满足判断/条件覆盖同时满足判定覆盖和条件覆盖

(5)(A)方法根据输出对输入的依赖关系设计测试用例

A.路径测试

B.等价类

C.因果图

D.归纳测试

(6)使用白盒测试方法时,确定测试数据应根据(A)和指定的覆盖标准 A.程序的内部逻辑 B.程序的复杂程度

C.使用说明书

D.程序的功能

(7)白盒测试方法的优点是(C)

A.可测试软件的特定功能

B.能站在用户立场上测试

C.可按软件内部结构测试

D.可发现实现功能需求中的错误

2.简答题

(1)白盒测试是什么?和黑盒测试的区别体现在哪些方面?

答:白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。

黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边值分析、因—果图、错误推测等,主要用于软件确认测试。“黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷

举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。

白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。

白盒测试技术(White Box Testing) :深入到代码一级的测试,使用这种技术发现问题最早,效果也是最好的。该技术主要的特征是测试对象进入了代码内部,根据开发人员对代码和对程序的熟悉程度,对有需要的部分进行在软件编码阶段,开发人员根据自己对代码的理解和接触所进行的软件测试叫做白盒测试。这一阶段测试以软件开发人员为主,在JAVA 平台使用Xunit 系列工具进行测试,Xunit 测试工具是类一级的测试工具对每一个类和该类的方法进行测试

(2)为什么说语句覆盖是最弱的逻辑覆盖?

答:语句覆盖对一些控制结构不敏感,不能发现判断中逻辑运算符的错误,覆盖率低。

(3)条件覆盖为什么不一定包含判定覆盖?

答:条件覆盖比判定覆盖增加了对符合条件情况的测试,增加了测试路径,但条件覆盖只能保证每个条件至少有一次为真,为不考虑所有的判定结果。

(4)采用白盒测试进行测试时,测试用例覆盖路径的种类有哪几种?他们相互之间是什么关系?

答:1、语句覆盖

2、判定覆盖

3、条件覆盖

4、判定、条件覆盖

5、条件组合覆盖

他们之间的关系:

1.语句覆盖是很不充分的一种标准。

2.判断覆盖比语句覆盖更严格,因为如果每个根治执行过了,则每个语句也就执行过了。

3.条件覆盖比判断覆盖强因为他使一个判定中的每一个条件都去到两个不同的结果,而判定覆盖则不保证这一点。

4.满足条件组合覆盖的测试用例、是一定满足判定覆盖,条件覆盖和判定、条件覆盖的。

(5)请把图所示的程序流程图转化成控制流图

答:原图转化的控制流图:

相关主题
相关文档
最新文档