软件测试中用正交实验法设计测试用例

软件测试中用正交实验法设计测试用例

正交实验法的由来

一、正交表的由来

拉丁方名称的由来

古希腊是一个多民族的国家,国王在检阅臣民时要求每个方队中每行有一个民族代表,每列也要有一个民族的代表。

数学家在设计方阵时,以每一个拉丁字母表示一个民族,所以设计的方阵称为拉丁方。

什么是n阶拉丁方?

用n个不同的拉丁字母排成一个n阶方阵(n<26 ),如果每行的n个字母均不相同,每列的n个字母均不相同,则称这种方阵为n*n拉丁方或n阶拉丁方。每个字母在任一行、任一列中只出现一次。

什么是正交拉丁方?

设有两个n阶的拉丁方,如果将它们叠合在一起,恰好出现n2个不同的有序数对,则称为这两个拉丁方为互相正交的拉丁方,简称正交拉丁方。

例如:3阶拉丁方

用数字替代拉丁字母:

二、正交实验法

正交试验设计(Orthogonal experimental design)是研究多因素多水平的又一种设计方法,它是根据正交性从全面试验中挑选出部分有代表性的点进行试验,这些有代表性的点具备了“均匀分散,齐整可比”的特点,正交试验设计是分式析因设计的主要方法。是一种高效率、快速、经济的实验设计方法。

日本著名的统计学家田口玄一将正交试验选择的水平组合列成表格,称为正交表。例如作一个三因素三水平的实验,按全面实验要求,须进行33=27种组 合的实验,且尚未考虑每一组合的重复数。若按L9(33) 正交表按排实验,只需作9次,按L18(37) 正交表进行18次实验,显然大大减少了工作量。因而正交实验设计在很多领域的研究中已经得到广泛应用。

利用因果图来设计测试用例时, 作为输入条件的原因与输出结果之间的因果关系,有时很难从软件需求规格说明中得到。往往因果关系非常庞大,以至于据此因果图而得到的测试用例数目多的惊人,给软件测试带来沉重的负担,为了有效地,合理地减少测试的工时与费用,可利用正交实验设计方法进行测试用例的设计。

正交实验设计方法:依据Galois理论,从大量的(实验)数据(测试例)中挑选适量的、有代表性的点(例),从而合理地安排实验(测试)的一种科学实验设计方法。类似的方法有:聚类分析方法、因子方法方法等。

三、利用正交实验设计测试用例的步骤:

(1)提取功能说明,构造因子--状态表

把影响实验指标的条件称为因子,而影响实验因子的条件叫因子的状态。

利用正交实验设计方法来设计测试用例时,首先要根据被测试软件的规格说明书找出影响其功能实现的操作对象和外部因素,把他们当作因子;而把各个因子 的取值当作状态。对软件需求规格说明中的功能要求进行划分,把整体的、概要性的功能要求进行层层分解与展开,分解成具体的有相对独立性的、基本的功能要 求。这样就可以把被测试软件中所有的因子都确定下来,并为确定每个因子的权值提供参考的依据。确定因子与状态是设计测试用例的关键。因此要求尽可能全面 的、正确的确定取值,以确保测试用例的设计作到完整与有效。

(2)加权筛选,生成因素分析表

对因子与状态的选择可按其重要程度分别加权。可根据各个因子及状态的作用大小、出现频率的大小以及测试的需要,确定权值的大小。

(3)利用正交表构造测试数据集

利用正交实验设计方法设计测试用例,比使用等价类划分、边界值分析、因果图等方法有以下优点:节省测试工作工时;可控制生成的测试用例数量;测试用例具有一定的覆盖率。

在使用正交实验法时,要考虑到被测系统中要准备测试的功能点,而这些功能点就是要获取的因子或因素,但每个功能点要输入的数据按等价类划分有多个,也就是每个因素的输入条件,即状态或水平值。

四、正交表的构成

行数(Runs):正交表中的行的个数,即试验的次数,也是我们通过正交实验法设计的测试用例的个数。

因素数(Factors) :正交表中列的个数,即我们要测试的功能点。

水平数(Levels):任何单个因素能够取得的值的最大个数。正交表中的包含的值为从0到数“水平数-1”或从1到“水平数” 。即要测试功能点的输入条件。

正交表的形式:

L行数(水平数因素数)

如:L8(27)

五、正交表的正交性

整齐可比性

在同一张正交表中,每个因素的每个水平出现的次数是完全相同的。由于在试验中每个因素的每个水平与其它因素的每个水平参与试验的机率是完全相同的,这就保证在各个水平中最大程度的排除了其它因素水平的干扰。因而,能最有效地进行比较和作出展望,容易找到好的试验条件。

均衡分散性

在同一张正交表中,任意两列(两个因素)的水平搭配(横向形成的数字对)是完全相同的。这样就保证了试验条件均衡地分散在因素水平的完全组合之中,,因而具有很强的代表性,容易得到好的试验条件。

用正交实验法设计测试用例

以上介绍了正交实验法的由来。怎么用正交实验法进行用例的设计呢?

一、用正交表设计测试用例的步骤

(1) 有哪些因素(变量)

(2) 每个因素有哪几个水平(变量的取值)

(3) 选择一个合适的正交表

(4) 把变量的值映射到表中

(5) 把每一行的各因素水平的组合做为一个测试用例

(6) 加上你认为可疑且没有在表中出现的组合

二、如何选择正交表

  • 考虑因素(变量)的个数
  • 考虑因素水平(变量的取值)的个数
  • 考虑正交表的行数
  • 取行数最少的一个

三、设计测试用例时的三种情况

(1)因素数(变量)、水平数(变量值)相符

(2)因素数不相同

(3)水平数不相同

四、我们来看看第一种情况:

(1)因素数与水平数刚好符合正交表

我们举个例子:

这是个人信息查询系统中的一个窗口。我们可以看到要测试的控件有3个:姓名、身份证号码、手机号码,也就是要考虑的因素有三个;而每个因素里的状态有两个:填与不填。

选择正交表时分析一下:

1、表中的因素数>=3;

2、表中至少有3个因素数的水平数>=2;

3、行数取最少的一个。

从正交表公式中开始查找,结果为:

L4(23)

变量映射:

测试用例如下:

1:填写姓名、填写身份证号、填写手机号

2:填写姓名、不填身份证号、不填手机号

3:不填姓名、填写身份证号、不填手机号

4:不填姓名、不填身份证号、填写手机号

增补测试用例

5:不填姓名、不填身份证号、不填手机号

从测试用例可以看出:如果按每个因素两个水平数来考虑的话,需要8个测试用例,而通过正交实验法进行的测试用例只有5个,大大减少了测试用例数。用最小的测试用例集合去获取最大的测试覆盖率。

(2)因素数不相同

如果因素数不同的话,可以采用包含的方法,在正交表公式中找到包含该情况的公式,如果有N个符合条件的公式,那么选取行数最少的公式。

(3)水平数不相同

采用包含和组合的方法选取合适的正交表公式。

正交实验法的又一个例子

上面就正交实验法进行了讲解,现在再拿PowerPoint软件打印功能作为例子,希望能为大家更好地理解给方法的具体应用

假设功能描述如下:

  • 打印范围分:全部、当前幻灯片、给定范围 共三种情况;
  • 打印内容分:幻灯片、讲义、备注页、大纲视图 共四种方式;
  • 打印颜色/灰度分: 颜色、灰度、黑白 共三种设置;
  • 打印效果分:幻灯片加框和幻灯片不加框两种方式。

因素状态表:


MILY: 宋体">状态/因素


A打印范围


B打印内容


C打印颜色/灰度


D打印效果


0


全部


幻灯片


颜色


幻灯片加框


1


当前幻灯片


讲义


灰度


幻灯片不加框


2


给定范围


备注页


黑白


 


3


 


大纲视图


 


 

我们先将中文字转换成字母,便于设计。得到:

因素状态表:


状态/因素


A


B


C


D


0


A1


B1


C1


D1


1


A2


B2


C2


D2


2


A3


B3


C3


 


3


 


B4


 


 

我们分析一下:

被测项目中一共有四个被测对象,每个被测对象的状态都不一样。

选择正交表:

1、表中的因素数>=4

2、表中至少有4个因素的水平数>=2

3、行数取最少的一个

最后选中正交表公式:

L16(45)

正交矩阵为:

  1 2 3 4 5
1 0 0 0 0 0
2 0 1 1 1 1
3 0 2 2 2 2
4 0 3 3 3 3
5 1 0 1 2 3
6 1 1 0 3 2
7 1 2 3 0 1
8 1 3 2 1 0
9 2 0 2 3 1
10 2 1 3 2 0
11 2 2 0 1 3
12 2 3 1 0 2
13 3 0 3 1 2
14 3 1 2 0 3
15 3 2 1 3 0
16 3 3 0 2 1

用字母替代正交矩阵:

  1 2 3 4 5
1 A1 B1 C1 D1 0
2 A1 B2 C2 D2 1
3 A1 B3 C3 2 2
4 A1 B4 3 3 3
5 A2 B1 C2 2 3
6 A2 B2 C1 3 2
7 A2 B3 3 D1 1
8 A2 B4 C3 D2 0
9 A3 B1 C3 3 1
10 A3 B2 3 2 0
11 A3 B3 C1 D2 3
12 A3 B4 C2 D1 2
13 3 B1 3 D2 2
14 3 B2 C3 D1 3
15 3 B3 C2 3 0
16 3 B4 C1 2 1

本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-11-03 00:02:00

软件测试中用正交实验法设计测试用例的相关文章

用正交实验法设计测试用例

一.用正交表设计测试用例的步骤 (1) 有哪些因素(变量) (2) 每个因素有哪几个水平(变量的取值) (3) 选择一个合适的正交表 (4) 把变量的值映射到表中 (5) 把每一行的各因素水平的组合做为一个测试用例 (6) 加上你认为可疑且没有在表中出现的组合 二.如何选择正交表 ● 考虑因素(变量)的个数 ● 考虑因素水平(变量的取值)的个数 ● 考虑正交表的行数 ● 取行数最少的一个 三.设计测试用例时的三种情况 (1)因素数(变量).水平数(变量值)相符 (2)因素数不相同 (3)水平数不

用正交法设计测试用例

一.正交表的由来 1.拉丁方名称的由来 古希腊是一个多民族的国家,国王在检阅臣民时要求每个方队中每行有一个民族代表,每列也要有一个民族的代表. 数学家在设计方阵时,以每一个拉丁字母表示一个民族,所以设计的方阵称为拉丁方. 2.什么是n阶拉丁方? 用n个不同的拉丁字母排成一个n阶方阵(n<26 ),如果每行的n个字母均不相同,每列的n个字母均不相同,则称这种方阵为n*n拉丁方或n阶拉丁方.每个字母在任一行.任一列中只出现一次. 3.什么是正交拉丁方? 设有两个n阶的拉丁方,如果将它们叠合在一起,恰

《软件测试技术实战:设计、工具及管理》—第2章 2.1节运用等价类/边界值设计测试用例

第2章 传统的软件测试的设计方法软件测试技术实战:设计.工具及管理从本章开始介绍软件测试的各种设计方法,这是学习软件测试的重要内容. 一般来说,软件测试设计方法分为5类:传统的黑盒测试方法.基于质量的测试方法.基于风险的测试方法.基于经验的测试方法以及白盒测试方法.本章主要介绍传统的黑盒测试方法和白盒测试方法,共分7节. 5种黑盒测试方法如下. 等价类/边界值. 决策表. 状态转换图. 决策树. 正交法. 7种白盒测试的方法如下:. 语句覆盖. 分支覆盖. 条件覆盖. 判定/条件覆盖. MC/D

用正交表设计测试用例

正交试验设计(Orthogonal experimental design)是研究多因素多水平的一种设计方法,它是根据正交性从全面试验中挑选出部分有代表性的点进行试验,这些有代表性的点具备了"均匀分散,齐整可比"的特点,正交试验设计是一种基于正交表的.高效率.快速.经济的试验. 什么是因素(Factor):在一项试验中,凡欲考察的变量称为因素(变量) 什么是水平(位级)(Level):在试验范围内,因素被考察的值称为水平(变量的取值) 正交表的构成: 行数(Runs):正交表中的行的个

怎么用几何射影法设计光正交码

问题描述 怎么用几何射影法设计光正交码 怎么用几何射影法设计光正交码,需要具体过程 怎样最优设计8个用户的

基于测试数据覆盖率的测试数据准备的手法示例(采用正交分析法 就可以满足)

2.生成测试数据的流程分析步骤主要为: 1)按照等价区分法,将表切分成不同的集合(也就是表设计是的子表),这里最重要的是确定数据集的切分是的最大业务概念分类. 如本例中的往来单位信息表,应该首先按照顾客/收货人/供应商/运输商切分成4等分数据集. 以顾客为例,下一个的重要信息就是顾客状态了,失效顾客一般来说就是判断其是否生效,提示出错即完成,因此其他数据对测试用例来说是没有任何意义的,只要准备一条数据即可. 然后根据项目最大候选输入数,以及相互项目的可能的排列组合,进行数据的细分设计. 2)作为

腾讯CDC:用核心-路径法设计页面

译者注:文章的原名为Designing%20Screens%20Using%20Cores%20and%20%20Paths.本文作者受到城市规划中"交通需求线"的启发,提出了网站设计的"核心-路径法".区别于通常采用的从框架到主页以及导航的方式,"核心-路径法"让设计者从核心内容入手,由内而外来设计.这个打破常规的方法能够在网站中创造最直接的路径,以便用户找到核心内容. 链接原文:http://boxesandarrows.com/design

网站设计分析:用核心-路径法设计页面

中介交易 SEO诊断 淘宝客 云主机 技术大厅 译者注:文章的原名为Designing Screens Using Cores and Paths.本文作者受到城市规划中"交通需求线"的启发,提出了网站设计的"核心-路径法".区别于通常采用的从框架到主页以及导航的方式,"核心-路径法"让设计者从核心内容入手,由内而外来设计.这个打破常规的方法能够在网站中创造最直接的路径,以便用户找到核心内容. 链接原文:http://boxesandarrows

如何去设计测试用例

个人理解大概从3个方面去考虑: 1. 表单,也就是最基础的功能: 2. 逻辑方面: 3. 业务流程. 今天去面试,面试官问我一个很让我说不清的问题,她问我如何写好Expected Result,说实话当时听到这个问题我有点茫然,我拼命的考虑如何去诠释这个问题,事实上,这么多年工作,这么多年的测试用例中,我并未关注这个问题,一个好的Expected Result,个人认为就是和将要实现的功能或者是需求要完全匹配.今天由于个人原因精力也不是很集中,似乎头脑处于空白时段,听到耳朵的问题,似乎大脑不懂得