常见的组合常见安全测试方法法

1725人阅读
测试用例(5)
作者:张丽颖##
从吃货的角度观察组合
作为一名合格的吃货,小编我每天为了吃的健康着实费了不少心思,每周我都会根据应季蔬果来定制一周的饮食,以下是我这周的定制计划:
蔬菜类: 豆角, 土豆, 莴笋, 青椒, 西红柿, 圆白菜, 芹菜
水果类: 葡萄, 西瓜, 苹果, 柑橘, 菠萝, 柚子, 香蕉, 李子
肉类(蛋白质类):
牛肉, 猪肉, 鱼, 鸡肉, 羊肉, 豆腐
菠菜汤, 西红柿汤, 紫菜汤, 五谷粥
在不得不考虑食物相克相生的前提下,这些定制计划中必须要进行适当的搭配才不会把小编自己吃趴下,在上面的食谱中,不能同时食用的食物有:
羊肉和西瓜
李子和鸡肉
鸡肉和芹菜
土豆和香蕉
豆腐和菠菜
因此在做每日菜品的搭配组合时必须要考虑这些约束,不知道看到这里的你是不是开始头大了?别急别急,小编有秘密武器可以教你简单应对~
一、是什么?
就像上面介绍的故事一样,测试过程中我们也会遇到这样的场景:
有m个参数、且每个参数有多个离散但有限的取值N1、N2…Nm(其中Ni可以个数不等,1&=i&=m),为了覆盖参数的全部取值组合,需要N1*N2*…*Nm个测试用例。
譬如经过对需求的分析,得出我们需要验证IE在不同硬件配置的PC上的兼容性测试,且经过数据统计,主要用户占比的PC信息如下图所示:
并且需要验证的IE版本如下图所示:
在这种场景下,要达到对参数的所有取值组合的覆盖,共需要3*3*4*2*4*4=1152条用例,若按120条/人日的执行力计算,这个需求的测试执行需要耗时9.6人日,这在敏捷迭代节奏的项目中是不太可行的,所以这种情况下我们可以考虑测试成本和错误检测能力上能达到较好平衡的组合测试方法。
像上面测试场景中提到的有多个参数、且每个参数有多个离散但有限的值,致使可能组合的参数值总数非常大,我们称之为组合爆炸。
而组合测试的目的,抽象的说就是为组合爆炸提供一种解决方案,简单地说就是在保证错误检出率的前提下采用较少的测试用例生成方法,它将被测系统或被测系统的模块抽象成一个受到多个因素影响的系统,并提取出每个因素的可能取值,结合组合测试方法,生成最终的测试用例。
根据上面的分析,我们可以了解到组合测试需要解决的最大问题就是:没有足够的测试资源来执行全部的测试用例,因此提出了基于一个数学模型和一个假设的解决方法,如下:
一个数学模型:产品的功能被抽象为函数f,产品的输入被抽象为函数的变量x1,x2,…,xm,且xi(1≤i≤m)的可能取值是有限的,产品的输出被抽象为函数的返回值y1,y2,…,yn;
一个假设:如果测试覆盖了任意t个(2≤t≤m)输入变量的取值组合,那么该测试可以发现函数f的大部分错误。
常用的组合测试方法包括:
1、两因素组合测试(也称配对测试、全对偶测试)
生成的测试集可以覆盖任意两个变量的所有取值组合。在理论上,该用例集可以暴露所有由两个变量共同作用而引发的缺陷。
2、多因素(t-way,t&2)组合测试
生成的测试集可以覆盖任意t个变量的所有取值组合。在理论上,该测试用例集可以发现所有t个因素共同作用引发的缺陷。
3、基于选择的覆盖
要满足基于选择的覆盖,第一步是选出一个基础的组合,且基础组合中包含每个参数的基础值,建议选择最常用的有效值作为基础值。基于基础组合,每次只改变一个参数值,来生成新的组合用例。
关于多因素组合测试在缺陷检出率方面的贡献,IEEE文章提到早期的一些回顾性研究结果:
从上图可以看出,两因素组合最多能发现95%的缺陷、平均缺陷检出率也达到了86%,而对于三因素组合甚至更高因素的组合能发现的缺陷是非常有限的,一般情况下,超过90%的软件缺陷,都是由3个或更少的参数值触发的。因此任何测试设计中都应该至少保证两因素组合的100%的覆盖测试。有着高可靠性需求的应用,比如医疗设备或者航空电子设备,应该保证至少3-way因素组合的100%的覆盖测试。
由于两因素组合测试在测试用例个数和错误检测能力上达到了较好的平衡,它是目前主流的组合测试方法。
接下来小编带你进入快捷的利用工具进行用例生成的阶段~~
二、怎么做?
在利用组合测试方法生成测试用例的过程中,小编推荐使用PICT工具(下载地址:),PICT工具是一个从2000年开始在微软被使用的测试用例生成工具,它实现了t组合测试策略,可以有效地按照两两测试的原理,进行测试用例设计。在使用PICT时,需输入与测试用例相关的所有参数,以达到全面覆盖的效果。
PICT的使用相对简单,PICT是一个命令行工具,接受纯文本模型文件作为输入,并输入一系列测试用例。PICT的可选参数如下:
更详细的说明详见PICT安装目录下的PICTHelp.htm文件
PICT安装时会自动加入环境变量path中,因此你可以在任何目录下执行。
参考我们在“是什么”部分中提到的案例,接下来小编将使用PICT工具边介绍边实践。
PICT接受一个输入文本模型文件,你可以使用Windows的记事本来保存(假设保存为ModelFile.txt),如下图:
其中每个参数占一行,参数和参数值之间以英文冒号分隔、参数值之间以英文逗号分隔。
通过“&”符号可以将输出重定向到xls文件中(假设输出文件为OutputFile.xls),使用如下命令运行PICT:
生成的结果如下:
每一行即为一条测试用例,通过此方式生成了共计20条测试用例,若按120条/人日的执行力计算,仅需0.17人日,相对于“是什么”部分的9.6人日的测试耗时,测试成本大大降低,组合测试的优势不言自明。
事实上,如果这六个参数中的某两个参数值的任意不同的组合会触发一个bug的话,那表格上的那组测试用例也可以发现该bug。当三个特殊的值组合在一起触发的某个bug,那表格上的那组测试用例不一定能发现该bug,但是至少我们覆盖了所有的两因素组合。相对于所有组合情况来说,两因素组合的测试覆盖率要容易很多。例如,如果你想测试10个参数且都有26个值的功能,所有组合情况将生成141,167,095,653,376个测试用例。而两因素组合就只要测试1094个测试用例就可以。
三、精彩在这里!
看到这里,你是不是已经迫不及待要找一份需求来练手了呢?别急,精彩还在继续!
1、定义因素之间的约束关系
上文的例子中参数之间是互相独立的,但大多数被测试应用的因素之间存在约束关系。如果不考虑约束关系,组合测试用例集将包含大量的无效测试用例。这些无效的测试用例,包含一些无效的取值组合,也有可能包含一些有效的取值组合。仅仅删除无效测试用例,会导致最终的测试用例集不能实现两因素或多因素组合覆盖。面对因素之间存在约束关系的被测试应用,应该明确定义约束关系,让组合测试工具根据约束来生成有效的测试用例集。
因此我们需要在设计PICT输入模型时,加入约束限制,好在PICT工具很强大并在设计之初就考虑到了这点,以本文最开始的故事为例,除了多参数、多值以外,还存在着参数值之间的约束关系,修改我们在上文中的输入文本文件如下:
即如果肉类是羊肉,则水果类不能选择西瓜,其他以此类推。当PICT读取模型文件时,它会解析约束规则,并将其应用于测试用例生成过程。生成的测试用例集既满足对有效取值组合的覆盖,又不包含无效取值组合。
执行PICT命令行,生成的食谱合理搭配如下:
共计58种组合选择,完全满足一周的营养健康搭配需要了(yeah!!!)
2、引入随机种子
看到这里,资深吃货一定会问:上面的58种组合最多只能吃一阵子,然后就不得不重复食谱了-_-|||,针对这个问题,PICT也提供了随机种子来应对。PICT采用的是伪随机算法,输入不变的情况下,输出的测试用例是相同的,因此引入随机种子,在测试成本相同的情况下,改变组合次序,测试执行可以执行更多的路径,覆盖更广大的状态空间,发现隐藏缺陷的概率也会提高。
在PICT中,参数”/r[:N]”可以为测试用例生成引入随机种子(N是作为随机种子的整数),以生成不同的测试用例。譬如我们分别尝试不带种子、和带种子100的食谱搭配结果:
结果如下:
从上图可以看出,在引入随机种子后,组合次序发生了变化,但是组合个数一样。这样大家可以在不提高测试成本的前提下,提高覆盖率。
3、覆盖最最重要的组合,即基于选择的覆盖
追求完美的吃货可能还会发现,上面那么多食谱组合,竟然没有组合到他最爱的搭配,例如:豆角 香蕉 猪肉 五谷粥,即组合测试可能会错过最重要的取值组合。
上图是Word 2010“高级”设置的一部分,每个复选框都是一个因素,每个因素都有“勾选、未勾选”两个选择,为了测试Word在不同设置下的行为,对所有因素生成组合测试用例集。但是该测试用例集很可能没有覆盖Word的默认设置。事实上,大多数用户几乎不修改默认配置,测试用例集没有覆盖最常用、也是最重要的取值组合,所以建议使用“基于选择的覆盖”方法。这揭示了组合测试的一个潜在风险:如果测试人员不仔细分析被测试对象,只依赖组合测试工具,他可能错过用户最常见的测试用例。
4、警惕卫哨语句
为了设计更合理的测试用例,大家不光要从需求分析输入、更要从代码层次分析输入,因为许多软件会利用卫哨语句来“过滤”无效的输入。例如,在如下代码中,if语句会“过滤”掉所有A&=0的输入。
如果不了解代码中的卫哨语句,可能会将输入定义为:
生成的输出中
在这10条测试用例中,因为A&=0,有6条测试用例会被if语句过滤掉。所以如果忽视了卫哨语句对执行流的中断,组合测试用例集将不能达成两因素或多因素覆盖的目标 。
面对此类问题,测试人员要仔细阅读规格说明或源代码,发现会导致执行流中断的“负面”取值。在PICT的模型中,支持用特殊符号”~”标记出非法值,例如在上述模型中将A的取值0标记为非法值。
PICT会保证所有有效值的取值组合都会被覆盖,此外任意非法值与有效值的组合也会被覆盖。以上模型将生成如下测试用例集。
5、多因素组合
如果你觉得两因素组合不能满足需求,可以利用多因素组合和子模型来定义不同的强度组合。
PICT通过参数/o:N支持多因素组合,譬如上图中的案例,未定义/o参数则默认采用的是两两组合,一共生成了12条用例;改成三因素组合的话:
会生成27条测试用例:
在提高覆盖率的同时,测试成本同时也增加了100%以上,因此大家在考虑提高覆盖率的同时必须将测试成本加入考量。
或者大家若可以确定在M个参数中有N个参数的组合是非常重要的,那么这种情况下,小编推荐使用子模型,着重对N参数的组合加大覆盖率:
如下输入中有ABCDE共5个参数,每个参数的值都是0, 1,小编定义了”(B, C, D) @ 3”子模型并设置为3因素覆盖,
生成的组合展示如下:
该模型除了所有因素的两两覆盖外,还着重对BCD三个因素做更高阶的覆盖,而且测试成本也相对没有提高太高,具有可执行性。
四、写在最后
工具的使用说了这么说,其实重点还在于大家对需求的透彻理解和分析,总结起来就是:
一定要注意分析元素间的约束条件,避免生成多条无效测试用例,还增加了测试成本。
确定建模的输入时,需要重点分析各个参数的值,尤其是一些有代表性的值,着重分析各类参数值对结果的影响。
PICT还有更多的属性可以应用,请参考PICT安装目录下的PICTHelp.htm文件。
原文链接:
是腾讯最早专注在移动APP测试的团队
我们专注于移动测试技术精华,饱含腾讯多款亿级APP的品质秘密,文章皆独家原创,我们不谈虚的,只谈干货!
扫码关注我们
访问:126255次
积分:2649
排名:第16102名
原创:138篇
评论:17条
(4)(9)(8)(13)(11)(4)(4)(7)(1)(6)(3)(2)(12)(11)(8)(9)(11)(8)(10)常见的测试用例设计方法都有哪些_百度知道
常见的测试用例设计方法都有哪些
我有更好的答案
1. 等价类划分常见的软件测试面试题划分等价类: 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.等价类划分可有两种不同的情况:有效等价类和无效等价类.2. 边界值分析法边界值分析方法是对等价类划分方法的补充。测试工作经验告诉我,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部.因此针对各种边界情况设计测试用例,可以查出更多的错误.使用边界值分析方法设计测试用例,首先应确定边界情况.通常输入和输出等价类的边界,就是应着重测试的边界情况.应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据.3. 错误推测法基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法.错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例. 例如, 在单元测试时曾列出的许多在模块中常见的错误. 以前产品测试中曾经发现的错误等, 这些就是经验的总结。还有, 输入数据和输出数据为0的情况。输入表格为空格或输入表格只有一行. 这些都是容易发生错误的情况。可选择这些情况下的例子作为测试用例.4. 因果图方法前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系, 相互组合等. 考虑输入条件之间的相互组合,可能会产生一些新的情况. 但要检查输入条件的组合不是一件容易的事情, 即使把所有输入条件划分成等价类,他们之间的组合情况也相当多. 因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例. 这就需要利用因果图(逻辑模型). 因果图方法最终生成的就是判定表. 它适合于检查程序输入条件的各种组合情况.5. 正交表分析法有时候,可能因为大量的参数的组合而引起测试用例数量上的激增,同时,这些测试用例并没有明显的优先级上的差距,而测试人员又无法完成这么多数量的测试,就可以通过正交表来进行缩减一些用例,从而达到尽量少的用例覆盖尽量大的范围的可能性。6. 场景分析方法指根据用户场景来模拟用户的操作步骤,这个比较类似因果图,但是可能执行的深度和可行性更好。白盒测试用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。不可能做到完全测试,以最少的用例在合理的时间内发现最多的问题详细的描述一个测试活动完整的过程。1. 项目经理通过和客户的交流,完成需求文档,由开发人员和测试人员共同完成需求文档的评审,评审的内容包括:需求描述不清楚的地方和可能有明显冲突或者无法实现的功
采纳率:9%
为您推荐:
其他类似问题
测试用例设计的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。 上传我的文档
 下载
 收藏
我是一名温州大学法律专业的大学生。我的性格偏于内向,为人坦率、热情、讲求原则;处事乐观、专心、细致、头脑清醒;富有责任心、乐于助人
 下载此文档
大型复杂物体组合测量方法研究
下载积分:1700
内容提示:大型复杂物体组合测量方法研究
文档格式:PDF|
浏览次数:2|
上传日期: 12:00:25|
文档星级:
全文阅读已结束,如果下载本文需要使用
 1700 积分
下载此文档
该用户还上传了这些文档
大型复杂物体组合测量方法研究
关注微信公众号关注51Testing
功能测试(黑盒测试)常用的策略和方法
发表于: 10:53 &作者:未知 & 来源:51Testing论坛转载
推荐标签:
  (Black-box ,又称为或数据驱动测试)是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。  采用黑盒技术设计测试用例的方法有:等价类划分、边界值分析、错误推测、因果图和综合策略。  黑盒测试注重于测试软件的功能性需求,也即黑盒测试使软件工程师派生出执行程序所有功能需求的输入条件。黑盒测试并不是的替代品,而是用于辅助白盒测试发现类型的错误。  黑盒测试试图发现以下类型的错误:  1)功能错误或遗漏;  2)界面错误;  3)数据结构或外部访问错误;  4)性能错误;  5)初始化和终止错误。  一、黑盒测试的测试用例设计方法  · 等价类划分方法  · 边界值分析方法  · 错误推测方法  · 因果图方法  · 判定表驱动分析方法  · 正交实验设计方法  · 功能图分析方法  等价类划分:  是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。  1) 划分等价类: 等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。并合理地假定:测试某等价类的代表值就等于对这一类值的测试。因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据。取得较好的测试结果。等价类划分可有两种不同的情况:有效等价类和无效等价类。  有效等价类:是指对于程序的规格说明来说是合理的,有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。  无效等价类:与有效等价类的定义恰巧相反。  设计测试用例时,要同时考虑这两种等价类。因为,软件不仅要能接收合理的数据,也要能经受意外的考验。这样的测试才能确保软件具有更高的可靠性。  2)划分等价类的方法:下面给出六条确定等价类的原则。  ① 在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。  ② 在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类。  ③ 在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。  ④ 在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。  ⑤ 在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。  ⑥ 在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。  3)设计测试用例:在确立了等价类后,可建立等价类表,列出所有划分出的等价类:  输入条件 有效等价类 无效等价类  然后从划分出的等价类中按以下三个原则设计测试用例:  ① 为每一个等价类规定一个唯一的编号。  ② 设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步。直到所有的有效等价类都被覆盖为止。  ③ 设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步。直到所有的无效等价类都被覆盖为止。  边界值分析法  边界值分析方法是对等价类划分方法的补充。  (1)边界值分析方法的考虑:  长期的测试经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。  使用边界值分析方法设计测试用例,首先应确定边界情况。通常输入和输出等价类的边界,就是应着重测试的边界情况。应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。  (2)基于边界值分析方法选择测试用例的原则:  1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。  2)如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。  3)根据规格说明的每个输出条件,使用前面的原则1)。  4)根据规格说明的每个输出条件,应用前面的原则2)。  5)如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。  6)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。  7)分析规格说明,找出其它可能的边界条件。  错误推测法  错误推测法: 基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法。  错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。 例如, 在时曾列出的许多在模块中常见的错误。 以前产品测试中曾经发现的错误等, 这些就是经验的总结。 还有, 输入数据和输出数据为0的情况。 输入表格为空格或输入表格只有一行。 这些都是容易发生错误的情况。 可选择这些情况下的例子作为测试用例。  因果图方法  前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系, 相互组合等。 考虑输入条件之间的相互组合,可能会产生一些新的情况。 但要检查输入条件的组合不是一件容易的事情, 即使把所有输入条件划分成等价类,他们之间的组合情况也相当多。 因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例。 这就需要利用因果图(逻辑模型)。  因果图方法最终生成的就是判定表。 它适合于检查程序输入条件的各种组合情况。  利用因果图生成测试用例的基本步骤:  (1) 分析软件规格说明描述中, 那些是原因(即输入条件或输入条件的等价类),那些是结果(即输出条件), 并给每个原因和结果赋予一个标识符。  (2) 分析软件规格说明描述中的语义。找出原因与结果之间, 原因与原因之间对应的关系。 根据这些关系,画出因果图。  (3) 由于语法或环境限制, 有些原因与原因之间,原因与结果之间的组合情况不不可能出现。 为表明这些特殊情况, 在因果图上用一些记号表明约束或限制条件。  (4) 把因果图转换为判定表。  (5) 把判定表的每一列拿出来作为依据,设计测试用例。  从因果图生成的测试用例(局部,组合关系下的)包括了所有输入数据的取TRUE与取FALSE的情况,构成的测试用例数目达到最少,且测试用例数目随输入数据数目的增加而线性地增加。  前面因果图方法中已经用到了判定表。判定表(DECision Table)是分析和表达多逻辑条件下执行不同操作的情况下的工具。在程序设计发展的初期,判定表就已被当作编写程序的辅助工具了。由于它可以把复杂的逻辑关系和多种条件组合的情况表达得既具体又明确。
搜索风云榜
51Testing官方微信
51Testing官方微博
测试知识全知道关注51Testing
测试用例的几种常见设计方法
发表于: 13:19 &作者:step1234 & 来源:51Testing软件测试网采编
推荐标签:
  用例常见的设计方法有:等价类划分法、边界值分析法、错误推测法、判定表法、正交实验法。  一.等价类划分法  顾名思义,等价类划分,就是将测试的范围划分成几个互不相交的子集,他们的并集是全集,从每个子集选出若干个有代表性的值作为测试用例。  例如,我们要测试一个用户名是否合法,用户名的定义为:8位数字组成的字符。  我们可以先划分子集:空用户名,1-7位数字,8位数字,9位或以上数字,非数字。  然后从每个子集选出若干个有代表性的值:  空用户名:“” & & &(无效等价类实例,指对于软件规格说明而言,没有意义的、不合理的输入)  1-7位数字:"234" & & &&(无效等价类实例)  8位数字:"" & &(有效等价类实例,能检验程序是否实现了规格说明中所规定的功能和性能)  9位或以上数字:"" & &(无效等价类实例)  非数字:"abc&!!!" & & & & & & & &(无效等价类实例)  他们5个,就是用等价类划分选出的测试用例。实际上,对于1-7位数字的子集来说,选“234”和“11111”没有本质的区别。  等价类的划分,最关键的是子集的划分。实际上,非数字还可以继续划分子集:字母,特殊字符。  究竟要划分到何种程度才合适呢?我请教过做测试的朋友,他的意见是,看你有多少资源和时间,还有,看是否值得。  对此,我表示赞同,毕竟无论你怎么测试,总会有未发现的缺陷存在,所以,先解决容易被发现的问题再说。  二.边界值分析法  长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。选出的测试用例,应选取正好等于、刚刚大于、刚刚小于边界的值,例如,对于在区间min,max的值,测试用例可以记为min,min+,max,max-。  例如,假定 X 为整数,10≤X≤100,那么 X 在测试中应该取的边界值为:10,11,99,100。  注:上面只是说边界值,如果是完整的测试,除了边界值外,还需要一个正常值,即12-98之间的任意值。  三.错误推测法  错误推测法是指:在测试程序时,人们可以根据经验或直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的测试用例的方法。  这种方法没有固定的形式,依靠的是经验和直觉,很多时候,我们都会不知不觉的使用到。  四.判定表法  又称为策略表,基于策略表的测试,是中最严密的测试方法。该方法适合于逻辑判断复杂的场景,通过穷举条件获得结果,对结果再进行优化合并,会得到一个判断清晰的策略表。  例如,某公司的对客户分类标准如下:  顾客每次订货额在 1000元以上(含1000元),信誉好的,订单设“优先”标志;  信誉不好,但是老客户的,订单设“优先”标志;  信誉不好,但是新客户的,订单设“正常”标志;  每次订货额在 1000元以下,订单设“正常”标志。  绘制的决策表如下:  此表分两大行,两大列,分别用不同的颜色区别。  浅蓝:列出所有条件(或称为输入)  浅灰:列出所有结果(或称为输出,行动或决策)  浅黄:穷举所有条件的组合  浅绿:根据每一列的条件,判断出结果  因为穷举了所有条件,所以可以说这个判断是100%正确的。下一步是对这个表进行合并优化。   例如,从编号为1,2的列可以看出,顾客订单&=1000,信誉好,不管是新顾客还是老顾客,都设为优先,于是上面的表合并整理后,得到下表  这样,我们就可以得到更清晰的逻辑判断,也可以更好的协助我们编写测试用例。而决策表,对于开发人员来说一样有用。  从上面的表格,我们就可以写出更简洁的判断语句。  五.正交实验法  用语言描述正交实验法会很抽象难懂,简单说,就是在各因素互相独立的情况下,设计出一种特殊的表格,找出能以少数替代全面的测试用例。  其中,上面所说的特殊表格就是正交表,是按照一定规则生成的表。  虽然说是特殊的表格,实际表现形式跟一般的表格没有什么区别,正交表的主要特征是,“均匀分布,整齐划一”,正是因为“均匀”的,所以才能以少数代替全部。  例如:  某所大学通信系共2个班级,刚考完某一门课程,想通过“性别”、“班级”和“成绩”这三个查询条件对通信系这门课程的成绩分布,男女比例或班级比例进行人员查询。  按照传统的方式,我们将会穷举所有的组合,来编写测试用例,组合个数是2*2*2=8。  排列组合参见下表  当组合条件不多的时候,穷举暂时没问题,但是,一旦条件多了,组合个数就会以指数形式增长。  这个时候,就要用到正交表了,通过选出有代表性的测试实例,达到以少数代替全面的效果。  正交表如何设计呢,这个问题实际很复杂,涉及到组合统计的数学知识,有的正交表甚至到目前为止,还未得出算法。  我们只能通过已知的模型套上去。  例如,Dr. Genichi Taguchi 设计的正交表  https://www.york.ac.uk/depts/maths/tables/orthogonal.htm  Technical Support ( support.sas.com ) com 提供的  http://support.sas.com/techsup/technote/ts723_Designs.txt  首先,我们来看看基本的概念。  因素:被测的元素称为因素,例如上面的性别,班级,成绩,均为因素,因素的个数我们记为k,此处k=3  水平:因素的可能值,称为水平。例如班级的可能值为1或2。水平的个数我们记为m,此处正好每个因素的水平都是2,此处m=2。  那么正交表的行数n的计算公式为,n=k*(m-1)+1,此处为n=3*(2-1)+1=4。即共有4行。  我们通常用L表示这个正交表,完整的表示为Ln(mk)  如果每个因素的水平数相等,我们称之为单一水平正交表,例如本例子就是,L4(23)  各列水平数不完全相同的正交表称为混合水平正交表。如L8(4124),表示有一个因素的水平为4,有4个因素的水平为2。  按照这个表达式,我们可以去套用已知的正交表。例如本例子是L4(23),从上面提供的两个链接均可以查到例子,虽然表达方式略有不同,但实际是一样的,我们从http://support.sas.com/techsup/technote/ts723_Designs.txt 查到,其正交表的格式为:  23 & & n=4  000  011  101  110  此处0,1是对可能值的编号,例如,我们可以将(0,1)分别映射为(女,男)(1班,2班)(及格,不及格)  按照上面的格式,  000:女 &1班 &及格  011:女 &2班 &不及格  101:男 &1班 &不及格  110:男 &2班 &及格  这就是我们所得到的正交表。  六.总结  功能测试方法还有很多,例如因果图法,状态转换测试法等,他们都略为复杂,像正交实验法一样,有各自的一套东西,不过本质都是通过画图,让我们更好的思考,最后转化成判定表。  实际上常用的是前面五种方法,包括:等价类划分法、边界值分析法、错误推测法、判定表法、正交实验法。
搜索风云榜
51Testing官方微信
51Testing官方微博
测试知识全知道

我要回帖

更多关于 最简单的血型测试方法 的文章

 

随机推荐