考点:(大题)
计算题:
最少测试用例个数; 语句覆盖、条件组合个数;NS盒图;控制流图,圈复杂度;等价类划分,边界值分析;判断一个数是不是素数;判断某年是不是闰年。
计算:强一般弱一般强健壮、边界值分析(边界值6n+1)、决策表(判定表)条件桩、动作桩、条件相、动作相,合并、因果图,了解实际的应用于拓展。
分析题:(白盒测试——给代码逻辑覆盖,设计测试用例、预期结果。)
白盒语句覆盖用例个数,白盒条件组合,黑盒强弱一般,圈复杂度独立路径怎么识别。
简单ns流程图条件路径,循环结构路径计算,简单的控制流图。
白盒逻辑覆盖代码,设计用例语句判定条件路径覆盖
设计题:(黑盒测试——等价类划分、边界值分析、判定/决策表、因果图)
黑盒方法:等价类划分(三个步骤:1.根据划分原则找划分、2.设计用例:有效类,尽量多的覆盖有效类,针对无效类:每一个无效类单独设计。3.列表)
黑盒需求用户名密码,分有效类无效类等价类划分或者判定表设计用例。
(其他知识:非功能性包含性能测试包含压力测试等)
对于设计题:C++代码。NS图流程图、控制流图,NS图逻辑路径有多少条,嵌套型 连锁型不同的计算方法。控制流程图识别出所有路径。
逻辑覆盖:语句、判定(一个if的整体结果true或false)、逻辑组合(条件)覆盖(if(i>3)&& k<3)各自真假(两个用例测试)也就是根据测试目的来进行测试,条件测试目的是测试条件的真假。
画好控制流图计算圈复杂度,NS计算逻辑路径。
准则:变异测试:测试用例抗药性,对测试用例进行评价,对小条件进行改变,每一个改变叫一次变异。根据变异来看看测试用例能否检测出来。
等价的变异不被称作变异。比如变异200,测出来180个,变异率90%(理解即可);
3.1 基于直觉和经验的方法
基于直觉和经验的测试方法:基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性地设计测试用例。
3.1.1 ALAC测试和随机测试
1、ALAC,是Act-like-a-customer(像客户那样做)的简写,ALAC测试方法是一种基于客户使用产品的知识开发出来的测试方法,它的出发点是著名的Pareto 80/20规律
2、随机测试:随机选择测试数据,用于发现程序中的缺陷。
1)优点:简单易行、成本低、测试数据覆盖范国广:
2)缺点:测试效率低,不能保证发现所有的缺陷,
3)随机测试常用于软件开发的初期,用于快速发现程序中的基本缺陷,例如边界条件错误、参数输入错误等。
3.1.2 错误猜测法
1)错误推测法:测试者根据经验、知识和直觉来发现软件错误,来推测程序中可能存在的各种错误,从而有针对性的进行测试。
2)思想:根据经验列举出可能出现问题的清单,根据清单分析问题可能原因,推测发现缺陷。
3)发现程序经常出现的错误的方法: 单元测试中发现的模块错误; 产品的以前版本曾经发现的错误; 输入数据为0或字符为空; 当软件要求输入时(比如在文本框中),不是没有输入正确的信息,而是根本没有输入任何内容,单单按了Enter键; … …
4)场景:
(1)时间众任务量大时,极据之前项目兴似经验找出易出错的模块重点测试。
(2)实践宽俗道过该方法列出之前出现问题较多的模构再次测试。
3.2 基于输入域的方法
3.2.1 等价类划分法(黑盒)
1、等价类:在所有测试数据中,具有某种共同特征的数据集合进行划分;是某个输入域的子集,在该子集中每个输入数据的作用是等效的。
PS:等价类划分法只要求选择 :一个或多个测试用例
2、将输入数据分成若干个等价类,从每个等价类选取一个代表性的数据作为测试用例
3、等价类分为有效等价类(满足需求的数据集合,即合理的数据)和无效等价类(不满足需求的数据集合,即异常的数据)
4、依据需求,详细了解输入数据的类型、格式、取值范围、约束条件等。
优点:把无限输入,变成有限类,以期降低测试成本,提高测试有效性、完备程度
5、通常列出等价类表:同时考虑两种等价类,经过正反的测试,确保测试有效性、完备程度
6、等价类划分方法应用示例:
1)输入条件规定了取值范围或值的个数,则可以划分为一个有效等价类和两个无效等价类。
2)输入条件规定了输入值的集合,可以确立一个有效等价类和一个无效等价类。
3)N个条件…
7、步骤1)明确需求。2)确定有效和无效等价类。3)提取数据编写测试用例
例:需求:验证QQ账号的合法性;要求:6~10位自然数<可根据长度 或 性质>
8、等价类的组合:对于多个输入,并且这些输入之间存在关联,那么仅仅只覆盖所有等价类还不够,这时候就需要考虑等价类之间的组合。
强/弱:
- 强:多缺陷假设(覆盖组合,失效是由两个或两个以上缺陷同时作用引起的)
- 弱:单缺陷假设(至少覆盖一次即可,失效极少是由两个或两个以上的缺陷同时发生引起的。)
一般/健壮(有无效)
- 一般:只覆盖有效等价类,没有考虑到无效等价类的情况。
- 健壮:覆盖有效和无效等价类;
示例:
解析:1. 多变量的等价类划分(阴影部分是有效等价划分类)
- 变量 x1 取值为 a≤ x1 ≤ d, 三个等价类区间为:
[a,b),[b,c),[c,d)
- 变量 x2 取值为 e≤ x2 ≤ g, 两个等价类区间为:
[e,f),[f,g)
1.1 弱一般等价类(有效中的max(变量数量))
从变量的每个等价类中选择一个值即可——3个
- 基于单缺陷假设:事故的原因往往只是因为单一原因构成的。
- 所以不用考虑变量的组合关系,只关心每个变量的各种等价类是否被覆盖。
- 如图所示,图中三个点覆盖了x1和x2,的所有等价类。
1.2 强一般等价类(每个变量的数量相乘)
从笛卡尔积结果中每个元素取一个值,6=2*3 个
- 拒绝单缺陷假设
- 变量的所有有效组合需要考虑
1.3 弱健壮等价类
- 测试有效等价类,每个变量均取有效值。
- 测试无效等价类,一个变量取其无效等价类中的值,而其余变量取有效值。
- 没有两个变量同时取无效值的情形
例:(解释:弱(取三个有效变量中无效等价类中最大的 3)+键壮—3+2+1=6个(三个无效)=9个)
1.4 强健壮等价类
考虑所有等价类的组合(包括无效和有效)
习题:
小韦:
1、选择测试用例的方法是等价类划分(等价分类):分步骤地把海量测试用例集缩减得很小。
2、等价类划分测试方法:有效等价类(对于软件规格来说是合理的、有意义的输入数据所构成的集合。检查软件是否实现了规定的功能和性能)、无效等价类(对于软件规格来说是不合理的、没有意义的输入数据所构成的集合。检查软件对于异常输入的反应,是否符合规格说明书的要求)。
3、一个等价类或等价划分是指测试相同目标或暴露相同软件缺陷的一组测试用例。
4、弱一般等价类个数是有效等价类种数最多的那一个变量的有效等价类数。
5、强一般等价类个数是所有变量的有效等价类种数乘积。
6、弱健壮等价类个数是有效等价类种数最多的那一个变量的有效等价类数+所有无效等价类种数。
7、强建壮等价类个数是各变量有、无效等价类种数和的乘积。
8、等价类划分的目标是把可能的测试用例集缩减到可控制且仍然足以测试软件的小范围内。
9、等价类划分原则(确定方式):1)在输入条件规定了取值范围的情况下,则可以确立一个有效等价类和两个无效等价类;2)在输入条件规定了输入值的集合或规定了“必须如何”的条件情况下,可确立一个有效等价类和一个无效等价类;3)在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类;4)在规定了输入数据的一组值(假定n个),且程序要对每一个输入值分别处理的情况下,可确定n个有效等价类和一个无效等价类。5)在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
10、根据等价类创建测试用例的步骤:
11、如果建立两个等价划分就可以找出更多软件缺陷,则第一个划分应该包含认为正确的数据——在边界内部最后一两个合法的数据点,第二个划分包含认为可能出现错误的数据——边界之外一到两个非法的数据点。
大题:
3.1、三角形划分等价类问题:(输入域)
3.2、三角形划分等价类问题:(输出域)
3.3、三角形问题细致划分
PS:无效等价类:输入个数不对,输入类型不对,不在有效范围
4、日期问题
法一:
法二:(相当于每一个都有两个无效等价类)
5.1、佣金问题
5.1、佣金问题
6、等价类划分方法习题关于某城市电话号码正确性
7、某种信息加密代码由三部分组成,这三部分的名称和内容如下
(1)加密类型码空白或三位数字
(2)前缀码非0或1开头的三位数
(3)后缀码四位数字
假定被测试的程序能接受一切符合上述规定的信息加密代码,拒绝所有不符合规定的信息加密代码,试用等价类划分法,分析它所有的等价类,并设计测试用例。
考试原题 四设计题 1:等价类划分
某学校教务系统中,学生学号由三部分组成,分别是:
1)前4位编码:4位数字字符,或者空白;
2)中间4位编码:0不开头,而且9不开头的4位数字;
3)后四位编码:4位数字字符。
假设测试该教务系统时,系统仅接受符合上述规则的学号,拒绝所有不符合规则的学号;
请考生使用等价类划分方法进行测试用例设计。(11分)
考试原题 二 4(1):计算所需设计的用例个数
设函数y=f(x1,x2),输入数据是(x1,x2),其中:
x1,有效等价类为[a,b],(b,c];其无效等价类是(-Inf,a)和[c,Inf)
x2,有效等价类为[e,f),[f,g];其无效等价类是(-Inf,e)和[g,Inf)
基于强健壮的等价类组合,最少需要多少个测试用例?
说明:强健壮等价类组合,是指每一个输入变量的每一种等价类(包括有效类和无义与其他变量的每一个等价类(包括有效类和无效类)的组合,均需测试。(3分)
4×4=16个
8、使用等价类划分法和边界值分析法设计测试用例
题目要求:一个程序读入一个整数,把这个整数看做一个学生的成绩。这个程序要打印出信息,说明这个学生的成绩是优秀(90~100)、良好(80 ~ 89)、中等(70 ~79)、及格( 60 ~69)还是不及格(0 ~59)。请用等价类划分法和边界值分析法设计出相应的测试用例。
1)问题分析
对于这个题目要求,设输入成绩为x,则x需要满足的条件为:
x为整数;0<=x<=100
此外,不满足条件的x有以下几种:
x>100;x<0;x不是整数;x非数字字符
2)建立等价类表
3)设计等价类测试用例
3.2.2 边界值分析法
1、经验之谈很多错误发生在输入或输出范围的边界上,因此针对各种边界情况设置测试用例,可以更有效地发现缺陷。
2、设计方法: 确定边界情况(输入或输出等价类的边界);选取正好等于、刚刚大于或小于边界值作为测试数据。
3、解决边界限制问题
上点:边界上的点(2个边界,所以是2个)必取
离点:举例边界点最近的点(边界左右的两个点)
内点:Norm点,一般居中取数据(一般取中点)必取
有关范围限制,最多7条用例,七点法。
能解决计数型问题,但不能解决类型。
4、测试用例的数据选取方法
五点法:选取最大值max,略低于最大值max-,正常值normal,略高于最小值min+、最小值min。也称为一般边界值分析。
七点法:选取略大于最大值max+,最大值max,略小于最大值max-,正常值normal,略高于最小值min+,最小值min,略低于最小值min-。也称为健壮性边界值分析,是对五点法的扩展。
假设一个被测程序具有两个输入变量X1和X2,规定a≤X1≤b,c≤X2≤d
(1)(五点法)一般边界值分析
在采用一般边界值分析方法时,共产生9个测试用例。
除了上下边界处的4个取值外,每个变量可以共用一个各变量取值均为正常值的测试用例。一般边界值分析测试用例的数量为4N+1个
(2)(七点法)健壮性边界值分析
健壮性边界值分析需要为每个变量额外考虑略超过最大值max+和略小于最小值min-两种情况。因此对于两个变量的情况,对于含有N个变量的程序,健壮性边界值分析测试用例的数量为6N+1个
PS:对于至少取几个点,五点法:比如(1,30]取得时候取1,2,30,31
取2不取0的原因是:1已经是无效值了所以不用再取0了。
取31不取29的原因是:30是有效值所以再去取31那个无效值。避免重复;
5、边界值的组合
若有多个变量,边界值的组合可分为多种情况:
一般:只考虑在有效区间上的边界值;健壮:同时考虑有效和无效区间上的边界值
在边界值分析法中叫 最坏情况:考虑边界值的组合
例:发现实际上中间这个点可以 -1,也就是在二元坐标系中9个用例即可覆盖
总结:n指的是几元
在五点法中最少为4n+1; 最坏情况:5×5=25。在七点法中最少为6n+1; 最坏情况:7×7=49
一般边界值分析的测试用例:n个变量 4n+1个
健壮性测试产生测试用例:n个变量 6n+1个
最坏情况测试产生测试用例:n个变量 5^n个
健壮最坏情况测试产生测试用例:n个变量 7^n个
6、边界值设计步骤
1)明确需求。2)确定等价类,包括有效等价类和无效等价类。3)确定边界范围。4)提取测试数据,编写测试用例
7、如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。
如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少一、比最大个数多一的数作为测试数据。
习题:
小韦:
1、边界值设计方法:1)确定边界情况(输入或输出等价类的边界);2)选取正好等于、刚刚大于或小于边界值作为测试数据。
2、确定边界值的方法:
1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。
2)如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少一、比最大个数多一的数作为测试数据。
3)如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。
4)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。
例:一个函数包含3个输入变量,分别为Year、Month和Day,其输出是输入日期后一天的日期。例如,输入是2018年3月11日,则函数输出为2018年3月12日。要求3个输入变量均为正整数值,并且1900≤Year≤2050,1≤Month≤12,1≤Day≤31。
答:一般边界值分析法设计测试用例,问题中共有3个变量,故测试用例为4N+1=4×3+1=13个。
考试原题 二 4(2):假设程序F有3个输入变量x1(a≤x1≤b),x2(c≤x2≤d)和x3(e≤x3≤0)针对输入数据(x1,x2,x3)设计测试用例,采用一般边界值策略设计测试用例,写出用例个数的计算公式,并计算此例的用例个数。(3分)说明:一般边界值策略,是指用例每次只覆盖一个变量的边界值,而其它变量取正常值(即norm点)即可。
答:4N+1=4×3+1=13个
3、下列关于边界值测试基本原则的描述,不正确的是()。(单选题)
A、 如果需求规范说明指定了输出而非输入的范围和取值的个数,则无法使用边界值测试
B、 如果输入条件规定了取值范围,则以此范围为基础设计测试用例
C、 如果输入或输出是一个有序集合,如:线性表、顺序文件等;则选择该序列中的第一个及最后一个元素进行测试,进一步考虑第二个元素和倒数第二个元素
D、 如果输入条件规定了取值的个数,则以个数为基础设计测试用例
答案: A
3.3 基于组合及其优化的方法
3.3.1 判定表方法
1、判定表由“条件和活动”两部分组成,即列出一个测试活动执行所需的条件组合,所有可能的条件(输入)组合定义了一系列的选择而测试活动(结果输出)需要考虑每一个选择。
2、判定表基本概念
条件桩:输入条件, 列出了系统的所有输入,列出的输入次序无关紧要
动作桩:结果, 列出了系统可能采取的操作,这些操作的排列顺序没有约束
条件项:输入条件取值的全部组合, 列出针对它左列输入的取值,在所有可能情况下的真假值
动作项:条件项对应的所有的结果, 列出在输入项的各种取值情况下应该采取的动作
规则:一组条件与动作的组合,一条规则对应一条测试用例
2.实例:功能:若用户欠费或关机,则不允许机主被叫。
最后每一列需要设计一条测试用例覆盖,有几条规则(组合)就有几条测试用例。
2、设计步骤:
1)明确需求;
2)画出判定表:① 列出条件桩和动作桩。② 填写条件项,对条件进行全组合。③ 根据条件项的组合确定动作项。④ 简化、合并相似规则(有相同的动作);【a、期望结果一致。b输入变量得到与结果不影响】
3)根据规则编写测试用例
3、1)优点:
能把所有条件组合充分地表达出来,并且最为严格、最具有逻辑性
化繁为简,能够精简、准确的输出测试用例数据
条件组合明确,故此也不容易遗漏
2)缺点
判定表在用于知识表达中,存在其他方式达不到的作用,例如不能表达重复执行的动作(循环结构体)
判定表的建立过程较复杂,表达式繁琐
有多个条件时就会有多个翻倍的规则数
习题
小韦:
1、判定表由“条件和活动”两部分组成,即列出一个测试活动执行所需的条件组合,所有可能的条件组合定义了一系列的选择,而测试活动需要考虑每一个选择。
2、判定表的元素:1)条件桩,列出问题的所有条件。2)动作桩:列出可能针对问题所采取的操作。3)条件项:针对所列条件的具体赋值。4)动作项:列出在条件项(各种取值)组合情况下应该采取的动作。
规则:任何一个条件组合的特定取值及其相应要执行的操作。
例1:程序马力
程序规格:“……对功率大于50马力并且维修记录不全,或者已运行10年以上的机器,应给予优先的维修处理……”;假定,“维修记录不全”和“优先维修处理”均已严格定义。
程序规格:“……对功率大于50马力并日维修记录不全,或者已运行10年以上的机器,应给予优先的维修处理……” ;假定,“维修记录不全”和“优先维修处理”均已严格定义。
注意:为什么可以把1,2和5,7和6,8合并呢,其实仔细看功率大于50马力且维修几率不全是一个组合判断。只要它们两个在,其导致的结果和第三个没关系所以1,2合并。再看5,7,如果如果有了第三个条件即第二个有或没有都无所谓。
老师说:这里的合并,最多一般合并两个。
得出测试用例(类似这样写)
例2:积分兑换问题
有一个网站的积分兑换系统,只有金牌会员才能参与积分兑换,登录后可在该网站的积分商城兑奖。具体规则是:若积分5000及以上,则可以兑换1台iPhone7手机,兑换一次奖品积分减少3000分,可多次兑换;若奖品已经被其他会员兑换完了就不能再兑换了,只能保留积分。登录和会员权限都不满足的情况下优先显示“没有登录”信息。在积分不够和奖品兑完同时发生时,优先显示“积分不够”信息。请利用判定表法的原理,设计判定表。根据判定表,准备测试用例,撰写测试用例设计表。
1)判定表条件桩:
已登录;金牌会员;积分≥5000;奖品数量足够;
2)判定表动作桩:
弹出提示信息,显示”没有登录不能参与本次活动“;
弹出提示信息,显示”不是金牌会员不能参与本次活动“;
兑换大奖,减去 3000 积分;
弹出提示信息,显示”奖品数量不够“;
弹出提示信息,显示”积分不够兑换奖品“。
合并:4、11 登录:1;权限:1;积分≥5000:0;奖品数量:-
3、8、10、15登录:1;权限:0;积分≥5000:-;奖品数量:-
2、6、7、9、12、13、14、16登录:0;权限:-;积分≥5000:-;奖品数量:-
例3:超市产品销售
超市中如果某产品的销售好并且库存低,则继续销售并增加该产品的进货;如果该产品销售好,但库存量不低,则继续销售,若该产品销售不好,但库存量低,则该产品下架。若该产品销售不好,且库存量不低,如果有空货架则继续销售,如果没有空货架,则该产品下架请使用判定表法设计测试用例。
条件桩 条件项
c1:销售好? T or F
c2:库存低? T or F
c3:有空货架? T or F
分析需求,列出所有的条件组合所产的动作
A1:增加进货
A2:继续销售
A3:产品下架
根据规则,设计初始判定表,如下表所示
对于本题有3个条件(销售、库存、有空货架),每个条件有两个取值(是或否),根据组合的原理,共有2^3=8种规则
第1,2条规则其动作项一致,条件项的前2个条件取值一致,只有第三个条件取值不同,说明第三个条件无论取任何值,都对相应的动作没有影响,这2条规则可以合并,合并的C3为–,说明在当前规则中该条件的取值与动作的取值无关,称为无关条件。第3、4条规则和第5、6条规则也可合并。
例4:计算房地产基础中介费
有一个计算房地产基础中介费的程序,规定中介费用政策如下:
如果房屋销售总价少于10万元,那么基础中介费将是销售总价的2%
如果房屋销售总价大于10万元,那么基础中介费将是销售总价的1.5%,外加1000元
如果销售额大于100万元,那么基础中介费将是房屋销售总价的1%,外加1500元
另外房屋销售单价和客户的性质对中介费也有影响:
若单价低于1万/m^2,则外加基础中介费的5%;若是老顾客,则减免外加基础中介费
若单价在1万/m^2到2万每平方,则外加基础中介费的2.5%;若是老顾客,则减免外加基础中介费
若单价在2万/m^2以上,则减免外加基础中介费;若是老顾客,则减去基础中介费的5%
解:
分析程序的规格说明,并结合以上条件项, 列出可能采取的操作
- a1:基础中介费为销售总价的2%
- a2:基础中介费为(销售总价的1.5%+1000)元
- a3:基础中介费为(销售总价的1%+1500)元
- a4:外加基础中介费的5%
- a5:外加基础中介费的2.5%
- a6:减去基础中介费的5%
例五:验证”用户欠费或者关机,则不允许主被叫“功能的测试
例六:通知单提货单
如果金额大于500元,又未过期,则发出批准单和提货单
如果金额大于500元,但过期了,则不发批准单和提货单
如果金额小于等于500元,则不论是否过期都发出批准单和提货单
在过期的情况下不论金额大小还需发出通知单
例七:支付宝个人账户注册---验证用户名
输入手机号或者电子邮箱作为账户名,输入正确验证码。两项验证成功,填写账户信息。如果一项验证不正确(输入手机号或电子邮箱格式错误),报错L。验证码输入错误,报错M。
由上面的判定表可看出,第一条和第二条的情况不存在,再从结果来看,相同结果但是条件不同的情况不可简化,因此得到下面六条用例
考试原题 四 2:判定表
某学校教务系统的一个模块的需求规格说明书中描述:
研究生:完成课内实验任务10个以上,平时成绩增加20%,直至100分封顶;完成完成课外实验任务10个以上,平时成绩增加5%
本科生:完成课内实验任务10个以上,平时成绩增加25%,直至100分封顶;完成完成课外实验任务10个以上,平时成绩增加10%,写出相应判定表 并 写测试用例
注意:所有写出的规则都需要写测试用例的。
适合使用判定表驱动法的情况如下:
1、规格说明以判定表形式给出,或很容易转换成判定表
2、条件的顺序不形响执行嚅些操作
3、规则的顺序不影响执行些作
4、每一规则可直接确定要执行的操作,不受其他规则影响
5、任何规则要执行的任何多个操作,这些操作的执行顺序无关紧要
3.3.2 因果图方法
因果图法:多种输入条件的组合,产生多种结果设计测试用例。
针对更为复杂的“多种输入条件、产生多种结果”设计组合测试用例。设计方法:
·分析软件Spec描述的哪些是原因(输入条件)、哪些是结果(输出),给每个原因和结果赋予一个标示符。
·找出原因与结果、原因与原因之间的对应关系,画出因果图
·在因果图上标上哪些不可能发生的因果关系,表明约束或限制条件
·根据因果图,创建(转化为)判定表,将复杂的逻辑关系转化为简单的组合矩阵
·把判定表的每一列转化为测试用例。
对于条件组合规模比较大的,很难整体上使用一个因果图时,可以划分为若干部分,然后分别对每个部分画出因果图。
分析规格说明:因,即输入条件或其等价类;果,即操作和输出,并给每个因和果赋予一个标识符
因和果原子化
例如:男工程师的基本工资加100,奖金加50。
因有2个:职称=工程师,性别=男:
果也2个:基本工资=基本工资+100,奖金=奖金+50
因果图基本符号: 向上 或 有一个即可;向下 与 都需要满足
条件之间的关系:
用例设计步骤:
(1)分析规格说明:因和果原子化;
(2)找出因与果之间,因与因之间的关系,并根据这些关系,画出因果图。
(3)标明约束条件。有些因与因,因与果的组合不出现,标记约束;
(4)把因果图转换为判定表:
(5)根据判定表设计测试用例
习题
例:设一个饮料自动售货机软件:若投入5 角钱或1元钱的硬币,按下【橙汁】或【啤酒】的按钮,则相应的饮料就送出来;
若没有零钱,则显示【零钱找完】的红灯亮,这时在投入1元硬币并按下按钮后,饮料不送出来而且1元硬币也退出来;
若有零钱找,则显示【零钱找完】的红灯灭,在送出饮料的同时退还5角硬币。
请用因果图法为此软件设计测试用例。
分析这一自动售货机软件的规格说明,列出原因和结果。
原因:1)售货机有零钱找 2)投入1元硬币 3)投入5角硬币 4)按下橙汁按钮 5)按下啤酒按钮口结果:1)售货机〖零钱找完〗灯亮 2)退还1元硬币 3)退还5角硬币 4)送出橙汁饮料 5)送出啤酒饮料
例:中国象棋中马的走法
如果落点在棋盘外,则不移动棋子;如果落点与起点不构成日字型,则不移动棋子;如果落点处有自己方棋子,则不移动棋子;如果在落点方向的邻近交叉点有棋子(绊马腿),则不移动棋子;如果不属于前几条,且落点处无棋子,则移动棋子;如果不属于前几条,且落点处为对方棋子 (非老将) ,则移动棋子并除去对方棋子;如果不属于前几条,且落点处为对方老将,则移动棋子,并提示战胜对方,游戏结束。
案例分析--因果图
1) 根据程序规格说明书描述的语义内容,分析并确定“因”和“果”;
原因:1、落点在棋盘外;2、不构成日字;3、落点有自方棋子;4、绊马腿;5、落点无棋子;6、落点为对方棋子;7、落点为对方老将。
结果:21、不移动;22、移动;23、移动己方棋子消除对方棋子;24、移动并战胜对方。
2) 将“因”和“果”表示成 “因果图”,并标明约束条件;
3) 将得到的因果图转换成判定表;
这个结点称做中间结点,是为了让因果图的结构更加明了,简化因果图导出的判定表。分析得出以下两个结论:
只有1、2、3、4都不成立时,产生11,跟5、6、7结合分别得出22、23、24三个结果;
不管5、6、7哪个成立,只要1、2、3、4有一个成立,就产生结果21;再加上落点有自方棋子的状况。可以得到判定表如下:
进一步分析,将各种不可能产生的组合情况,取消掉,图中用灰色表示。这些都是之前没有写的一些约束条件导致的。比如落点在棋盘外,那么落点就不可能在对方棋子上了。
4) 为判定表中每一列所表示的情况设计一个测试用例。
例:某软件规格说明书包含这样的要求:第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改,但如果第一列字符不正确,则给出信息N;如果第二列字符不是数字,则给出信息M。用因果图法测试该程序。
原因:(1)第一列字符是A;第一列字符是B;第二列字符是数字
结果:(21)进行文件的修改;给出信息N;给出信息M;画出因果图
中间节点:(11)第一列字符必须是A或B
例:设计QQ登录界面的测试用例
有3个可以组合的项:QQ的帐号、QQ的密码、登录按钮。在测试的时候,要简化QQ的输入条件,这样才能有重点的去测试,也是主要关注用户的基本需求。
例:有一个处理单价为1元5角的盒装饮料的自动售货机软件。若投入1元5角硬币,按下“可乐”,“雪碧”或“红茶”按钮,相应的饮料就送出来。若投入的是两元硬币,在送出饮料的同时退还5角硬币。请采⽤因果图法为该案例设计测试⽤例。
1)分析原因和结果
2)画出因果图
画出决策表
设计测试用例
例:程序的规格说明要求:输入的第一个字符必须是“#”或“*”,第二个字符必须是一个数字,在此情况下进行文件的修改;如果第一个字符不是“#”或“*”,则给出信息N;如果第二个字符不是数字,则给出信息M。请用因果图法设计测试用例
3.3.3 Pairwise方法(两两组合)
两两组合法:大部分缺陷是在两个变量取值冲突的测试时被发现的,不仅仅是在所有的组合情况下才会发现所有的测试缺陷
处理的问题:多个变量、每个变量有多个取值的组合数太大(不再是条件成立、不成立两种情况)。
定义:确保某个变量取值和另一个变量取值成对出现都会被覆盖。
效果:可大幅度降低组合的数量。
例:选取两个值最多的选项相乘(两两组合了他们,下面的就随意了一定可以被组合完)
注意:1)大部分缺陷是在两个变量取值冲突的测试时被发现的,而不需要测试所有的完整组合。
2)Pairwise方法来自于经验数据
3.3.4 正交实验法
正交试验法:确定影响功能的因子与状态,选择一个合适的正交表,利用正交表构造测试数据集。
1、处理的问题:和Pairwise类似
2、依据与思想:依据Galois理论,从大量的(实验)数据(测试例)中挑选适量的、有代表性的点(条件组合),从而合理地安排实验(测试)的一种科学实验设计方法
3、过程:
1)确定影响功能的因子与状态
2)选择一个合适的正交表
3)利用正交表构造测试数据集
6、正交实验设计方法:
L为正交表的代号,n为实验的次数,t为水平数,c为列数
例:L8(4^1x2^4)表示在有1个4水平的因子,4个2水平的因子的情况下,需要的实验次数为8,也就说如果有5个输入条件,条件1有4种取值可能,条件2、3、4、5名有2种取值可能,则需要测试的次数为8。若不用正交表,对所有可能的情况都进行测试,则总共需要测试4*2*2*2*2=64次。
通过实验次数对比,可以看出,正交表能有效地、合理地减少需要进行的实验次数,其作用是明显的。
小结
3.4 基于逻辑覆盖的方法
结构化测试方法:
逻辑覆盖(6个):语句覆盖;判定覆盖;条件覆盖;判定/条件覆盖;条件组合覆盖;MC/DC覆盖【基于内部逻辑和一定的准则】
路径覆盖:基本路径覆盖【在程序或业务控制流程的基础上,分析控制构造的环路复杂性,导出基本可执行路径集合而设计出测试用例】
3.4.1(代码行)语句覆盖(最弱)
设计若干测试用例,运行被测程序,使程序中的每个可执行语句至少被执行一次。
需要注意:开头的dim稍有些不合适,对于输入数据应当选择形参或者全局变量。
比如:fun(int a,int b,char c){ int i ;}这里i就属于局部变量所以不能作为测试用例中的输入数据。
语句覆盖不能发现的问题:把程序源代码中的or和and 搞混了。
老师讲书写过程:
3.4.2 判定/分支覆盖
判定覆盖:设计若干用例运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满足。(至少也得有两个用例)
一个判定代表着程序的一个分支,判定所有的分支,判定覆盖也被称为分支覆盖。
满足了判定覆盖,也就满足了语句覆盖
3.4.3 条件覆盖
条件覆盖基本思想:设计若干测试用例执行被测程序后,要使每个判断中每个条件的可能取值至少满足一次。
与判定(分支)覆盖没有可比性,也没有包含关系。(上面图的有的分支没有走)
判定M: 条件a>0: 取.T.时为T1 取.F.时为F1 ;条件b>0: 取.T.时为T2 取.F.时为F2;
判定N: 条件a>1: 取.T.时为T3 取.F.时为F3; 条件c>1: 取.T.时为T4 取.F.时为F4;
条件则没有做到全覆盖,这说明达到判定覆盖的要求也不能保证条件覆盖,即判定覆盖不比条件覆盖强。为了进行更充分的测试,必须引入判定-条件覆盖。
3.4.4 判定-条件覆盖
判定-条件覆盖:判定和条件覆盖设计方法的交集,即设计足够的测试用例,使得判断条件中的所有条件可能取值至少执行一次,所有判断的可能结果至少执行一次
3.4.4 条件组合测试(最强)MCC
条件组合覆盖基本思想:设计足够的测试用例,使得判断中每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次。
与条件覆盖的差别:它不是简单地要求每个条件都出现“真”与“假”两种结果,而是要求让这些结果的所有可能组合都至少出现一次。
但可能会存在资源耗费仍然存在遗漏的问题
例题:
a丨b看做是一个条件,所以三个条件每个条件分真假两用可能 2³=8条
b&c看做是一个条件,c&&d是两个条件这里需要注意 2⁴=16条
2⁴=16条
3.4.5修正条件/判定覆盖(MC/DC)
1)每个判定的所有可能结果至少能取值一次;(满足判定)
2)判定中的每个条件的所有可能结果至少取值一次;(满足条件)
3)一个判定中的每个条件独立地对结果产生影响;
4)每个入口和出口至少执行一次。
PS:这里n个条件至少要n+1个测试用例。
满足MC/DC的用例数下界为(条件数+1),上界为(条件数的两倍)。
写出 A||(B&&C)满足修正条件判定覆盖(MC/DC)的用例
组合覆盖 vs 路径覆盖(覆盖了所有组合,但覆盖路径有限,1-2-5 没被覆盖)
1、条件组合效率不高,有些测试是不必要的。2、判定/条件不够强。
3.4.6 基本路径覆盖
1、设计所有的测试用例,来覆盖程序中基本的执行路径。
2、基本路径覆盖的设计过程:
1)依据代码绘制流程图。2)确定流程图的圈复杂度。3)确定线性独立路径的基本集合。4)设计测试用例覆盖每条基本路径。
3、示例:
4、计算圈复杂度
表示代码逻辑复杂度的度量,提供了被测代码的路径数量。复杂度越高,出错的概率越大。
V(G) = 区域数量(由节点连线包围的区域,包括图形外部区域) 上图为 4(部分)
V(G) = 边界数目 - 节点数目 + 2 (11-9+2=4)
V(G) = 判断(分支)节点数量 + 1(3+1=4 PS:别忘了开头的1)
5、确定独立路径集合
独立路径:至少引入一系列新的处理语句或条件的任何路径
基本集:由独立路径构成的集合 由基本集导出的测试用例,保证每行代码语句至少被执行一次
基本集合不一定唯一
不需要活动图, 但最好绘制程序流程图
最好每个单元都进行基本路径测试,对关键组件则是必要的
6、准备测试用例:确保基本路径组中的每一条路径被执行一次。
总结
扩展:1、数据流覆盖:数据流程图、代码中变量的定义与引用。2、控制流覆盖:业务流程基本路径覆盖,代码中的逻辑覆盖。
考试原题(17~20 题)假设有下面的C++代码片段:
void fun_test(int a, int b, int& x)
{ if(a>1&&b=0) x/=a;
if(a=2||x>1) x++; }
测试时需确定输入数据(a,b,x)的值,例如①表示a=2,b=0,x=3。下面给出不同输入数据:
①(2, 0, 3);②(3,0,1);③(2,1,3);④(2,0, 4);⑤(1, 1, 1);⑥(1,1,2)
分析:
- 要执行到 "x /= a;",条件1必须为真,即
a
大于1且b
等于0。 - 要执行到 "x++;",条件2必须为真,即
a
等于2或者x
大于1。
17、若能执行到“x/=a;”和“x++;”可采用的输入数据或输入数据集是(A)
A① B② C③ D⑤⑥
18、若能执行到“x/=a;”和“x++;”且能测试到2个判定为假的输入数据集是(B)
A①② B②③ C①③ D①④
- 对于输入数据集②,条件1为假,因为
a
不大于1。 - 对于输入数据集③,条件2为假,因为
x
不大于1。
19、两个i判定各包含2个条件,能使这4个条件取真、假值均被覆盖的输入数据集是(④)
- 对于条件1,当
a
等于2且b
等于0时,条件1的两个条件都为真和假都可以取到。 - 对于条件2,当
a
等于2或x
大于1时,条件2的两个条件都为真和假都可以取到。
考试原题 二、3、问到了圈复杂度的一般算法 3分 4、描述一组满足最小路径覆盖的独立路径
考试原题 三、基于逻辑覆盖的分析与用例设计(20分)
给了一段代码设计语句覆盖测试用例写明设计过程(5分)设计满足...设计满足条件覆盖的测试用例写明设计过程(要求写四到五个覆盖的测试用例)
例一:
结构测试是依据被测程序的逻辑结构设计测试用例,驱动被测程序运行完成的测试。逻辑覆盖能够给出结构测试的覆盖准则可以结束测试的条件。图中共有4条路径:P1(ace)、P2(abd)、P3(abe)、P4(acd)。
1)语句覆盖
首先设计若干个测试用例,使程序中的每个可执行语句至少执行一次。(这里所谓“若干个”,自然是越少越好。)
Case1:A=2, B=0, X=3。便可以达到语句覆盖,路径为ace P1。
PS:为什么达到了?不是b和d没走吗?再想想,b和d上有语句吗?(图中有语句的线走一遍)
如果第一个判断的AND写成OR,或者第二个的OR写成AND,仍然使用第一个参数用例,仍然做到语句覆盖,可是发现不了错误。
2)判定覆盖(分支)
设计若干测试用例,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假值均曾被满足。
Case2:A=1, B=0, X=1,路径为abd。
Case1和Case2一起可以实现判定覆盖。P1(ace)和P2(abd)
PS:可是第二个判断X>1错写成X<1,不能发现错误。什么是判断?菱形中的语句if语句就是判断语句。如本题中,就有2个判断,当2个判断都执行过T和F时(4种情况),就完成了判定覆盖。
3)条件覆盖
设计若干测试用例,使每个判断中每个条件的可能取值至少满足一次。条件:A>1,B=0,A=2,x>1。需要有足够的测试用例使得上述四个条件都能有满足和不满足的情况
Case3:A=2, B=1, X=1,路径为abe。
Case1、Case2和Case3一起可以实现条件覆盖。什么是条件?通过逻辑运算符进行分割,每一个结果就是一个条件。如本题中,就有4个条件,当4个条件都执行过T和F时,就完成了条件覆盖。
或者:A=2,B=0,x=4;A=1,B=1,x=1这两组即可
4)判定-条件覆盖
设计足够的测试用例,使得判断中每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次。
Case1、Case2和Case3一起可以实现判定-条件覆盖。为什么符合?因为覆盖了每条线,也覆盖了所有条件。
或者:A=2,B=0,x=4;A=1,B=1,x=1这两组即可
5)条件组合覆盖
设计足够的测试用例,使得判断中每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次。它与条件覆盖的差别是它不是简单的要求每个条件都出现“真”与“假”两种结果,而是让这些结果的所有可能组合都出现一次。
条件组合只针对同一个判断语句内存在多个条件的情况。让这些添加的取值进行笛卡尔乘积组合。
6)路径覆盖
设计足够的测试用例,要求覆盖程序中所有可能的路径。P1ace P2abd P3abe P4acd
Case4:A=3, B=0, X=1,路径为acd。Case1、Case2、Case3和Case4一起可以实现路径覆盖。
例二:
测试用例:
程序中一共两个if语句,都是复合判定条件,其中的简单判定条件分别是:x>3;z<10;x==4;y>5;
需要每个简单判定条件的取真取假都出现。
x=4,y=6,z=9; 四个判定条件结果分别是:TTTT
x=3,y=6,z=10;四个判定条件结果分别是:FFFF
例三:
为以下流程图所示的程序段设计测试用例。要求分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖。
图 1 程序流程图
表1 各个条件真假值对照表
条件 | 真值 | 假值 |
x>3 | T1 | -T1 |
z<10 | T2 | -T2 |
x==4 | T3 | -T3 |
y>5 | T4 | -T4 |
表2 各个条件组合真假值对照表
组合号 | 条件组合 | 真假值组合 | 判定取值 |
1 | x>3 && z<10 | T1 && T2 | 真 |
2 | x>3 && z>=10 | T1 && -T2 | 假 |
3 | x<=3 && z<10 | -T1 && T2 | 假 |
4 | x<=3 && z>=10 | -T1 && -T2 | 假 |
5 | x==4 || y>5 | T3 || T4 | 真 |
6 | x==4 || y<=5 | T3 || -T4 | 真 |
7 | x!=4 || y>5 | -T3 || T4 | 真 |
8 | x!=4 || y<=5 | -T3 || -T4 | 假 |
下面是相关覆盖法的测试用例:
1)语句覆盖测试用例:
用例编号 | 测试输入数据 | 覆盖语句块 |
1 | x= 4 ;y=5;z=5 | 1、2、3 |
2)判定覆盖测试用例
用例编号 | 测试输入数据 | x>3 && z<10(True or False?) | x==4 || y>5(True or False?) |
1 | x= 4 ;y=5;z=5 | True | True |
2 | x= 2 ;y=5;z=5 | False | False |
3)条件覆盖测试用例
用例编号 | 测试输入数据 | 覆盖条件 |
1 | x= 4;y=6;z=5 | T1、T2、T3、T4 |
2 | x= 2;y=5;z=15 | -T1、-T2、 -T3、-T4 |
或者是下边这个答案:
用例编号 | 测试输入数据 | 覆盖条件 |
1 | x= 2;y=6;z=5 | -T1、T2、-T3、T4 |
2 | x= 4;y=5;z=15 | T1、-T2、T3、-T4 |
4)判定/条件覆盖测试用例:
用例编号 | 测试输入数据 | x>3 && z<10(True or False?) | x==4 || y>5(True or False?) | 覆盖条件 |
1 | x= 4;y=6;z=5 | True | True | T1、T2、T3、T4 |
2 | x= x=2;y=5;z=15 | False | False | -T1、-T2、 -T3、-T4 |
5)组合覆盖测试用例
用例编号 | 测试输入数据 | 覆盖条件 | 覆盖组合号 |
1 | x=4、y=6、z=5 | T1、T2、T3、T4 | 1和5 |
2 | x=4、y=5、z=15 | T1、-T2、T3、-T4 | 2和6 |
3 | x=2、y=6、z=5 | -T1、T2、-T3、T4 | 3和7 |
4 | x=2、y=5、z=15 | -T1、-T2、-T3、-T4 | 4和8 |
6)路径覆盖测试用例
用例编号 | 测试输入数据 | 执行路径 |
1 | x=4、y=6、z=5 | abd |
2 | x=4、y=5、z=15 | acd |
3 | x=2、y=5、z=15 | ace |
4 | x=5、y=5、z=5 | abe |
例四:
某商场在“五一”期间,顾客购物时收费有4种情况:普通顾客一次购物累计少于100元,按A类标准收费(不打折),一次购物累计多于或等于100元,按B类标准收费(打9折);会员顾客一次购物累计少于1000元,按C类标准收费(打8折),一次购物累计等于或多于1000元,按D类标准收费(打7折)。测试对象是按以上要求计算顾客收费模块,按照路径覆盖法设计测试用例。
例五:
下面是某程序及其控制流图:请用基本路径测试,设计它的测试用例。
void Sort ( int iRecordNum, int iType )
1 {
2 int x=0;
3 int y=0;
4 while ( iRecordNum-- > 0 )
5 {
6 If ( iType==0 )
7break;
8 else
9 If ( iType==1 )
10 x=y+10;
11 else
12 x=y+20;
13 }
14 }
V(G)=P+1=3(判定结点数)+1=4
V(G)=E-N+2=10-8+2=4
V(G)=4(区域数)
这里的环路复杂性“4”也代表了构成基本路径集的独立路径,V(G)=4恰好为程序中的独立路径条数。确定线性无关的路径的基本集。由该程序的环路复杂性为4,可确定该图有4条线性无关的基本路径集,分别是:
Path1:4-15
Path2:4-6-7-15
Path3:4-6-9-10-14-4-15
Path4:4-6-9-12-14-4-15
生成测试用例,确保基本路径集中每条路径的执行。根据判定结点给出的条件选择适当的数据以保证某一条路径可以被测试到。满足上面基本路径集的测试用例是:
(1)测试用例1--Path1(4-15);输入数据:iRecordNum=0,或任取iRecordNum<0的某一个值;期望输出结果:x=0 y=0
(2)测试用例2--Path2(4-6-7-15);输入数据:iRecordNum=1,itype=0;期望输出结果:x=2 y=0
(3)测试用例3--Path3(4-6-9-10-14-4-15);输入数据:iRecordNum=1,itype=1;期望输出结果:x=10 y=0
(4)测试用例4--Path4(4-6-9-12-14-4-15);输入数据:iRecordNum=1,itype=2;期望输出结果:x=20 y=0
例六:
为以下程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖。
void DoWork (int x,int y,int z)
{
int k=0,j=0;
if ( (x>3)&&(z<10) )
{ k=xy-1;
j=sqrt(k);
} //语句块1
if ( (x==4)||(y>5) )
{ j=xy+10; } //语句块2
j=j%3; //语句块3
}
答:语句覆盖测试用例:x=4、y=5、z=5;
判定覆盖测试用例::x=4、y=5、z=5;x=2、y=5、z=5;
条件覆盖测试用例:x=4、y=6、z=5 ;x=2、y=5、 z=15 ;
最少测试用例数计算
结构化程序是由顺序型、选择型、重复型3种基本控制结构组成。为了把问题化简,避免出现测试用例极多的组合爆炸,把构成循环操作的重复型结构用选择结构代替。
如何计算最少测试用例数呢?我们先看一道简单的题。
例一:
至少提供4个测试用例才能做到逻辑覆盖,这里的4是图中第1个分支谓词引出的两个操作及第2个分支谓词引出的两个操作组合起来而得到的即2 × 2 = 4,这里的2是由于两个并列的操作1 + 1 = 2而得到的。
总结:并联相加,串联相乘。
例二:
计算公式:(5*3+1)*3=48
步骤:((5,4,3,2)(7,6),(1))(9,8)
核心:一层一层剥开。不断划分串联和并联,直到只有Y和N,然后开始逆向计算。
逻辑覆盖的出发点是合理的、完善的。所谓“覆盖,就是想要做到全面而无遗漏,但逻辑覆盖并不能真正做到无遗漏。
例三:
如下图所示的N-S图,至少需要多少个测试用例完成逻辑覆盖
例四:
依据下面给出的N—S图画出其流程图;在此基础上,设计最少测试用例,实现语句覆盖和条件
组合覆盖。(10分,流程图3分,语句覆盖3分,条件组合覆盖4分)
白盒习题:
1. 下列不属于白盒测试的技术是 ( )
A. 语句覆盖 B. 判定覆盖 C. 边界值测试 D. 基本路径测试
正确答案:C
2. 某次程序调试没有出现预计的结果,下列( )不可能是导致出错的原因。
A. 变量没有初始化
B. 编写的语句书写格式不规范
C. 循环控制出错
D. 代码输入有误
正确答案:B
3. 代码检查法有桌面检查法. 代码走查和( )
A. 静态测试 B. 代码审查 C. 动态测试 D. 白盒测试
正确答案:B
4. 如果某测试用例集实现了某软件的路径覆盖,那么它一定同时实现了该软件的 ( )
A. 判定覆盖 B. 条件覆盖 C. 条件/判定覆盖 D. 组合覆盖
正确答案:A
5. 软件测试的局限性不包括( )
A. 因为输入/状态空间的无限性,测试不可能完全彻底。
B. 巧合性有时会导致错误的代码得到正确的结果,掩盖了问题。
C. 软件测试会导致成本增加,效益降低。
D. 软件缺陷的不确定性。
正确答案:C
6. 以下哪种测试方法不属于白盒测试技术( )
A. 基本路径测试 B. 等价类划分测试 C. 程序插桩 D. 逻辑覆盖测试
正确答案:B
7. 调试是( )
A. 发现与预先定义的规格和标准不符合的问题
B. 发现软件错误征兆的过程
C. 有计划的. 可重复的过程
D. 消除软件错误的过程
正确答案:D
8. 使用白盒测试方法时,确定测试数据的依据是指定的覆盖标准和 ( )
A. 程序的注释 B. 程序的内部逻辑 C. 用户使用说明书 D. 程序的需求说明
正确答案:B
9. 数据流覆盖关注的是程序中某个变量从其声明、 赋值到引用的变化情况,它是( )的变种。
A. 语句覆盖 B. 控制覆盖 C. 分支覆盖 D. 路径覆盖
正确答案:D
10. 如果一个判定中的复合条件表达式为(A > 1)or(B <= 3),则为了达到100%的条件覆盖率,至少需要设计多少个测试用例( )
A. 1 B. 2 C. 3 D. 4
正确答案:B
11. 一个程序中所含有的路径数与( )有着直接的关系。
A. 程序的复杂程度 B. 程序语句行数 C. 程序模块数 D. 程序指令执行时间
正确答案:A
12. 条件覆盖的目的是 ( )
A. 使每个判定中的每个条件的可能取值至少满足一次
B. 使程序中的每个判定至少都获得一次"真"值和"假"值。
C. 使每个判定中的所有条件的所有可能取值组合至少出现一次。
D. 使程序中的每个可执行语句至少执行一次。
正确答案:A
13. 软件调试的目的是( )
A. 发现软件中隐藏的错误
B. 解决测试中发现的错误
C. 尽量不发现错误以便早日提交软件
D. 证明软件的正确性
正确答案:B
14. 针对下面一个程序段:
If ((M>0) && (N = = 0))
FUCTION1;
If ((M = = 10)|| (P > 10))
FUCTION2;
其中,FUCTION1、FUCTION2均为语句块。现在选取测试用例:M=10、N=0、P=3,该测试用例满足了( )
A. 路径覆盖 B. 条件组合覆盖 C. 判定覆盖 D. 语句覆盖
正确答案:D
15. 对下面的计算个人所得税程序中,满足判定覆盖的测试用例是( )。
if (income<800) taxrate=0;
else if (income<=1500) taxrate=0.05;
else if (income<2000) taxrate=0.08;
else taxrate=0.1;
A. income=(799, 1500, 1999, 2000) B. income=(799, 1501, 2000, 2001)
C. income=(800, 1500, 2000, 2001) D. income=(800, 1499, 2000, 2001)
正确答案:A
16. 设有一段程序如下:
if (a= =b and c= =d or e= =f) do S1
else if (p= =q or s= =t) do S2
else do S3
若要达到“条件/判定覆盖”的要求,最少的测试用例数目是( )
A. 6 B. 8 C. 3 D. 4
正确答案:C
17. 下列不属于白盒测试中逻辑覆盖标准的是( )
A. 语句覆盖 B. 条件覆盖 C. 分支覆盖 D. 边界值覆盖
正确答案:D
18. 在某学校的综合管理系统设计阶段,教师实体在学籍管理子系统中被称为"教师",而在人事管理子系统中被称为"职工",这类冲突描述正确的为( )
A. 语义冲突 B. 命名冲突 C. 属性冲突 D. 结构冲突
正确答案:B
19、以下描述错误的是(B)
A.设计测试用例时,如果使用了判定覆盖指标,就不需要再使用语句覆盖
B.假设被测代码中有n个判定节点,如果基于判定覆盖指标设计测试用例,则一定需要2n个测试用例。
C.应谨慎使用条件组合覆盖指标,可能导致测试效率不高。
D.在时间有限的情况下,可优先选择判定覆盖测试函数代码。
20、以下描述正确的是(C)
A.条件判定节点将影响成执行的走向,因此,条件判定节点是代码中风险最高的元素。
B.只要程序中存在循环结构,测试就无法穷尽。
C.静态的白盒测试一般不需要设计测试用例。
D.只要代码中不使用判定结构或者循环结构,就一定可以降低程序运行的风险。
21. 以下描述错误的是(C)
A.判定节点是导致程序执行风险的主要因素。
B.控制流分析的主要目的是通过对判定节点的测试来降低程序执行的风险。
C.对代码设计测试用例必须要根据程序的设计来进行。
D.控制流图可以直观地反应函数的内部逻辑结构,展示程序中明显的错误,因此控制流分析非常的有必要。
22. 下列几种逻辑覆盖标准中,查错能力最强的是(D ) 。
A.语句覆盖 B.判定覆盖 C.条件覆盖 D.条件组合覆盖
23.以下不属于白盒测试的技术是(D)
A.路径覆盖 B.判定覆盖 C.循环覆盖 D.边界值分析
24.以下覆盖准则最强的是(D )。
A.语句覆盖 B.判定覆盖 C.条件覆盖 D.路径覆盖
25.发现程序缺陷能力最弱的是(A )。
语句覆盖 B.判定覆盖 C.条件覆盖 D.条件组合覆盖
26.(A)是设计足够多的测试用例,使得程序中每个判定包含的每个条件的所有情况(真/假)至少出现一次,并且每个判定本身的判定结果(真/假)也至少出现一次。
A.判定/条件覆盖 B.组合覆盖 C.判定覆盖 D.条件覆盖
27. 对判定的覆盖主要有:语句覆盖、[判定覆盖]、条件覆盖、判定/条件覆盖、[条件组合覆盖]、修正的判定/条件覆盖技术,其中[语句]覆盖指标最弱,[条件组合]覆盖指标最强。
28.测试的综合策略是在测试中,联合使用各种测方法。通常先用[黑盒]法设计基本的测试用例,再用[白盒]法补充一些必要的测试用例。
29.软件测试方法一般分为两大类:动态测试方法和静态测试方法,静态测试方法一般[不需要]设计测试用例。测试技术按照对被测对象的了解程度,又分为[黑盒测试]技术和[白盒测试]技术。
20.名词解释:
A.静态测试:指被测试的程序不在机器上运行,而是采用人工检测和计算机辅助静态分析的手段对程序进行检测
B.白盒测试:测试人员需了解程序的内部结构和处理过程,通过设计测试用例,观察实际的运行结果与预期的是否一致,检验内部控制结构和数据结构是否存在缺陷的过程。
21.软件测试不需要了解软件设计的(D)。
A.功能 B.内部结构 C.处理过程 D.条件
22.以下覆盖准则最强的是(D )。
语句覆盖 B.判定覆盖 C.条件覆盖 D.路径覆盖
23.右图所示的程序图的环复杂度为(C)
A.4 B.5 C.6 D.7
23.右图所示的程序图的环复杂度为(C)
A.3 B.4C.5 D.6
24.下列常用的测试用例设计技术中,不属于白盒测试技术的是(D)。
A、信息流分析法
B、数据流分析法
C、逻辑覆盖测试和基本路径测试
D、状态图法
25.下列叙述中,哪一项是正确的(D)。
A、用黑盒法测试时,测试用例是根据程序内部逻辑设计的;
B、测试是为了验证该软件已正确地实现了用户的要求;
C、对面向对象程序来说,单元测试的最小单元是每条程序语句,即以分号结尾的程序;
D、发现错误多的程序模块,残留在模块中的错误也多。
26.以下对单元测试,不正确的说法是(C)。
A、单元测试的主要目的是针对编码过程中可能存在的各种错误
B、单元测试一般是由程序开发人员完成的
C、单元测试是一种不需要关注程序结构的测试
D、单元测试属于白盒测试的一种
27.在白盒测试技术中,有语句覆盖、条件覆盖、判定覆盖(也称分支覆盖)、路径覆盖等,其中(D)是最强的覆盖准则。
A、语句覆盖
B、条件覆盖
C、判定覆盖
D、路径覆盖
28.发现错误能力最弱的是(A)。
A、语句覆盖
B、判定覆盖
C、条件覆盖
D、路径覆盖
29.下列哪一项不是白盒测试?(C)
A、单元测试
B、集成测试
C、系统测试
D、回归测试
30.白盒测试与黑盒测试的最主要区别,正确的是___________。(A)
A、白盒测试侧重于程序结构,黑盒测试侧重于功能
B、白盒测试可以使用测试工具,黑盒测试不能使用工具
C、白盒测试需要程序参与,黑盒测试不需要
D、黑盒测试比白盒测试应用更广泛
31.在系统测试中,测试人员主要根据( A)设计测试用例
A、需求分析说明书
B、概要设计说明书
C、详细设计说明书
D、系统规格说明书
32.不属于白盒测试的技术是 (C ) 。
A、语句覆盖
B、判定覆盖
C、边界值分析
D、基本路径测试
33.针对下面一段代码,设计其逻辑覆盖测试用例。(要求:画程序流程图)
Main()
{ Int a,b; Float c;
Scanf(“%d,%d,%f”,&a,&b,&c);
If (a>18 and b=5){
C=a/b; }
If(a=20 and c>2){
C=c+6; }
Printf(“c=%f”,c); }
二、填空题
1. 代码检查的方式有三种:_____、___、。
正确答案:桌面检查 代码审查 代码走查
2. 数据流分析就是对程序中数据的__________、__________及其之间的__________等进行分析的过程。
参考答案:定义 引用 依赖关系
3. ____________是逻辑覆盖标准的一种,它要求选取足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次。
参考答案:条件组合覆盖
三、判断题
所有满足条件组合覆盖标准的测试用例集,也分支覆盖标准。✔
软件测试的目的在于发现错误、改正错误。✘
条件覆盖能够查出条件中包含的错误,但有时达不到判定覆盖的覆盖率要求。 ✔
在白盒测试中,如果某种覆盖率达到100% ,就可以保证把所有隐藏的程序缺陷都已经揭露出来了。 ✘
白盒测试的条件覆盖标准强于判定覆盖。 ✘
判定覆盖包含了语句覆盖,但它不能保证每个错误条件都能检查出来。✔
小韦:
1、等价类划分法中,一个测试用例要尽量多地覆盖有效等价类,而一个测试用例只能覆盖一个无效等价类。
2、要覆盖含循环结构的路径是不可能的,一般通过限制循环次数来测试。
3、全都是闭环的程序流程图圈复杂度比用判定节点数出来多一个,最外围外也算一个区域。总的来说用弧数-节点数保险一点。
4、路径覆盖的最少测试用例数不等于圈复杂度,是要把每一条可能路径都走一遍。
5、实际的逻辑覆盖测试中,一般以条件组合覆盖为主设计测试用例
6、写出独立路径时从最短的写起。
3.5 基于缺陷模式的测试
3.5.1 常见的缺陷模式
故障模型 安全漏洞模型 性能模型 并发故障模型 不良习惯模型 代码国际化模型 易诱骗代码模型
3.5.2 DPBT的自动化实现
预处理/预编译;词法分析;语法分析;语义处理;抽象语法树生成;控制流图生成;IP 扫描;人工确认;
3.6 基于模型的测试
1、基于模型的测试 (MBT):通过构建能够正确描述被测软件系统功能特性的模型,然后基于这个模型产生测试用例并执行这些测试用例的过程。
2、MBT基本原理(实施过程):
1)为被测试系统(SUT)建模。2)基于模型产生测试用例。3)将抽象的测试具体化使测试用例具有可执行性。4)执行测试。5)分析测试结果
3、常见的MBT方法:有限状态机,符号执行,定理证明,模型检验,随机/半随机模型,其它方法
3.6.1 功能图法
1、每个程序的功能通常由静态说明和动态说明组成:1)静态说明描述了输入条件和输出条件之间的对应关系 2)动态说明描述了输入数据的次序或者转移的次序
2、功能图法就是为了解决动态说明问题的一种测试用例的设计方法。
3、功能图由状态迁移图(STD)和逻辑功能模型( LFM)构成
4、状态迁移图,描述系统状态变化的动态信息
两个层次的测试用例:功能图法是综合运用黑盒方法和白盒方法来设计测试用例,即整体上选用白盒方法——路径覆盖、分支和条件覆盖等,而局部上选用的是黑盒方法——决策表或因果图方法
从功能逻辑模型(决策表或因果图)导出局部测试用例,覆盖各个状态的各种输入数据的组合 从状态迁移图导出整体的测试用例,以覆盖系统(程序)控制的逻辑路径
3.6.2 模糊测试方法
1、模糊测试:在一个被测试程序中附加上随机数据(fuzz)作为程序的输入。如果被测试程序出现问题(例如 Crush ,或者异常退出),就可以定位程序的缺陷。
2、模糊测试的巨大优势:测试设计极其简单,系统的行为先入为主
3、几种构造:黑盒随机模糊,基于语法的模糊,白盒模糊处理
4、变异测试:是一种在细节方面改进程序源代码的软件测试方法。变异操作是模拟典型应用错误(定位代码的弱点)、或强制产生有效地测试。
3.7 形式化测试方法
1、形式化方法:基于数学的方法(数学表示、精确的数学语义)描述目标软件系统属性的一种技术
2、形式化规范说明语言的构成:语法、语义和一组关系。
3、形式化方法可应用在软件规格和验证之上,包括软件系统的精确建模和软件规格特性的具体描述,即可以看作是面向模型的形式化方法和面向属性的形式化方法
4、三部曲:形式化描述 形式化开发 形式化验证
5、具体方法:基于模型的方法,如Z语言、B语言等
代数方法,如OBJ、CLEAR、ASL、ACT等
过程代数方法,如CSP、CCS、ACP、LOTOS、TPCCS等
基于逻辑的方法,如区间时序逻辑、Hoare 逻辑、模态逻辑、时序逻辑、时序代理模型等。
基于网络的方法
6、形式化验证:根据某些形式规范或属性,使用形式逻辑方法证明其正确性或非正确性。无法证明某个系统没有缺陷,因为不能定义没有缺陷
补充基于场景的测试方法黑盒
测试用例 = 用户故事(行为) + 场景 + 测试数据(场景:条件、前提、运行环境等)
场景法是黑盒测试中重要的测试用例设计方法,通过场景描述业务流程(包括基本流(基本业务流程)和备选流(分支业务流程)),设计测试用例遍历软件系统功能,验证其正确性。
本章小结:
本章介绍了各种测试方法,从基于直觉和经验的测试方法、基于输人域的测试方法、基于组合及其优化的方法,到基于逻辑覆盖的方法、基于缺陷模式的方法、基于模型的方法和形式化方法等。对测试方法可能有不同的划分,例如,之前人们习惯于把测试方法分为两类:白盒测试方法和黑盒测试方法,这样划分比较粗糙。
我们用主要依赖数据流和控制流等的分析。
(1)数据流分析,包括输入输出空间的分析,如等价类划分、边界值分析;如果输入空间是由多个变量或多个参数等构成的,就需要考虑组合问题,即判定表、Pairwise 方法、正交实验法。
(2)控制流分析,就是对程序或软件的状态转换、运行路径进行分析,自然就有有限状态机、图覆盖、条件覆盖、分支覆盖(判定覆盖)和基本路径覆盖。
数据流或控制流分析时,如果问题复杂,就需要借助建模的技术帮助实现,包括有限状态机、因果图、模糊测试等方法。决策表、功能图等也可以归为建模技术,实际上,一个方法可以归为不同的两个或三个类别。当上面这些方法都不适用时,或是作为上述方法的一种补充,就有了基于直觉和经验的测试方法、基于缺陷模式的方法。
方法论:黑盒方法(基于需求的测试方法)、结构化方法(逻辑覆盖和基本路径覆盖)、基于场景的方法
数据流覆盖:数据流程图、代码中变量的定义与引用
控制流覆盖:业务流程基本路径覆盖,代码中的逻辑覆盖
最常用的方法:等价类划分、边界值分析、决策表、Pairwise等
不同层次的覆盖:代码、功能/非功能、业务
最常用的覆盖标准:语句覆盖、分支覆盖和MC/DC覆盖
习题
一、选择题
考试原题:
13、以下选项中,描述黑盒测试与白盒测试的区别,其中正确的是()
A)黑盒测试基于软件内部结构和实现进行测试;
B)白盒测试基于软件功能和用户需求进行测试;
C)黑盒测试是在软件发布之前进行测试,而白盒测试在发布之后进行测试;
D)黑盒测试可不分析软件内部结构而测试,白盒测试通过分析代码来设计测试用例。
15、下列不属于黑盒测试方法的是()
A、等价类划分 B、错误推测法 C、边界值分析 D、变异测试
16、下面()方法能够有效地检测输入条件的各种组合可能引起的错误。
A、因果图
B、等价类划分
C、边界值分析
D、错误推测
21、不属于白盒测试方法的是()
A)控制流测试 B)错误猜测法 C)数据流测试 D)变异测试
22、通常的情况下,可以将测试划分为四个阶段:
A)单元测试 B)集成测试 C)系统测试 D)验收测试
23、编码刚刚完成,或者编码阶段刚刚结束就可以进行的测试,是哪个测试阶段(A单元测试)
24、根据软件需求规格,在开发环境下对已集成的整个软件系统进行全面的测试是(C系统测试)
25、在(B集成测试)时,可采用渐增式集成策略,即将模块一个一个加入到新系统进行测试。确保软件在真实环境中运行正常是(D验收测试)
26、验收测试通常可以包括正式验收、a测试、β测试。假设一家公司开发一款移动应用程序在()阶段,公司内部在开发环境中进行测试:在()阶段,公司邀请外部用在真实环境中测试,并收集反馈意见。
A)a测试,β测试 B)β测试,a测试 C)系统测试,验收测试 D)正式验收,a测试
a测试通常在开发组织现场进行,但测试并非由开发团队执行
β测试或实地测试,是在客户或潜在客户现场进行并由他们执行
27、大多数实际情况下,性能测试的实现方法是(A)
A)黑盒测试 B)白盒测试C)内部结构分析D)逻辑覆盖的方法
28、在成绩录入系统中,设成绩输入范围0-100,下面符合等价类划分原则的是
A)可划分为2个有效等价类,2个无效等价类
B)可划分为1个有效等价类,2个无效等价类
C)可划分为2个有效等价类,1个无效等价类
D)可划分为1个有效等价类,1个无效等价类
29、为了提高测试效率,应该()
A)随机地选取测试数据 B)取一切可能的输入数据作为测试数据
C)不进行性能测试 D)选择发现错误可能性最大的数据作为测试用例
30、通常,软件测试生命周期包括:()、测试设计、测试执行、缺陷跟踪、测试评估
A)需求分析 B)测试用例 C)测试计划 D)设计文档
31、性能测试不包括()
A)压力测试 B)可靠性测试 C)负载测试 D)代码评审
性能测试:负载测试,压力测试,基准测试,并发测试,配置测试,稳定性测试,失效恢复测试。
32、下面不属于自动测试特点的是
A)速度快 B)可重复 C)效率高 D)仅对首次测试有效
自动化测试:速度快,效率高,准确度高,精确度高,可提高测试的质量,但不能充分测试软件,不能保证有效性,不能保证被测试的软件质量更优。
适合相对稳定,改变较少功能测试,大量组合测试或重复性测试,周期长,较强的测试人员;
不适合一次性周期短的不适合功能设计软硬件不成熟的。
下面( )不是软件自动化测试的优点(单选题)
A、 速度快、效率高
B、 准确度和精确度高
C、 能提高软件测试的质量
D、 能充分测试软件
答案: D
课后习题:
1. 凭经验或直觉推测可能的错误,列出程序中可能有的错误和容易发生错误的特殊情况,选择测试用例的测试方法叫( )
A. 等价类划分 B. 边界值分析 C. 错误推测法 D. 逻辑覆盖测试
参考答案:D
2.黑盒测试技术中不包括( )
A. 等价类划分 B. 边界值分析 C. 错误推测法 D. 逻辑覆盖
参考答案:D
3. 黑盒测试技术,使用最广的用例设计技术是( )
A等价类划分 B边界值分析 C错误推测法 D逻辑覆盖
参考答案:A
4. 在某大学学籍管理信息系统中,假设学生年龄的输入范围为16-40,则根据黑盒测试中的等价类划分技术,下面划分正确的是( )
A. 可划分为2个有效等价类,2个无效等价类
B. 可划分为1个有效等价类,2个无效等价类
C. 可划分为2个有效等价类,1个无效等价类
D. 可划分为1个有效等价类,1个无效等价类
参考答案:B
5. 有一组测试用例使得被测程序的每一个分支至少被执行一次,它满足的覆盖标准是( )
A. 语句覆盖 B. 判定覆盖 C. 条件覆盖 D. 路径覆盖
参考答案:B
6. 在确定黑盒测试策略时,优先选用的方法是 ()
A. 边界值测试法 B. 等价类划分 C. 错误推断 D. 决策表
参考答案:B
7.( )方法根据输出对输入的依赖关系设计测试用例。
A. 路径测试 B. 等价类 C. 因果图 D. 归纳测试
参考答案:C
8. 对于参数配置类的软件,要用( )选择较少的组合方式达到最佳效果。
A. 等价类划分 B. 因果图法 C. 正交实验法 D. 场景法
参考答案:C
9. 对于业务流清晰的系统可以利用( )贯穿整个测试用例设计过程并在用例中综合使用各种测试方法。
A. 等价类划分 B. 因果图法 C. 正交实验法 D. 场景法
参考答案:D
10. 下列不属于黑盒测试方法的是( )。
A. 等价类划分 B. 因果图 C. 边界值分析 D. 变异测试
参考答案:D
11. 用边界值测试法,假定1<X<100,那么整数X在测试中应取的边界值不包括( )
A. X=1,X=100; B. X=0,X=101; C. X=2,X=99; D. X=3,X=98;
参考答案:C
12、基本路径测试满足( A )
A、语句覆盖 B、路径覆盖(覆盖准则最强) C、分支覆盖 D、条件覆盖
13、下列指导选择和使用测试覆盖率的原则中错误的是(D)。
A、覆盖率不是目的,仅是一种手段
B、不要追求绝对100%的覆盖率(路径覆盖不可能100%做到)
C、不可能针对所有的覆盖率指标来选择测试用例
D、只根据测试覆盖率指标来指导测试用力的设计
14、( C )方法根据输出对输入的依赖关系设计测试用例。
A.路径测试 B.等价类 C.因果图 D.边界值分析
15、测试ATM取款功能,已知取款数只能输入正整数,每次取款数要求是100的倍数且不能大于500,下面哪个是正确的无效等价类( C )
A. (0,100)、(100,200)、(200,300)、(300,400)、(400,500)、(500,+∞)
B. (500,+∞)
C. (500,+∞)、任意大于0小于500的非100倍数的整数
D. (-∞,100)、(100,200)、(200,300)、(300,400)、(400,500)、(500,+∞)
16、测试一个程序的时候,不可能穷举所有的输入,而只能选择一个子集进行测试,那么最好的方法是(B)
A. 随机选择 B. 划分等价类 C. 根据接口进行选择 D. 根据数据类型进行选择
17、将三角形每边边长的取值范围设定为【1-100】,下面哪个是正确的边界值测试数据(A )
A. 1,100,0,101 B. (1,2,3). (-∞,+∞)
C. (0,1,2). (99,100,101) D. 小于1或者大于100的整数
若输入条件规定了值的个数,则用最小个数、最大个数、比最小个数少一,比最大个数多一的数做测试数据。
18、下列哪一项不是白盒测试?(C)
A、单元测试 B、集成测试 C、系统测试 D、回归测试
19、下列选项中,哪一项不属于逻辑覆盖( A )
A. 语句覆盖 B. 条件覆盖 C. 判定覆盖 D. 判定-语句覆盖
20、不属于逻辑覆盖方法的是( D )。
A.组合覆盖 B.判定覆盖
C.条件覆盖 D.接口覆盖
21、( D )是选择若干个测试用例,运行被测程序,使得程序中的每个可执行语句至少执行一次。
A、条件覆盖
B、组合覆盖
C、判定覆盖
D、语句覆盖
22、( A )是设计足够多的测试用例,使得程序中每个判定包含的每个条件的所有情况(真/假)至少出现一次,并且每个判定本身的判定结果(真/假)也至少出现一次。
A、判定-条件覆盖
B、组合覆盖
C、判定覆盖
D、条件覆盖
23、针对是否对无效数据进行测试,可以将等价类测试分为(B )
1)标准(一般)等价类测试
2)健壮等价类测试
3)弱等价类测试
4)强等价类测试
A.3)4) B.1)2)
C.1)3) D.2)4)
24、下列( C)方法设计出的测试用例发现程序错误的能力最强。
A.等价类划分法
B.场景法
C.边界值分析法
D.决策表法
25、( D )是一种关注变量定义赋值点(语句)和引用或使用这些值的点(语句)的结构性测试,主要用作路径测试的真实性检查。
A 、基本路径测试
B 、逻辑覆盖
C 、决策表
D 、数据流测试
27、在边界值分析中,下列数据通常不用来做数据测试的是(B)。
A、正好等于边界的值
B、等价类中的等价值
C、刚刚大于边界的值
D、刚刚小于边界的值
28、以下有关软件测试中路径测试的说法,错误的是(D)
A.路径测试是整个测试的柱石,是结构测试之一
B.穷举路径测试是不可能完成的
C.在研究路径测试时,通常使用程序控制流图代替程序框图
D.为了达到完全覆盖,路径选择时应尽量选择复杂的路径代替简单的路径
解析:既然要达到完全覆盖,那么长路径和短路径都要有
29、黑盒法是根据程序的( C )来设计测试用例的
A.应用范围 B.内部逻辑 C.功能 D.输入数据
30、关于黑盒测试的描述,错误的是(D)
A.黑盒测试不需要了程序内部细节。 B.黑盒测试的覆盖度不易度量。
C.黑盒测试仅需知道被测对象的输入和预期输出
D.黑盒测试对测试人员的技术要求低,测试没有难度。
31、为了提高软件测试的效率,应该(D)。
A.随机地选取测试数据 B.取一切可能的输入数据作为测试数据
C.在完成编码以后制定软件的测试计划 D.选择发现错误可能性最大的数据作为测试用例
32、基于边界值测试时,考虑测试用例的规模和对缺陷的定位能力,一般采用的测试方案为(D)
A.穷举法+全边界法 B.穷举法+强边界法
C.典型值法+强边界法 D.典型值法+弱边界法
33、基于典型值法+若边界法设计测试用例时,如果有3个输入条件,每个条件有2个边界点,则其测试用例的数量为:D
A.6 B.12 C.9 D.18
34、某员工信息系统中,假设年龄的输入范围为22~60,则根据等价类划分技术,下面划分正确的是(B)。
A.可划分为2个有效等价类,2个无效等价类
B.可划分为1个有效等价类,2个无效等价类
C.可划分为2个有效等价类,1个无效等价类
D.可划分为1个有效等价类,1个无效等价类
35、基于有效等价类的测试用例设计,如果有两个输入条件x和y,分别有m和n个有效等价类(m>n) ,则以下说法错误的是(A)
A.基于强组合方式用例设计,有m个测试用例
B.基于强组合方式用例设计,有mn个测试用例
C.基于弱组合方式用例设计,有m个测试用例
D.基于弱组合方式用例设计,测试用例集合不唯一
36、关于等价类测试的描述,错误的是(A)
A.等价测试保证了测试完备性和无冗余性
B.等价类测试基于独立性和单缺陷假设当
C.等价类划分不合理时,将导致测试用例的漏洞
D.当输入条件存在关联时,将导致测试用例的冗余。
虽然等价测试可以帮助减少测试用例的数量,但并不能保证覆盖所有可能的情况,也无法完全消除冗余的测试用例。测试完备性和无冗余性是由测试设计的整体策略和方法来决定的,等价类测试只是其中一种技术手段。
37、关于决策表的描述,错误的是(D)
A.决策表的目标是为了消除等价类测试的冗余
B.如果输入条件不存在相互关联,不需要使用决策表测试方法。
C.决策表是为了缩减测试用例的规模
D.决策表测试方法达不到等价类的测试效果
38、关于基于场景测试的描述,错误的是(D)
A.基于场景的测试通常用在功能测试中。
B.场景是基本流与备选流的集合。
C.一个场景可以包含一个基本流,也可以由基本流和至少一条备选流构成。
D.一个场景只能设计一个测试用例。
39、关于基于场景测试的描述,错误的是(D)
A.备选流越多,将导致场景测试规模增大。
B.一个测试用例唯一对应一个场景。
C.每个场景至少对应一组输入和预期输出。
D.一个场景唯一对应一个测试用例。
40、黑盒法只在软件的接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求。
41.LoadRunner是(A)
A、工业标准级负载测试工具
B、一款下载软件
C、单元测试框架
D、集成开发工具
42.下列常用的测试用例设计技术中,不属于白盒测试技术的是(D)。
A、信息流分析法
B、数据流分析法
C、逻辑覆盖测试和基本路径测试
D、状态图法
43.下列叙述中,哪一项是正确的(D)。
A、用黑盒法测试时,测试用例是根据程序内部逻辑设计的;
B、测试是为了验证该软件已正确地实现了用户的要求;
C、对面向对象程序来说,单元测试的最小单元是每条程序语句,即以分号结尾的程序;
D、发现错误多的程序模块,残留在模块中的错误也多。
44.以下对单元测试,不正确的说法是(C)。
A、单元测试的主要目的是针对编码过程中可能存在的各种错误
B、单元测试一般是由程序开发人员完成的
C、单元测试是一种不需要关注程序结构的测试
D、单元测试属于白盒测试的一种
45.在白盒测试技术中,有语句覆盖、条件覆盖、判定覆盖(也称分支覆盖)、路径覆盖等,其中(D)是最强的覆盖准则。
A、语句覆盖
B、条件覆盖
C、判定覆盖
D、路径覆盖
16.发现错误能力最弱的是(A)。
A、语句覆盖
B、判定覆盖
C、条件覆盖
D、路径覆盖
47.白盒测试与黑盒测试的最主要区别,正确的是___________。(A)
A、白盒测试侧重于程序结构,黑盒测试侧重于功能
B、白盒测试可以使用测试工具,黑盒测试不能使用工具
C、白盒测试需要程序参与,黑盒测试不需要
D、黑盒测试比白盒测试应用更广泛
48、在系统测试中,测试人员主要根据( A)设计测试用例
A、需求分析说明书
B、概要设计说明书
C、详细设计说明书
D、系统规格说明书
49、不属于白盒测试的技术是 (C ) 。
A、语句覆盖
B、判定覆盖
C、边界值分析
D、基本路径测试
50、实际的逻辑覆盖测试中,一般以(C )为主设计测试用例。
A. 条件覆盖 B. 判定覆盖 C. 条件组合覆盖 D. 路径覆盖
51.软件测试中白盒法是通过分析程序的(B)来设计测试用例的.
A)应用范围 B)内部逻辑C)功能D)输入数据
52.黑盒法是根据程序的(C)来设计测试用例的
A)应用范围B)内部逻辑C)功能D)输入数据
黑盒测试是根据软件的规格说明来设计测试用例。
53. 下列几种逻辑覆盖标准中,查错能力最强的是(D)
A语句覆盖
B条件覆盖
C判定覆盖
D条件组合覆盖
54.不属于白盒测试的技术(D)
A)路径覆盖B)判定覆盖C)循环覆盖D)边界值分析
56.使用白盒测试方法时,确定测试数据应根据(A )和指定的覆盖标准
A)程序内部逻辑
C)使用说明书
B)程序的复杂度
D)程序的功能
57.程序的三种基本结构是(B)。
A)过程子、程序、分程序 B)顺序、选择、循环
C)递归、堆栈、队列 D)调用、返回、转移
58、除了测试程序外,黑盒测试还适用于对下列(A)阶段的软件文档进行测试。
A. 需求分析应用范围 B. 编码 C. 总体设计 D. 详细设计
59、黑盒测试也称为功能测试,黑盒测试不能发现A
A. 是否存在冗余代码 B. 终止性错误C. 输入是否正确接受 D. 界面是否错误
60、如果一个判定中的复合条件表达式为(A>1)or(B<=3),则为了达到100%的条件覆盖率,至少需要设计多少个测试用例(B)
A )1 B) 2 C)3 D)4
70、下列关于测试方法的叙述中不正确的是C
A)从某种角度上讲,白盒测试与黑盒测试都属于动态测试
B)功能测试属于黑盒测试
C)对功能的测试通常是要考虑程序的内部结构
D)结构测试属于白盒测试
71、下列方法中,不属于黑盒测试的是 A
A基本路径测试法 B等价类测试法 C边界值分析法 D基于场景的测试方法
72、测试程序时,不可能遍历所有可能的输入数据,而只能是选择一个子集进行测试,那么最好的选择方法是 B
A)随机选择 B)划分等价类 C)根据接口进行选择 D)根据数据大小进行选择
73、有一元函数f(x),x为[1,12],采用边界值分析法(汉宝皮)设计的用例,以下哪个是正确的 C
A. 1,2,12,13
B. 1,2,11,12
C. 0,1,12,13
74、若使用场景法对某购票网站的购票流程进行测试,且仅考虑购买单程、成人票则错误D
A. 登录不成功,无法购买车票是一个备选事件流
B. 从登录到购票完成,为了避免场景过于复杂,应围绕购票的全流程分层设计场景
C. 成功登录后,成功购买一张单程、成人票应作为基本事件流
D. 成功登录后,应针对出发地的选择创建足够多的备选事件流
75、如下适合采用场景法进行测试的是:
A、 测试一个实现二叉树遍历的函数
B、 测试一个Circle类
C、 测试一个实现冒泡法排序的C语言函数
D、 测试学生选课系统中选课的过程
正确答案: D
76
正确答案:D
77、下列关于边界值测试基本原则的描述,不正确的是()。
A. 如果需求规范说明指定了输出而非输入的范围和取值的个数,则无法使用边界值测试
B. 如果输入条件规定了取值范围,则以此范围为基础设计测试用例
C. 如果输入或输出是一个有序集合,如:线性表、顺序文件等;则选择该序列中的第一个及最后一个元素进行测试,进一步考虑第二个元素和倒数第二个元素
D. 如果输入条件规定了取值的个数,则以个数为基础设计测试用例
正确答案:A
78、下列关于黑盒测试与白盒测试技术的说法中错误的是( )。
A. 达到预定的代码覆盖率是白盒测试用例设计完成的标准
B. 测试员不需要了解源代码的内部结构也可以执行黑盒测试
C. 成功对某模块执行白盒测试后,发现所有测试用例均运行成功,说明该模块已实现了预定的需求
D. 黑盒测试主要是测试软件的功能需求与非功能需求是否正确的实现
正确答案:C
79、以使用某购票系统进行国内车票购买的过程为例,如果需要针对相关业务流程设计测试用例,则如下描述中错误的是:
A. 系统登录失败,该流程对应的是备选事件流
B. 成功登录系统,出发地城市分别选择100个不存在的、或不在中国境内的城市,无法购票,对应同一个备选事件流
C. 成功登录系统,为已有乘车人成功购买单程、单张车票,该流程对应的是基本事件流
D. 成功登录系统,为已有乘车人成功购买单程单张车票,以及为已有乘车人成功购买单程多张车票,这两个流程分别对应两个基本事件流
正确答案:D
80、以下描述中哪个是正确的?
A. 在功能测试中,应选择所有不同的测试方法,围绕功能点设计尽量多的测试用例
B. 功能测试中,针对事件流中的每个节点,应使用等价类和边界值测试对涉及的数据进行校验
C. 在功能测试中,应优先使用等价类测试方法来测试数据,然后使用场景法测试流程,最后使用边界值测试做补充测试
D. 在数据可以穷尽的情况下,只要能保证测试用例覆盖所有数据,就可以确保测试没有风险
正确答案:B
81、因果图中,a,b,c为原因条件,表示这三个条件有且仅有一个1的关系是( )。
A. 互斥 B.唯一C. 包含 D.要求
正确答案:B
82、下列关于逻辑覆盖测试的说法中正确的是( )。
A. 语句覆盖就是设计若干个测试用例,运行被测程序,使得每一条可执行语句至少执行一次。
B. 条件覆盖是设计足够多的测试用例,运行所测程序,使程序中每个判断的取真分支和取假分支至少各执行一次。
C. 判定覆盖是设计若干个测试用例,运行所测程序,使程序中每个判断内的每个条件的各个可能取值至少执行一次。
D. 判定-条件覆盖要求各个判断的所有可能的条件取值组合至少执行一次。
答案:A
83、【6,18)上点和离点分别是什么(单选题)
A、 上点:6,18 离点:7,19
B、 上点:6,18 离点:5,17
C、 上点:6,17 离点:5,18
D、 上点:5,17 离点:6,18
答案: B
84、白盒方法中常用的方法是( )方法。(单选题)
A、 路径测试
B、 等价类
C、 因果图
D、 归纳测试
答案: A
85、对下面的个人所得税程序中满足语句覆盖测试用例的是( )
If(income < 800) taxrate = 0;
else if(income <= 1500)
taxrate = 0.05;
else if(income < 2000)
taxrate = 0.08;
else taxrate = 0.1;
(单选题)
A、 income = (800,1500,2000,2001)
B、 income = (800.801,1999 2000)
C、 income = (799. 14992000,2001)
D、 income = (799.1500,1999,2000)
答案: D
86、给定一组输入条件,每个输入条件均对应各自连续的有效取值范围,则以下的描述中错误的是:(多选题)
A、 从输入设计测试用例后,还必须围绕系统输出来补充设计测试用例
B、 每个输入条件都至少可以划分为一个有效等价类和两个无效等价类
C、 在划分好的等价类中选择数据构建测试用例时,必须选择该等价类中的非边界值作为测试数据
D、 如果希望更好地控制测试用例规模,则设计的测试用例能覆盖所有有效等价类就可以了
答案: ABC
87、以下描述中哪个是正确的?(单选题)
A、 在功能测试中,应选择所有不同的测试方法,围绕功能点设计尽量多的测试用例
B、 功能测试中,针对事件流中的每个节点,应使用等价类和边界值测试对涉及的数据进行校验
C、 在功能测试中,应优先使用等价类测试方法来测试数据,然后使用场景法测试流程,最后使用边界值测试做补充测试
D、 在数据可以穷尽的情况下,只要能保证测试用例覆盖所有数据,就可以确保测试没有风险
答案: B
88、条件覆盖的目的是()(单选题)
A、 使每个判定的所有可能的条件取值组合至少执行一次
B、 使程序中的每个判定至少都获得一次“真”值和“假”值
C、 使程序中的每个判定中每个条件的可能值至少满足一次
D、 使程序中的每个可执行语句至少执行一次
答案: C
89、若一个通讯簿最多可以输入100条记录,则下列选项中设计的测试用例最优的是( )。(选择一项)(单选题)
A、 分别输入1、50、100条记录
B、 分别输入0、1、50、99、100条记录
C、 分别输入0、1、99、100、101条记录
D、 分别输入0、1、50、99、100、101条记录
答案: D
90 软件测试是采用( a )执行软件的活动。
A.测试用例
B.输入数据
C.测试环境
D.输入条件
91、在下列描述中,关于测试与调试的说法错误的是( d )
A、测试是显示错误的行为;而调试是推理的过程;
B、测试显示开发人员的错误。调试是开发人员为自己辩护;
C、测试能预期和可控。调试需要想象、经验和思考;
D、测试必须在详细设计已经完成的情况下才能开始;没有详细设计的信息调试不可能进行。
92、某次程序调试没有出现预计的结果,下列( b )不可能是导致出错的原因。
A.变量没有初始化 B.编写的语句书写格式不规范C.循环控制出错 D.代码输入有误
93、不属于逻辑覆盖方法的是( d )。
A.组合覆盖 B.判定覆盖
C.条件覆盖 D.接口覆盖
94、( d )是选择若干个测试用例,运行被测程序,使得程序中的每个可执行语句至少执行一次。
A、条件覆盖
B、组合覆盖
C、判定覆盖
D、语句覆盖
95、( a )是设计足够多的测试用例,使得程序中每个判定包含的每个条件的所有情况(真/假)至少出现一次,并且每个判定本身的判定结果(真/假)也至少出现一次。
A、判定-条件覆盖
B、组合覆盖
C、判定覆盖
D、条件覆盖
96、单元测试的主要任务不包括( b )。
A.出错处理 B.全局数据结构
C.独立路径 D.模块接口
97、单元测试中用来模拟实现被测模块需调用的其他功能模块的是( b )。
A.驱动模块 B.桩模块
C.主控模块 D.真实的被调用模块
99、下列关于程序效率的描述错误的是( c )。
A.提高程序的执行速度可以提高程序的效率
B.降低程序占用的存储空间可以提高程序的效率
C.源程序的效率与详细设计阶段确定的算法的效率无关
D.好的程序设计可以提高效率
100、下列( b )是对程序流程图进行简化后得到的,它可以更加突出的表示程序控制流的结构,且不包含复合条件。
A.DD-路径图 B.控制流图C.MM-路径图 D.模块调用图
101、自底向上增量式集成测试中,下面( c )描述是正确的。
A.测试由桩模块控制
B.最上面的模块最先测试
C.父单元用测试过的子单元测试
D.包含树的深度优先或广度优先遍历过程
102、针对是否对无效数据进行测试,可以将等价类测试分为(b )
1)标准(一般)等价类测试
2)健壮等价类测试
3)弱等价类测试
4)强等价类测试
A.3)4) B.1)2)C.1)3) D.2)4)
二、填空题
1. 等价类划分有两种不同的情况:___和___。
参考答案:有效等价类 无效等价类
2. 如果有多个输入条件,并且各个条件之间存在关联,那么仅仅只是覆盖所有的等价类还不够,还需要考虑等价类之间的____________。
参考答案:组合
3. 各个被测变量的等价类总数等于其____________ 加上____________。
参考答案:有效等价类数 无效等价类数
1、等价类测试和边界值测试是面向_______________的。
答案: 数据
2、计算环路复杂度的方法有:判定节点数+1;_______________________;________________________。
答案:
E-N+2; 边数-顶点数+2;边数-结点数+2
区域数+1;封闭区域数+1
3、按照 ,软件测试可以分为:______________、白盒测试和灰盒测试。
答案: 测试用例的设计方法
(2)黑盒测试;黑盒测试用例设计方法;黑盒技术
三、判断题
一个测试用例可覆盖多个有效等价类和无效等价类。✘
不同的等价类划分得到的测试用例的质量不同。✔
强健壮等价类测试中测试用例个数为各个被测变量的等价类总数的和。✘
四、简答题
1.简述黑盒测试的基本原理和特点。
原理:黑盒测试指把测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只依据需求规格说明书,检查程序是否满足功能要求。
特点:(1)黑盒测试对测试人员的技术要求低。
(2)黑盒测试不需要了解程序的实现细节。
五、解答题
1、某商场在“五一”期间,顾客购物时收费有4种情况:普通顾客一次购物累计少于100元,按A类标准收费(不打折),一次购物累计多于或等于100元,按B类标准收费(打9折);会员顾客一次购物累计少于1000元,按C类标准收费(打8折),一次购物累计等于或多于1000元,按D类标准收费(打7折)。测试对象是按以上要求计算顾客收费模块,请基于边界值法和等价类法设计测试用例。
1、依托三角形来写等价用例
2. 某种信息加密代码由三部分组成,这三部分的名称和内容如下:
(1)加密类型码:空白或三位数字;
(2)前缀码 :非’0’或’1’开头的三位数;
(3)后缀码 :四位数字。
假定被测试的程序能接受一切符合上述规定的信息加密代码,拒绝所有不符合规定的信息加密代码,试用等价类划分法,分析它所有的等价类,并设计测试用例。