【测试开发】用例篇 · 熟悉黑盒测试用例设计方法(2)· 正交表 · 场景设计 · 常见案例练习
【测试开发】用例篇(2)
文章目录
- 【测试开发】用例篇(2)
- 1. 正交表法
- 1.1 什么是正交表
- 1.2 两个重要概念
- 1.3 如何通过正交表设计测试用例
- 1.3.1 充分理解需求
- 1.3.2 确定因素、确定水平
- 1.3.3 allpairs画正交表
- 1.3.4 补充正交表
- 1.3.5 将正交表转换成测试用例
- 2. 场景设计法
- 2.1 场景
- 2.2 如何通过这个方法设计测试用例
- 2.2.1 充分理解需求
- 2.2.2 确定主事件流
- 2.2.2 确定次事件流
- 2.2.3 一个事件流就是一个测试用例
- 3. 错误猜测法
- 4. 常见案例练习
- 4.1 用FIddler代理来模拟弱网
- 4.2 接口测试
- 4.3 对冒泡排序进行测试
- 4.4 Linux的zip命令
- 4.4.1 功能测试
- 4.4.2 界面测试
- 4.4.3 性能
- 4.4.4 安全
- 4.4.5 可视化压缩工具测试用例设计
- 4.5 水杯测试用例设计(水杯是一个实体)
- 4.6 微信发送朋友圈设计测试用例(软件的一个模块)
【测试开发】用例篇(2)
1. 正交表法
1.1 什么是正交表
最简单的正交表是L4(23),含意如下:
- “L”代表正交表
- L角的指数“4”表示有 4 横行,简称行,即要做四次试验
- 括号内的指数“3”表示有3 纵列,简称列,即最多允许安排的因素是3 个
- 括号内的数“2”表示表的主要部分只有2 种数字,即因素有两种水平1与2(每一个变量的取值只有两种)
正交表的特点是其安排的试验方法具有均衡搭配特性。
1.2 两个重要概念
因素:输入的变量
水平:每一个输入变量(因素)的取值
以下是一个正交表:
试验号/列号 | 1 | 2 | 3 | 4 |
---|---|---|---|---|
1 | 1 | 1 | 1 | 1 |
2 | 1 | 2 | 2 | 2 |
3 | 1 | 3 | 3 | 3 |
4 | 2 | 1 | 2 | 3 |
5 | 2 | 2 | 3 | 1 |
6 | 2 | 3 | 1 | 2 |
7 | 3 | 1 | 3 | 2 |
8 | 3 | 2 | 1 | 3 |
9 | 3 | 3 | 2 | 1 |
正交表的两条性质:
- 每一列中各数字出现的次数都一样多
- 如何两列中各有序数对出现的次数一样多
以此正交表为例:
对于第一条:
- 1出现的频次是12
- 2出现的频次是12
- 3出现的频次是12
第一条每一列:
- 1出现3次
- 2出现3次
- 3出现3次
对于第二条:
- 可用第一条推出
1.3 如何通过正交表设计测试用例
- 充分理解需求
- 确定因素、确定水平
- 画正交表
- 补充正交表
- 将正交表转换成测试用例
1.3.1 充分理解需求
针对一个注册案例进行设计测试用例:姓名、邮箱、密码、确认密码、验证码必须全部输入,才能进行注册
1.3.2 确定因素、确定水平
因素:
- 姓名
- 邮箱
- 密码
- 确认密码
- 验证码
水平:
- 填写
- 不填写
1.3.3 allpairs画正交表
- 将因素和水平放在Excel表格中
-
在allpairs的安装路径下创建一个文本文件:
- 请自行下载安装allpairs
- 请自行下载安装allpairs
-
复制粘贴刚才的表格
- 通过命令行生成正交表
- 查看生成的正交表
- 在Excel表中查看(复制粘贴)
- pairings等等东西目前不需要注意
- ~填写的意思是,可以是填写也可以是不填写,但是要保证正交表的那个特性!
例如:
1.3.4 补充正交表
比如补充一条测试用例,全部都不填写的情况
补充正交表,不需要保证仍是正交表,补充的例子是我们人为写的,特别关注的测试用例~
1.3.5 将正交表转换成测试用例
当然,在这里,我们的两个水平是两个分类,所以这更像是在划分测试点,因为它没全包含测试用例的几个要素:
- 所以要进行补充测试要素
正交表在测试用例设计中有重要的意义
- 它是一种有效的测试用例设计技术,可以帮助测试人员在有限的资源和时间下,优化测试覆盖率,发现更多的缺陷。
正交表的科学依据源于统计学的设计理论
- 它可以通过有效的组合和排列,提供一组最小的测试用例
- 同时覆盖了系统中可能存在的多个独立因素或因素组合
通过使用正交表,测试人员可以在较少的测试用例数量下,覆盖更多的场景,减少测试的工作量和时间成本
2. 场景设计法
2.1 场景
针对用户使用软件的一系列操作,形成的一个场景
- 例如点外卖:想吃什么类型的 => 想吃哪个商家 => 想吃哪道菜 => 选择菜品指标 => 填写地址和联系方式 => 备注+支付 => 提交订单 => 商家接单 => 商家出单 => 骑手接单 => 骑手送货 => 用户收到外卖 => 用户评论
而按照这条路线,如果每个环节都没出现啥问题,是可以进行完毕的,这就是“主事件流”
- 其中几个环节是可能出现问题的
- 如没有这个类型的餐厅、商家未营业、此菜售空/下架、地点不配送、钱不够…
- 而这种只进行主事件流部分就“宣告失败”的,称为“次事件流”
2.2 如何通过这个方法设计测试用例
- 充分理解需求
- 确定主事件流
- 确定次事件流
- 每一个事件流就是一个测试用例
2.2.1 充分理解需求
以ATM取款场景为例
2.2.2 确定主事件流
-
插卡
↓
-
输入密码
↓
-
选择业务
↓
-
选择金额
↓
-
出钞
↓
-
取卡
2.2.2 确定次事件流
各个环节可能出现的问题:
主事件流:
次事件流:
2.2.3 一个事件流就是一个测试用例
对于每个事件流,补充测试要素即可~
3. 错误猜测法
依据测试人员经验(根据遇到过的错误,进行合理猜测)
所以没啥可讲的,重点在多看多练多实践…
常见的有:
- 注册:
- 校验特殊字符(例如空格)的处理
- 密码校验的大小写
- 姓名中的特殊字符
- 密码发送是否明文
- …
4. 常见案例练习
4.1 用FIddler代理来模拟弱网
打开速度影响,根据用户相关规则,影响网络条件:
查看用户相关规则:
出现一个脚本:
ctrl + f 查找:
找到这个设置相关代码:
- 传输1KB花费时间300ms
- 下载1KB花费时间150ms
- 这个数值设置得越大,网络越差越弱
4.2 接口测试
这里的接口就是前后端交互的接口,不是我们的接口类,但是本质上就是一个名词,差不多就那个意思,接口其实就是一些方法的集合罢了,而在此处,接口就是前后端交互的通道,而接口测试,其实就是模拟前端发送请求走这个通道给后端~
所以,就需要我们的一个软件=> Postman,其使用不再赘述
- 参考此博文的2.5:【JavaEE】HTTP状态码-HTTP数据报的构造_s:103的博客-CSDN博客
可以结合fiddler/浏览器进行抓包,找到接口,复制url,通过Postman构造请求进行发送
- 请求的内容也可以仿造已有的包,结合实际测试内容去构造
- fiddler在进行其他测试的时候,注意关闭弱网
个人比较习惯用fiddler的Raw,用记事本去看,这样可以一眼看全部,当然如果对http请求和响应还不是很熟练,可以看看浏览器和fiddler其他的一些按钮,可以可视化的看到一些信息,自行研究!
对于复制请求,在postman上粘贴,我建议使用浏览器:
- 需要刷新,然后在这里看到接口
在postman进行import:
粘贴:
点击send,就相当于向该接口发起了一次请求
针对参数进行测试(传递所有参数、传递部分参数、不传递参数、传递其他的参数、改变参数的值…)
- 你可以试一下对自己的网站的注册功能进行测试,比如空用户名/空昵称进行注册,看看是否注册成功~
针对性能进行测试
- 后面讲解性能测试的时候再细说
4.3 对冒泡排序进行测试
这里是一类问题,就是对代码的测试,涉及白盒测试,于进阶篇讲解!
4.4 Linux的zip命令
4.4.1 功能测试
- 压缩的是一个目录,或者是一个文件
对test目录进行压缩:
zip使用手册:
对111.txt文件进行压缩:
对nohup.out进行压缩
- 对于nohup.out文件的介绍:nohup.out是什么文件?nohup.out如何写?_一棵小白菜#的博客-CSDN博客
4.4.2 界面测试
- 其实这就是界面,只不过是在命令行显示~
压缩信息要提示正确!
4.4.3 性能
对于5G网络条件下和压缩1KB大小的目录/文件,性能怎么样!
4.4.4 安全
压缩完文件,下一次解压文件不能损坏!
4.4.5 可视化压缩工具测试用例设计
跟上面的测试点一致,只不过现在是用户能看到的可视化页面了~
- 针对这些测试点,结合我们的测试用例设计方法,去设计测试用例即可~
4.5 水杯测试用例设计(水杯是一个实体)
这是一道测试实体题
水杯是真水杯,不是啥专业名词
列出万能公式:
一些测试点可能适合在不同的划分里,不要太刻意去区分,这里不需要太严格!
- 写测试点,是没有标准答案的!合理发挥即可,不要太大压力!
- 可能我没想到的你想到了,由你进一步发挥!
补充测试点:
4.6 微信发送朋友圈设计测试用例(软件的一个模块)
这是一道测试软件模块题
列出万能公式:
- 如果这个划分不够全面,再进行补充~
对于xss漏洞,就是web中嵌入了恶意脚本代码,导致脚本语言被执行,文本不显示等等的问题…
- 不是重点,不做赘述,参照博文:什么是XSS漏洞—漏洞原理学习_xss漏洞原理_Ping_Pig的博客-CSDN博客
文章到此结束!谢谢观看
可以叫我 小马,我可能写的不好或者有错误,但是一起加油鸭🦆!我们应该根据具体情况打出组合拳,才能设计出好的测试用例!
相关文章:

【测试开发】用例篇 · 熟悉黑盒测试用例设计方法(2)· 正交表 · 场景设计 · 常见案例练习
【测试开发】用例篇(2) 文章目录 【测试开发】用例篇(2)1. 正交表法1.1 什么是正交表1.2 两个重要概念1.3 如何通过正交表设计测试用例1.3.1 充分理解需求1.3.2 确定因素、确定水平1.3.3 allpairs画正交表1.3.4 补充正交表1.3.5 将…...
【ES】笔记-数值扩展
数值扩展 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>数值扩展</title> </head> &l…...
浅谈Rust内存管理
Rust因在内存管理上的独到之处,近年来受到了不少开发者的青睐。Rust内存管理的核心功能就是所有权。不同的语言采取了不同的内存管理方式,主要分为开发者手动管理或者编译器辅助管理,以及垃圾回收机制等。Rust的所有权机制,有别于…...
Vue路由跳转至页面后多次渲染
在 Vue 中,当你跳转到一个新的路由或者重新加载当前路由时,由于 Vue Router 或其他路由管理工具的机制,会导致该页面组件重新渲染多次的情况发生。这可能是因为以下原因: 组件复用:Vue Router 默认情况下会尝试复用已经…...

CDH大数据平台集群部署
文章目录 1. 资源准备2. 部署 Mariadb 数据库3. 安装CM服务4. 安装数据节点5. 登录CM系统 1. 资源准备 准备好CDH安装包资源,官方网站下载需要账号,如果没有账号可以去网上到处搜搜。主要涉及到的资源有: cloudera-manager-servercloudera-m…...

基于springboot+vue的校园资产管理系统
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…...
@RequestMapping 注解使用技巧
一、RequestMapping 基础用法 用于将任意HTTP 请求映射到控制器方法上。 RequestMapping表示共享映射,如果没有指定请求方式,将接收GET、POST、HEAD、OPTIONS、PUT、PATCH、DELETE、TRACE、CONNECT所有的HTTP请求方式。GetMapping、PostMapping、PutMapp…...
AtCoder 265G 线段树
题意 传送门 AtCoder 265G 012 Inversion 题解 直接维护逆序对数量比较困难,考虑到元素值域很小,直接将不同数值对解耦进行维护。具体而言,线段树维护区间 0 , 1 , 2 0,1,2 0,1,2 的数量,以及满足 i < j i<j i<j 时…...

通俗易懂了解大语言模型LLM发展历程
1.大语言模型研究路程 NLP的发展阶段大致可以分为以下几个阶段: 词向量词嵌入embedding句向量和全文向量理解上下文超大模型与模型统一 1.1词向量 将自然语言的词使用向量表示,一般构造词语字典,然后使用one-hot表示。 例如2个单词&…...
Vim - 快速插入C语言函数注释模板
背景 C语言使用vim编写时,需要快速对函数进行说明头插入; 代码 function! InsertCFunctionHeader()" 获取当前行内容let line getline(.)" 匹配 C 函数定义let matched matchlist(line, ^\s*\w\ \\(\w\\)(\(.*\)))" 如果当前行不是函…...

Leetcode171. Excel 表列序号
给你一个字符串 columnTitle ,表示 Excel 表格中的列名称。返回 该列名称对应的列序号 。 例如: A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ... 题解:力扣(LeetCode)官网 - 全球极客挚爱…...
自主设计,模拟实现 RabbitMQ - 实现 拒绝/否定 应答机制
目录 一、拒绝/否定 应答机制 1.1、需求分析 什么是 拒绝/否定 应答呢?...

在github上设置不同分支,方便回滚
在github上设置不同分支,方便回滚 步骤可能出现的问题couldnt find remote ref gpuVersion1. 确保您处于正确的分支2. 添加并提交更改(如果还未进行)3. 推送本地分支到远程仓库4. 验证操作 步骤 之前在github上上传了一个项目代码,…...

【Elsevier旗下】JCR2/3区,最快25天录用!计算机与娱乐、教育、游戏、新媒体均可
期刊简介: 出版社:Elsevier 影响因子(2022):2.5-3.0 期刊分区:JCR2/3区,中科院4区 检索数据库:SCIE 在检 数据库检索年份:2016年 预警情况:无中科院预警…...

TSINGSEE视频AI智能分析技术:水泥厂安全生产智能监管解决方案
一、方案背景 随着人工智能技术的快速发展以及视频监控系统在全国范围内的迅速推进,基于AI视频智能分析技术的智能视频监控与智慧监管系统,也已经成为当前行业的发展趋势。在工业制造与工业生产领域,工厂对设备的巡检管理、维护维修、资产管…...

Whisper + NemoASR + ChatGPT 实现语言转文字、说话人识别、内容总结等功能
引言 2023年,IT领域的焦点无疑是ChatGPT,然而,同属OpenAI的开源产品Whisper似乎鲜少引起足够的注意。 Whisper是一款自动语音识别系统,可以识别来自99种不同语言的语音并将其转录为文字。 如果说ChatGPT为计算机赋予了大脑&…...
795. 区间子数组个数
795. 区间子数组个数 给你一个整数数组 nums 和两个整数:left 及 right 。找出 nums 中连续、非空且其中最大元素在范围 [left, right] 内的子数组,并返回满足条件的子数组的个数。 生成的测试用例保证结果符合 32-bit 整数范围。 示例 1:…...

Request method ‘GET‘ not supported,不支持GET形式访问
org.springframework.web.HttpRequestMethodNotSupportedException: Request method ‘GET’ not supported 原因:异常提示的很明确,请求不支持GET方式访问,出现这种问题一般都是由于限制请求接口为POST,然后使用GET形式访问造成的…...

数据结构与算法(C语言版)P2---线性表之顺序表
前景回顾 #mermaid-svg-sXTObkmwPR34tOT4 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-sXTObkmwPR34tOT4 .error-icon{fill:#552222;}#mermaid-svg-sXTObkmwPR34tOT4 .error-text{fill:#552222;stroke:#552222;}#…...

AI写文章软件-怎么选择不同的AI写文章软件
在如今信息爆炸的时代,无论是学生、职场人士,还是创作者和企业家,写文章都是一项常见而又重要的任务。然而,随着科技的不断进步,AI写文章的软件也逐渐走进了人们的视野。 147GPT批量文章生成工具www.147seo.com/post…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...

【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...

Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...

视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...

力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...