百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

你不可不知的,测试用例设计方法实例,满满的干货

haoteby 2024-11-12 11:31 26 浏览

正交试验法介绍

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


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

使用正交试验法的原因

对于单因素或两因素试验,因其因素少,试验的设计、实施与分析都比较简单。

但在实际工作中,常常需要同时考察3个或3个以上的试验因素,若进行全面试验,试验的规模很大,由于时间和成本的限制我们不可能进行全面试验,但是具体挑其中的哪些测试用例进行测试我们心里拿不准,总担心不做不挑选的那些测试用例会遗漏一些严重缺陷。

为了有效的、合理地减少测试的工时与费用,我们利用正交试验法来设计测试用例。正交试验法就是安排多因素试验、寻求最优水平组合的一种高效率的试验设计方法。

我们用测试实例来进行说明使用正交试验法设计测试用例的好处。

测试需求:

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

根据“性别”=“男,女”进行查询

根据“班级”=“1班,2班”查询

根据“成绩”=“及格,不及格”查询

按照传统设计——全部测试


分析上述测试需求,有3个被测元素,被测元素我们称为因素,每个因素有两个取值,我们称之为水平值,所以全部测试用例个数是2*2*2=8,参见下表

序号

性别

班级

成绩

1

1班

及格

2

1班

不及格

3

2班

及格

4

2班

不及格

5

1班

及格

6

1班

不及格

7

2班

及格

8

2班

不及格


利用正交表设计测试用例,我们得到的测试用例个数是n=3*(2-1)+1=4,对于三因素两水平的刚好有L4(23)的正交表可以套用,于是用正交表试验法得出4个测试用例如下:

序号

性别

班级

成绩

1

1班

及格

2

2班

不及格

3

1班

不及格

4

2班

及格

根据实际需要可以在用正交试验法设计用例的基础上补充一些测试用例。


4个测试用例与8个测试用例相比测试用例个数是减少了。


因素数和水平数越大越能体现用正交表的好处。例如:对于一个四因素且每个因素均为三水平的试验,如果按照全面试验需要进行3*3*3*3=81次。


但是如果用正交试验法选择L9(34)正交表,n=4*(3-1)+1=9次试验就可以覆盖。从这点可以说明用正交试验法能有效地、合理地减少测试用例和工时,节约测试成本。


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


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


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

场景法定义

场景法是通过运用场景来对系统的功能点或业务流程的描述,从而提高测试效果的一种方法。


场景法一般包含基本流备用流,从一个流程开始,通过描述经过的路径来确定的过程,经过遍历所有的基本流和备用流来完成整个场景。

场景主要包括4种主要的类型:

  • 正常的用例场景
  • 备选的用例场景
  • 异常的用例场景
  • 假定推测的场景

基本流备用流

上图为:用例基本流备选流(注意:备选流的起止点)


基本流:采用直黑线表示,是经过用例的最简单的路径(无任何差错,程序从开始直接执行到结束)


备选流:采用不同颜色表示,一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中(如1和3),也可以起源于另一个备选流(如2),或终止用例,不在加入到基本流中(如4);(各种错误情况)


上图生成的场景如下:

  • 场景1:基本流
  • 场景2:基本流 备选流1
  • 场景3:基本流 备选流1 备选流2
  • 场景4:基本流 备选流3
  • 场景5:基本流 备选流3 备选流2
  • 场景6:基本流 备选流3 备选流2 备选流1
  • 场景7:基本流 备选流4
  • 场景8:基本流 备选流3 备选流4


为什么场景法能如此清晰的描述整个事件?

因为,现在的系统基本上都是由事件来触发控制流程的。

如:我们申请一个项目,需先提交审批单据,再由部门经理审批,审核通过后由总经理来最终审批,如果部门经理审核不通过,就直接退回。每个事件触发时的情景便形成了场景。而同一事件不同的触发顺序和处理结果形成事件流。这一系列的过程我们利用场景法可以清晰的描述清楚。


场景法设计步骤


  • 根据说明,描述出程序的基本流及各项备选流
  • 根据基本流和各项备选流生成不同的场景
  • 对每一个场景生成相应的[url=]测试用例[/url]
  • 对生成的所有测试用例重新复审,去掉多余的测试用例,测试用例确定后,对每一个测试用例确定测试数据值


对于每一个场景都需要确定测试用例。可以采用矩阵决策表来确定和管理测试用例。


下面范例中显示了一种通用格式,其中各行代表各个测试用例,而各列则代表测试用例的信息。


本例中,对于每个测试用例,存在一个测试用例ID、条件(或说明)、测试用例中涉及的所有数据元素(作为输入或已经存在于[url=]数据库[/url]中)以及预期结果。


通过从确定执行用例场景所需的数据元素入手构建矩阵。然后,对于每个场景,至少要确定包含执行场景所需的适当条件的测试用例。例如,在下面的矩阵中,V(有效)用于表明这个条件必须是 VALID(有效的)才可执行基本流,而 I(无效)用于表明这种条件下将激活所需备选流。下表中使用的“n/a”(不适用)表明这个条件不适用于测试用例。


场景法设计实例


有一个在线购物的实例,用户进入一个在线购物网站进行购物,选购物品后,进行在线购买,这时需要使用帐号登录,登录成功后,进行付钱交易,交易成功后,生成订购单,完成整个购物过程。


1、根据说明,描述出程序的基本流及各项备选流

  • 基本流:登录网站,选购物品,账号登录,付钱交易,生成订单
  • 备选流:无账号,账号或密码错误,账号没有钱,账号余额不足 用户退出系统


2、根据基本流和各项备选流生成不同的场景

  • 场景1:登录网站,选购物品,账号登录,无账号
  • 场景2:登录网站,选购物品,账号登录,账号或密码错误
  • 场景3:登录网站,选购物品,账号登录,付钱交易,账号没有钱
  • 场景4:登录网站,选购物品,账号登录,付钱交易,账号余额不足
  • 场景5:登录网站,选购物品,账号登录,付钱交易,生成订单
  • 场景6:登录网站,选购物品,账号登录,用户退出系统


3、根据场景生成相应的测试用例

测试用例ID场景/条件账号密码余额预期结果

  • 场景1:无账号In/an/a提示无账号
  • 场景2:账号或密码错误(账号错误,密码正确)IVn/a提示账号或密码错误重新输入
  • 场景2:账号或密码错误(账号正确,密码错误)VIn/a提示账号或密码错误重新输入
  • 场景3:账号余额不足VVI提示账号余额不足
  • 场景4:账号没有钱VVI提示账号余额不足
  • 场景5:购物成功VVV生成订单
  • 场景6:操作中退出系统VV用户退出系统


4、根据上表,设计数据,填入数据

测试用例ID场景/条件账号密码余额预期结果

  • 场景1:无账号hn/an/a提示无账号
  • 场景2:账号或密码错误(账号错误,密码正确)f0n/a提示账号或密码错误重新输入
  • 场景2:账号或密码错误(账号正确,密码错误)ffIn/a提示账号或密码错误重新输入
  • 场景3:账号余额不足ff010提示账号余额不足
  • 场景4:账号没有钱ff00提示账号余额不足
  • 场景5:购物成功ff0500生成订单,余额减少
  • 场景6:操作中退出系统ff0用户退出系统

相关推荐

一日一技:用Python程序将十进制转换为二进制

用Python程序将十进制转换为二进制通过将数字连续除以2并以相反顺序打印其余部分,将十进制数转换为二进制。在下面的程序中,我们将学习使用递归函数将十进制数转换为二进制数,代码如下:...

十进制转化成二进制你会吗?#数学思维

六年级奥赛起跑线:抽屉原理揭秘。同学们好,我是你们的奥耀老师。今天一起来学习奥赛起跑线第三讲二进制计数法。例一:把十进制五十三化成二进制数是多少?首先十进制就是满十进一,二进制就是满二进一。二进制每个...

二进制、十进制、八进制和十六进制,它们之间是如何转换的?

在学习进制时总会遇到多种进制转换的时候,学会它们之间的转换方法也是必须的,这里分享一下几种进制之间转换的方法,也分享两个好用的转换工具,使用它们能够大幅度的提升你的办公和学习效率,感兴趣的小伙伴记得点...

c语言-2进制转10进制_c语言 二进制转十进制

#include<stdio.h>intmain(){charch;inta=0;...

二进制、八进制、十进制和十六进制数制转换

一、数制1、什么是数制数制是计数进位的简称。也就是由低位向高位进位计数的方法。2、常用数制计算机中常用的数制有二进制、八进制、十进制和十六进制。...

二进制、十进制、八进制、十六进制间的相互转换函数

二进制、十进制、八进制、十六进制间的相互转换函数1、输入任意一个十进制的整数,将其分别转换为二进制、八进制、十六进制。2、程序代码如下:#include<iostream>usingna...

二进制、八进制、十进制和十六进制等常用数制及其相互转换

从大学开始系统的接触计算机专业,到现在已经过去十几年了,今天整理一下基础的进制转换,希望给还在上高中的表妹一个入门的引导,早日熟悉这个行业。一、二进制、八进制、十进制和十六进制是如何定义的?二进制是B...

二进制如何转换成十进制?_二进制如何转换成十进制例子图解

随着社会的发展,电器维修由继电器时代逐渐被PLC,变频器,触摸屏等工控时代所替代,特别是plc编程,其数据逻辑往往涉及到数制二进制,那么二进制到底是什么呢?它和十进制又有什么区别和联系呢?下面和朋友们...

二进制与十进制的相互转换_二进制和十进制之间转换

很多同学在刚开始接触计算机语言的时候,都会了解计算机的世界里面大多都是二进制来表达现实世界的任何事物的。当然现实世界的事务有很多很多,就拿最简单的数字,我们经常看到的数字大多都是十进制的形式,例如:我...

十进制如何转换为二进制,二进制如何转换为十进制

用十进制除以2,除的断的,商用0表示;除不断的,商用1表示余0时结束假如十进制用X表示,用十进制除以2,即x/2除以2后为整数的(除的断的),商用0表示;除以2除不断的,商用1表示除完后的商0或1...

十进制数如何转换为二进制数_十进制数如何转换为二进制数举例说明

我们经常听到十进制数和二进制数,电脑中也经常使用二进制数来进行计算,但是很多人却不清楚十进制数和二进制数是怎样进行转换的,下面就来看看,十进制数转换为二进制数的方法。正整数转二进制...

二进制转化为十进制,你会做吗?一起来试试吧

今天孩子问把二进制表示的110101改写成十进制数怎么做呀?,“二进制”简单来说就是“满二进一”,只用0和1共两个数字表示,同理我们平常接触到的“十进制”是“满十进一”,只用0-9共十个数字表示。如果...

Mac终于能正常打游戏了!苹果正逐渐淘汰Rosetta转译

Mac玩家苦转译久矣!WWDC2025苹果正式宣判Rosetta死刑,原生游戏时代终于杀到。Metal4光追和AI插帧技术直接掀桌,连Steam都连夜扛着ARM架构投诚了。看到《赛博朋克2077》...

怎么把视频的声音提出来转为音频?音频提取,11款工具实测搞定

想把视频里的声音单独保存为音频文件(MP3/AAC/WAV/FLAC)用于配音、播客、听课或二次剪辑?本文挑出10款常用工具,给出实测可复现的操作步骤、优缺点和场景推荐。1)转换猫mp3转换器(操作门...

6个mp4格式转换器测评:转换速度与质量并存!

MP4视频格式具有兼容性强、视频画质高清、文件体积较小、支持多种编码等特点,适用于网络媒体传播。如果大家想要将非MP4格式的视频转换成MP4的视频格式的话,可以使用MP4格式转换器更换格式。本文分别从...