zoukankan      html  css  js  c++  java
  • [ 黑盒测试方法 ] 正交实验法

    概述

        正交试验法是研究多因素、多水平组合的一种试验法,它是利用正交表来对试验进行设计,通过少数的试验替代全面试验,根据正交表的正交性从全面试验中挑选适量的、有代表性的点进行试验,这些有代表性的点具备了“均匀分散,整齐可比”的特点。“均匀分散”性使试验点均衡地分布在试验范围内,让每个试验点有充分的代表性;“整齐可比”性使试验结果的分析十分方便,可以估计各因素对指标的影响,找出影响事物变化的主要因素。实践证明,正交试验法是一种解决多因素问题卓有成效的方法。

    基本概念 

      正交表是一种特制的表格,一般用Ln(mk)表示,L代表是正交表,n代表试验次数或正交表的行数,k代表最多可安排影响指标因素的个数或正交表的列数,m表示每个因素水平数,且有n=k*(m-1)+1。

    (1)因素(Factors)。表示在一项试验中,需要观察的变量称为因素。

    (2)水平位((Levels)。表示在试验范围内,因素被考察的值称为水平位(变量的取值)

    (3)正交表的组成。由行数(正交表的行的个数,即试验的次数)、因素数(正交表列的个数)、水平数(任何单个因素能够取得的值得最大个数)。

      正交表必须满足这两个特点,有一条不满足,就不是正交表。

      1、每列中不同数字出现的次数相等。这一特点表明每个因素的每个水平与其它因素的每个水平参与试验的几率是完全相同的,从而保证了在各个水平中最大限度地排除了其它因素水平的干扰,能有效地比较试验结果并找出最优的试验条件。

      2、在任意2列其横向组成的数字对中,每种数字对出现的次数相等。这个特点保证了试验点均匀地分散在因素与水平的完全组合之中,因此具有很强的代表性。

    使用正交试验法的原因

        对于单因素或两因素试验,因其因素少,试验的设计、实施与分析都比较简单。但在实际工作中,常常需要同时考察3个或3个以上的试验因素,若进行全面试验,试验的规模很大,由于时间和成本的限制我们不可能进行全面试验,但是具体挑其中的哪些测试用例进行测试我们心里拿不准,总担心未挑选的测试用例会遗漏从而造成一些严重缺陷。

        为了有效的、合理地减少测试的工作量与和成本,我们利用正交试验法来设计测试用例。正交试验法就是为多因素试验、寻求最优水平组合的一种高效率的试验设计方法。我们用测试实例来进行说明使用正交试验法设计测试用例的好处。

    正交试验法设计用例步骤

      1、分析规格描述,确定规格中有哪些因素(变量)和每个因素都有哪些水平(变量取值)。因素数表示规格描述中相互独立的变量的个数,水平数表示取所有因素在试验中能够取得的数量最多的个数。

      2、根据因素数和水平数确定n值。这里区分2种情况:

    (1)单一水平正交表。就是各因素的水平数相同的正交表称为等水平正交表。如L4(23)、L8(27)、L12(211)等各列中的水平为2,称为2水平正交表;L9(34)、L27(313)等各列水平为3,称为3水平正交表。表示为:Ln(mk),n=k*(m-1)+1。

    (2)混合水平正交表。就是各因素的水平数不完全相同的正交表称为混合水平正交表。如L8(4124)表中有一因素的水平为4,有4个因素的水平数为2。也就是说该表可以安排一个4水平因素和4个2水平因素。再如L16(4423),L16(41212)等都是混合水平正交表。表示为:Ln(m1k1m2k2),n=k1*(m1-1)+k2*(m2-1)+…kx*(mx-1)+1。

      3、 选择合适的正交表。

    (1)查Dr. Genichi Taguchi 设计的正交表

    http://www.york.ac.uk/depts/maths/tables/orthogonal.htm

    (2)Technical Support ( support.sas.com ) com

    http://support.sas.com/techsup/technote/ts723_Designs.txt

      查找时需要关注不同类型的正交表,区分以下2种情况:

      单一水平正交表:

    (1)存在试验次数等于n,并且水平数大于等于m、因素数大于等于k的正交表,我们把这个正交表拿过来套用。

    (2)不存在试验次数等于n的正交表,我们就得找出满足试验次数大于n的正交表并且水平数大于等于m、因素数大于等于k。

      混合水平正交表:

    (1)存在试验次数等于n,并且水平数大于等于max(m1,m2,m3,…)、因素数大于等于(k1+k2+k3+…)的正交表,我们把这个正交表拿过来套用。

    (2)不存在试验次数等于n的正交表,我们就得找出满足试验次数大于n的正交表并且水平数大于等于max(m1,m2,m3,…)、因素数大于等于(k1+k2+k3+…)。当有2个或2个以上正交表可以被选择时,选取原则是选试验次数最少的那个正交表。

      4、根据正交表把变量的值映射到表中,设计测试用例。把变量的值映射到正交表中,每一行的各因素的取值组合作为一个测试用例。

    正交试验法使用实例

    Case1:某所大学通信系共2个班级,刚考完某一门课程,想通过“性别”、“班级”和“成绩”这三个查询条件对通信系这门课程的成绩分布,男女比例或班级比例进行人员查询:
    根据“性别”=“男,女”进行查询
    根据“班级”=“1班,2班”查询
    根据“成绩”=“及格,不及格”查询
    按照传统设计——全部测试

    (1)分析上述测试需求,有3个被测元素,被测元素我们称为因素,每个因素有两个取值,我们称之为水平值。因此,规格描述中有3个独立变量且每个变量2个取值:性别(男, 女),班级(1班, 2班),成绩(及格, 不及格)。

    (2)如果按照传统设计方法全部测试,针对所有因素的全部水平值进行全排列。测试用例个数是2*2*2=8,用例如下:

    TestCase1:选择性别="女"、班级="1班"、成绩="及格",查询

    TestCase2:选择性别="女"、班级="1班"、成绩="不及格",查询

    TestCase3:选择性别="女"、班级="2班"、成绩="及格",查询

    TestCase4:选择性别="女"、班级="2班"、成绩="不及格",查询

    TestCase5:选择性别="男"、班级="1班"、成绩="及格",查询

    TestCase6:选择性别="男"、班级="1班"、成绩="不及格",查询

    TestCase7:选择性别="男"、班级="2班"、成绩="及格",查询

    TestCase8:选择性别="男"、班级="2班"、成绩="不及格",查询

    (3) 根据因素数和水平数确定n值。水平数m=2,因素数k=3。n=k*(m-1)+1=3*(2-1)+1=4,L4(23)。

    (4)选择L4(23)正交表为。正交表获取路径:http://www.york.ac.uk/depts/maths/tables/orthogonal.htm。并把变量的值映射到表中。

    (4)把每一行转换成一个测试用例,得到4个测试用例如下:

    TestCase1:选择性别="男"、班级="1班"、成绩="及格",查询

    TestCase2:选择性别="男"、班级="2班"、成绩="不及格",查询

    TestCase3:选择性别="女"、班级="1班"、成绩="不及格",查询

    TestCase4:选择性别="女"、班级="2班"、成绩="及格",查询

    (5)根据实际情况可以在用正交试验法设计用例的基础上补充一些测试用例(非常重要),比如选择性别="男"、班级="1班"、成绩="不及格"是实际最常用的查询场景,则需要添加补充查询。用例如下:

    TestCase5:选择性别="男"、班级="1班"、成绩="不及格",查询

      5个测试用例与8个测试用例相比测试用例个数是减少了。因素数和水平数越大越能体现用正交表的好处。例如:对于一个四因素且每个因素均为三水平的试验,如果按照全面试验需要进行3*3*3*3=81次。但是如果用正交试验法选择L9(34)正交表,n=4*(3-1)+1=9次试验就可以覆盖。从这点可以说明用正交试验法能有效地、合理地减少测试用例和工时,节约测试成本。

    Case2:手机照相机的拍摄模式是普通模式,针对对比度(正常,极低,低,高,极高)、色彩效果(无,黑白,棕褐色,负片,水绿色)、感光度(自动,100,200,300,400,800)、白平衡(自动,白炽光,日光,荧光,阴光)、照片大小(5M, 3M, 2M, 1M, VGA)、闪光模式(关,开)各个值用正交试验法设计测试用例。该需求类型为不存在试验次数等于n(n=k*(m-1)+1)的正交表。

    (1)确定因素数和水平数。因素数:对比度、色彩效果、感光度、白平衡、照片大小、闪光模式。水平数:对比度(正常、极低、低、高、极高),色彩效果(无、黑白、棕褐色、负片、水绿色),感光度(自动、100、200、400、800),白平衡(自动、白炽光、日光、荧光、阴光),照片大小(5M、3M、2M、1M、VGA),闪光模式(开、关)。

    (2)根据因素数和水平数确定n值。m1=5, k1=5,m2=2, k2=1,n=k1*(m1-1)+k2* (m2-1)+1=5*(5-1)+1*(2-1)+1=20+1+1=22 =》L22(5521)

    (3)选择合适的正交表。根据计算得出n=22,在http://www.york.ac.uk/depts/maths/tables/orthogonal.htm查找发现不存在n=22的正交表。这个时候我们就需要根据如下原则确定使用的正交表:

      a. 查找同时满足 n>22 && m>=max(m1=5,m2=2) && k>=k1+k2=5+1=6的正交表。发现L25(56),L49(78)同时满足。

      b.当有2个或2个以上正交表可以被选择时,选取原则是选试验次数最少的那个正交表。所以我们选L25(56)正交表。

      c.查找L25(56)正交表。

    (4)将各因素水平值填入映射表,每一行转换成一个测试用例。

    正交表生成工具(PICT)

      了解了正交试验法原理并知道如何按步骤生成用例之后,就可以直接使用PICT工具生成满足正交的测试用例。操作步骤如下:

    (1)下载PICT工具安装。路径;PICT。PICT工具的使用方法可以参考安装目录下的PICTHelp.htm。描述的非常详细。

    (2)在cmd命令行下切换到pict.exe所在的目录,如C:Program FilesPICT。将PICT所在路径配置到path变量。目的是可以在任意路径下执行pict工具。

    C:WINDOWSsystem32>setx path "D:Program Files (x86)PICT;%path%" /M
    
    警告: 正保存的数据被裁断到 1024 字符。
    
    成功: 指定的值已得到保存。
    
    C:WINDOWSsystem32>

    (3)创建生成用例所需的模板文件,如model.txt文件。内容如下:

    d:Program Files (x86)PICT>type model.txt
    性别:男,女
    班级:1班,2班
    成绩:及格,不及格

    注意:冒号和逗号需使用英文字符。

    (4)执行pict model.txt,获取正交表结果,如下:

    d:Program Files (x86)PICT>pict model.txt
    性别    班级    成绩
    男      2班     及格
    男      1班     不及格
    女      2班     不及格
    女      1班     及格

    (5)将每一行转换成1个测试用例。同时补充可疑场景用例。

    正交试验法的优缺点

      正交试验法作为设计测试用例的方法之一,也有其优缺点。

      优点:根据正交性从全面试验中挑选出部分有代表性的点进行试验,这些有代表性的特点具备了“均匀分散,整齐可比”的特点。通过使用正交试验法减少了测试用例,合理地减少测试的工时与费用,提高测试用例的有效性。是一种高效率、快速、经济的实验设计方法。

      缺点:对每个状态点同等对待,重点不突出,容易造成在用户不常用的功能或场景中,花费不少时间进行测试设计与执行,而在重要路径的使用上反而没有重点测试。

    虽然正交试验设计有上述不足,但它能通过部分试验找到最优水平组合,因而很受实际工作者的青睐。

    参考资料

    《黑盒测试用例设计方法》

  • 相关阅读:
    C# 大小写转换(非金额)
    DataService系列教程 (一)
    C# 大小写转换(金额)
    sql注入杂谈(一)union select
    sql注入杂谈(二)报错注入
    python正则提取txt文本
    sql注入杂谈(三)盲注
    对指定网站渗透的一些总结
    MSF的利用
    SQLMAP怎么拿shell
  • 原文地址:https://www.cnblogs.com/linyfeng/p/9211675.html
Copyright © 2011-2022 走看看