软件测试技术基础教程习题解答.docx
《软件测试技术基础教程习题解答.docx》由会员分享,可在线阅读,更多相关《软件测试技术基础教程习题解答.docx(22页珍藏版)》请在冰豆网上搜索。
软件测试技术基础教程习题解答
RevisedbyLiuJingonJanuary12,2021
软件测试技术基础教程习题解答
一、选择题
1.软件测试的目的是C。
A.表明软件的正确性B.评价软件质量
C.尽可能发现软件中的错误D.判定软件是否合格
2.下面关于软件测试的说法,A是错误的。
A.软件测试是程序测试
B.软件测试贯穿于软件定义和开发的整个期间
C.需求规格说明、设计规格说明都是软件测试的对象
D.程序是软件测试的对象
3.某软件公司在招聘软件评测师时,应聘者甲向公司做如下保证:
①经过自己测试的软件今后不会再出现问题;
②在工作中对所有程序员一视同仁,不会因为在某个程序员编写的程序中发现的问题多,就重点审查该程序,以免不利于团结;
③承诺不需要其他人员,自己就可以独立进行测试工作;
④发扬咬定青山不放松的精神,不把所有问题都找出来,决不罢休;
你认为应聘者甲的保证B。
A.①、④是正确的B.②是正确的
C.都是正确的 D.都不正确
4.软件测试的对象包括B。
A.目标程序和相关文档 B.源程序、目标程序、数据及相关文档
C.目标程序、操作系统和平台软件 D.源程序和目标程序
5.导致软件缺陷的原因有很多,①-④是可能的原因,其中最主要的原因包括D。
①软件需求说明书编写的不全面,不完整,不准确,而且经常更改②软件设计说明书③软件操作人员的水平④开发人员不能很好的理解需求说明书和沟通不足
A.①、②、③ B.①、③ C.②、③ D.①、④
二、简答题
1.简述软件测试发展的历史及软件测试的现状。
参考答案:
软件测试是伴随着软件的产生而产生的。
在软件行业发展初期,没有系统意义上的软件测试,更多的是一种类似调试的测试,测试用例的设计和选取也都是根据测试人员的经验随机进行的,大多数测试的目的是为了证明系统可以正常运行。
到了20世纪70年代以后,很多测试理论和测试方法应运而生,逐渐形成了一套完整的体系。
在产业界,从20世纪70年代后期到20世纪80年代中期,很多软件企业成立了QA或者SQA部门。
后来QA的职能转变为流程监控(包括监控测试流程),而测试(Testing)则从QA中分离出来成为独立的组织职能。
到了20世纪80年代初期,一些软件测试的基础理论和实用技术开始形成,软件测试作为软件质量保证(SQA)的主要职能,包含软件质量评价的内容。
软件测试已有了行业标准(IEEE/ANSI)。
在我国,软件测试目前还没有形成一个真正的产业,尚处于起步阶段。
但是,在国内,现在在软件测试行业中各种软件测试的方法、和标准都还在探索阶段。
总之,国内软件测试行业与一些发达国家相比还存在一定的差距。
2.简述软件缺陷在不同阶段发现错误修复的费用。
参考答案:
软件缺陷造成的修复费用随着时间的推移呈指数级地增长,如下图所示。
3.简述软件测试的复杂性。
参考答案:
软件测试的复杂性体现在:
不可能对程序实现完全测试。
杀虫剂现象,即为了克服被测试软件的免疫力,软件测试员必须不断编写新的测试程序,对程序的各个部分进行不断测试,以避免被测试软件对单一的测试程序具有免疫力而使软件缺陷不被发现。
软件测试的代价不容易掌握,因为随着测试量的增加,测试成本将呈几何数级上升,而软件缺陷数量降低到某一数值之后将没有明显的变化,寻求最优测试点,掌握好测试工作量是至关重要的。
在实际操作过程中,测试人员要进行正确的判断,合理的取舍,根据风险分析来决定哪些故障需要修复,哪些故障可以不修复,即并不是所有的软件缺陷都需要被修复。
4.对软件测试的经济性进行总结和分析
参考答案:
软件测试是软件生命期中费用消耗最大的环节。
测试费用除了测试的直接消耗外,还包括其他的相关费用。
影响测试费用的主要因素有:
(1)软件的功能,软件产品需要达到的标准决定了测试的数量。
对于那些至关重要的系统必须进行更多的测试。
(2)目标用户的数量,一个系统的目标用户数量的多少也在很大程度上影响了测试必要性的程度。
(3)潜在缺陷造成的影响
在考虑测试的必要性时,还需要将系统中所包含的信息价值考虑在内。
因此我们应该从经济方面考虑,投入与经济价值相对应的时间和金钱去进行测试。
(4)开发机构的业务能力
一个没有标准和缺少经验的开发机构很可能会开发出充满错误的软件系统。
而一个建立了标准和有很多经验的开发机构开发出来的软件系统中的错误将会少很多。
(5)测试的时机
测试量会随时间的推移发生改变,在一个竞争很激烈的市场里,争取时间可能是制胜的关键。
测试量应该针对合适的目标进行调整。
5.谈谈你对今后从事软件职业的打算。
略
6.简述软件测试工程师应具备的素质。
参考答案:
通常软件人员应具备如下素质:
(1)良好的沟通能力
(2)掌握比较全面的技术
(3)充分的自信心
(4)足够的耐心和责任感
(5)要具备怀疑精神和学习能力
(6)超强的记忆力和良好的洞察力
7.谈谈你对软件测试的重要性理解。
略
第二章软件测试基础
一、选择题
1.软件质量的定义是D。
A.软件的功能性、可靠性、易用性、效率、可维护性、可移植性
B.满足规定用户需求的能力
C.最大限度达到用户满意
D.软件特性的总和,以及满足规定和潜在用户需求的能力
2.关于软件测试对软件质量的意义,有以下观点:
①度量与评估软件的质量;②保证软件质量;
③改进软件开发过程;④发现软件错误。
其中正确的是C。
A.①、②、③ B.①、②、④
C.①、③、④ D.①、②、③、④
3.关于软件质量的描述,正确的是D。
A.软件质量是指软件满足规定用户需求的能力
B.软件质量特性是指软件的功能性、可靠性、易用性、效率、可维护性、可移植性
C.软件质量保证过程就是软件测试过程
D.以上描述都不对
二、简答题
1.简述软件测试的目标及标准。
参考答案:
软件测试的目的就在于在软件投入运行之前,尽可能多地发现软件中的错误。
根据软件测试标准适用的不同范围,软件测试行业中的标准通常可以分国家标准、行业标准、企业和项目规范4个级别。
2.简述软件测试的原则。
参考答案:
软件测试的原则应该是:
应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭。
测试用例应包括测试输入数据和与之对应的预期输出结果这两部分组成。
程序员应避免检查自己的程序。
设计测试用例时,应当包括合理的输入条件和不合理的输入条件。
充分注意测试中的群集现象。
对发现错误较多的程序段,应进行更深入的测试。
严格执行测试计划,排除测试的随意性。
应当对每一个测试结果做全面检查。
妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。
3.软件测试的类型有哪些
参考答案:
按照软件测试的生命周期,可以将测试的执行过程划分为:
单元测试、集成测试、确认测试、系统测试、验收测试。
按照软件测试技术可以将测试划分为白盒测试、黑盒测试、灰盒测试。
按照测试实施不同的主体进行分类,测试包括开发方测试、用户测试、第三方测试。
按照软件测试的内容可以将测试划分为功能性测试、可靠性测试、易用性测试、效率测试、可移植性测试和文档测试等。
4.比较黑盒测试,白盒测试,单元测试,集成测试,系统测试,验收测试的区别与联系。
参考答案:
按照软件测试技术可以将测试划分为白盒测试、黑盒测试。
白盒测试是按照程序内部的结构测试程序检测产品内部动作是否按照软件设计说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。
黑盒测试主要是检测每个功能是否能正常使用。
黑盒测试只关注程序的外部特性,不考虑程序内部的逻辑结构,主要针对软件界面和软件功能等方面进行测试。
单元测试,集成测试,系统测试,验收测试是按照软件测试的生命周期来分的。
单元测试是在软件开发过程中要进行的最小级别的测试,是程序员缩写的一小段代码,用于检验被测代码的—个很小的、很明确的功能是否正确。
集成测试通常是在单元测试的基础上,将所有的程序模块进行有序的、递增的组装为子系统或系统的测试。
集成测试用于检验程序单元或部件的接口关系,使之逐步集成为符合概要设计要求的程序部件或整个系统。
系统测试是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种集成测试和确认测试,其目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方。
验收测试是系统开发生命周期中的—个阶段,它是一项判断产品是否能够满足合同或用户既定需求的测试。
5.软件产品质量特性是什么什么是软件质量保证其主要任务是什么
参考答案:
软件产品质量特性指的是软件产品满足使用要求的程度,就是高质量的软件系统能够准时交付给用户,所耗费的成本不超出预算,且能够正常地运行。
软件质量保证(SoftwareQualityAssurance,SQA)就是保证软件质量的一系列系统性的活动,它是建立一套有计划,有系统的方法,向管理层保证拟定出的标准、步骤、实践和方法能够正确地被所有项目所采用。
软件质量保证的主要任务是向所有有关的人提供证据以确立软件产品的质量功能按照需求运行,它不负责高质量软件的编制,其主要职责是审计软件经理和软件工程组的质量活动,并鉴别活动中出现的偏差。
6.质量保证部门与测试部门的职责是否一样归纳它们的共同点和不同点。
参考答案:
不一样。
从共同点的角度看,软件测试部门和软件质量保证部门的目的都是尽力确保软件产品满足需求,从而开发出高质量的软件产品。
两个流程都贯穿在整个软件开发生命周期中。
二者的不同之处在于软件质量保证部门的工作侧重对软件开发流程中的各个过程进行管理与控制,杜绝软件缺陷的产生。
而测试部门工作则是对已产生的软件缺陷进行修复。
7.ISO9000标准与软件测试的关系是什么
参考答案:
ISO9000系列标准可分为两类:
ISO9001~ISO9003作为第一类用于建立客户对生产商质量要求的保证;ISO9004作为第二类用于生产商自身建立质量保证体系。
其中ISO9003作为软件企业实施ISO9001质量保证模式提供实施指南,它对软件产品从市场调查、需求分析、软件设计、编码、测试等各个开发阶段进行质量保证控制,也对产品发布、销售、成品安装和维护过程进行规范控制,从而保证软件产品的整体质量。
8.简述CMM的具体等级划分。
参考答案:
CMM将软件过程能力成熟度划分为5个等级,如下图所示。
每个等级定义一组过程能力目标,并且表述了能够达到这些过程能力目标的实践活动。
图2CMM软件成熟度等级
第3章软件测试过程与方法
一、选择题
1.关于白盒测试与黑盒测试的最主要区别,正确的是A。
A.白盒测试侧重于程序结构,黑盒测试侧重于功能
B.白盒测试可以使用测试工具,黑盒测试不能使用工具
C.白盒测试需要程序员参与,黑盒测试不需要
D.黑盒测试比白盒测试应用更广泛
2.软件测试类型按开发阶段划分是B。
A.需求测试、单元测试、集成测试、验证测试
B.单元测试、集成测试、确认测试、系统测试、验收测试
C.单元测试、集成测试、验证测试、确认测试、验收测试
D.调试、单元测试、集成测试、用户测试
3.B可以作为软件测试结束的标志。
A.使用了特定的测试用例 B.错误强度曲线下降到预定的水平
C.查出了预定数目的错误 D.按照测试计划中所规定的时间进行了测试
二、简答题
1.简述软件测试与软件开发的关系。
参考答案:
软件测试是贯穿于整个软件开发的过程。
在软件开发的各个阶段,测试人员必须制订本阶段的测试方案,把软件开发和测试活动集成到一起,如下图所示。
2.描述测试流程整体框架。
参考答案:
软件测试从测试计划编写到测试实施,需要经过一系列的过程。
这些测试按软件从编写到交付的各个阶段的先后顺序可分为:
单元测试、集成测试、确认(有效性)测试、系统测试和验收(用户)测试5个阶段,如下图所示。
3.简述单元测试的目标和内容。
参考答案:
单元测试的主要目标是确保各单元模块被正确的编码,就是检验程序最小单元有无错误。
单元测试的主要内容有:
模块接口测试;局部数据结构测试;独立路径测试;出错处理测试;边界条件测试。
4.解释驱动模块和桩模块的概念。
参考答案:
驱动模块和桩模块都是单元测试过程中设置的辅助模块。
驱动模块(driver)。
相当于被测模块的主程序,它接收测试数据,把这些数据传给被测模块,最后输出实测结果。
桩模块(stub)。
用以代替被测模块调用的子模块,桩模块可以做少量的数据操作,不需要把子模块所有功能都带进来,但不允许什么事情也不做。
5.集成测试通常都有哪些策略
参考答案:
一般是根据软件的具体情况来决定采用哪种模式。
通常,把模块组装成为系统的测试方式有两种:
一次性集成测试(No-IncrementalIntegration)又称非增量式集成测试。
另外一种是增量式集成测试方式,增量式集成测试有3种方式:
自顶向下增量测试方式(Top-downIntegration)、自底向上增量测试方式(Bottom-upIntegration)和混合增量测试方式(ModifiedTop-downIntegration)。
6.归纳确认测试阶段的工作。
参考答案:
确认测试又称为有效性测试或合格性测试(QualificationTesting),其目的是验证软件的功能和性能及其特性是否与客户的要求一致,是否满足软件需求规格说明书中的规定。
确认测试阶段需要做的工作如下图所示。
首先要进行有效性测试及软件配置审查,然后进行验收测试和安装测试,在通过了专家鉴定之后,才能成为可交付的软件。
7.简述系统测试的流程。
参考答案:
系统测试流程如下图所示:
8.简述验收测试的流程和常用的策略。
参考答案:
验收测试的工作流程如下图所示:
验收测试的策略通常是建立在合同需求、组织和公司标准及应用领域的基础上的,一般分为:
正式验收测试、非正式验收或Alpha测试和Beta测试。
9.什么是兼容性测试兼容性测试侧重哪些方面
参考答案:
兼容性测试是指测试某新开发的软件在某一特定环境下与各种软件的协调性,软件之间能否很好地运作,软件之间能否发挥很好的效率工作,会不会影响或导致系统的崩溃等。
兼容性测试侧重点需要解决以下问题:
新开发的软件需要与哪种操作系统、Web浏览器和应用软件保持兼容,如果要测试的软件是一个平台,那么要求应用程序能在其上运行。
应该遵守哪种定义软件之间交互的标准或者规范。
软件使用何种数据与其他平台、与新的软件进行交互和共享信息。
一、选择题
1.在下面说列举的逻辑测试覆盖中,测试覆盖最强的是B。
A.条件覆盖B.条件组合覆盖C.语句覆盖D.判定/条件覆盖
2.在下面说列举的逻辑测试覆盖中,测试覆盖最弱的是C。
A.条件覆盖B.条件组合覆盖C.语句覆盖D.判定/条件覆盖
3.对下面的个人所得税程序中,满足判定覆盖测试用例的是A。
if(income<800)tarrate=0;
elseif(income<=1500)tarrate=;
elseif(income<2000)tarrate=;
elsetarrate=;
A.income=(799,1500,1999,2001)B.income=(799,1501,2000,2001)
C.income=(800,1500,2000,2001)D.income=(800,1499,2000,2001)
4.对下面的个人所得税程序中,满足语句覆盖测试用例的是D。
if(income<800)tarrate=0;
elseif(income<=1500)tarrate=;
elseif(income<2000)tarrate=;
elsetarrate=;
A.income=(800,1500,2000,2001)B.income=(800,801,1999,2000)
C.income=(799,1499,2000,2001)D.income=(799,1500,1999,2000)
二、填空题
1.在设计测试用例时,B是用得最多的一种黑盒测试方法。
A.等价类测试B.边界值测试C.因果图测试D.决策表测试
2.阅读下面流程图
图1
当使用判定覆盖法进行测试时,至少需要设计B个测试用例。
A.2B.4C.6D.8
3.以下图2所示控制流程图(程序图)的环复杂度V(G)等于B。
A.4B.5C.6D.1
图2图3
4.以上图3所示程序控制流程图(程序图)中有C条线性无关(即相互独立)的基本路径。
A.1B.2C.3D.4
5.条件组合覆盖是一种逻辑覆盖,它的含义是设计足够的测试用例,使得每个判员中条件的各种可能组合都至少出现一次,满足条件组合覆盖级别的测试用例也是满足A级别的。
A.语句覆盖、判定覆盖、条件覆盖、判定条件覆盖
B.判定覆盖、条件覆盖、判定条件覆盖、修正判定条件覆盖
C.语句覆盖、判定覆盖、判定条件覆盖、修正判定条件覆盖
D.路径覆盖、判定覆盖、条件覆盖、判定条件覆盖
6.逻辑路径覆盖法是白盒测试用例的重要设计方法,其中语句覆盖法是较为常用的方法,针对下面的语句段,采用语句覆盖法完成测试用例设计,测试用例见下表,对表中的空缺项(True或者False),正确的选择是A。
语句段:
if(A&&(B||C))x=1;
else x=0;
用例表:
用例1
用例2
A
TRUE
FALSE
B
①
TRUE
C
FALSE
②
A&&(B||C)
③
FALSE
A.①TRUE②FALSE③TRUE
B.①TRUE②FALSE③FALSE
C.①FALSE②FALSE③TRUE
D.①TRUE②TRUE③FALSE
7.对于白盒测试技术的理解,正确的是C。
A.判断覆盖是条件覆盖的子集,满足条件覆盖指标就一定满足判断覆盖的指标。
B.条件组合覆盖能够达到路径覆盖的要求。
C.白盒测试工作量大,只适用于单元测试,且不易生成测试数据。
D.进行基路径测试时,对于源程序中的循环体,测试用例组中的输入数据使其执行一次或零次就可以了。
三、简答题
1.阐述白盒测试的各种方法。
参考答案:
白盒测试方法可以分为两大类:
静态测试方法和动态测试方法,动态测试方法是设计一系列的测试用例,通过输入预先设定好的数据来动态地运行程序,从而达到发现程序错误的目的。
静态测试方法则不在计算机上实际执行程序,而是以一些人工的模拟技术或使用测试软件对软件进行分析和测试。
动态测试方法主要有逻辑覆盖、独立路径测试等。
静态测试方法主要有静态结构分析、静态质量度量、代码检查方法等。
2.简述逻辑覆盖测试的6种覆盖策略及各自的特点。
参考答案:
根据不同的测试要求,覆盖测试可以分为语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
语句覆盖就是设计足够多的测试用例,使得被测试程序中的每条可执行语句至少被执行一次。
判定覆盖又称分支覆盖,就是设计足够多的测试用例,使得被测试程序中的每个判断的“真”、“假”分支至少被执行一次。
条件覆盖是指设计足够多的测试用例,使得被测试程序中的每个判断语句中的每个逻辑条件的可能值至少被满足一次。
或者说设计足够多的测试用例,使得被测试程序中的每个逻辑条件的可能值至少被满足一次。
判定/条件覆盖是指设计足够多的测试用例,使得被测试程序中的每个判断本身的判定结果(真假)至少满足一次,同时,每个逻辑条件的可能值也至少被满足一次。
即同时满足100%判定覆盖和100%条件覆盖的标准。
在保证完成要求的情况下,测试用例的数目越少越好。
条件组合覆盖是指设计足够多的测试用例,使得被测试程序中的每个判断的所有可能条件取值的组合至少被满足一次。
路径覆盖就是设计足够多的测试用例,使得被测试程序中的每条路径至少被覆盖一次。
3.简述独立路径测试的基本步骤。
参考答案:
独立路径测试的基本步骤是:
步骤1:
根据源程序导出程序控制流图。
步骤2:
根据程序环形复杂度的计算公式,求出程序环形复杂度。
步骤3:
根据上面环形复杂度的计算结果,设计测试用例。
4.使用基本路径法设计出的测试用例能够保证程序的每一条可执行语句在测试过程中至少执行一次。
以下代码由Java语言书写,请按要求回答问题。
intGetMaxDay(intyear,intmonth)
{
1intmaxday=0;
2if(month>=1&&month<=12)
3{
4if(month==2)
5{
6if(year%4==0)
7{
8if(year%100==0)
9{
10if(year%400==0)
11maxday=29;
12else
13maxday=28;
14}
15else
16maxday=29;
17}
18else
19maxday=28;
20}
21elseif(month==4||month==6||month==9||month==11)
22maxday=30;
23else
24maxday=31;
25}
26returnmaxday;}
(1)请画出以上代码的控制流图。
(2)请计算上述控制流图的环复杂度V(G)(独立线性路径数)
(3)假设输入的取值范围是1000参考答案:
(1)请画出以上代码的控制流图。
注意:
需要将复合条件分开单独画成节点。
例如:
month>=1&&month<=12分别用节点2-1,2-2表示
month==4||month==6||month==9||month==11分别用节点21-1,21-2,21-3,21-4表示
(2)请计算上述控制流图的环复杂度V(G)(独立线性路径数)
区域法:
V(G)=11
边与节点的关系:
V(G)=27-18+2=11
判定节点的关系:
V(G)=10+1=11
(3)假设输入的取值范围是1000测试用例编号
year
month
maxday
覆盖的路径
1
1500
0
0
2-1,26
2
1500
16
0
2-2,26
3
1500
4
30
2-1,2-2,4,21