【测试开发/测试】详解测试用例(下):详解设计测试用例的方法

🔥艾莉丝努力练剑:个人主页

专栏传送门:《C语言》《数据结构与算法》C/C++干货分享&学习过程记录Linux操作系统编程详解笔试/面试常见算法:从基础到进阶

⭐️为天地立心,为生民立命,为往圣继绝学,为万世开太平


🎬艾莉丝的测试开发博客简介:


目录

前期回顾及本文导语

[3 ·> 设计测试用例的方法](#3 ·> 设计测试用例的方法)

[3.1 基于需求的测试用例设计方法](#3.1 基于需求的测试用例设计方法)

[3.2 具体的设计方法](#3.2 具体的设计方法)

[3.2.1 等价类](#3.2.1 等价类)

​编辑

[3.2.2 边界值](#3.2.2 边界值)

[3.2.3 正交法](#3.2.3 正交法)

[3.2.3.1 正交法&正交表的概念](#3.2.3.1 正交法&正交表的概念)

[3.2.3.2 正交法设计测试用例的步骤](#3.2.3.2 正交法设计测试用例的步骤)

[3.2.3.3 实操展示](#3.2.3.3 实操展示)

[3.2.3.4 练习](#3.2.3.4 练习)

[3.2.4 判定表法](#3.2.4 判定表法)

[3.2.4.1 判定表](#3.2.4.1 判定表)

[3.2.4.2 根据判定表法设计测试用例的步骤](#3.2.4.2 根据判定表法设计测试用例的步骤)

[3.2.4.3 实操](#3.2.4.3 实操)

[3.2.5 场景法](#3.2.5 场景法)

[3.2.6 错误猜测法](#3.2.6 错误猜测法)

[3.3 给"登录功能"设计测试用例](#3.3 给“登录功能”设计测试用例)

[3.4 测试用例设计练习](#3.4 测试用例设计练习)

3.4.1命令行程序

[3.4.1.1 zip命令](#3.4.1.1 zip命令)

[3.4.2 web程序](#3.4.2 web程序)

[3.4.3 如何在页面打开开发者工具](#3.4.3 如何在页面打开开发者工具)

[3.5 详解postman使用](#3.5 详解postman使用)

[3.5.1 postman是什么](#3.5.1 postman是什么)

[3.5.2 postman使用教程(保姆级)](#3.5.2 postman使用教程(保姆级))

1、下载和注册

2、使用界面

3、使用

4、创建收藏夹

[3.5.3 实操](#3.5.3 实操)

结尾



前期回顾及本文导语


3 ·> 设计测试用例的方法

3.1 基于需求的测试用例设计方法

基于需求的设计方法也是总的设计测试用例的方法,在工作中,我们需要参考需求文档/产品规格说明书来设计测试用例。

测试人员接到需求之后,要对需求进行分析和验证,从合理的需求中进一步分析细化需求,从细化的需求中找出测试点,根据这些测试点再去设计测试用例。

以该注册邮箱账号需求为例,我们来设计测试用例。

1、明确需求中的功能点------

账号注册,账号登陆。

2、结合万能公式设计测试点------

上面叫做根据需求文档先设计初步的测试用例,而部分测试用例还需要细化,这就需要借助具体的设计方法了。

3.2 具体的设计方法

3.2.1 等价类

上述设计的测试用例,存在用例还未完全设计完成,"姓名必填,6~15位的字符类型",这样一个具体的需求该如何来设计测试用例呢?

测试的时候通过穷举法来测试6位、7位、8位...14位,15位是否测试通过,这样的方法能够满足测试的要求吗?若此时把范围从"6~15位"改成"6~150位呢"?试想一下这样一个简单的测试点需要测试多久呢,显示是不符合企业测试要求的。

而等价类法的出现就解决了穷举法不能解决的问题。

依据需求将输入(特殊情况下会考虑输出)划分为若干个等价类,从等价类中选出一个测试用例,

如果这个测试用例测试通过,则认为所代表的等价类测试通过,这样就可以用较少的测试用例达到

尽量多的功能覆盖,解决了不能穷举测试的问题。

生活中等价类的案例:

因材施教的例子:

原则上讲,老师应该依据每个学生自身的情况,指定符合的学习方案,但是实际上学生太多老师管不过来,只能分成几类:优等生强调知识面的扩展和综合能力的提升;中等生强调夯实基础,查缺补漏;差等生强调优先掌握重点,暂时跳过难点...

思路:输入的集合是无穷的,不能全都覆盖到。

等价类分类:

(1)有效等价类:对于程序的规格说明书是合理的、有意义的输入数据构成的集合,利用有效等价类验证程序是否实现了规格说明中所规定的功能和性能;

(2)无效等价类:根据需求说明书,不满足需求的集合。

根据等价类设计测试用例的方式:

1、确定有效等价类和无效等价类;
2、编写测试用例,设计具体测试数据。

练习:根据学到的边界值将上述未完成的用例进行完善------

**缺点:**等价类只考虑输入域的分类,没有考虑输入域的组合,需要其他的设计方法和补充。

3.2.2 边界值

边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。

日常语言中的"边界"漏洞

考完试发成绩了,老师布置寒假作业:超过60分的,所有题目抄写1遍,低于60分的,所有题目抄写3遍,于是小明就没有写作业,因为他刚好60分。

边界值包含:边界值+次边界值------

1、输入框长度为1-11,取边界值为:1、11、12、0;

2、运动员的参赛项目为1-3项,取边界值为:0项、1项、3项、4项;

3、查询面页面有999行,每50行为一页,

取边界值为:输出0行、1行、50行、51行、999行。

继续将上述用例通过边界值补充完整------

3.2.3 正交法

通过等价类和边界值方法我们完成了部分用例的补充。

当前还剩下一个场景的用例未补充完成,"只填写部分选项",这里到底要设计多少测试用例呢?

通常来说,为了保证系统的测试覆盖率,我们首先能够想到的就是排列组合。

假如当前有两个选项A和B,可以设计出都填写、都不填写、填写A、填写B四个测试用例(2^2)。

假如当前有三个选项A、B、C,通过设计可以得到8个测试用例(2^3)

. . . . . .

当前可选的选项是5个,分别是,姓名、电子邮箱、密码、确认密码、验证码。按照排列组合设计

出来的用例是32个...

3.2.3.1 正交法&正交表的概念

正交法的目的是为了减少用例数目。用尽量少的用例覆盖输入的两两组合。

正交试验设计(Orthogonalexperimentaldesign)是研究多因素多水平的一种设计方法,它是根据正交性,由试验因素的全部水平组合中挑选出部分有代表性的点进行试验,通过对这部分试验结果的分析了解全面试验的情况,找出最优的水平组合。正交试验设计是一种基于正交表的、高效率、快速、经济的试验。

正交表:

如图最简单的正交表是L(4)(2(3),含意如下:""代表正交表;L下角的数字"4"表示有4横行,简称行,即要做四次试验;括号内的指数"3"表示有3纵列,简称列,即最多允许安排的因素是3个;括号内的数"2"表示表的主要部分只有2种数字,即因素有两种水平1与2。

**正交表的构成:**因素数、水平数、行数。

**因素:**对指标的影响条件,通常是正交表中的一列。

**水平:**因素对应的可选项。

正交表的性质:

(1)每一列中,不同的数字出现的次数相等;

(2)任意两列中数字的排列方式齐全而且均衡。

根据正交表的性质,一般人很难通过手动设计出正交表,即便是数学专业的uu。

3.2.3.2 正交法设计测试用例的步骤

1、找到因素和水平;

2、用allparis工具生成正交表------

(1)将因素和水平写入Excel表格中

用电脑自带的Excel就行;
(2)allparis目录下创建新的文本文件new.txt,复制Excel中的因素和水平,直接粘贴到文本中保存并退出;
(3)使用allparis命令生成正交表:allparis.exe new.txt>zhengjiao.txt

3、根据正交表编写测试用例。

4、补充遗漏的重要测试用例。

下面我继续以邮箱注册为例,采用正交法补全剩下的测试用例------

第一步:找到因素和水平

因素:姓名、电子邮箱、密码、确认密码、验证码
水平:填写、不填写

第二步:用allparis工具生成正交表

(1)将因素和水平写入Excel表格中
(2)allparis目录下创建新的文本文件0714.txt,复制Excel中的因素和水平,直接粘贴到文本中保
存并退出
(3)使用allparis命令生成正交表:allparis.exe 0714.txt>0714jg.txt(将生成的正交表数据放入
0714jg.txt文件中)

第三步:根据正交表编写测试用例

1)全部填写姓名,电子邮箱,密码,确认密码,验证码
2)填写姓名,不填写电子邮箱,密码,确认密码,验证码
3)填写电子邮箱,确认密码,不填写姓名,密码,验证码
4)填写密码、验证码,不填写姓名,电子邮箱,确认密码
5)填写姓名,电子邮箱,密码,不填写确认密码,验证码
6)填写姓名,确认密码,验证码,不填写电子邮箱,密码

第四步:补充遗漏的重要测试用例

1)全部填写姓名,电子邮箱,密码,确认密码,验证码
2)填写姓名,不填写电子邮箱,密码,确认密码,验证码
3)填写电子邮箱,确认密码,不填写姓名,密码,验证码
4)填写密码、验证码,不填写姓名,电子邮箱,确认密码
5)填写姓名,电子邮箱,密码,不填写确认密码,验证码
6)填写姓名,确认密码,验证码,不填写电子邮箱,密码
7)不填写姓名,电子邮箱,密码,确认密码,验证码

**注意:**使用allparis生成的正交表和预期有出入,但是不影响我们用来设计测试用例。

3.2.3.3 实操展示

用Excel设计------

不用保存,复制内容,copy到pairs同级文件夹下新建的txt文本文件里面------

这样和直接在文本文件里面写没什么区别,那怎么办呢?要用到cmd。如下所示------

设计正交表过程:

3.2.3.4 练习

**测试用例设计练习:**请您对"淘宝购物车"设计测试用例。

3.2.4 判定表法

通过具体的方法能够将测试用例设计的更加完整和规范。
需求中会存在各种各样的场景,现在我们把需求改成如下的要求------

用户输入的账号中包含admin字符,或者通过内部链接进入注册页面,提交注册按钮成为管理员身份;反之无管理员身份。

通过这个需求可以看出,不同的组合操作可能对应不同的结果。采用正交法无法解决这样的问题。而正交法能够解决需要考虑输入之间的组合关系对应不同结果的场景。

3.2.4.1 判定表

判定表是一种表达逻辑判断的工具,形如------

通过判定表,我们就可以把所有条件对应的结果清晰的表达出来。

我们需要借助该表来清晰的写出测试用例。

3.2.4.2 根据判定表法设计测试用例的步骤

根据判定表法设计测试用例的步骤------
1、确认需求中输入条件和输出条件
2、找出输入条件和输出条件之间的关系
3、画判定表
4、根据判定表编写测试用例

确认了步骤后,我们使用判定表法进一步对上述需求进行测试用例的设计:

1、确认需求中输入条件和输出条件
输入条件:账号包含admin字符(a)、内部注册链接(b)、点击注册按钮(c)
输出条件:管理员(1)、无管理员(2)

2、找出输入条件和输出条件之间的关系

3、画判定表

4、根据判定表编写测试用例

a. 账号包含admin,非内部注册链接,点击注册按钮,为管理员身份
b. 账号包含admin,内部注册链接,不点击注册按钮,非管理员身份
c. 账号不包含admin,内部注册链接,点击注册按钮,为管理员身份
d. 账号包含admin,内部注册链接,点击注册按钮,为管理员身份
e. 账号包含admin,非内部注册链接,不点击注册按钮,非管理员身份

f. 账号不包含admin,非内部注册链接,点击注册按钮,非管理员身份
g. 账号不包含admin,非内部注册链接,不点击注册按钮,非管理员身份

3.2.4.3 实操

3.2.5 场景法

现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。

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

读完上面的概念是不是一脸懵,场景法就是一个常规的流程中,某些阶段可能会出现一些意想不到的情况,常规流程是基本流,从阶段中分析出来的不同情况被称之为备选流,场景法比较考验同学们的发散思维。

针对场景法给出生活中的案例。以逛街买衣服为例,讲讲场景法的使用方法。

该方法可以比较生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,是测试用例更容易理解和执行。

典型的应用是是用业务流把各个孤立的功能点串起来,为测试人员建立整体业务感觉,从而避免陷入功能细节忽视业务流程要点的错误倾向。

案例1:

还是根据邮箱账号注册的案例,根据场景法来设计测试用例TODO

根据场景法设计测试用例的步骤------

1、确定基本流

2、确定备选流

3、根据备选流补充测试用例

4、编写测试用例

编写测试用例:

1、输入正确的账号密码,点击注册后系统发出确定邮件并在24H内确认,注册成功;

2、不输入账号密码,点击注册,提示重新输入;

3、只输入账号,不输入密码,点击注册,提示重新输入;

4、. . . . . .

案例2:

3.2.6 错误猜测法

错误猜测法是对被测试软件设计的理解,过往经验以及个人直觉,推测出软件可能存在的缺陷,从而针对性地设计测试用例的方法。

这个方法强调的是对被测试软件的需求理解以及设计实现的细节把握,还有个人的经验和直觉。

错误推测法和目前流行的"探索式测试方法"的基本思想一致,这类方法在敏捷开发模式下的投入产
出比很高,被广泛应用于测试。

举个例子------

当我们一提到某个非常熟悉的人的名字,脑海会立刻浮现对他的评价
"武大郎":憨厚,老实,为人坦诚,乐于助人
"潘金莲":美丽,"温柔","疼爱丈夫","善于交友","精通制衣"
张三要去卖瓜

用例1:张三这人不实诚,小心他缺斤少两

用例2:张三这人粗心,小心他的瓜被压坏了

用例3:张三这人小气,小心不要把他惹哭了

这个方法的缺点是难以系统化,并且过度依赖个人能力。

还是根据邮箱账号注册的案例,根据场景法来设计测试用例

案例:

以注册为例------

1、校验中特殊字符空格的处理?

2、密码校验中的大小写?

3、姓名中的特殊字符?

4、密码发送是否明文

**注意:**笔试的时候编写测试用例需要使用传统的编写方式,须完整写出测试用例以及必要要素。面试的时候只需要按照思维导图模式说出测试用例。

3.3 给"登录功能"设计测试用例

1、明确需求

2、使用万能公式+测试用例方法设计测试用例

3、按照测试用例对系统进行测试

3.4 测试用例设计练习

上面介绍设计测试用例以及方法已经介绍过web场景用例的设计(即"登录功能")。

接下来看看不同题型用例的设计。

3.4.1命令行程序

存在功能可以在命令行使用zip/unzip命令对文件进行解压缩,这样的场景如何来设计测试用例?

3.4.1.1 zip命令

**功能测试:**对不同的文件类型进行测试

1)普通的txt文件能够生成zip文件

2)图片/视频/zip文件能够生成zip文件

3)多个文件能够生成zip文件(混合文件)

4)空文件夹可以生成zip文件

5)错误的命令是否可以解压(zipzip/没有写压缩包文件名称/没有源文件)

6)其他参数的测试

界面测试:

1)文件压缩成功命令行提示是否美观
2)文件压缩报错命令行提示是否友好

性能测试:

1)文件大小超过1G时文件是否可以压缩
2)文件大小超过1G时文件压缩消耗的时间是否在合理的时间范围内

兼容性测试:

1)zip工具可以在多系统上使用,如Windows、Linux、Mac

易用性测试:

1)zip命令有使用帮助教程,如zip-help命令下会展示如何使用

安全性测试:

1)使用zip命令不会泄漏文件内容

3.4.2 web程序

现在我们对博客系统的博客详情页接口进行测试用例的设计

接口:博客系统

通过curl命令我们可以在命令行上请求接口,并对接口进行测试。

如何对当前接口设计测试用例呢?

不同的请求方式:

1、以GET方式请求接口是否可以返回预期的响应数据
2、以POST方式请求接口是否可以返回数据

参数组合(如果接口需要拼参数的情况下):

1、空参数
2、多参数
3、少参数
4、参数对应的值为空/过长/特殊字符...

不同的参数格式:

1、url拼参
2、form-data格式
3、raw格式等等

接口性能:

1、一千万个请求同时发起,是否能够返回响应
2、并发情况下响应时间是否在大众接受范围内

3.4.3 如何在页面打开开发者工具

1、快捷键:ctrl + shift + i,或者------

2、如下所示------

3.5 详解postman使用

3.5.1 postman是什么

对接口进行测试时,使用curl命令进行接⼝测试在操作上并不理想,实际在工作中我们常常使用接口测试工具来提供测试的质量和效率,常用的接口测试工具有postman。

3.5.2 postman使用教程(保姆级)

1、下载和注册

链接:postman官网

下载,这里就不多介绍了。

下载到桌面,点击图标进行初始化------

注册时直接用QQ邮箱或者网易邮箱注册即可。然后****给自己起一个昵称。

2、使用界面
3、使用
4、创建收藏夹

点击【New Collection】就可以创建新的收藏夹了------

3.5.3 实操

这里博主直接截长图啦------

本文的内容到这里就全部结束了,感谢您的阅读!


结尾

往期回顾:

【测试开发/测试】详解测试用例(上):测试用例、万能公式

**结尾:**本期我们继续学习了测试开发/测试内容中的用例篇,希望对学习测试开发/测试相关内容的uu有所帮助,不要忘记给博主"一键四连"哦!

🗡博主在这里放了一只小狗,大家看完了摸摸小狗放松一下吧!🗡

૮₍ ˶ ˊ ᴥ ˋ˶₎ა

相关推荐
wydaicls16 小时前
Linux 内核伙伴系统在快速路径分配内存时,对一个内存区域(Zone)进行水位线检查和内存压力评估的关键逻辑
linux·服务器
今天只学一颗糖16 小时前
Linux学习笔记--GPIO子系统和PinCtrl子系统
linux·笔记·学习
黄昏晓x16 小时前
Linux----权限
linux·运维·服务器
小白不想白a16 小时前
【shell】每日shell练习(系统服务状态监控/系统性能瓶颈分析)
linux·运维·服务器
一匹电信狗17 小时前
【MySQL】数据库的相关操作
linux·运维·服务器·数据库·mysql·ubuntu·小程序
bugtraq202117 小时前
为什么.NET的System.IO.Compression无法解压zlib流
linux·运维·服务器
咖啡教室17 小时前
每日一个计算机小知识:Linux
linux·后端
江公望19 小时前
Qt的QT_QPA_EGLFS_INTEGRATION环境变量浅解
linux·qt·qml
YuCaiH19 小时前
网络编程的基础知识
linux·笔记·嵌入式·网络通信
Siren_dream19 小时前
在VMware上运行Linux(我选择的是Ubuntu)
linux·运维·ubuntu