正交实验法

1.定义(What)

正交实验法是研究多因素、多水平组合的一种实验法,它是利用正交表来对实验进行设计,通过少数的实验替代全面实验,根据正交表的正交性从全面实验中挑选适量的、有代表性的点进行实验,这些有代表性的点具备了“均匀分散,整齐可比”的特点。

“均匀分散”性使实验点均衡地分布在实验范围内,让每个实验点有充分的代表性;

“整齐可比”性使实验结果的分析十分方便,可以估计各因素对指标的影响,找出影响事物变化的主要因素。

实践证明,正交实验法是一种解决多因素问题卓有成效的方法。

2. 为什么使用正交实验法?(Why)

  • 对于单因素或两因素实验,因其因素少,实验的设计、实施与分析都比较简单。但在实际工作中,常常需要同时考察3个或3个以上的实验因素,若进行全面实验,实验的规模很大,由于时间和成本的限制我们不可能进行全面实验,但是具体挑其中的哪些测试用例进行测试我们心里拿不准,总担心遗漏了未挑选的测试用例从而造成一些严重缺陷;
  • 为了有效的、合理地减少测试的工作量与和成本,我们利用正交实验法来设计测试用例。正交实验法就是为多因素实验、寻求最优水平组合的一种高效率的实验设计方法。

3. 基本概念

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

  • 因素(Factors)。表示在一项实验中,需要观察的变量称为因素;
  • 水平(Levels)。表示在实验范围内,因素被考察的值称为水平(变量的取值);
  • 正交表的组成。由行数(正交表的行的个数,即实验的次数)、因素数(正交表列的个数)、水平数(任何单个因素能够取得的值的最大个数)。

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

  • 每列中不同数字出现的次数相等。这一特点表明每个因素的每个水平与其它因素的每个水平参与实验的几率是完全相同的,从而保证了在各个水平中最大限度地排除了其它因素水平的干扰,能有效地比较实验结果并找出最优的实验条件;
  • 在任意两列横向组成的数字对中,每种数字对出现的次数相等。这个特点保证了实验点均匀地分散在因素与水平的完全组合之中,因此具有很强的代表性。

4. 正交实验法设计用例的步骤(How)

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

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

  • 单一水平正交表。就是各因素的水平数相同的正交表称为等水平正交表。如 [公式] 、 [公式] 、 [公式] 等各列中的水平为2,称为2水平正交表; [公式] 、 [公式] 等各列水平为3,称为3水平正交表。表示为: [公式] ,n=k*(m-1)+1。
  • 混合水平正交表。就是各因素的水平数不完全相同的正交表称为混合水平正交表。如 [公式] 表中有一因素的水平为4,有4个因素的水平数为2。也就是说该表可以安排一个4水平因素和4个2水平因素。再如 [公式] , [公式] 等都是混合水平正交表。表示为: [公式] ,n=k1*(m1-1)+k2*(m2-1)+…kx*(mx-1)+1。

Step3.选择合适的正交表

  • 查Dr. Genichi Taguchi 设计的正交表

Orthogonal Arrays

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

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

(1)单一水平正交表

  • 存在实验次数等于n,并且水平数大于等于m、因素数大于等于k的正交表,我们把这个正交表拿过来套用;
  • 不存在实验次数等于n的正交表,我们就得找出满足实验次数大于n并且水平数大于等于m、因素数大于等于k的正交表。

(2)混合水平正交表

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

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

Step5.补充其他可疑场景用例。

5. 使用场景

  • 输入的参数之间是独立的,不存在相互依赖的关系;
  • 功能测试,配置测试。

6. 优缺点

  • 优点:直接套用,经济高效。根据正交性,从全面实验中挑选出部分有代表性的点进行实验,这些有代表性的点具备了“均匀分散,整齐可比”的特点。通过使用正交实验法减少了测试用例,合理地减少测试的工时与费用,提高测试用例的有效性。是一种高效率、快速、经济的实验设计方法;
  • 缺点:对每个状态点同等对待,重点不突出,容易造成在用户不常用的功能或场景中,花费不少时间进行测试设计与执行,而在重要路径上反而没有重点测试。

7. 正交表生成工具(PICT)

了解了正交实验法原理并知道如何按步骤生成用例之后,就可以直接使用PICT工具生成满足正交的测试用例。PICT工具是在微软公司内部使用的一款承兑组合的命令行生成工具,现在已经对外提供。PICT可以有效地按照两两测试的原理,进行测试用例设计。在使用PICT时,需要输入与测试用例相关的参数,以达到全面覆盖的效果。

8. 实战演练

例1.某所大学通信系共2个班级,刚考完某一门课程,想通过“性别”、“班级”和“成绩”这三个查询条件对通信系这门课程的成绩分布,男女比例或班级比例进行人员查询:

  • 根据“性别”=“男,女”进行查询
  • 根据“班级”=“1班,2班”查询
  • 根据“成绩”=“及格,不及格”查询

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

Step2.根据因素数和水平数确定n值。水平数m=2,因素数k=3。n=k*(m-1)+1=3*(2-1)+1=4, [公式] 。

Step3.选择[公式]正交表。正交表获取路径:

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

并把变量的值映射到表中。

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

  • TestCase1:选择性别="男"、班级="1班"、成绩="及格",查询
  • TestCase2:选择性别="男"、班级="2班"、成绩="不及格",查询
  • TestCase3:选择性别="女"、班级="1班"、成绩="不及格",查询
  • TestCase4:选择性别="女"、班级="2班"、成绩="及格",查询

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

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

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

 

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

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

Step2.根据因素数和水平数确定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, [公式]

Step3.选择合适的正交表。根据计算得出n=22,在

Orthogonal Arrays

查找发现不存在n=22的正交表。这个时候我们就需要根据如下原则确定使用的正交表:

  • 查找同时满足 n>22 && m>=max(m1=5,m2=2) && k>=k1+k2=5+1=6的正交表。发现 [公式] , [公式] 同时满足。
  • 当有2个或2个以上正交表可以被选择时,选取原则是选实验次数最少的那个正交表。所以我们选 [公式] 正交表。
  • 查找 [公式] 正交表。

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

 

-----------------------End------------------------

推荐阅读:

吉提:《等价类划分》-有这篇就够了

吉提:《边界值分析》-有这篇就够了

吉提:《错误推测法》-有这篇就够了

吉提:《场景法》-有这篇就够了

更多软件测试干货,请关注公众号:吉提

正交试验法是一种常用的实验设计方法,用于确定多个因素对某个系统或过程的影响程度。在PID调参中,正交试验法可以用来确定PID参数对系统性能的影响,从而找到最优的PID参数组合。 下面是使用正交试验法进行PID调参的步骤: 1. 确定待调节的系统和目标性能指标。 2. 确定需要调节的PID参数及其取值范围。通常包括比例系数Kp、积分时间Ti和微分时间Td。 3. 根据正交试验表的设计原则,选择适当的正交试验表。正交试验表是一种特殊的矩阵,可以保证各个因素之间的相互独立性。 4. 根据正交试验表,确定实验方案,即确定每个因素的水平及其组合。 5. 根据实验方案,进行一系列实验,记录系统的输出响应。 6. 根据实验结果,分析各个因素对系统性能的影响,并确定最优的PID参数组合。 7. 根据最优的PID参数组合,进行系统的闭环控制。 下面是一个使用正交试验法进行PID调参的示例代码: ```python import numpy as np from scipy.optimize import minimize # 定义目标函数,即系统的性能指标 def objective(x): Kp, Ti, Td = x # 在这里进行系统的闭环控制,并计算性能指标 # 返回性能指标的值 return performance # 定义PID参数的取值范围 bounds = [(0, 10), (0, 10), (0, 10)] # 使用正交试验法生成实验方案 levels = [3, 3, 3] # 每个参数的水平数 exp_design = np.array([[1, 1, 1], [1, 2, 3], [2, 1, 2], [2, 2, 1], [3, 3, 3]]) # 根据实验方案进行实验,并记录系统的输出响应 responses = [] for i in range(exp_design.shape[0]): x = exp_design[i] res = minimize(objective, x, bounds=bounds) responses.append(res.fun) # 分析实验结果,确定最优的PID参数组合 best_index = np.argmin(responses) best_params = exp_design[best_index] # 输出最优的PID参数组合 print("Best PID parameters: Kp={}, Ti={}, Td={}".format(*best_params)) ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值