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

1. 等价类划分法

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

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

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

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

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

对输入的要求:

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

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

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

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

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

等价类表:

覆盖等价类的测试用例:

2. 边界值分析法

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

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

举例二: 购买一个宝箱,一次性最多只能购买5个,以边界值的标准可选取5个(正好等于)、6个(刚刚大于)、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种:

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

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

b.1-----23

c.2,3----21

d.2-----23

e.3—22

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

6. 正交试验法

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

举例:

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

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

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

c.行数取最少的一个。

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

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

变量映射如下

测试用例如下:

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

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

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

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

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

从测试用例可以看出:

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

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

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

最后|资源分享

给大家看一个宝典吧,不管是面试还是日常的知识积累,是我几年下来的一点点知识储备,下面这些是我的收集和整理的资料,对于开始学习【软件测试】或是技能进阶的朋友来说,绝对是最全面的教程仓库,这个仓库也陪伴我走过了最

关注【程序媛木子】微信公众号里海量资源免费获取,技术交流群(644956177)

功能测试用例不好写?来自阿里大佬的设计方法分享相关推荐

  1. 软件测试用例优秀例子_功能测试用例设计方法分享

    测试用例可以用来衡量一个项目测试质量,因此在平时的测试流程中,编写测试用例就是测试过程中很重要的一步,每一个测试工程师都需要并且非常熟练的编写测试用例,能在编写测试用例中尽可能的覆盖任何异常的测试点: ...

  2. python测试用例设计方法_功能测试用例设计方法分享

    本文首发于:行者AI 测试用例可以用来衡量一个项目测试质量,因此在平时的测试流程中,编写测试用例就是测试过程中很重要的一步,每一个测试工程师都需要并且非常熟练的编写测试用例,能在编写测试用例中尽可能的 ...

  3. 测试用例设计方法(转)

    本篇由本人整理黑盒.白盒.接口测试一系列用例设计方法. 黑盒测试用例设计方法包括等价类划分法.边界值分析法.错误推测法.因果图法.判定表驱动法.正交试验设计法.功能图法.场景图法等. (一)等价类划分 ...

  4. 代码 删除的stach 找回_阿里大佬教你,如何写好 Java 代码!

    点击上方蓝色链接,关注并"设为星标" Java干货,每天及时推送 阿里大佬分享的一篇很不错的文章,推荐收藏! 导读 明代王阳明先生在<传习录>谈为学之道时说: 私欲日生 ...

  5. 年轻人,看你骨骼惊奇,我这有一份来自阿里的Android开发学习指南,不仅能让你月入5w,度过中年危机都不是问题!

    摘要 很简单,我这有一份来自阿里程序员佛系月薪5w指南,看你骨骼惊奇,印堂光亮,一看就是将要大富大贵.走向人生巅峰之人,就不收你钱了,一个点赞就送给你怎么样? 缘起 为什么写下这篇文章? 疫情自爆发以 ...

  6. Nacos 2.0 性能提升十倍,贡献者 80% 以上来自阿里之外

    来源 | 阿里巴巴云原生公众号 3 月 20 日,Nacos 2.0 正式发布.Nacos 是阿里巴巴在 2018 年开源的一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台,也可以理解为 ...

  7. uat测试用例怎么写_你会写测试用例吗

    作为一名测试工程师,写测试用例作为一项最最基本的技能谁不会啊!但就是这最基本的技能也会存在很多问题,今天就跟大家分享下写测试用例这件事情上存在的的一些问题和对应的思考: 为什么要写测试用例啊,测试用例 ...

  8. 可以说今年最详细的面试要点!耗时两个礼拜,五章8000字面试长文,写简历—阿里Offer一步到位!

    前言 前一段时间和大牛们交流了一下,据反馈现在Android岗位也没有以前那么多了,没这么好找了,面临2020年寒冬季节,大量公司模仿O2O模式导致死掉企业的很多,再加之培训机构大量的培训人,导致供大 ...

  9. 阿里大佬倾情力荐:Java全线成长宝典,从P5到P8一应俱全

    前言 对于大部分的程序员来说,清晰地规划自己的职业发展并不是一件容易的事情.作为一个曾经底子比较差,从底层摸爬滚打多年走过来的程序员,在这里分享一下对我帮助很大的一份宝典,希望同行们能快速掌握这些技术 ...

最新文章

  1. java optional 用法_Java8 中的 Optional 相关用法
  2. Redhat9五笔输入法安装
  3. 【全新打造】思科认证跟踪系统考试注册教程(08.8.30)附word文件下载
  4. hbase数据导入到mysql(转载+自己验证整理,目前失败)
  5. 关于 hibernate 官网的例子 出现的问题
  6. deepin配置JDK
  7. LCS 最大子段和,最大子段和在原数组的首末地址
  8. Setforegroundwindow 将窗口置最前
  9. JQuery判断元素是否存在
  10. echarts 通过ajax实现动态数据加载
  11. 第3章 动态规划 矩阵连乘问题
  12. [转载] SimpleHTTPServer解释:如何使用Python发送文件
  13. 如何解决手机电话本CSV格式和VCF格式的转换
  14. RiskCloud-基于Markov算法精准的FTA、 JSA、FMEA软件
  15. 优化算法3--蚁群算法(原理)
  16. 如何利用导数推导向心加速度公式? + 开普勒 第三定律的推导过程
  17. 城域网过渡技术之NAT64+DNS64
  18. 【参数】平面光:倍增为3.5,颜色为淡蓝色/淡——daiding
  19. ArcGIS中去除Z或M值的方法
  20. js 判断手势_JS触摸与手势事件详解

热门文章

  1. Codeforces Round #360 (Div. 2) C. NP-Hard Problem 水题
  2. bfv同态加密_五分钟了解同态加密及三种常见方案
  3. c++ builder groupbox修改样式_Pandas也能修改样式?快速给你的数据换个Style!
  4. python 线程锁_Python多线程-线程锁
  5. matlab画2fsk频谱,2fsk信号调制解调频谱的matlab仿真
  6. python和循环语句_Python 小白零基础入门 -- 条件语句和循环语句
  7. 作用域链涉及了什么计算机底层知识,你必须知道的Javascript知识点之深入理解作用域链的介绍...
  8. Linux保护线程,linux的线程是否受到了保护?
  9. mysql涉及表 规范_MySql数据库表设计规范
  10. eas库存状态调整单不能反审核_把握 商品 周转,做好 动态 库存 管理