功能测试用例设计方法分享

article/2025/9/24 19:21:59

测试用例可以用来衡量一个项目测试质量,因此在平时的测试流程中,编写测试用例就是测试过程中很重要的一步,每一个测试工程师都需要并且非常熟练的编写测试用例,能在编写测试用例中尽可能的覆盖任何异常的测试点;如何能编写优秀的测试用例,就需要测试人员掌握更多的用例编写技巧以及思考出更多的测试点。针对于游戏测试,大多更偏向于功能方面的测试,根据功能测试用例逐项测试,检查产品是否达到了策划的需求。功能测试主要采用黑盒测试策略设计测试用例,进行测试。主要功能模块测试的测试用例设计方法包括:等价类划分、边界值分析、错误推测法、因果图和判定表、场景法、正交实验法。下面就以上几种方法进行一些分享。

1. 等价类划分法

等价类划分,指的是一种典型的、重要的黑盒测试方法。其就是解决如何选择适当的数据子集来代表整个数据集的问题,通过降低测试的数目去实现“合理的”覆盖,以此发现更多的软件缺陷,统计好数据后由此对软件进行改进升级。

举例一: 设有一个认证条件,要求玩家输入以年月表示的日期。假设日期限定在1990年1月~2049年12月,并规定日期由6位数字字符组成,前4位表示年,后2位表示月。现用等价类划分法设计测试用例,来测试程序的"日期检查功能"。 首先,划分等价类并编号,下表等价类划分的结果

输入等价类有效等价类无效等价类
日期的类型及长度(1)日期的类型及长度(2)有非数字字符 (3)少于6位数字字符 (4)多于6位数字字符
年份范围(5)在1990~2049之间(6)小于1990 (7)大于2049
月份范围(8)在01~12之间(9)等于00 (10)大于12

设计测试用例,以便覆盖所有的有效等价类,在表中列出了3个有效等价类,编号分别为(1)、(5)、(8),设计的测试用例如下:

测试数据期望结果覆盖的有效等价类
200211输入有效(1)、(5)、(8)

为每一个无效等价类设计一个测试用例,设计结果如下:

测试数据期望结果覆盖的无效等价类
95June无效输入(2)
20036无效输入(3)
2001006无效输入(4)
198912无效输入(6)
200401无效输入(7)
200100无效输入(9)
200113无效输入(10)

举例二: 登录账号的时候,邮箱地址输入框输入数据,程序检测,判断用户输入的邮箱地址是否合法。现用等价类划分法和边界值分析法设计测试用例:

对输入的要求:

a.用户名只能用小写字母和数字还有‘.’组成

b.邮箱用户名首位必须是小写字母或者数字

c.用户名长度在6-30个字符之间

d.必须要有 @ 符号和必须要有 ‘.’

e.@后面要以*.*结束(*为任意字符串)

等价类表:

输入等价类有效等价类无效等价类
邮箱的组成(1)小写字母、数字和‘.’、@(2)在非小写字母、数字和‘.’、@的字符
用户名首位(3)小写字母或数字(4)以‘.’开头 (5)以@开头
用户名长度(6)6-30个字符之间(7)小于6个字符 (8)大于30个字符
@符号和‘.’(9)@后面要以*.*结束(*为任意字符串)(10)没有@符号 (11)以@符号结尾 (12)@符号后面没有‘.’(13)以‘.’结尾 (14)@ 符号和‘.’没有字符串

覆盖等价类的测试用例:

符号输入覆盖等价类期望结果
1zhangyuting313 @gmail.com(1)、(3)、(6)、(9)有效输入
2zhang-yuting313 @gmail.com(2)无效输入
4.zhangyuting313 @gmail.com(4)无效输入
4@zhangyuting313 @gmail.com(5)无效输入
5yu @gmail.com(7)无效输入
6zhangyuting313124567896321456987569 @gmail.com(8)无效输入
7zhangyuting313gmail.com(10)无效输入
8zhangyuting313@(11)无效输入
9zhangyuting313@gmailcom(12)无效输入
10zhangyuting313@gmail.(13)无效输入
11zhangyuting313@.com(14)无效输入

2. 边界值分析法

其实边界值可以算是为了配合等价类而加的一个限制条件,一般会根据略小于最小值、略大于最大值、等于最小值/最大值进行边界值的一些验证;一般来说,关于区间型数据边界值的测试,大多都是略小于最小值和略大于最大值是不满足要求的,中间的数据是满足需求的。 边界值附近的数据确定的几种方法:

边界值测试用例的设计思路
字符起始-1个字符/结束+1个字符假设一个文本输入区域允许输入1~255个字符,输入1个和255个字符作为有效等价类;输入0个和256个字符为无效等价类,这几个数值都属于边界条件值
数值开始位-1/结束位+1数据的输入域为1~999,其最小值为1,最大值为999,则0、1000为边界值
空间小于空余空间一点/大于满空间一点测试数据存储时,使用比最小剩余空间大一点(几千字节)的文件作为最大值检验的边界条件
方向刚刚超过/刚刚低于整数的话考虑最低值-1/最大值+1;其他非整数情况根据实际情况少于/大于最小/最大值
报表第一行和最后一行第一行和最后一行
循环结构第2次和倒数第2次循环第一次/小于最后一次循环

举例一: 还是以上面要求玩家输入以年月表示的日期来作为例子。假设日期限定在1990年1月~2049年12月,并规定日期由6位数字字符组成,前4位表示年,后2位表示月。现用等价类划分法设计测试用例,来测试程序的"日期检查功能",下面是关于边界值需要检测的点。

序号输入及操作说明期望的测试结果
1输入198912不满足
2输入199001满足
3输入199002满足
4输入204911满足
5输入204912满足
6输入205001不满足

举例二: 购买一个宝箱,一次性最多只能购买5个,以边界值的标准可选取5个(正好等于)、6个(刚刚大于)、4个(刚刚小于),3个(正常值)作为边界值来测试。

序号输入及操作说明期望的测试结果
1一次性成功购买五个购买成功
2一次性购买6个不能购买
3一次性后买4个购买成功
4一次性购买3个购买成功

3. 错误推测法

没有确定的步骤,很大程度上是凭经验, 结合以往测试经验和直觉设计软件在功能和流程上可能存在的各种错误,进行容错性测试。例如输入数据为零或输出数据为零时容易发生错误的情况,所以可选择输入值为零的例子,以及使输出值为零的例子;又如输入表格为“空”或输入表格只有一行是较易出错误的情况,所以可选择表示这些情况的例子。根据字面意思,也就是列出可能出现问题的点,猜测哪些情况可能会有问题。

举例一: 如面购买宝箱的例子,针对于需求,仅是对于给出的数据进行了测试,但是在实际情况中,实际要求中需要注意的点。根据平时测试,出现过问题的地方,所以又应该考虑到以下的测试点:

a.尝试购买-1个宝箱

b.尝试购买0个宝箱

c.多次购买小于5个宝箱

d.多次购买5个宝箱

e.购买宝箱后重启客户端/服务器

f…

举例二:对于游戏中,需要做屏蔽词功能,需要考虑到以下玩家会进行操作的功能点进行测试(多多自走棋为例),我们需要考虑到所有可能出现玩家输入信息的地方,根据对平时对项目的熟悉以及自己的经验,想到一些可能会出现问题的地方:

a.创建账号(玩家填写角色名称)

b.聊天功能(世界聊天、好友私聊、队伍聊天、发送邀约信息、制图工坊、房间队伍聊天、局内战斗聊天、局内私聊、局内观众、局内裁判、观战发送聊天信息)

c.个人信息(玩家修改昵称)

d.自建房间(玩家创建/修改房间昵称)

4. 场景法

百度百科对场景法的解释是:通过运用场景来对系统的功能点或业务流程的描述,从而提高测试效果的一种方法。用例场景来测试需求是指模拟特定场景边界发生的事情,通过事件来触发某个动作的发生,观察事件的最终结果,从而用来发现需求中存在的问题。我们通常以正常的用例场景分析开始,然后再着手其他的场景分析。场景法一般包含基本流和备用流,从一个流程开始,通过描述经过的路径来确定的过程,经过遍历所有的基本流和备用流来完成整个场景。场景主要包括4种主要的类型:正常的用例场景,备选的用例场景,异常的用例场景,假定推测的场景。 在一个游戏功能中,将大功能拆分为一个个小功能,而这些小功能就可以视为一个个小场景,这些小场景的集合就成了这个完整的功能模块。

举例,比如多多自走棋的通行证每周挑战功能:

根据这个界面,我们可以分为以下几个部分:

a.每日奖励

b.经验等级

c.具体任务信息

d.购买等级

e.奖励展示

f.视频播放

g.帮助按钮

h.购买等级

以上这些小功能以玩家可能会涉及到的操作为出发点,我们可以理解为一个个小场景,将他们组合起来就构成了这个完整的功能,这些小功能构成了整个每周挑战这个功能。以上的这些小功能应该更多以玩家的角度进行考虑。

5. 因果图法和判定表

等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系、相互组合等。考虑输入条件之间的相互组合,可能会产生一 些新的情况。但要检查输入条件的组合不是一件容易的事情,即使把所有输入条件划分成等价类,他们之间的组合情况也相当多,因此需要考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例,这就需要利用因果图。

下面先了解一下因果图得一些规则,下面以图的形式详细说明6种因果逻辑。

c表示原因,e表示结果:

a.恒等:如果原因为真,那么结果必定为真。

b.非:只有原因为假,结果才为真。

c.与:只有2个原因都为真,那么结果为真。

d.或:2个原因中有一个为真时,结果就为真。

e.与非:先与后非。

f.或非:先或后非。

g.排他性约束:各个原因之间不能同时为真, 但可以同时为假。

h.包含性约束:各个原因中总有一个为真。即可以同时为真,但不可以同时为假。

i.必要性约束:当原因a为真时,原因b必须同时为真

j.唯一性约束:有且只有原因a和原因b中的一个为真但是原因b为真时,原因a既可以为真,也可以为假。

k. 掩码标记(结果约束):如果结果b为真,那么结果a一定为假,如果结果b为假,则结果a的状态不定

举例一: 以多多自走棋为例,玩家查看图鉴中的棋子:第一步必须是A(点击仓库)或B(点击大厅右上角图鉴按钮),第二步必须是C(点击棋子图鉴),在此情况下玩家进入到棋子图鉴界面,但如果第一步不正确,得出结论L;如果第二步骤不是C,则得出结论M。 首先我们整理一下,得出以下信息以及因果图:

根据题意,原因和结果如下:

原因:

1——第一步是A;

2——第一步是B;

3——第二步是点击棋子图鉴。

结果:

21——进入棋子图鉴;

22——得出结论L;

23——得出结论M。

其对应的因果图如下:

11为中间节点;考虑到原因1和原因2不可能同时为1,因此在因果图上施加E约束。

根据因果图建立判定表: 因为 一般可以根据因果图画出判定表,判定表里只有0,1(1代表真,0代表假)两个数字。若输入条件有n个,则用例考虑的情况有2n种,即8种:

12345678
条件(原因)111110000
条件(原因)211001100
条件(原因)310101010
条件(原因)11111100
动作(结果)22000011
动作(结果)21101000
动作(结果)23010101

表中8种情况的左面两列情况中,原因①和原因②同时为1,这是不可能出现的,故应排除这两种情况。表的最下一栏给出了6种情况的测试用例,这是我们所 需要的数据。所以用例有:

a.1,3------21

b.1-----23

c.2,3----21

d.2-----23

e.3—22

f.不进行任何操作-----22,23

6. 正交试验法

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

举例:
image
这是游戏账号注册的一个窗口。我们可以看到要测试的控件有3个:邮箱地址、密码、验证码,也就是要考虑的因素有三个;而每个因素里的状态有两个:填与不填。 选择正交表时分析一下:

a.表中的因素数>=3;

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

c.行数取最少的一个。

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

L4(23)(0-填 1-不填):

123
1000
2011
3101
4110

变量映射如下

邮箱地址密码验证码
1
2不填不填
3不填不填
4不填不填

测试用例如下:

a.填写邮箱地址、填写密码、填写验证码

b.填写邮箱地址、不填密码、不填验证码

c.不填邮箱地址、填写密码、不填验证码

d.不填邮箱地址、不填密码、填写验证码 增补测试用例

e.不填邮箱地址、不填密码、不填验证码

从测试用例可以看出:

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

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

c.水平数不相同 采用包含和组合的方法选取合适的正交表公式。


PS:

我们是行者AI,我们在“AI+游戏”中不断前行。

如果你也对游戏感兴趣,对AI充满好奇,那就快来加入我们(hr@xingzhe.ai)。


http://chatgpt.dhexx.cn/article/7K2m8Mcr.shtml

相关文章

判定表测试用例方法——实例

测试用例设计方法——判定表法 判定表法表示的是有多个输入,和多个输出,而且输入与输入之间有相互的组合关系、输入和输出之间有相互的制约和依赖关系, 判定表由四个组成部分 判定表基本概念  条件桩:输入条件, 列出了系统的所有输入&…

测试用例编写方法

测试用例编写方法 等价类划分法 一、等价类划分法的定义 把程序的输入域和输出域划分成若干部分,然后从各个部分中选取若干代表性数据作为测试用例。这些数据在测试中的作用等价于其所属部分的其他值。 二、等价类划分法的术语 等价类:输入域的各个…

软件测试用例设计方法(一)

目录 软件测试用例设计之等价类划分法一、等价类划分法的定义二、等价类划分法的术语三、等价类划分原则四、实例演示(三角形问题和档案管理系统问题) 软件测试用例之边界值分析法一、边界值分析法定义二、等价类划分法和边界值分析法的区别三、内部边界…

测试用例方法-判定表法

判定表法案例 若用户欠费或关机,则不允许主被叫 等价类划分法和边界值分析法都是着重考虑单个输入的输入条件,但是没有考虑输入条件的各种组合,输入条件与输出条件之间的相互制约关系。所以要使用判定表法才能解决上述案例编写测试用例的过…

编写测试用例方法之错误推测法

今天我们再来介绍另外一个编写测试用例的方法:错误推测法。话不多说,开始整干货,老规矩,首先全图镇楼。 错误推测法其实它不同于等价类划分法或者边界值分析法,它是对有效等价类和边界值分析法的一个补充。因为错误推测…

【测试】编写测试用例的常用方法

文章目录 1)等价类划分法1.1 什么是等价类有效等价类:无效等价类: 1.2 划分标准1.3 划分方法1、确立等价类2、转化为测试用例 1.4 实例:三角形问题1.4.1 分析对输入条件的要求(显性和隐性)1.4.2 列出等价类…

编写测试用例的方法

编写测试用例的方法 一、等价类划分法(重点)1、应用场景:多用于输入框。2、概念:3、等价类:4、示例: 二、边界值法(重点)三、场景法(重点)1、概念&#xff1a…

编写测试用例的七种方法

1 测试用例的概念 测试用例是为了实施测试而向被测试系统提供的一组集合,这组集合包括:测试环境、操作步骤、测试数据、预期结果等要素 2 常见编写测试用例的七种方法 基于需求的设计方法 等价类 边界值 因果图 场景设计法 错误猜测法 3 基于需…

【路径规划】(4) 蚁群算法,附python完整代码

大家好,今天和各位分享一下蚁群算法,并基于 tkinter 完成一个旅行商问题。完整代码可以从我的 GitHub 中获得: https://github.com/LiSir-HIT/Mathematical-Programming/tree/main/Path%20Planning 1. 算法介绍 蚁群算法是由 Mr.Dorigo 博士…

Python编程实现蚁群算法详解

这篇文章主要介绍了Python编程实现蚁群算法详解,涉及蚂蚁算法的简介,主要原理及公式,以及Python中的实现代码,具有一定参考价值,需要的朋友可以了解下 简介 蚁群算法(ant colony optimization, ACO),又称蚂蚁算法,是一种用来在图中寻找优化路径的机率型算法。它由Marco…

智能优化算法:蝙蝠算法-附代码

智能优化算法:蝙蝠算法-附代码 文章目录 智能优化算法:蝙蝠算法-附代码1.算法原理2.算法流程3.算法结果4.参考文献5.MATLAB代码6.python代码 摘要:蝙蝠算法(Bat Algorithm,BA)[1] 是受蝙蝠回声定位捕食行为…

蚁群算法介绍(python)

蚁群算法 什么是蚁群算法 蚁群算法(ant colony optimization, ACO),又称蚂蚁算法,是仿照蚂蚁寻找食物的最短路径行为来设计的仿生算法,是一种概率型算法,适用于优化组合问题。 特点 对图的对称性和目标函数无特殊要求可以解决…

蝙蝠优化算法(python代码)

1.效果图 2.代码 import numpy as np import math import matplotlib.pyplot as plt# 定义目标函数(示例函数为Rastrigin函数) def rastrigin(x):return 10 * len(x) + np.sum(x**2 - 10 * np.cos(2 * np.pi * x))# 蝙蝠优化算法函数 def bat_algorithm(f, D, N, N_gen, A,…

蚁群算法Python实现

解决的问题 三维地形中,给出起点和重点,找到其最优路径。 作图源码: from mpl_toolkits.mplot3d import proj3d from mpl_toolkits.mplot3d import Axes3D import numpy as npheight3d np.array([[2000,1400,800,650,500,750,1000,950,900…

蚁群算法原理与实现(python)

文章目录 蚁群算法的背景蚁群算法的思想蚁群算法的python实现实例总结 蚁群算法的背景 古有牛顿在苹果树下被苹果砸中发现万有引力,三十年前有人观察蚂蚁觅食发明蚁群算法。蚁群算法是意大利学者Dorigo、Maniezzo等人于20世纪90年代看蚂蚁觅食发明的。蹲在地上看蚂…

Python实现HBA混合蝙蝠智能算法优化循环神经网络分类模型(LSTM分类算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蝙蝠算法是2010年杨教授基于群体智能提出的启发式搜索算法,是一种搜索全局最优解的有效方法…

蝙蝠算法(Bat Algorithm,BA)算法

生物学基理 蝙蝠算法(Bat Algorithm,BA)算法是模拟自然界中蝙蝠利用一种声呐来探测猎物、避免障碍物的随机搜索算法即模拟蝙蝠利用超声波对障碍物或猎物进行最基本的探测、定位能力并将其和优化目标功能相联系。BA算法的仿生原理将种群数量为…

经典蝙蝠算法MATLAB实现

为什么会有这么多基于群智能的算法,蚁群、粒子群、鱼群、烟花、炮竹、猪群、牛群、马群、羊群、猴群、鸡群。。。算法。?????? 黑人问号.jpg 蝙蝠算法( BA) 是 Yang 教授于 2010 年基于群体智能…

【算法学习】蝙蝠算法简介

蝙蝠算法(Bat Algorithm,缩写 BA),是一种元启发式优化算法,是杨新社(音译自:Xin-She Yang)在2010年提出的算法[1]。这个蝙蝠算法以微蝙蝠(microbats)回声定位…

算法学习:蝙蝠算法简介

蝙蝠算法(Bat Algorithm,缩写 BA),是一种元启发式优化算法,是杨新社(音译自:Xin-She Yang)在2010年提出的算法[1]。这个蝙蝠算法以微蝙蝠(microbats)回声定位…