测试用例设计技术1.docx
《测试用例设计技术1.docx》由会员分享,可在线阅读,更多相关《测试用例设计技术1.docx(9页珍藏版)》请在冰豆网上搜索。
![测试用例设计技术1.docx](https://file1.bdocx.com/fileroot1/2023-1/26/78984511-aaed-47c1-935f-ac1041382262/78984511-aaed-47c1-935f-ac10413822621.gif)
测试用例设计技术1
测试用例设计技术之一-------等价类法
在软件测试中,测试用例的设计是一件很难的情形。
你能够拿任何一个公司的两个不同人员就同一功能点所写的测试用例来看,确信会发觉有所不同,这是什么缘故呢?
一是着眼点不一样,二是体会不同,三是思维的问题了。
其实你能够看到,有的人写的用例简单明了,有的人写的用例却是复杂冗长,显现这种情形并非奇怪,因为测试用例本身的设计方式与技术很多都是从体会中来的,有些形成了理论,而有些还形成不了能够指导测试活动的理论。
有很多同窗曾经说,那个等价类方式太简单了,怎么能作为一种方式呢?
测试用例技术最关键的问题是---用最少的用例去发觉更多的问题。
当咱们要测试一个软件时,你预备花费多长时刻去完成呢?
从时刻本钱上来讲,越短固然就越好。
我举个例子:
比如说腾讯公司的即时谈天工具QQ:
关于QQ用户登录框,你该怎么去考虑测试用例的设计呢?
固然,咱们要从两个方面去考虑:
一是QQ帐号,二是QQ密码。
就拿QQ帐号这一个输入框,你怎么去考虑进行测试用例的设计?
目前,一个QQ效劳器就许诺有10万以上个用户同时登录进行即时谈天,有多少个QQ帐号啊?
此刻一个人还不只一个QQ号呢,呵呵。
若是有很多QQ帐号的话,怎么进行测试呢?
若是只测试几个,覆盖率不足;全数都测试一遍,不可能有那么长时刻,而且太多了也不行实施。
因此,QQ帐号的测试就陷入了僵局?
咱们先分析一下QQ帐号:
由6-10位自然数组成。
一是位数长度有必然的限制,二是类型是固定的,由0-9自然数组成。
要想测试覆盖全面,又要节省时刻,最好的方法是尽可能简化测试用例的设计。
通过对以上QQ帐号的分析,能够看到有效的帐号有它自己的特点:
长度与类型要符合要求,如此只要在腾讯公司的效劳器上申请了帐号,就能够够进行即时通信了。
那么,如此就有一个解决问题的方式了:
进行类别的划分。
咱们明白软件的功能测试要进行两个方面的测试:
通过测试和失败测试。
要进行通过测试的话,帐号要符合标准,要进行失败测试的话,就要破坏帐号的标准。
好,如此的话,QQ帐号的测试咱们就能够够进行了。
把QQ帐号进行分类:
有效的和无效的。
有效的:
(1)长度在6-10位之间
(2)类型是0-9自然数
无效的:
(1)长度小于6
(2)长度大于10
(3)负数
(4)小数
(5)英文字母
(6)字符
(7)特殊字符
(8)中文
(9)编程语言中的转义字符
(10)空
(11)空格
如此就能够够看出来,有效的当中只要取1或几个就能够够通过测试了,在无效的当中取1或几个就能够够进行失败测试了,因此如此的方式很简单、高效。
这种方式确实是等价类划分法。
也确实是说,在那个类别里你随机选取1个进行测试,若是功能能实现,那么你再随机选那个类别里其他的数据,功能也能实现;若是功能不能实现,你再随机选那个类别里的其他数据,功能也不能实现。
也确实是说类别里的数据是等价的。
等价类划分法是软件测试体会的积存,能够提高测试的效率。
测试用例设计技术之二------边界值法
上次介绍了等价类划分法,在进行等价类别划分的时候,有以下几个原那么:
∙若是规定了输入值的范围,那么可划分出一个有效的等价类(输入值在此范围内),两个无效的等价类(输入值小于最小值和大于最大值);
∙若是规定了输入数据的个数,那么类似地能够划分出一个有效的等价类和两个无效的等价类;
∙若是规定了输入数据的一组值,而且程序对不同输入值做不同处置,那么每一个许诺的输入值是一个有效的等价类,另外还有一个无效的等价类(任一个不许诺的输入值);
∙若是规定了输入数据必需遵循的规那么,那么能够划分出一个有效的等价类(符合规那么)和假设干无效的等价类(从各类不同角度违背规那么);
∙若是规定了输入数据为整型,那么能够划分出正整数、零和负整数等三个有效类;
∙若是程序的处置对象是表格,那么应该利用空表,和一项或多项的表。
而边界值法是在等价类划分完后,由于显现边界条件,而程序员编程又常常在这种地址显现问题,因此经太长期的体会积存总结出来的测试用例的设计方式。
咱们看一段代码,用VB编的。
PrivateSubCommand1_Click()
IfVal>=99OrVal<=-99Then
MsgBox("输入的参数值必需大于-99同时小于99!
")
Else
IfVal>=99OrVal<=-99Then
MsgBox("输入的参数值必需大于-99同时小于99!
")
Else
=Val+Val
EndIf
EndIf
EndSub
是两位数加法器的例子,两位数的范围是从-99到99,也确实是说是个闭区间[-99,99],而程序员在编程的时候忘了区间的问题,把闭区间变成了开区间(-99,99),如此整个程序就出问题了。
边界值法的要紧关注点是边界值,当一旦确信了范围了,边界值确实是测试要关注的了。
仍是以QQ登录界面为例,当要测试QQ帐号的输入框时,咱们注意到QQ帐号的长度范围从6位到10位,也确实是说有了必然的范围,即在6-10位之间的QQ帐号只要在QQ效劳器上申请,就能够作为合法的帐号显现。
咱们分析一下,QQ帐号的位数为[6,10],那么边界值就有两个:
一是6位帐号,二是10位帐号。
用边界值法怎么设计测试用例呢?
一样的规那么是:
比边界值小一点的,恰好是边界值,比边界值大一点。
那么在QQ帐号的输入框的测试用例设计里就有以下几个:
(1)5位帐号
(2)6位帐号
(3)7位帐号
(4)9位帐号
(5)10位帐号
(6)11位帐号
试用例设计技术之三-------因果图法
上一篇咱们谈到了边界值分析法。
就边界值法而言,其实并非难,可是如何应用到实际测试活动当中,就会发觉碰到一些问题后就束手无策了。
咱们来看两个例子:
(1)一张寸的软盘
一张软盘,标称容量是;而实际存储容量为。
也确实是说那个软盘的容量范围为
[0MB,],要想用边界值法的话,测试数据的预备是很重要的。
如何选取到比较适合的测试数据呢?
咱们明白一个空的TXT文本是0KB,可是只要在文本里敲几个字符,文本容量就变成1KB了,那么测试该软盘容量用边界值法进行设计的测试用例有:
一、0MB ---------不存任何数据
二、1KB ----------存一个TXT文本
3、 -----------用紧缩软件WINRAR制作一个紧缩包
4、 -----------用紧缩软件WINRAR制作一个紧缩包
五、在之上加一个TXT文件,可是这种方式很笨;其实仍是沿用以上用紧缩软件的方式,紧缩成没问题吧?
(2)一块40GB的硬盘
对硬盘的容量测试也是用以上的思路,你想出来了吗?
这是一个移动式数码电影放映系统的例子。
在硬盘里有一部DVD影片,容量为3GB,怎么去进行测试呢?
跟上个软盘测试大体一样。
咱们看一下那个硬盘的边界值:
(1)0GB
(2)40GB
用边界值法设计测试用例的话,就有如下:
(1)0GB
(2)3GB
(3)39GB 把3GB的影片复制粘贴12次
(4)40GB 在39GB之上,再加上紧缩成1GB的数据
(5)42GB 把3GB的影片复制粘贴13次
以上是用边界值法来进行测试用例的设计,只要合理的进行边界值的选取,用例的设计并非难。
仍是以QQ登录界面为例,咱们一开始只是关注到QQ帐号或QQ密码这两个输入框,是别离进行分析和测试用例设计的,但当咱们突然发觉,若是把两个输入框一路进行测试的话,那么该怎么测试呢?
好象两个输入框之间要同时进行测试的话,要考虑的问题就不是只关注一个输入框那么简单了。
咱们假想一下,要考虑全面的话,那么QQ登录界面上有两个输入框,把每一个输入框的等价类拿过来:
(一)QQ帐号
有效的:
(1)长度在6-10位之间
(2)类型是0-9自然数
无效的:
(1)长度小于6
(2)长度大于10
(3)负数
(4)小数
(5)英文字母
(6)字符
(7)特殊字符
(8)中文
(9)编程语言中的转义字符
(10)空
(11)空格
(二)QQ密码
有效的:
(1)6-16位
(2)空格
(3)负数
(4)小数
(5)英文字母
(6)字符
(7)特殊字符
(8) 编程语言中的转义字符
无效的:
(1)<6位
(2)>16位
(3)空
(4)保留字
(5)功能键(ESC、ENTER、TAB、SHIFT、CTRL、CapsLock、Backspace、Alt)
(6)汉字
若是把两个输入框的等价类进行组合的话,需要多少个测试用例呢?
13*14=182个,是不是很多啊?
要明白,用最少的测试用例去进行最大的测试覆盖,这种组合就很多了,效率也低。
咱们看看因果图的原理吧:
(一) 因果图法的来源 ⌝
⌝大伙儿熟悉的等价类划分法和边界值分析法,都是着重考虑输入条件,但未考虑输入条件之间的联系、彼此组合等;
⌝ 可是,如考虑所输入条件之间的彼此组合,会由于组合情形数量相当大,需要大量的测试用例;因果图法,是一种帮忙人们系统地选择一组高效率测试用例的方式。
(二) 因果图法的特点 ⌝
⌝ 考虑输入条件间的组合关系;
⌝ 考虑输出条件对输入条件的信任关系,即因果关系;
⌝ 测试用例发觉错误的效率高;
⌝ 能检查出功能说明中的某些不一致或遗漏;
因果图方式最终生产的确实是判定表,它适合于检查程序输入条件和各类组合情形。
(三) 因果图法大体步骤
1. 分割功能说明书关于规模比较大的程序来讲,由于输入条件的组合数太大,因此很难整体上利用一个因果图。
咱们能够把它划分为假设干部份,然后别离对每一个部份利用因果图。
例如,测试编译程序时,能够把每一个语句作为一个部份。
2. 识别出“缘故”和“结果”,并加以编号所谓缘故,是指输入条件或输入条件的等价类;而结果那么是指输出条件或输出条件的等价类。
每一个缘故或结果都对应于因果图中的一个节点。
当缘故或结果成立(或显现)时,相应的节点取值为1,不然为0。
3. 依照功能说明书中规定的缘故和结果之间的关系画出因果图因果图的大体符号如图1所示:
因果图的大体符号
" 图中左侧的节点表示缘故,右边的节点表示结果。
恒等、非、或、与的含义:
" 恒等:
假设a=1,那么b=1;假设a=0,那么b=0;
" 非:
假设a=1,那么b=0,假设a=0,那么b=1;
或:
假设a=1或b=1或c=1,那么d=1;假设a=b= "c=0,那么d=0;
与:
假设a=b=c=1,那么d=1;假设a=0或b=0或c=0,那么d=0。
画因果图时,缘故在左,结果在右,由上而下排列,并依照功能说明书中规定的缘故和结果之间的关系,用上述大体符号连接起来。
在因果图中还能够引入一些中间节点。
4. 依照功能说明在因果图中加上约束条件由于语法或环境限制,有些缘故与缘故之间、缘故与结果之间的组合情形不可能显现。
为说明这些特殊情形,在因果图上用一些记号说明约束或限制条件。
因果图的约束条件如下图:
" 其中互斥、包括、唯一、要求时对缘故的约束,屏蔽是对结果的约束。
他们的含义如下:
" 互斥E:
表示不同时为1,即a,b,c中最多只有一个1;
" 包括I:
表示至少有一个1,即a,b,c中不同时为0;
" 唯一O:
表示a,b,c中有且仅有一个1;
" 要求R:
表示假设a=1,那么b必需为1。
即不可能a=1且b=0;
屏蔽M:
表示假设a=1,那么b必需为0
5. 依照因果图画出判定表画判定表的方式一样比较简单,能够把所有缘故作为输入条件,每一项缘故(输入条件)安排为一行,而所有的输入条件的组合一一列出(真值为1,假值为0),关于每一种条件组合安排为一列,并把各个条件的取值情形别离添入判定表中对应的每一个单元格中。
例如,若是因果图中的缘故有4项,那么,判定表中的输入条件那么共有4行,而列数那么为24=16。
确信好输入条件的取值以后,咱们即能够很容易地依照判定表推算出各类结果的组合,也即输出,其中也包括中间节点的状态取值。
上述方式考虑了所有条件的所有组合情形,在输入条件比较多的情形下,可能会产生过量的条件组合,从而致使判定表的行数太多,过于复杂。
但是在实际情形中,由于这些条件之间可能会存在约束条件,因此很多条件的组合是无效的,也确实是说,它们在判定表中也完满是多余的。
因此依照因果图画出判定表时,咱们能够成心识地排除掉这些无效的条件组合,从而使判定表的列数大幅度减少。
例如,依照图所示的因果图,能够画出如表所示的判定表。
6. 为判定表的每一列设计一个测试用例即为从因果图中导出的判定表中的每一列设计一个测试用例。