怎样以最少的人力、资源投入,在最短的时间内完成测试,去发现软件系统的缺陷(bug),保证软件的优良品质,是软件公司探索和追求的目标。
▲测试用例是测试工作的指导,是软件测试的必须遵守的准则,更是软件测试质量稳定的根本保障
▲测试用例是指为实施测试而向被测试系统提供的输入数据,操作或者各种环境设置以及期望结果的一个特定集合。
做到对需求的完全理解,从全局上把握需求,对需求进行归类,包括对正常 流、异常流等,做到需求的100%覆盖 。理顺了需求,用例写起来就顺手多了。
2) 测试用例的有效性(对于需求变更或软件更新等导致的某些测试用例要及时更新,保证测试用例的及时有效性,主要针对时间同步及用例的可用性)
测试用例应该包含清晰的输入数据以及预期输出,如果环境或者业务发生
变更后,测试数据必须进行更新维护,用例基于数据驱动。
测试用例步骤必须描述清晰,不能出现模棱两可,以及重复的话语。
测试用例应该按照一定的顺序进行编写,这样执行的时候效率比较高。
5) 测试用例的可维护性。(及时更新—需求变更,某些测试用例也要更新,无用的测试用例要删除,有用的要保留,该新增的要新增,该修改的要修改)
Testing”一文中说:“测试用例的前10%到15%可以发现75%到90%的重要缺陷”—缺陷的群集性。如果你在项目日常结束后,仔细的
分析过我们的bug列表,那么你会觉得这句话非常适用。合理的提高我们的测试效率就是在编写测试用例的时候进行测试用例优先级的划分。
如何划分测试用例的优先级:
5)将功能测试用例分为严重和不严重两类,对于不严重的功能测试用例降级为低优先级用例。
把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。
①在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。
②在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立 一个有效等价类和一个无效等价类。
③在输入条件是一个布尔量的情况下,可确定 一个有效等价类和 一个无效等价类。
④在规定了输入数据的一组值(假定 n 个),并且程序要对每一个输入值分别处理的情况下,可确立n 个有效等价类和一个无效等价类。
⑤在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
⑥在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。
1) 测试人员要对需求规格说明书中的各项需求,尤其是功能需求进行细致分析,然后将程序的输入域划分成若干部分,从每个部分中选取少数代表性的数据作为测试用例,经过这种划分,每一类的代表性数据在测试中的作用都等价与这一类中的其他值。(同一个集合中的每个数据的作用都是一样的)
等价类技术提供了一个选择哪些数值,舍弃哪些数值的测试用例设计方法。运用等价类技术,可以将相似输出、输入、操作分成组,这些组就是等价区间,只要从等价区间选择一到两个有代表性的值作为测试用例来执行就等同于测试了所有值。当然,也可能存在编程人员编写了异常处理的代码(使用多个测试用例才能发现这个错误),但是在发现这种类型的缺陷方面存在其他更为有效的技术(比如代码审查)
运用等价类方法的步骤:
边界值分析也是一种黑盒测试方法,是一种和等价类相关的技术,它具有很强的发现程序错误的能力。如果软件的能力达到极限时能够运行,那么在正常情况下就不会有什么问题。长期的测试工作经验说明“错误隐藏在角落,问题聚焦在边界上”大量的错误是发生在输入或者输出的边界上,而不是发生在输入输出的范围内。因此,针对各种边界值情况设计测试用例,可以查出更多的错误。
边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
① 如果输入条件规定了值得范围,则应取刚刚到达这个范围的边界值,以及刚刚超过这个范围的值作为输入数据。
如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少1,比最大个数多1的数作为测试数据。
⑤ 如果程序的规格说明书给出了输入域或输出域是有序集合,则应选取集合的第一个元素和集合的最后一个元素作为测试用例。
⑥ 如果程序中使用了一个内部数据结构,则应该选择这个内部数据结构的值作为测试用例。
注:判定表中贯穿条件项和动作项的一列就是一条规则。
(2)使用判定表的条件:
当被测试特性输入较多时,判定表的规模将会非常庞大输入之间的约束条件不能有效区分输入是否确实需要进行组合测试,会造成不需要组合测试的输入做了组合,从而产生用例冗余。
定义:是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。
因果图中使用了简单的逻辑符号,以直线联接左右结点。左结点表示输入状态(或称原因),右结点表示输出状态(或称结果)。C1表示原因,通常置于图的左部;e1表结果,通常在图的右部。C1和e1均可取值0或1,0表示状态不出现,1表示某状态出现
4)因果图法—因果约束
约束: 输入状态相互之间还可能存在某些依赖关系,称为约束。例如, 某些输入条件本身不可能同时出现。输出状态之间也往往存在约束。在因果图中,用特定的符号标明这些约束。
E约束(异):a和b中至多有一个可能为1,即a和b不能同时为1。
I约束(或):a、b和c中至少有一个必须是1,即
O约束(唯一);a和b必须有一个,且仅有1个为1。
R约束(要求):a是1时,b必须是1,即不可能a是1时b是0。
输出条件的约束只有M约束(强制):若结果a是1,则结果b强制为0
正交测试用例设计又称组合实验法,利用因果图来设计测试用例时,作为输入条件的原因与输出结果之间的因果关系,有时很难从软件需求规格说明书中得到,往往因果关系非常庞大,以至于据此因果图而得到的测试用数目多的惊人,经软件测试带来学生的负担,为了有效地,合理地减少测试的工时与费用,可利用正交实验设计方法进行测试用例的设计。
1832,法国数学家)理论,从大量的测试数据(测试用例)中挑选适量的,有代表性的点(测试用例),从而合理地安排测试的一种科学实验设计方法。
正交试验法步骤和选择:
每个因素有哪几个水平(变量的取值)
如何选择正交表(考虑几因子几状态)
利用正交实验设计方法设计测试用例,比使用等价类划分、边界值分析、因果图等方法有以下优点:1)节省测试工作工时;2)可控制生成的测试用例数量;3)测试用例具有一定的覆盖率
状态转移测试是一种基于产品规格分析的黑盒测试技术,对系统的每个状态及与状态相关的函数进行测试,通过不同的状态验证程序的逻辑流程。
对象:状态转换测试中,测试对象可以是一个具有不同系统状态的完整系统,也可以是一个在面向对象系统中具有不同状态的类
步骤四:根据测试路进行用例设计(输入部分)
状态迁移法实际测试了被测系统各种状态的转换,这些状态转换的测试在实际工作中是容易遗漏的,只要能够将这些状态的转换测试到,是否采用状态迁移法并不重要,因为状态迁移法只是提供了一种将多个状态的转换串联起来进行测试的思路(思维模式)。
实际工作中,在业务流程中都涉及到了复杂的业务场景(即业务状态的迁移)。而这些业务场景在需求规格中往往不能够完全阐述清楚,容易出现遗漏。所以当被测系统的业务场景复杂时,在工程中应用这种针对状态迁移测试的思路完成对复杂业务场景的测试有时是很有必要的。
在实际测试中,经常有这种情况,像安装程序向导,它是由多个界面组成的,并且他们之间彼此有联系,而且他们之间是有流程顺序的,在面对这种测试时,我们就可以使用今天介绍的场景法了。照例还是先看一下基本概念,基本流就是按照正确的事件流来实现的流程。备选流就是出现故障概念,基本流就是按照正确的事件流来实现的流程。备选流就是出现故障或缺陷的过程。场景就是若干事件流首尾拼接构成一个测试场景。来看一个场景图
现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。这种在软件设计方面的思想也可以引入到软件测试中,可以比较生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,同时使测试用例更容易理解和执行。
基本流和备选流:如下图所示,图中经过用例的每条路径都用基本流和备选流来表示,直黑线表示基本流,是经过用例的最简单的路径。备选流用不同的色彩表示,一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中(如备选流1和3);也可能起源于另一个备选流(如备选流2),或者终止用例而不再重新加入到某个流(如备选流2和4)。
★软件测试有两个基本方法:通过测试和失败测试。
★通过测试:主要用于验证系统和它的需求是否一致。确认软件至少能做什么,一般通过分析需求说明设计测试用例。为了确定程序是否满足目标,就必须执行通过测试。
★失败测试:确信软件在普通情况下正确运行之后,就可以采取各种手段找出缺陷。纯粹为了破坏软件而设计和执行的测试用例称为失败测试或迫使出错测试。
失败测试主要用于证明“一个系统不做不需要它做的事情”,也就是说,要设计测试用例来考察程序超出需求规格说明的严格范围时的行为。
失败测试虽然与通过测试看起来相似,但是它是蓄意攻击软件的薄弱环节。
★错误猜测:(错误推测)本身不是一种测试技术,而是可以运用到所有测试技术中产生更加有效的一种测试的技能。
错误推测是基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法。
★随机测试:随机测试指测试中的所有输入数据都是随机生成的,其目标是模拟用户的操作。
一个好的测试方法将给软件测试带来事半功倍的效果,在世纪的测试工作中可以按照下面的原则运用适合的相关测试技术。
实际工作过程中优先选择怎样的测试方法的补充:
1) 基于业务操作流程分析,首先采用的是场景法,保证主要功能没有问题。设计相关用例(涵盖了状态迁移,因果图、判定表等)。
更多“关于正交表的说法正确的有()。 A. 正交试验设计利用“正交表”选择实验条件,并利用正交表的特点进”相关的问题
与正交试验法相比,单因素实验法的优缺点各为什么?
[图]A、相关 不正交B、不相关 正交C、不相关 不正交D、相...
关于正交表的说法,正确的有()。
A、正交试验利用“正交表”选择试验条件,并利用正交表的特点进行数据分析,以找出最好或满意的试验条件
C、正交表各列中每个数字的重复次数相同
D、将正交表中任意两列的同行数字看成一个数对,那么一切可能数对的重复次数相同
E、正交表各列中每个数字的重复次数不相同
F、将正交表中任意两列的同行数字看成一个数对,那么一切可能数对的重复次数不相同
采用L4(23)、L8(27)和L16(215)三种正交表进行试验时,下...
采用L4(23)、L8(27)和L16(215)三种正交表进行试验时,下列阐述哪一个正确()?
A. 试验次数不同、因素不同、水平不同
B. 试验次数不同、因素不同、水平相同
C. 试验次数不同、因素相同、水平不同
D. 试验次数相同、因素相同、水平不同
区别红色石榴石和红色尖晶石有效的仪器是( )
下列描述中,哪些关于正交序列的描述是正确的()
A. “1”的个数总比”0”的个数多1个
B. B.2个不同的正交的序列完全不相关
C. C.2个不同的正交的序列互相关性为0
D. D.2个相互正交的正交序列做异或运算,得到的结果为正交序列
关于因子分析中的因子载荷,下列说法中正确的是
A、因子载荷值等于原始变量间的相关系数
B、因子载荷值可以用来计算因子得分
C、因子载荷值不是唯一的
D、因子载荷值永远大于零
A.流网中每一网格均为曲边正方形B.流线和等势线正交
关于主轴的概念,有如下说法,正确的是( )。
A、平面图形有无限对形心主轴
B、平面图形不一定存在主轴
C、平面图形只有一对正交主轴
D、平面图形只有一对形心主轴
设R(t)表示可靠度函数,F(t)表示累积故障分布函数,则以下描述正确的是()。
E.F(t)在[0,∞]区间内的非增函数
古希腊是一个多民族的国家,国王在检阅臣民时要求每个方队中每行有一个民族代表,每列也要有一个民族的代表。
数学家在设计方阵时,以每一个拉丁字母表示一个民族,所以设计的方阵称为拉丁方。
用n个不同的拉丁字母排成一个n阶方阵(n<26 ),如果每行的n个字母均不相同,每列的n个字母均不相同,则称这种方阵为n*n拉丁方或n阶拉丁方。每个字母在任一行、任一列中只出现一次。
设有两个n阶的拉丁方,如果将它们叠合在一起,恰好出现n2个不同的有序数对,则称为这两个拉丁方为互相正交的拉丁方,简称正交拉丁方。
例如:3阶拉丁方(图1)
用数字替代拉丁字母:(图2)
正交试验设计(Orthogonal experimental design)是研究多因素多水平的又一种设计方法,它是根据正交性从全验中挑选出部分有代表性的点进行试验,这些有代表性的点具备了“均匀分散,齐整可比”的特点,正交试验设计是分式析因设计的主要方法。是一种高效率、快速、经济的实验设计方法。
日本著名的统计学家田口玄一将正交试验选择的水平组合列成表格,称为正交表。例如作一个三因素三水平的实验,按全面实验要求,须进行33=27种组 合的实验,且尚未考虑每一组合的重复数。若按L9(33) 正交表按排实验,只需作9次,按L18(37) 正交表进行18次实验,显然大大减少了量。因而正交实验设计在很多领域的研究中已经得到广泛应用。
利用因果图来设计用例时, 作为输入条件的原因与输出结果之间的因果关系,有时很难从软件规格说明中得到。往往因果关系非常庞大,以至于据此因果图而得到的测试用例数目多的惊人,给带来沉重的负担,为了有效地,合理地减少测试的工时与费用,可利用正交实验设计方法进行测试用例的设计。
正交实验设计方法:依据Galois理论,从大量的(实验)数据(测试例)中挑选适量的、有代表性的点(例),从而合理地安排实验(测试)的一种科学实验设计方法。类似的方法有:聚类分析方法、因子方法方法等。
三、利用正交实验设计测试用例的步骤:
(1)提取功能说明,构造因子--状态表
把影响实验指标的条件称为因子,而影响实验因子的条件叫因子的状态。
利用正交实验设计方法来设计测试用例时,首先要根据被测试软件的规格说明书找出影响其功能实现的操作对象和外部因素,把他们当作因子;而把各个因子 的取值当作状态。对软件需求规格说明中的功能要求进行划分,把整体的、概要性的功能要求进行层层分解与展开,分解成具体的有相对独立性的、基本的功能要 求。这样就可以把被测试软件中所有的因子都确定下来,并为确定每个因子的权值提供参考的依据。确定因子与状态是设计测试用例的关键。因此要求尽可能全面 的、正确的确定取值,以确保测试用例的设计作到完整与有效。
(2)加权筛选,生成因素分析表
对因子与状态的选择可按其重要程度分别加权。可根据各个因子及状态的作用大小、出现频率的大小以及测试的需要,确定权值的大小。
(3)利用正交表构造测试数据集
利用正交实验设计方法设计测试用例,比使用等价类划分、边界值分析、因果图等方法有以下优点:节省测试工作工时;可控制生成的测试用例数量;测试用例具有一定的覆盖率。
在使用正交实验法时,要考虑到被测系统中要准备测试的功能点,而这些功能点就是要获取的因子或因素,但每个功能点要输入的数据按等价类划分有多个,也就是每个因素的输入条件,即状态或水平值。
行数(Runs):正交表中的行的个数,即试验的次数,也是我们通过正交实验法设计的测试用例的个数。
因素数(Factors) :正交表中列的个数,即我们要测试的功能点。
水平数(Levels):任何单个因素能够取得的值的最大个数。正交表中的包含的值为从0到数“水平数-1”或从1到“水平数” 。即要测试功能点的输入条件。
L行数(水平数因素数)
在同一张正交表中,每个因素的每个水平出现的次数是完全相同的。由于在试验中每个因素的每个水平与其它因素的每个水平参与试验的机率是完全相同的,这就保证在各个水平中最大程度的排除了其它因素水平的干扰。因而,能最有效地进行比较和作出展望,容易找到好的试验条件。
在同一张正交表中,任意两列(两个因素)的水平搭配(横向形成的数字对)是完全相同的。这样就保证了试验条件均衡地分散在因素水平的完全组合之中,,因而具有很强的代表性,容易得到好的试验条件。
用正交实验法设计测试用例
以上介绍了正交实验法的由来。怎么用正交实验法进行用例的设计呢?
一、用正交表设计测试用例的步骤
(2) 每个因素有哪几个水平(变量的取值)
(3) 选择一个合适的正交表
(4) 把变量的值映射到表中
(5) 把每一行的各因素水平的组合做为一个测试用例
(6) 加上你认为可疑且没有在表中出现的组合
考虑因素(变量)的个数
考虑因素水平(变量的取值)的个数
考虑正交表的行数
取行数最少的一个
三、设计测试用例时的三种情况
(1)因素数(变量)、水平数(变量值)相符
四、我们来看看第一种情况:
(1)因素数与水平数刚好符合正交表
我们举个例子:(图4)
这是个人信息查询系统中的一个窗口。我们可以看到要测试的控件有3个:姓名、身份证号码、号码,也就是要考虑的因素有三个;而每个因素里的状态有两个:填与不填。
选择正交表时分析一下:
1、表中的因素数>=3;
2、表中至少有3个因素数的水平数>=2;
3、行数取最少的一个。
从正交表公式中开始查找,结果为:
1:填写姓名、填写身份证号、填写手机号
2:填写姓名、不填身份证号、不填手机号
3:不填姓名、填写身份证号、不填手机号
4:不填姓名、不填身份证号、填写手机号
5:不填姓名、不填身份证号、不填手机号
从测试用例可以看出:如果按每个因素两个水平数来考虑的话,需要8个测试用例,而通过正交实验法进行的测试用例只有5个,大大减少了测试用例数。用最小的测试用例集合去获取最大的测试覆盖率。
如果因素数不同的话,可以采用包含的方法,在正交表公式中找到包含该情况的公式,如果有N个符合条件的公式,那么选取行数最少的公式。
采用包含和组合的方法选取合适的正交表公式。
正交实验法的又一个例子
上面就正交实验法进行了讲解,现在再拿PowerPoint软件打印功能作为例子,希望能为大家更好地理解给方法的具体应用
打印范围分:全部、当前幻灯片、给定范围 共三种情况;
打印内容分:幻灯片、讲义、备注页、大纲视图 共四种方式;
打印颜色/灰度分: 颜色、灰度、黑白 共三种设置;
打印效果分:幻灯片加框和幻灯片不加框两种方式。