我的软件测试习题库.docx
《我的软件测试习题库.docx》由会员分享,可在线阅读,更多相关《我的软件测试习题库.docx(79页珍藏版)》请在冰豆网上搜索。
我的软件测试习题库
软件测试习题库
第1章软件测试背景
判断题
1.软件缺陷就是软件未达到软件产品需求说明书指明的要求。
()
对
2.软件缺陷主要是由于设计的问题造成。
()
错
3.软件缺陷主要是由于编码问题造成。
()
错
4.软件缺陷主要是由于需求问题造成。
()
对
5.软件缺陷在测试阶段发现的数量最多。
()
错
6.软件缺陷在发布后修复的成本最大。
()
对
7.软件缺陷在需求分析阶段修复的成本最大。
()
错
8.软件缺陷在设计阶段修复的成本最大。
()
错
9.软件缺陷在需求分析阶段修复的成本最小。
()
对
10.算法错误是设计错误的一种。
()
对
填空题
1.软件缺陷按测试开发阶段分为____________缺陷、设计缺陷和____________缺陷。
需求缺陷、编码缺陷
2.软件出错机理可描述为软件错误、_________________、软件故障_和______________。
软件缺陷,软件失效
3.需求阶段的错误分为不一致性错误、__________________和___________________。
冗余性错误、不完整性错误、不可行错误、不可测试错误(只填3个)
4.设计阶段的错误分为设计不完全错误、__________________和___________________。
、算法错误、模块接口错误、控制逻辑错误、数据结构错误(只填2个)
5.编码阶段的错误分为数据说明错误、__________________和___________________。
数据使用错误、计算错误、比较错误、控制流错误、界面错误、输入/输出错误(只填2个)
6.“测试成熟度”分为五级、分别为初始级、________________、______________、管理和测量级、优化,预防缺陷和质量控制级。
定义级、集成级
7.某公司成立一个测试小组,当所有的开发全部完成后才由测试小组接手项目的测试,则该公司属于“测试成熟度”模型中的____________级。
定义
8.某公司的软件产品由项目经理带着几个开发人员进行研发,每个开发人员自行测试自己的程序,该公司属于“测试成熟度”模型中的____________级。
初始
9.BillHetzel定义的测试第一类方法的核心思想是_____________________________________。
证明软件是工作的
10.GlenfordMyers定义的测试第二类方法的核心思想是__________________________________。
证明软件是有错误的
名词解释
1软件缺陷
从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背
2.TMM
软件测试成熟度模型是对测试组当前的测试能力状态的一种度量,帮助测试组改进测试效率,提高测试管理水平。
3.测试用例
为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。
简答题
1简述软件缺陷产生的原因。
1、用户需求和说明书没有被很好的理解
分析人员不能100%理解用户需求,写作水平不高
2、软件设计的不合理
设计人员不能100%理解需求文档,设计水平不高
3、代码(算法,流程)存在错误
编码人员不能100%理解设计文档,编码水平不高
2简述什么样的情况下可以判定为软件缺陷。
(1)软件未达到软件产品需求说明书指明的要求。
(2)软件出现了软件产品需求说明书指明不会出现的错误。
(3)软件功能超出软件产品需求说明书指明的范围。
(4)软件未达到软件产品需求说明书虽未指明但应达到的要求。
(5)软件测试人员认为难以理解、不易使用、运行速度缓慢、或者最终用户认为不好的问题。
3.简述测试与调试的区别。
测试的主要工作是找缺陷,发现软件的错误(是否满足用户需求),确定程序中可疑错误的原因和确切位置,对程序(设计或编号)进行修改,排除错误贯穿整个软件生命周期。
调试的目的是解决代码中的缺陷。
第2章软件测试概述
判断题
1.软件测试就是对程序进行测试。
()
错
2.当软件代码开发结束时,软件测试过程才开始。
()
错
3.对发现错误较多的程序段,应进行更深入的测试。
()
对
4.发现错误多的程序模块,残留在模块中的错误也多。
()
对
5.如果发布出去的软件有质量问题,都是软件测试人员的错。
()
错
6.测试部门负责软件质量。
()
错
7.软件测试的目的是尽可能多的找出软件的缺陷。
()
对
8.开发一个软件系统时,要考虑所有的软件质量要素。
()
错
9.测试用例越多,测试效果就会越好。
()
错
10.产品规格说明书和文档的谬误不属于软件缺陷。
()
错
11.没有质量度量,等于没有质量标准。
()
对
12.在软件编码过程中产生的缺陷数量相对软件开发的其它过程多得多。
()
对
13.软件测试能保证软件质量。
()
错
14.软件测试不用考虑软件的可扩展性。
()
错
15.软件的质量越高越好,所以我们必须保证软件零缺陷才能交付。
()
错
16.如果黑客为非法入侵花费的代价(考虑时间、费用、风险等因素)高于得到的好处,那么这样的系统可以认为是安全的。
()
对
17.软件的可靠性可以通过软件测试发现并解决。
()
错
18.好的测试用例集可以花费最小的代价(人力、物力、财力、时间)做最好的测试。
()
对
填空题
1.软件测试的对象包括用户需求、需求说明书、___________________、_______________和运行结果。
设计说明书、源代码
2.软件测试按测试阶段分为单元测试、___________________、确认测试、系统测试、_________________。
集成测试、验收测试
3.软件测试生命周期分为:
测试计划、_________________、_________________、测试执行、测试评估五个阶段。
测试设计、测试开发
4.导致软件缺陷最大原因是___________________。
需求错误
5.测试用例的作用是________________________________________________。
验证某个程序路径是否满足特定的需求
6.测试设计员的职责是____________________和________________________。
设计测试用例、设计测试脚本
7.软件的易用性要让___________________来评价。
用户
8.软件的健壮性包含了____________能力和_____________能力。
容错、恢复
9.软件的功能性质量因素包括健壮性、________________和______________。
正确性、可靠性
10.非功能性质量因素包括性能、清晰性、易用性、____________、____________。
安全性,可扩展性,兼容性,可移植性(填写2个)
名词解释
1.软件测试
软件测试是贯穿整个软件开发生命周期、对软件产品(包括阶段性产品)进行验证和确认的活动过程,其目的是尽快尽早地发现在软件产品中所存在的各种问题——与用户需求、预先定义的不一致性。
2.软件的可移植性
软件的可移植性指的是软件不经修改或稍加修改就可以运行于不同软硬件环境(CPU、OS和编译器)的能力,主要体现为代码的可移植性。
3.软件质量
软件质量是许多质量属性的综合体现,各种质量属性反映了软件质量的方方面面。
4.软件质量模型
软件质量模型指出了质量属性之间的联系和高质量软件的质量属性构成,人们通过软件质量模型来评价一个软件的质量。
5.软件的健壮性
健壮性是指在异常情况下,软件能够正常运行的能力
6.集成测试
一种测试阶段,用于测试模块之间的交互
7.系统测试
一种测试阶段,在代码完全集成后进行,用于测试系统所有功能和非功能是否满足需求。
8.软件质量要素
对软件整体质量或用户需求影响最大的那些质量属性
简答题
1比较验证与确认的区别
确认
评估将要开发的软件产品是否正确无误、可行和有价值的。
确认意味着确保一个待开发软件是正确无误的,是对软件开发构想的检测。
验证
检测软件开发的每个阶段、每个步骤的结果是否正确无误,是否与软件开发各阶段的要求或期望的结果相一致。
验证意味着确保软件会正确无误地实现软件的需求,开发过程是沿着正确的方向进行的。
2.你认为一个优秀的测试工程师应该具备哪些基本素质和专业素质?
基本素质
⏹对软件感兴趣
⏹好奇心
⏹自信、执着、追求完美、团队合作、勾通
⏹叛逆精神
⏹追求完美
⏹洞察力
专业素质
⏹业务知识
⏹产品设计知识
⏹软件架构知识
⏹UML
⏹各种测试工具
⏹用户心理学
⏹文字表达能力
3.某公司生产出一个新型的纸杯,现由你对纸杯进行测试,以保证纸杯的质量和口碑,请根据软件质量要素简述测试方法和目的。
正确性:
是否漏水、是否有包装错误
健壮性:
反复装水倒水或一直保持水满的状态,测试漏水时间是否达标
可靠性:
测试一箱纸杯中有多少个坏的
性能:
测试装油、热水、冰水的漏水时间
易用性:
测试纸杯是否容易使用,包装是否符合用户特点
安全性:
测试纸杯是否结实
兼容性:
测试纸杯是否按国家标准生产
4.简述测试用例的作用及包含的主要元素。
为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。
主要元素:
用例、用例名称、测试目的、前提条件、测试环境、测试步骤、预期结果、.实际的结果/测试的结果
5.简述测试计划阶段的工作内容。
确定测试需求-根据需求收集和组织测试需求信息,确定测试需求
制定测试策略-针对测试需求定义测试类型、测试方法以及需要的测试工具等。
建立测试通过的准则-根据项目实际情况为每个层次测试建立通过标准
确定资源和进度-确定测试需要的软硬件资源、人力资源以及测试进度
评审测试计划-根据同行评审的规范对测试计划进行同行评审
6.简述软件设计阶段的工作内容
对每个测试需求,确定所需的测试用例。
对每个测试用例,确定其输入和预期结果。
测试环境配置
编写测试用例文档
对测试用例进行同行评审
7.简述设计测试用例的基本原则
测试用例的代表性
能够代表并覆盖各种合理的和不合理的、合法的和非法的、边界的和越界的以及极限的输入数据、操作和环境设置等。
测试结果的可判定性
即测试执行结果的正确性是可判定的,每一个测试用例都应有相应的期望结果。
测试结果的可再现性
即对同样的测试用例,系统的执行结果应当是相同的。
8.简述什么是软件的可扩展性,什么时候需要考虑软件的可展性。
软件的可扩展性是反映软件适应“变化”的能力。
软件的可扩展性关键要看软件的规模和复杂性
如果软件规模很小,问题很简单或者软件并不需要后继开发,那么亦无所谓“可扩展性”了。
如果软件规模很大,问题很复杂或采用了增量开发模式,倘若软件的可扩展性不好,那么软件难以维护,甚至不能使用。
第3章白盒测试
判断题
1代码走查的要点是代码编写是否符合标准和规范,是否存在逻辑错误。
()
对
2.对于每个函数,路径覆盖测试是绝对做不到的。
()
错
3.满足条件覆盖肯定满足语句覆盖。
()
错
4.静态测试只能发现简单的语法错误,效率低,耗费时间。
()
错
5.代码审查过程应将注意力用于查找错误而不是修正错误。
()
对
6.路径上的节点都至多出现一次,除非初始和终止节点是相同的节点,称之为简单路径。
()
对
7.如果存在一个测试用例集T可以访问所有长度为2的子路径,则称该测试用例集满足了图的边对覆盖准则。
()
对
8.数据流测试中,节点内一个变量V的值被修改,则称变量V在该节点处被定义。
()
对
9.数据流测试中,节点内一个变量V的值被访问,则称变量V在该节点处被定义。
()
错
10.如果存在一个变量v的从li到lj的Def-pair路径,则称变量v可以从定义节点li到达使用节点lj()
对
填空题
1.白盒法设计测试用例覆盖强度最高的方法是______________________。
路径覆盖
2.静态测试包括桌面走查、__________________和__________________。
代码审查、评审
3.代码审查的参与人员为_______________、________________、模块设计人员和一名测试专家_。
协调人、编码人员
4.选择足够的测试用例,使得程序中每个语句至少都能被执行一次,则满足了白盒测试中的____________覆盖。
语句
5.设计测试用例,使得程序中每个判定至少为真和为假值各一次,则称满足了白盒测试中的____________覆盖。
判定覆盖
6.执行足够的测试用例,使得判定中的每个条件至少为真和为假值各一次,则称满足了白盒测试中的____________覆盖。
条件
7.执行足够的测试用例,使得判定中每个条件至少为真和为假值各一次,并使每个判定至少为真和为假值各一次,则称满足了白盒测试中的____________覆盖。
判定条件
8.执行足够的例子,使得每个判定中条件各种可能组合至少为真和为假值各一次,则称满足了白盒测试中的____________覆盖。
条件组合
9.基于图的覆盖准则分为______________________和________________________。
结构化覆盖准则、数据流覆盖准则
10.没有作为其它简单路径子路径的简单路径称之为_____________。
主路径
名词解释
1.测试路径
从开始节点到结束节点所走的路径。
2.静态测试
静态测试方法的主要特征是在用计算机测试源程序时,计算机并不真正运行被测试的程序,只对被测程序进行特性分析。
3.动态测试
动态测试方法的主要特征是计算机必须真正运行被测试的程序,通过输入测试用例,对其运行情况(输入/输出的对应关系)进行分析。
4.人工测试
由测试人员手工根据测试用例中的步骤,手工执行并记录测试结果。
5.白盒测试
从程序的控制结构出发进行的测试,测试程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能。
6.工作件
也就是静态测试的测试对象,是不同种类的产品交付件,即一切项目过程文档。
7.桌面检查
由程序员自己检查自己编写的程序。
程序员在程序通过编译之后,进行单元测试设计之前,对源程序代码进行分析,检验,并补充相关的文档,以发现程序中的错误。
8.图的节点覆盖准则
存在一个测试用例集T可以访问图中所有可以到达的节点。
9.图的边覆盖准则
存在一个测试用例集T可以访问图中所有可以到达的边。
10.数据流覆盖
根据变量的定义和使用确定程序是否正确
简答题
1.简述静态测试的优点和缺点。
优点
加深对项目的理解,使测试计划和测试设计质量得到提高;
使得测试用例全面、有效,从“撞问题”转变为有目的的“找问题”
提前了对项目的理解,减少了测试执行时的摸索时间,从而加快测试进度
缺点
静态代码检查非常耗费时间,而且代码检查需要丰富的知识和经验积累。
2.简述白盒测试的优缺点。
从程序的控制结构出发进行的测试,测试程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能。
优点:
可以对程序彻底检查,发现错误,缺点:
成本高,测试用例太多,不能验证程序功能是否符合规格说明书
3.简述静态测试与动态测试的区别
静态测试
静态测试方法的主要特征是在用计算机测试源程序时,计算机并不真正运行被测试的程序,只对被测程序进行特性分析。
动态测试
动态测试方法的主要特征是计算机必须真正运行被测试的程序,通过输入测试用例,对其运行情况(输入/输出的对应关系)进行分析。
4.简述桌面检查、代码审查与代码走查之间的区别。
桌面检查:
由程序员自己检查自己编写的程序。
代码审查:
由程序员逐句讲解程序的逻辑。
在此过程中,程序员或其他小组成员可以提出问题,展开讨论,审查错误是否存在。
代码走查:
让与会者“充当”计算机。
由测试组成员为被测程序准备一批有代表性的测试用例,提交给走查小组。
走查小组开会,集体扮演计算机角色,让测试用例沿程序的逻辑运行一遍。
5.简述代码审查中协调人的职责
⏹为代码审查分发材料(程序清单、设计规范),安排进程
⏹在代码审查过程中起主导作用
⏹记录发现的所有错误
⏹确保所有错误随后得到改正
6.写出下图节点0至节点6的测试路径
4个测试路径
[0,1,3,4,6]
[0,1,3,5,6]
[0,2,3,4,6]
[0,2,3,5,6]
7.简述白盒测试策略
(1)在测试中,应尽量先使用工具进行静态结构分析,代码检查,再进行覆盖率测试。
(2)覆盖率测试是白盒测试的重点,一般可使用基本路径测试法达到语句覆盖标准;对于软件的重点模块,应使用多种覆盖率标准衡量代码的覆盖率。
8.简述控制流测试与数据流测试的区别
数据流测试属于白盒测试,主要是从变量的计算和使用来判定程序是否正确。
控制流测试主要是根据程序的执行路径来判定程序是否正确
数据流测试只能用于程序代码,控制流测试可以用于程序代码、活动图、状态图等。
9.有人认为控制流图的节点覆盖准则和边覆盖准则生成的测试用例完全相同,因此两个测试准则是重复的。
请判定以上描述是否正确,并给出相应的解释。
不正确,比如下图根据节点覆盖准则和边覆盖准则生成的测试用例就不相同
节点覆盖:
T={0,1,2},测试路径为[0,1,2]
边覆盖:
T={(0,1),(0,2),(1,2)},测试路径为[0,1,2][0,2]
10.有人认为程序如果可以做到穷举路径测试,就可以保证程序中再也没有缺陷,请判断以上描述是否正确,并给出相应的解释。
不正确,穷举路径测试可以使代码达到100%的覆盖,但是不能查出程序违反了设计要求或用户需求。
穷举测试不能查出遗漏路径错误和与数据相关的异常错误。
应用题
1.按要求给出下列程序的测试用例(要求写出必要的说明)
(1)语句覆盖
(2)判定覆盖
(3)条件覆盖
(4)判定-条件覆盖
1、语句覆盖
满足语句覆盖的情况是:
执行路径:
ace
选择用例:
[(2,0,4),(2,0,3)]
2、判定覆盖
覆盖情况:
共有两个判定,应执行路径:
ace∧abd或:
acd∧abe
选择用例
[(2,0,4),(2,0,3)]ace
[(1,1,1),(1,1,1)]abd
3、条件覆盖
应满足以下覆盖情况:
判定一:
A>1,A≤1,B=0,B≠0
判定二:
A=2,A≠2,X>1,X≤1
选择用例:
[(2,0,4),(2,0,3)]
[(1,1,1),(1,1,1)]
4、判定/条件覆盖
应满足以下覆盖情况:
条件:
A>1,A≤1,B=0,B≠0
A=2,A≠2,X>1,X≤1
应执行路径
ace∧abd或acd∧abe
选择用例:
[(2,0,4),(2,0,3)](ace)
[(1,1,1),(1,1,1)](abd)
2.白盒测试用例设计
现有控制流图如下
(1)根据节点覆盖准则,给出测试路径
(2)根据边覆盖准则,给出测试路径
(3)根据边对覆盖准则,给出测试路径
(1)测试路径:
[0,1,2,3,6][0,1,2,4,5,4,6]
(2)测试路径:
[0,1,2,3,6][0,2,4,5,4,6]
(3)测试路径:
[0,1,2,3,6][0,1,2,4,6][0,2,3,6][0,2,4,5,4,5,4,6]
3.写出下图的所有简单路径和主路径
简单路径:
[0,1,3,0],[0,2,3,0],[1,3,0,1],[2,3,0,2],[3,0,1,3],[3,0,2,3],[1,3,0,2],[2,3,0,1],[0,1,3],[0,2,3],[1,3,0],[2,3,0],[3,0,1],[3,0,2],[0,1],[0,2],[1,3],[2,3],[3,0],[0],[1],[2],[3]
主路径:
[0,1,3,0],[0,2,3,0],[1,3,0,1],[2,3,0,2],[3,0,1,3],[3,0,2,3],[1,3,0,2],[2,3,0,1]
4.根据控制流图,回答以下问题。
(1)根据边覆盖准则,找出所有的测试路径
(2)根据边对覆盖准则,找出所有的测试路径
(3)根据主路径覆盖准则,找出所有的测试路径
边覆盖
[0,1,2,3,6][0,2,4,5,4,6]
边对覆盖
[0,1,2,3,6][0,2,3,6][0,2,4,6][0,1,2,4,5,4,5,4,6]
主路径
[0,1,2,3,6]
[0,1,2,4,5]
[0,1,2,4,6]
[0,2,3,6]
[0,2,4,5]
[0,2,4,6]
[5,4,6]
[4,5,4]
[5,4,5]
5.简述什么是所有定义覆盖、所有使用覆盖、所有du路径覆盖,并根据下图写出变量X的所有定义覆盖、所有使用覆盖、所有du路径覆盖
所有定义覆盖:
对于所有的变量,测试用例集T可以至少到达所有定义
所有使用覆盖:
对于所有的变量,测试用例集T可以到达所有使用
所有du路径覆盖:
对于所有的变量,测试用例集T可以访问所有定义-使用路径
所有定义覆盖:
[0,1,3,4]
所有使用覆盖:
[0,1,3,4][0,1,3,5]
所有du路径覆盖:
[0,1,3,4][0,2,3,4][0,1,3,5][0,2,3,5]
6.根据源代码,完成以下问题。
一个计算三个数中最大数的程序
main()
{intnum1,num2,num3,max;
printf("Pleaseinputthreenumbers:
");
scanf("%d,%d,%d",&num1,&num2,&num3);
if(num1>num2)
max=num1;
else
max=num2;