【测试】用例篇

news2025/1/22 17:47:25

努力经营当下,直至未来明朗!

文章目录

  • 一、设计测试用例的万能公式
  • 二、设计测试用例的具体方法
    • 1. 等价类
    • 2. 边界值
    • 3. 因果图(判定表)
    • 4. 场景设计法
    • 5. 正交法
    • 6. 错误猜测法
  • :sparkles: 小结


普通小孩也要热爱生活!

一、设计测试用例的万能公式

  1. 设计测试用例除了方法之外还需要我们尽可能的去想可能存在的情况。
  2. 设计测试用例原则:用例的设计不仅要考虑其实现了其应该实现的,还要考虑其未实现其不应该实现的
  3. 测试用例是否设计的越多越好?
    ① 在工作中,测试用例能更多的覆盖覆盖项目测试为最好
    ② 在面试中,测试用例设计的越多越好(因为考察的是设计测试用例能力以及思维发散能力)
  4. 设计测试用例的万能公式:【必备!!
    功能测试 + 性能测试 + 界面测试 + 兼容性测试 + 易用性测试 + 安全测试

① 功能测试:可能来自于需求文档,也可能来自于生活经验
② 性能测试:功能没有问题不代表性能一定是好的,性能往往表现在一些极端方面(如:高并发量、响应时间等)
③ 界面测试:颜色、形状、大小、材质[针对实物]; 文字、输入框、图片、下拉框…所有可以看到的元素[针对网页]
(工作中是根据设计图来设计界面测试用例的)
④ 兼容性测试:浏览器的兼容性、版本的兼容性、系统兼容性以及数据兼容性等
⑤ 易用性测试:软件是否具备简单易上手的属性(如引导、提示性文字等)
⑥ 安全测试:隐私数据是否加密(如用户界面密码的展示)、数据库里是否对隐私数据进行加密 [拒绝SQL注入与越权(垂直/水平越权)]

  1. 举例:设计水杯的测试用例:
    可以使用XMind进行设计【操作:enter创建同级目录,tab创建子目录】
    0

6.举栗子:对登录页面设计测试用例
1

2

  1. 兼容性测试中要注意:不同的浏览器、不同的版本可能会非常多,难道我们要所有的版本和浏览器都进行测试吗?我们选型的标准是什么?
    1)不是所有的版本和浏览器都要进行测试,这是无法实现的。
    2)选型标准:
    ① 大部分用户使用的
    ② 在工作中是有数据后台可以检测到大部分用户使用的浏览器/版本/手机型号等的,后台可以将这些数据进行检测和管理起来;此时我们就参考管理平台给出的数据进行选型。

二、设计测试用例的具体方法

  1. 笔试阶段:要根据 测试用例的要素来进行用例的编写。

测试用例的要素:即测试数据,只有当我们需要写出具体的测试数据时,才需要给出具体的数值。

面试的时候设计测试用例可以概要的去设计。

  1. ✨ 设计测试用例的具体方法
    1)基于需求的设计方法:根据万能公式来设计
    2)等价类
    3)边界值
    4)因果图(判定表法)
    5)正交排列
    6)场景设计法
    7)错误猜测法

1. 等价类

  1. 概念:依据需求将输入(特殊情况下会考虑输出)划分为若干个等价类,从等价类中选出一个测试用例,如果这个测试用例测试通过,则认为所代表的等价类测试通过,这样就可以用较少的测试用例达到尽量多的功能覆盖,解决了不能穷举测试的问题。
  2. 等价类其实就是:分区/分块的概念
  3. 等价类的划分:
    1)有效等价类:针对需求文档的要求是有意义的集合
    2)无效等价类:针对需求文档的要求是没有意义的集合
  4. 步骤:
    1)确认有效等价类和无效等价类
    2)编写测试用例
  5. 举栗子:
    输入密码正确是6~18位,则编写测试用例(具体到测试数据)
    ① 输入长度为6~18位密码,具体是10位
    ② 输入长度为小于6位密码,具体是2位
    ③ 输入长度为18位密码,具体是20位
  6. 补充:
    如果给出的不是范围,是具体的需求,那就针对这些需求都是有效等价类,除外的是无效等价类(无效等价类中挑选一些测试即可)

2. 边界值

  1. 该问题非常常见,非常容易发现问题
  2. 边界值是指:有效边界+无效边界/次边界值
  3. 举栗子:
    输入密码正确是6~18位,则边界值:
    ① 有效边界值:6、18
    ② 无效边界值:5、19
  4. 经典面试题
    假如浮点型的范围是[6,10],那么它的有效边界和无效边界是?
    ①单精度:4字节,有效位数8位
    ②双精度:8字节,有效位数16位
    ③所以:单精度:±0.00000001 ; 双精度:±0.0000000000000001

【单双精度浮点数的区别:单双精度】

3. 因果图(判定表)

  1. 其实类似于“判定表”,但是大部分书籍中都是因果图。

  2. 使用场景较少,使用场景是:输入条件的组合对应不同的结果

  3. 判定表设计测试用例的步骤:
    1)确认输入条件和输出条件
    2)找出输入条件和输出条件之间的关系
    3)画判定表
    4)根据判定表编写测试用例

  4. 举栗子:
    当订单使用了红包或者订单金额大于300元,则该订单是优惠订单,否则是不优惠订单。
    1)确认输入条件和输出条件
    ① 输入条件:红包A、订单大于300元B、提交订单C
    ② 输出条件:优惠订单1、无优惠订单2
    2)找出输入条件和输出条件之间的关系
    A B C AB AC BC ABC 非ABC(null)
    2 2 2 2 1 1 1 2
    3)画判定表(excel)
    5
    4)根据判定表编写测试用例

①有红包,金额不大于300元且订单没有提交,则是无优惠订单。
②没有红包,金额大于300元且订单没有提交,则是无优惠订单。
③没有有红包,金额不大于300元,订单提交,则是无优惠订单。
④有红包,金额大于300元,订单没有提交,则是无优惠订单。
⑤有红包,金额不大于300元,订单提交,则是优惠订单。
⑥没有红包,金额大于300元,订单提交,则是优惠订单。
⑦有红包,金额大于300元且订单提交,则是优惠订单。
⑧没有红包,金额不大于300元且订单没有提交,则是无优惠订单。

  1. 判定表法和因果图法其实步骤差不多,只是因果图法在画判定表之前多了一步“画因果图”。(但是画因果图很难,况且没有一个具体的画法,目前没有太大必要去研究)

4. 场景设计法

  1. 只是一个思路引导作用。告诉我们不能完全参考需求文档上写的基本流程,要尽可能多的思考实际可能存在的意想不到的情况。

  2. 概念:
    现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。该方法可以比较生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,是测试用例更容易理解和执行。

  3. 涉及概念:基本事件流(完成事件的正确流程顺序)和备选事件流(正常流程进行中各阶段可能存在其他情况)
    【基本事件流是最短的,因为备选事件流会在基本事件流的基础上额外增加一些其他情况】

  4. 举栗子:
    ATM取款:
    7

  5. 编写测试用例
    1)基本事件流:先插卡,然后输入密码,… ,最后退卡
    2)备选事件流:
    ① 插入卡之后,卡被ATM卡住,… ,最后退卡
    ② 插入卡之后,输入密码错误,… ,最后退卡

5. 正交法

  1. 用的比较少,基本很少见。

  2. 正交试验设计法是指从大量的试验中挑选出适量的、有代表性的点,根据“正交表”从而合理地设计出测试用例

  3. 了解“正交表”
    1)正交表的表示,如:L4(23),其中4代表4组试验/4行(也就是4个测试用例),3代表的是因素数/2列(也就是输入条件个数),2代表每个因素数对应的水平数(也就是每个输入条件的可能选项)
    2)正交表特点:
    每一列中,不同的数字出现的次数相同。(也就是水平数出现次数相同,但是各列之间的数字可以不同)
    任意两列中数字的排列方式齐全且均衡。(每个组合出现的次数相同)

  4. 根据正交表设计测试用例的步骤:
    1)找出因素数和水平数
    2)生成正交表,需要借助生成正交表的工具allpairs
    3)根据正交表来编写测试用例
    4)补充可能存在遗漏但是非常重要的测试用例

  5. 举栗子:
    注册页面:姓名、电子邮箱、密码、确认密码、验证码。(也就是:因素)
    每个因素对应的水平数都是:填写 or 不填写
    8

1)找出因素数和水平数
① 因素:姓名、电子邮箱、密码、确认密码、验证码
② 水平:填写、不填写
2)使用allpairs生成正交表
①在excel中创建因素和水平,并进行复制
9

②打开pairs的文件夹,创建一个txt文件,并将刚刚的复制粘贴并保存
③然后使用cmd打开pairs所在的路径,然后 allpairs.exe 刚刚的文件 > 生成正交表的文件(不用手动创建,自己会生成)
10
④ 正交表
11

利用allpairs生成的正交表跟实际的正交表可能有出入,但是仍然不影响我们使用allpairs生成正交表。

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

①填写姓名、电子邮箱、密码、确认密码、验证码。
②填写姓名,不填写电子邮箱、密码、确认密码、验证码。
③填写电子邮箱、确认密码,不填写项目、密码、验证码。
④填写密码、验证码,不填写姓名、电子邮箱、确认密码。
⑤填写姓名、电子邮箱、密码,不填写确认密码、验证码。
⑥填写确认密码、验证码,不填写姓名、电子邮箱、密码。

4)补充可能存在遗漏但是非常重要的测试用例

⑦ 全部都不填写姓名、电子邮箱、密码、确认密码、验证码。

  1. 如何使用allpairs生成正交表?
    1)将水平和因素写入excel(其他工具也可以,但是不推荐)
    2)在allpairs同级目录下创建一个新的txt文件,复制excel中的 因素数和水平数 粘贴到该txt文件中。直接保存(ctrl + s),不要做任何其他操作
    3)使用allpairs工具生成正交表(cmd):先cd到pairs路径,然后allpairs.exe 刚刚的文件 > 生成正交表结果的文件(不用手动创建,自己会生成)

6. 错误猜测法

  1. 概念:
    错误猜测法是对被测试软件设计的理解,过往经验以及个人直觉,推测出软件可能存在的缺陷,从而针对性地设计测试用例的方法。
  2. 依赖测试人员的工作经验和积累

✨ 小结

  1. 设计测试用例的万能公式:功能测试+性能测试+界面测试+兼容性测试+可用性测试+安全测试。
  2. 设计测试用例的具体方法:等价类、边界值、因果图(判定表:输入条件组合)、场景设计法(基本事件流和备选事件流)、正交法(allpairs)、错误猜测法(个人经验)。

yyy

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/151598.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JS数据类型判断的九种方式

JS 的数据类型检测是一道经典的八股文面试题。相信大家都能条件反射的回答出 4 种方法:typeof、constructor、instanceof 和 Object.prototype.toString,并且对它们各自的优缺点也是张口就来。 本文对这些方法做了简单归纳,同时又补充了其他…

Leetcode:112. 路径总和、113. 路径总和 II(C++)

目录 112. 路径总和: 问题描述: 实现代码与解析: 递归: 原理思路: 迭代: 原理思路: 113. 路径总和 II: 问题描述: 实现代码与解析: 迭代&#xff…

分享66个NET源码,总有一款适合您

NET源码 分享66个NET源码,总有一款适合您 NET源码下载链接:https://pan.baidu.com/s/1-H0UV3yly3p1PXbeLAvMtA?pwdk06f 提取码:k06f page_count 1 # 每个栏目开始业务content"text/html; charsetgb2312"base_url "http…

go defer return panic 执行顺序

根据代码实例运行结果来总结说明:定义一个函数,有多个defer (用于判断多个defer执行顺序),有panic和 return (判断与defer对比执行顺序)一、函数中有panicpackage mainimport "fmt"fu…

【矩阵论】8. 常用矩阵总结——秩1矩阵,优阵(单位正交阵),Hermite阵

矩阵论 1. 准备知识——复数域上矩阵,Hermite变换) 1.准备知识——复数域上的内积域正交阵 1.准备知识——Hermite阵,二次型,矩阵合同,正定阵,幂0阵,幂等阵,矩阵的秩 2. 矩阵分解——SVD准备知识——奇异值…

【性能调优】【离线任务】flink处理离线任务(8000个小文件?200多亿数据量?)稳定性与性能调优探索

文章目录一、场景描述1. 任务类型描述2. 问题任务二、相关理论1.Task Slots and Resources1.1. slots与资源的隔离和共享1.2 建议cpu和slot数关系2. tm的资源配置是否合适2.1. flink load problems2.2. 阿里 flink资源配置建议三、问题分析与解决1. 测试结果比对1.1. 任务11.2.…

小程序学习(2)-----常用的各类组件

新建项目 项目->新建项目-小程序,如下图所示 新建小程序页面 只需要在 app.json->pages 中新增页面的存放路径,小程序开发者工具可帮我们自动创建对应的页面文件,如图所示: 2.常用的视图容器类组件 ① view 普通视图区域类…

Java基础算法每日5道详解(3)

136. Single Number 单号 Given a non-empty array of integers nums, every element appears twice except for one. Find that single one. You must implement a solution with a linear runtime complexity and use only constant extra space. 给定一个非空整数数组 nu…

在Multisim导入TI提供的SPICE模型

对在multisim中导入TI模型的一个记录。 multisim中只有常规的元器件,对于很多元器件multisim都没有相应的模型,这就需要手动导入了。 Multisim导入模型1、从官网下载相应的模型文件2、在Multisim中导入模型3、写在后面1、从官网下载相应的模型文件 &…

c/c++ 函数(一) setw()、isdigit()、isalpha()、atoi()、itoa()

目录 1、setw(int n) <iomanip> 2、int isdigit(char ch) <ctype.h> 3、int isalpha(int c) <ctype.h> 4、int atoi(const char* str) <stdlib.h> 5、char* itoa(int num) <stdlib.h> 1、se…

Linux 基本权限

目录 1 shell命令以及运行原理 1.1 理解 1.2 意义 2 Linux权限的概念 2.1 概念 2.2 用户分类 2.3 Linux文件属性 2.4 Linux文件权限 2.4.1 文件访问者的分类&#xff08;人&#xff09; 2.4.2 root&&普通用户 vs 拥有者&&所属组&&other 2.4…

异步架构,避免相互依赖的系统耦合

前言&#xff1a; 使用缓存架构可以减少不必要的计算&#xff0c;快速响应用户请求&#xff0c;但是缓存只能改善系统的读操作性能&#xff0c;也就是在读取数据的时候&#xff0c;可以不从数据源中读取&#xff0c;而是通过缓存读取&#xff0c;以加速数据的读取速度。 但是…

vulnhub DC系列 DC-6

总结:wpscan爆破&#xff0c;nmap提权 下载地址 DC-6.zip (Size: 619 MB)Download: http://www.five86.com/downloads/DC-6.zipDownload (Mirror): https://download.vulnhub.com/dc/DC-6.zip使用方法:解压后&#xff0c;使用vm直接打开ova文件。 漏洞分析 信息收集 这里还是使…

4. 数据处理:用R语言实现【多路替换】真高效!!

b站课程视频链接&#xff1a; https://www.bilibili.com/video/BV19x411X7C6?p1 腾讯课堂(最新&#xff0c;但是要花钱&#xff0c;我花99&#x1f622;&#x1f622;元买了&#xff0c;感觉讲的没问题&#xff0c;就是知识点结构有点乱&#xff09;&#xff1a;https://ke.qq…

Linux中的vim最小集、指令集及其配置

目录 1. vim 最小集 2 vim指令集 2.1 命令模式的指令 2.1.1 插入模式 2.1.2 移动光标 2.1.3 删除文字 2.1.4 复制 2.1.5 替换 2.1.6 撤销 2.1.7 更改 2.1.8 跳至指定的行 2.1.9 shift ~:快速大小写切换 2.2 末行模式的指令 2.2.1 set nu/set nonu 2.2.2 vs file…

【自学Python】Python变量

Python变量 Python变量教程 不论是使用哪种高级程序语言编写程序&#xff0c;变量都是其程序的基本组成单位。变量相当于内存中一个数据存储空间的表示&#xff0c;通过变量名可以访问到变量的具体的值。 Python变量 Python 是弱类型语言&#xff0c;因此 Python 变量无须声…

Hudi的核心概念 —— 时间轴(TimeLine)

文章目录时间轴&#xff08;TimeLine&#xff09;时间轴&#xff08;TimeLine&#xff09; 就是一个时间线&#xff0c;它的每一个操作都记录在内&#xff0c;每一个时刻&#xff0c;你做了什么事情&#xff0c;对某一个时刻&#xff0c;记录一个时刻的数据 Hudi 的核心是维护…

擎创运维大数据治理解决方案,荣膺金融业数字化转型突出贡献奖

近日&#xff0c;由《金融电子化》杂志社主办的“2022中国金融科技年会暨第十三届金融科技应用创新奖颁奖典礼”成功于线上举办。擎创科技“运维大数据治理解决方案”&#xff0c;荣膺“2022科技赋能金融业数字化转型突出贡献奖”。人民银行《金融科技发展规划&#xff08;2022…

C++ string类

在c语言中&#xff0c;我们想要记录字符串需要创建一个字符串的数组&#xff0c;而c则提供了另一种方式&#xff1b; 也就是这篇博客所说的string类&#xff1b; string类 #include<string> 作为字符串数组的升级版&#xff0c;string类自然也有它的独特之处——可变长数…

自动驾驶标定基础知识

目录基础概念1. 缩略语2. 为什么需要外参标定3. 基于使用场景的标定分类4. 基于方法的分类5. 基础坐标系6. 超差EOL标定1.EOL特点2. EOL标定流程3. EOL标定软件约束4. EOL标定软件流程5. 算法设计原则6. 算法基本原理背景式标定1.背景式标定的特点2. 背景式标定运行流程3. 背景…