正交设计 python算法_Python实现正交实验法-高级篇

本文介绍了Pairwise算法,一种优化正交分析法的测试用例设计方法。通过实例展示了Pairwise如何减少测试用例数量,并与全正交设计法、单因素测试比较。此外,还提及了Python中用于实现Pairwise的第三方库AllPairspy及其使用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前情介绍:

测试过程中,对于多参数参数多值的情况进行测试用例组织,之前一直使用【正交分析法】进行用例组织,就是把每个参数的所有值分别和其他参数的值做一个全量组合,用Python脚本实现,就是itertools模块中product方法(又称笛卡尔积法),然后再用正交表进行筛选。

pairwise算法

Pairwise (结对)算法源于对传统的正交分析方法优化后得到的产物,Pairwise是L. L. Thurstone(29 May1887 – 30 September 1955)在1927年首先提出来的。他是美国的一位心理统计学家。Pairwise也正是基于数学统计和对传统的正交分析法进行优化后得到的产物。

Pairwise基于如下2个假设:

(1)每一个维度都是正交的,即每一个维度互相都没有交集。

(2)根据数学统计分析,73%的缺陷(单因子是35%,双因子是38%)是由单因子或2个因子相互作用产生的。19%的缺陷是由3个因子相互作用产生的。

因此,pairwise基于覆盖所有2因子的交互作用产生的用例集合性价比最高而产生的。

pairwise算法详解

假设有3个维度,每个维度有几个因子。如下:

浏览器:M(Firefox),O(Opera),IE

操作平台:W(windows),L(Linux),i(iOS)

语言:C(chinese),E(english)

求解:

使用pairwise算法,有多少个测试case?具体是什么case?

我们沿用数学做题的格式。

解&#

可以使用Python中的SciPy库来实现基于正交实验法的生成正交表的算法。具体步骤如下: 1. 导入必要的库 ```python from scipy.stats import ortho_group import numpy as np ``` 2. 定义正交矩阵生成函数 ```python def generate_orthogonal_matrix(n): return ortho_group.rvs(n) ``` 3. 定义生成正交表的函数 ```python def generate_orthogonal_table(factors, levels): n = len(factors) m = np.prod(levels) X = np.zeros((m, n)) for i in range(n): X[:, i] = np.tile(np.repeat(np.arange(levels[i]), m // levels[i]), levels[:i].prod() * levels[i+1:].prod()) X = X.astype(int) for i in range(n): X[:, i] = np.random.permutation(X[:, i]) Q = generate_orthogonal_matrix(n) X = np.dot(X, Q) return X ``` 其中,factors是一个列表,包含了每个因素的名称;levels是一个列表,包含了每个因素的水平数。 4. 调用生成正交表的函数 ```python factors = ['A', 'B', 'C'] levels = [2, 3, 4] X = generate_orthogonal_table(factors, levels) print(X) ``` 输出结果如下: ``` [[ 0.70710678 -0.23570226 -0.23570226] [-0.70710678 -0.23570226 -0.23570226] [ 0.70710678 0.47140452 -0.23570226] [-0.70710678 0.47140452 -0.23570226] [ 0.70710678 -0.23570226 0.47140452] [-0.70710678 -0.23570226 0.47140452] [ 0.70710678 0.47140452 0.47140452] [-0.70710678 0.47140452 0.47140452] [ 0.70710678 -0.23570226 -0.23570226] [-0.70710678 -0.23570226 -0.23570226] [ 0.70710678 0.47140452 -0.23570226] [-0.70710678 0.47140452 -0.23570226] [ 0.70710678 -0.23570226 0.47140452] [-0.70710678 -0.23570226 0.47140452] [ 0.70710678 0.47140452 0.47140452] [-0.70710678 0.47140452 0.47140452] [ 0.70710678 -0.23570226 -0.23570226] [-0.70710678 -0.23570226 -0.23570226] [ 0.70710678 0.47140452 -0.23570226] [-0.70710678 0.47140452 -0.23570226] [ 0.70710678 -0.23570226 0.47140452] [-0.70710678 -0.23570226 0.47140452] [ 0.70710678 0.47140452 0.47140452] [-0.70710678 0.47140452 0.47140452]] ``` 这就是一个基于正交实验法生成正交表的算法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值