软件测试复习题.docx
《软件测试复习题.docx》由会员分享,可在线阅读,更多相关《软件测试复习题.docx(31页珍藏版)》请在冰豆网上搜索。
软件测试复习题
软件测试与质量保证复习提纲
提要:
【复习重点】单元测试(黑盒测试:
边界值、等价类、决策表;白盒测试:
语句覆盖、条件覆盖、判定(分支)覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖、基路径法、数据流测试——定义节点、使用节点)
【复习方法】立足于教材,重点看讲课课件及所讲过的习题
【复习题目】
黑盒测试:
边界值
一般边界条件法(4n+1)
健壮性边界条件法(6n+1)
最坏边界条件法(5(n))
健壮最坏边界条件法(7(n))
等价类:
注意无效等价类
决策表:
先得到等价类,简化决策表
白盒测试(程序流程图):
语句路径覆盖:
被测程序的每个语句至少被执行一次P93
判定(分支)路径覆盖:
设计足够的测试用例,使得程序中的每一个判定至少都获得一次“真值”和“假值”,或者说使得程序中的每一个分支都至少通过一次P94
条件路径覆盖:
对每个判定中所包含的若干个条件,应设计足够多的测试用例,使得判定中的每个条件都至少取到一次“真值”和“假值”的机会,也就是说,判定中的每个条件的所有可能结果至少出现一次。
(先列出判定中全部条件的所有可能取值范围,根据所有可能的取值范围设置测试用例)(注:
满足条件路径覆盖度量标准的测试用例不一定满足判定路径覆盖度量标准)
判定/条件路径覆盖:
通过设计足够多的测试用例,使得运行这些测试用例时,判定中的每个条件的所有可能结果至少出现一次,并且每个判定本身的所有可能结果也至少出现一次。
(满足判定/条件路径覆盖的测试用例一定也满足判定路径覆盖、条件路径覆盖以及语句路径覆盖度量标准)
条件组合路径覆盖:
通过设计足够多的测试用例,使得运行这些测试用例时,每个判定中条件结果的所有可能组合至少出现一次。
(注:
条件组合路径覆盖是对每个判定分别考虑它们的条件组合,而不是对整个程序中所有判定的所有条件的组合)(满足条件组合路径覆盖的测试用例,一定都满足前面4中覆盖方法)
基本路径法:
包含一组以前没有处理的语句或条件的一条路径(画控制流程图,节点用标有编号的圆圈表示)
节点:
一般代表了程序流程图中矩形框所表示的处理、菱形框所表示的判定条件,以及两条或多条节点的汇合点等
控制流:
用带箭头的弧线表示,用来连接相关的两个节点,指示了程序控制的转移过程
圈复杂度V(G)=e–n+2=判定节点数+1(每一个elseif以及每个case语句都算为一个判定节点)
其中e表示程序控制流图中边的数量
n表示节点的数量
定义/使用法:
按照程序中变量定义和使用的位置来选择程序的测试路径的一种测试方法。
在程序设计中,程序的变量有两种不同作用:
1、将数据存储起来(变量出现在赋值语句的左边)
2、将所存储的数据取出来(变量出现在赋值语句的右边)
常见的定义/使用路径错误包括:
1、引用一个未初始化的变量
2、一个变量的死(无用)定义
3、等待一个还没有安排的进程
4、安排了一个与自身相同的进程
5、等待一个先前已经被中止了的进程
6、引用一个在并行进程中被定义的变量
7、引用一个值不确定的变量
定义节点:
变量关联的存款单元的内容变化
使用节点:
变量关联的存储单元的内容保持不变
注:
一个变量节点不是定义节点就是使用节点,也可能两者都是。
如
a=a+1或a++
关于变量V:
定义/使用路径:
路径的最初节点是定义节点,最终节点是使用节点
定义清晰(清除)路径:
只有路径的最初节点是定义节点,中间没有定义节点
注:
定义清晰路径一定是定义/使用路径
一、简答题
1、简述软件测试的基本职责
1.、以最少的时间和人力,系统地找出软件中潜在的各种错误和缺陷
2、证明
3、检测
4、预防
2、试论述自底向上集成测试的实施步骤及其优缺点
实施步骤:
1、由驱动模块控制最低层模块的并行测试,也可以把最低层模块组合成实现某一特定软件功能的簇,由驱动模块控制它进行测试
2、用实际模块代替驱动模块,与它已测试的直属子模块组装成为子系统
3、为子系统配备驱动模块,进行新的测试
4、判断是否已组装到达主模块,是则结束测试;否则执行2
优点:
任意的叶子级构件一准备好,就可以开始自底向上集成和测试。
各子树的集成和测试工作可以并行的进行
缺点:
驱动器的开发时自底向上集成中耗费最大的,需要编写的代码量很可能就达到被测系统代码量的两倍。
3、什么是集成测试,一般在何时进行;请论述其集成测试方法的分类
集成测试,也叫组装测试、联合测试、子系统测试和部件测试。
它是单元测试的逻辑扩展,即在单元测试基础之上,将所有模块按照概要设计要求组装成为子系统或系统,进行测试。
集成测试一般在单元测试之后、系统测试之前进行
分类:
集成测试基本可以概括为以下两种,非渐增式测试模式和渐增式测试模块。
非渐增式测试模式即先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要程序,如大爆炸模式;
渐增式测试模式即把下一个要测试的模块同已经测试好的模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试
4、什么是维恩图,如何通过维恩图来理解软件测试
维恩图:
也叫文氏图,用于显示元素集合重叠区域的图示
♦给定一段程序及其规格说明,集合S是所描述的行为,集合P是用程序实现的行为。
S
规格说明
P
程序
程序行为
T
测试用例
5
6
2
1
4
3
7
2和5,可能会有没有测试的已描述行为。
1和4,经过测试的已描述行为。
3和7,对应于未描述行为的测试用例。
2和6,可能会有没有测试的程序行为。
1和3,经过测试的程序行为。
4和7,未通过程序实现的行为
测试的目标:
测试人员怎样才能使这些集合的相交区域(区域1)尽可能地大。
5、试叙述V、W、H、X测试模型,给出其示意图,并说明其局限性和改进途径
V模型(测试与开发阶段对应关系)
⏹单元和集成测试应检测程序的执行是否满足软件设计的要求;
⏹系统测试应检测系统功能、性能的质量特性是否达到系统要求的指标;
⏹验收测试确定软件的实现是否满足用户需要或合同的要求。
V模型的缺陷
存在局限性,仅仅把测试过程作为在需求分析、系统设计及编码之后的一个阶段,只针对程序进行的寻找错误的活动,忽视了测试活动对需求分析,系统设计等活动的验证和确认的功能,直到后期的验收测试才被发现。
W模型
⏹W模型由Evolutif公司提出。
⏹W模型从V模型演化过来,实际上开发是V,测试也是与此并行的V。
⏹相对于V模型,W模型增加了软件各开发阶段中应同步进行的验证和确认活动。
W模型的缺点
⏹W模型也存在局限性。
在W模型中,需求、设计、编码等活动被视为串行的,同时,测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。
这样就无法支持迭代的开发模型。
⏹对于当前软件开发复杂多变的情况,W模型并不能解除测试管理面临着困惑。
X模型
⏹很好地处理测试与开发的交接过程(交接的过程是一个时间段,而不是一个点)
⏹左边描述的是针对单独程序片段所进行的相互分离的编码和测试,此后将进行频繁的交接,通过集成最终合成为可执行的程序,然后再对这些可执行程序进行测试。
⏹己通过集成测试的成品可以进行封装并提交给用户,也可以作为更大规模和范围内集成的一部分。
多根并行的曲线表示变更可以在各个部分发生。
⏹X模型还定位了探索性测试,这是不进行事先计划的特殊类型的测试,给有经验的测试人员在测试计划之外发现更多的软件缺陷。
H模型
H模型
⏹在H模型中,软件测试过程是一个独立的流程,贯穿于整个产品周期,与其他流程并发地进行。
⏹H模型指出软件测试要尽早准备,尽早执行。
⏹当某个测试时间点就绪时,软件测试即从测试准备阶段进入测试执行阶段。
⏹软件测试可以根据被测物的不同而分层次进行。
不同的测试活动可以是按照某个次序先后进行的。
但也可能是反复的,只要某个测试达到准备就绪点,测试执行活动就可以开展。
6、简述等价类的划分原则及测试用例的设计原则
等价类划分原则:
♦如果输入条件规定了取值范围,或者值的个数,则可以确定一个有效等价类和两个无效等价类
♦如果输入条件规定了输入值的集合,或者是规定了“必须如何”的条件,这时可以确立一个有效等价类和一个无效等价类
♦如果输入条件是一个布尔量,则可以确立一个有效等价类和一个无效等价类考虑有效等价类的同时要更多的考虑无效等价类(因为设计开发人员往往在设计开发阶段注重的是功能实现,还少注意容错和非法)
♦等价类的划分既要细致,又不能遗漏(等价类的划分的目的就是最大覆盖(完备性)和最少测试用例(无冗余性))
♦如果规定了输入数据的一组值,而且程序要对每一个输入值分别进行处理,这时要对每一个规定的输入值确立一个等价类,而对于这组值之外的所有值确立一个等价类
♦如果规定了输入数据必须遵守的规则,则可以确立一个有效等件类(即遵守规则的数据)和若干无效等价类(从不同角度违反规则的数据)
♦如果确知以划分的等价类中的各元素在程序中的处理方式不同,则应进一步划分成更小的等价类
测试用例设计原则:
♦为每一个等价类规定一个唯一的编号
♦设计一个新的测试用例,使其尽可能多的覆盖尚未被覆盖的有效等价类,重复这一步,直至所有的有效等价类都被覆盖过
♦设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直至所有的无效等价类都被覆盖为止
7、功能性测试有哪几种方法?
请简单描述各种方法的特点
方法:
等价类划分、边界条件、决策表、因果图法、正交表测试法等
特点:
等价类划分法测试技术是依据软件系统输入集合、输出集合或操作集合实现功能的相同性为依据,对其进行的子集划分,并对每个子集产生一个测试用例的设计方法。
边界条件分析法是对等价类划分方法的扩张,长期的测试工作已发现大量错误时发生在边界条件上,而不是发生在内部。
决策表法测试用例适用于具有以下特征的应用系统:
if-then-else逻辑突出;输入变量之间存在逻辑关系;输入变量需要做等价类划分的;输入和输出之间存在因果关系;程序复杂度圈数比较高的。
因果图法提供了一种把需求规格说明书转化为决策表的系统化方法
8、简述G.Myers阐述的测试目标
1、测试其实是找出执行程序中错误的过程
2、一个好的测试用例能发现一个隐藏的错误
3、一个成功的测试是揭示了一个还未发现的错误
9、简述白盒测试的优缺点
1.优点
·迫使测试人员去仔细思考软件的实现
·可以检测代码中的每条分支和路径
·揭示隐藏在代码中的错误
·对代码的测试比较彻底
·最优化
2.缺点
·昂贵
·无法检测代码中遗漏的路径和数据敏感性错误
·不验证规格的正确性
10、什么是软件缺陷,产生软件缺陷的原因有哪些
定义:
软件缺陷是软件在生命周期各个阶段存在的一种不满足给定需求属性的问题
(1)软件未实现说明书要求的功能
(2)软件出现了说明书指明不应该出现的错误
(3)软件实现了说明书未提到的功能
(4)软件未实现说明书虽未明确提及但应该实现的目标
(5)软件难以理解,不易使用,运行速度缓慢或者最终用户会认为不好
原因:
1、用户一般是非计算机专业人士,软件开发人员和用户的沟通存在较大困难,对要开发的软件产品功能理解不一致
2、由于软件产品还没有设计、开发,完全靠想象去描述软件系统的实际情况,所有有些特性思考得还不够清晰
3、需求变化的不一致性。
4、对于规格说明书普遍不够重视,在规格说明书的设计和写作上投入的人力,时间不足
11、简述黑盒测试的优缺点
优点:
对较大的代码单元来说,黑盒测试比白