测试用例设计分析&场景
测试用例如何设计
写在一面反思后 目前的测试思维还是太差了
想要思考出一套适合自己的方法论
当我们拿到一个场景题 想要来设计一个具体场景的测试用例的时候
我应该怎么去思考?
将不同情景下的需求都抽象出来 根据产品实现的多个方面进行抽象
有什么方面?功能 性能 安全 UI 兼容性
功能
功能首先就是 对于该场景下的这一部分 他是否完成所需要实现的功能
这里我将他归类为普遍功能和特殊功能 通过产品本身的性质进行定义
所谓的普遍功能 本质上就是说 同类型的其他产品都会实现的一些功能 以及他们都会接触到的一些测试用例
例如说搜索框和大模型QA中的输入相关 例如说购物车和售货机 他是否可以跳转支付
所谓的特殊功能就是在这一个场景下的具体差异实现
例如说搜索框的搜索跳转与大模型QA中的文本生成回复 购物车的网购和售货机的货物弹出
以及针对拆分出的各个模块 分别测试他的所对应边界值(异常处理) 以及处理措施
该两者也是这一部分的一大组成
性能
然后就可以从性能这方面进行思考 性能本身是很难量化的 所以我们可以借助一些数据来体现他
同样可以从两个方面进行体现 一个是正常服务状态下的 一个是高负载状态下(压力测试)
正常服务状态下 单次请求 访问的耗时时间是?
高负载情境下 单次请求 访问的耗时时间是?(情境下可能由于网络波动或系统设计调控 调用效率会受到改变)
这是宏观意义上的 某种程度上也是比较普遍的思考方式
同样也可以用在具体特殊场景下某一板块的具体效率下(例如说支付这一过程中 从跳转至支付完成的耗时与金额交易模块间的耗时)
高负载下同理
可以看出除了某些每个场景都适用的用例 该方向下的用例设计一般都是针对于具体单模块而言的
这种时候 问题也就演变成分割了 即 将可以将程序整体分割为什么模块
(大模型QA = 输入 + 搜索/推理 + 文本生成)(自动售货机 = 选货按下按钮 + 确定信息 + 跳转支付 + 出货)
从分割出的各个板块中我们就可以依次进行设计了
以上的思考是 正常/高负载情况下 单次访问的效率
另外一个思考的方面是高并发(往压力测试上靠)
但是具体的思考方式还是差不多的 依然是一个分治(准确来说是拆分的思想)
将程序的整体分割成多个模块进行思考 然后分析在该模块下 有哪一些高并发的板子可以套
例如说 自动售货机最多可以容纳多少个人同时购买(同时支付) —— 本质上其实也就是求这个功能的最大并发量
再例如说 大模型同时可以容纳多少个人同时调用 & 大模型最多同时容纳多少推理和网络搜索的请求 —— 同求最大并发量
这是在业务模块上的思路 还有一个就是系统硬件资源上的监控
在高并发 & 正常情况下 平均的系统资源的占用情况是?
这个也可以往细了说 但是往细钻研 就不是测试的范畴了 而是系统设计 后端和架构上的问题了
例如说 高并发下某个中间件是导致性能瓶颈的原因 为了提高性能 需要根据某个地方进行高度定制化(些许笼统)
安全
整体思路其实还是差不多的 将程序整体拆分成各个模块 然后根据主题将其拆分
这里的主题是安全 通俗的说法其实就是 将自己假设成为一个攻击者 面对现有的这个程序 你会怎么进行攻击?
也就是 面对程序的每一个部分 如果可以攻击的话 你会怎么去攻击
就算你的想法多扯淡 如果性质是合理的话 感觉也都是可取的 (物理攻击自动售货机会让他吐出货物吗)
例如说大模型调用中的 输入模块 进行SQL注入 短时间多次调用 看是否限流
如果思考不到 另外一个思路是 联想在写项目中遇到的奇怪的bug 然后将他们的触发时机归因(后端经验转化)
怎么去攻击这个说法 会有点笼统 而且多少有点无从下手
这里说两个普遍的 权限认证和数据加密两个方面
(是否可以绕过权限认证实现某些功能 —— 功能是否有做鉴权)
(数据的存储和传送中是否有加密 —— 数据是否存在被截取的风险 如果存在 是否可浮现原数据)
UI
这个也可以套用一样的思路
套入的板子就是 是否好看+实用 前端/硬件/可视化界面/操作界面交互是否有bug 是否显示正常
具体就不举例子了
分辨率 适配机型 屏幕分辨率适配
兼容性
在这个方面上就不需要拆分模块了 而是将程序作为一个整体思考(运行环境上的思考)
Web应用在不同浏览器上是否兼容 IE Chrome
硬件 可以往材质上思考 这个材质是否会导致他的运行环境受限(自动售货机能否在高温低温室内室外高湿低湿场景下工作)
软件 可以往平台上思考 是否兼容安卓 鸿蒙 苹果 或者兼容在具体的操作系统 可移植性可拓展性思考(大模型应用平台是否支持第三方/新兴大模型接入)
以上是方法论 但是 方法论归方法论 重要的是在实际测试中能够灵活地根据不同的场景调整和优化测试方案。
拆分模块 + 主题 + 运行环境 + 普遍or特殊
测试用例设计场景:自动售货机
功能
是否可以按下按钮代表选中售货
是否可以在售货系统中选择售货
是否可以支持手机扫描二维码操作售货
对于单一物品 最大支持卖多少个(数量)
对于多个物品 一次性最多可以买多少种(种类)
对于物品 是否可以购买0个或负数个
对于物品 支付的时候 是否能正确计算数值
对于支付 售货系统是否可以正确跳转支付
对于支付 售货系统支付后是否可以正确出货
对于支付 支付的时候取消会不会出货 会发生什么
对于支付 是否存在超时机制
对于支付 支付失败的时候售货系统是否会反馈
对于出货 支付成功的时候出货口物品是否卡住
对于物品 物品数量售货 商品状态异常的时候 是否有提示
对于物品 购买数量大于剩余数量的时候 是否有提示
对于物品 售货之后 物品是否会往前补充 补充是否及时
是否保证售货机内物品的温度 湿度 等参数
是否可以将支付日志同步到云端中
是否支持多个支付渠道
性能
单次售货 自选择物品到支付成功的耗时时间
单次售货 选择物品所平均响应时间
单次售货 支付所耗费的时间
单次售货 跳转到支付的耗费时间
单次售货 支付成功后物品出货的时间
最多可以容忍多少个人同时支付
最多可以容忍多少个物品同时出货
补充货物的效率 频率是?
安全
多用户同时购买同一物品时 是否会存在竞态问题
是否可以通过物理攻击 物理冲撞 撞出物品
硬件的坚固程度
售货系统中数据传输是否加密
售货系统中是否可以植入脚本
被迁移或者攻击的时候 是否存在报警机制
UI
按钮是否明显 操作按钮是否流畅
货物是否直观
售货系统是否易于操作
售货系统在不同分辨率下的页面显示是否合理
货物已售空时是否存在提示
是否存在提示当前货物的出售情况
是否存在提示当前货物的货物正在出售中
是否存在提示物品的补货时间
兼容性
是否可以在不同温度下工作
是否可以在断电情况下工作
如果是电池的话 单次工作的最长时间是?
是否可以在室内工作
是否可以在室外工作
系统平均工作年龄是多少
测试用例设计场景:微信红包
整个红包可以总体分为发红包和抢红包
然后发红包可以分解为 扣除金额 包红包(发出金额) 抢红包可以分为 抢(是否抢到) 金额处理 余额处理
功能
红包是否能正常发出去
单个红包的金额上线是多少
单个红包最多多少个人抢
单个红包的金额能否为0或负数
单个红包的发出去之后 余额是否有改变
红包是否可以以多种模式发送 (口令 拼手气 普通)
红包的金额中能否输入非数字和小数点的符号
红包的金额中是否能输入两个以上小数点
红包的红包描述(输入框) 是否能输入非法字符
红包描述最多的字数是?
红包描述和金额能否复制粘贴
红包描述能否为空
红包描述是否能输入特殊符号和表情等
红包描述中若有特殊符号表情相关 能否正常将其进行渲染出来
红包发出去之后自己能不能抢
如果是普通模式 红包的金额与人数之间不均怎么办
如果是拼手气模式 金额的随机即伪随机是否会存在固定的概率
红包发出去之后 余额是否会有修改
红包发出去之后 是否会存在日志或者发出记录可查看
抢红包的时候 抢到的话余额是否会有修改
抢红包的时候 如果没有抢到红包(会不会有提示指明红包当前的异常状态)
红包超时的话 会不会将原金额退回给发送者
抢红包的时候 抢完了或者红包已经超时会不会有提示
抢红包的时候 红包的剩余个数和剩余金额的剩余情况 是否有体现
抢红包的时候 如果是拼手气红包 是否会显示出当前手气最佳的人
包红包的时候 是否可以自定义红包封面
红包封面的获取渠道和自定义渠道
红包封面最多的可存储个数
抢红包的时候 当前的红包封面是否可以正常渲染
红包抢完之后 有没有提示当前红包抢完所耗费的时间
抢红包的时候 红包的描述是否有体现出来
抢红包之后 余额的修改记录或领取红包的记录是否会有增加
发红包的时候 支持什么支付渠道
抢红包的时候 默认是打到什么渠道当中
性能
同一时刻内 最多可以多少个人同时抢红包
网络正常的前提下 单次抢红包所需要耗费的平均时间是?
网络正常的前提下 单次包红包所需要耗费的平均时间是?
网络差的前提下 抢红包和包红包所会带来的延迟分别是多少?
网络差的话 相比网络正常或良好 会对抢红包的速率带来什么样的影响
红包封面的分辨率和渲染度为多少
同一时刻内 可以允许多少个人同时发出红包
在发出红包的时候 突然间网络卡顿 此时红包还未发出 会发生什么
在抢红包的时候 突然间网络卡顿 此时虽然点了抢红包但是网络断开了 此时会发生什么
在包红包的时候 在确定金额和支付的时候 突然间人为终止这个行为 会发生什么
在抢红包的时候 确认抢这一行为之后 突然间进行人为终止会发生什么
安全
短时间内 同一个人连续发出多个红包 是否进行提示或者限流
短时间内 同一个人发出大额红包 是否进行告警
短时间内 同一个人收入通过红包收入大笔余额 是否告警
红包描述和红包金额中是否可以脚本注入
余额小于红包额度的时候 还能不能发出去
在红包已经被抢完的时候 还能不能继续抢
红包涉及到的金额修改的数据 是否会进行加密
修改由于红包发生的余额改变的时候 是否会有鉴权认证
发红包的时候 是否有进行支付密码的认证
发红包的时候 是否支持通过指纹和其他方式的认证
UI
红包弹出待抢的时候的UI是否简洁高效
自定义红包封面的分辨率是否有要求
红包上的红包描述的字数是否有限制 在抢红包的时候 是否正常渲染在红包封面当中
红包被抢完的时候 是否会修改UI进行提示
如果红包在打开红包UI的时候还有 但是在点下抢的时候 就没有了 此时有没有UI提示
抢到红包之后 会不会对当前页面进行跳转 打开红包详情
红包详情中是否包含红包金额 待抢人数 红包个数 和红包金额等详情情况
红包的抢标志是否会随红包封面而改变
红包已抢或者已打开之后 在聊天框 缩略图中的显示会不会修改
兼容性
红包功能支持在什么设备上操作(是否支持在网页端 手机 平板 智能手表上抢)
红包的分辨率是否会随着不同设备的显示大小而修改
由于红包而进行的金额修改 会不会同步在同一账户下的多个设备当中
测试用例设计场景:百度贴吧发帖功能
功能
基本帖子功能 如图片文字表情是否正常发送
发送的时候 是否包含个人信息
写帖子的时候 能不能包含特殊字符信息
写帖子的时候 一个帖子最多能包含多少文字信息
写帖子的时候 一个帖子最多能上传多少图片
写帖子的时候 帖子中能不能含有特殊字符
写帖子的时候 帖子中图片的分辨率上传有没有限制要求
写帖子的时候 能不能包含文字信息为空的
写帖子的时候 能不能文字信息 图片信息均为空
写帖子的时候 是否有对违禁词进行过滤
写帖子的时候 是否有对违禁图片进行过滤
写帖子的时候 是否有对个人账户带来成长值相关的概念 是否有进行刷新
写帖子的时候 是否有选择对应的吧 是否可选择一个或多个吧
写帖子的时候 是否可以上多个表情
写帖子的时候 是否可以仅上传表情
写帖子的时候 是否存在草稿箱保存仍未发送的帖子
写帖子的时候 草稿箱中的帖子是存在哪里的 是否存在本地缓存或者服务器端的
写帖子的时候 草稿箱中的帖子记录最多可以保存多久 会不会发生改变 最多可以保存多少个草稿箱记录
某个帖子如果发出去后被楼主设置为不展示 或者帖子本身下架的话 其所带来的成长值等属性的改变
写帖子中的帖子中的文字允不允许复制
可不可以使用快捷键编辑文字 如复制粘贴 撤回重做等
图片支不支持快捷键上传
图片支不支持拖拽上传
图片上传支持什么格式的文件上传
帖子中的文字支不支持html或md格式的渲染
如果复制第三方的表情过来 是否能够正常加载并且正常渲染
图片的大小是否有限制
图片如果为空 是否还能上传
性能
图片上传的平均耗时时间
帖子发送的平均时间消耗
网络正常环境下 帖子发送的时间消耗
网络差的环境下 帖子发送的时间消耗(网络所会带来的延迟)
打开网页的时候 渲染表情是否会带来消耗
加载图片缩略图 压缩图片的平均耗时
查看原图的平均耗时
安全
帖子内容中是否可以进行SQL注入
帖子是否可以使用脚本注入攻击
是否可以绕过认证加密发帖
帖子在发送的时候 数据是否加密 是否存在纂改风险
帖子所选择的吧是否存在
帖子所选择的吧是否违禁或屏蔽状态
发送帖子的用户的账号是否正常状态
短时间内 是否支持单账号在短时间内发多个贴
短时间内 是否支持多账号同时发帖 所支持的最大限度是?
是否存在账号监控机制 当单个号所发出的多个帖子都是垃圾帖的时候 是否会进行处理和提示
UI
帖子中图片和文字布局是否合理且现代化 符合查看
帖子中图片是否进行压缩 是否提供上传 查看原图选项
编写帖子的时候 文字图片表情插入布局是否合理且便于操作
想要写帖子的时候 发帖入口是否便于查找
不同设备上看的话 帖子中的图片是否为不同清晰度
不同设别上看的话 发帖时是否处于不同分辨率当中
是否支持画面缩放
兼容性
是否支持在多个设备上进行发帖
是否支持在单个账户在多个端上发帖
是否支持单个设备上 多个账户拥有独立的草稿箱
测试用例设计场景:电梯功能
功能
电梯是否能正常载人
电梯是否能载货物
电梯是否能正常停留在每一层当中
电梯在触碰到人的时候 门是否还会自动打开
点击开关门的时候 电梯是否会响应
从电梯外点击开门的时候 电梯门是否会开启
电梯内是否有报警按钮
电梯内是否有紧急停靠按钮
电梯内是否有监控摄像头
电梯内是否有广告牌
电梯内是否支持网络通信
电梯内是否有灯光
电梯内是否有扶手
电梯内是否有残疾人按钮
电梯门在打开一段时间内没有操作是否会自动关闭
电梯内是否有楼层标识
电梯内是否有楼层运动方向标识
电梯空闲时 在别的楼层点下按钮是否会运动至当前楼层
性能
电梯的在楼层之间的效率是?
电梯更改方向的效率是?
电梯开关门的效率是?
电梯的平均停靠时间是?
电梯在停靠多少时间后自动关门
电梯在空闲多久后自动回到待定楼层
电梯的运行效率是否受当前载重影响
电梯的最大载重量是?
电梯的最大载人数量是?
按下按钮和按钮亮起之间的延迟是?
在外部按下按钮后 同步到电梯信息中的延迟是?
电梯内摄像头的延迟和画面清晰度等
电梯内告警电话的拨打效率
安全
电梯门材质的坚硬度 是否能在外部进行物理攻击
电梯上升下降时所会带来的重力
电梯是否会掉到底部 几率是?
电梯是否会在某一个楼层卡死
电梯是否存在情况下不能修改运动方向
UI
电梯楼层提示是否易于辨别
电梯运动方向是否可以看到
按下按钮后是否有反馈
到达指定楼层之后 是否有语音提示
到达指定楼层之后 按钮是否会取消高亮
按下开门或关门按钮后 对应按钮是否会亮起
电梯标识符是否易于辨别
电梯外部是否有当前电梯运动情况的提示
兼容性
电梯是否能在室内 室外工作
电梯的平均工作年龄和时长分别是?
电梯是否能在不同湿度 不同温度下工作
电梯大小是否满足使用场景人流量下的需求?
电梯数量是否满足使用需求?
电梯高度是否合规?
测试用例设计场景:ATM机取款功能
功能
是否能够取款
是否能够识别纸钞
是否能够在输入多次密码错误后冻结
是否能够进行密码认证
是否能够转接人工服务
是否能够识别读取银行卡
在银行卡没有余额的前提下 还是否能够读款
是否能够读取比余额多的款
是否能够在取款之后 将数据同步到系统当中
是否能够吐出金额准确的钞票
在点击取款等按钮的时候 是否有提示反馈
是否有密码不正确等反馈
在交易完之后 是否会退出当前账户系统
在交易完后 是否吐卡
性能
识别按钮的耗费时间需要多少
取款交易创建后 吐钞票的平均时间是多少
读卡之后 隔多久才能渲染出银行卡上的信息
单次取款中的平均耗时时间是多少
验证密码的平均耗时时间是多少
取款交易创建的平均耗费时间是多少
交易完毕后 退出账户的时间花费是多少
交易后 吐卡的延迟有多少
安全
交易过程中是否有密码保证安全交易
是否可以绕过认证密码交易
交易时的金钱交易数据传输是否加密 是否可以被纂改
交易时金额是否是否可以为0或负数
交易时是否可以通过伪造卡伪造身份 (读卡环节有没有设置唯一识别码一类)
输入卡密码的时候 是否可以输入非法字符
交易的时候 假如交易订单已经创建 但是此时硬件原因终止 交易怎么办
交易的时候 订单已经创建 金额在系统上已经扣除 但是在取款的时候 突然死机 金额卡住了怎么办
交易的时候 读卡和取卡的时候 银行卡卡住了怎么办
ATM机是否可以坚固
ATM机坚硬度测试 模拟外来物理攻击
ATM被物理攻击打开的前提下 是否可以取走期中款
大额款被取走的时候 是否会发出告警提示
当前ATM机余额款不足取的时候 是否会发出拒绝交易的提示
UI
交易失败成功等情况下 是否有提示框出现 是否显眼
交易时的输入环境是否有遮蔽
交易时输入密码时 是否有提示当心环境等
交易时修改密码时 是否有提示确认修改密码 同步延迟等信息
成功取款后 是否有提示款已取出
交易完毕之后 是否有提示 退出当前账户
ATM机上的取款UI是否明显且好用
在取款前是否有确认取款等提示
兼容性
在不同的温度环境下 ATM机是否可以安然放置
在不同的湿度环境下 ATM机是否可以放置
是否是插电源工作的 是否具有电池模式
如果具有电池模式作为后备模式 该模式下最长可以工作的时间
如果是插电源工作的 可以容纳多大功率的电
电功率突然修改会对ATM机正常使用是否会造成影响
ATM机上是否具有摄像头 捕捉当前取款的人
测试用例设计场景:笔记本电脑
功能
是否可以正常打开 正常工作
是否可以兼容不同的操作系统
是否可以联网(外设)
是否可以兼容不同的驱动设备
蓝牙是否可以正常使用
是否提供正常电脑所提供的功能
是否具有多种工作模式 且根据使用目的可以自由切换
硬件上是否提供扩展槽 可供用户自定义加装
是否提供USB和雷电口和HDMI和DP口等插口
USB插口是否支持拓展坞进行工作
是否可以通过HDMI DP口正常外接屏幕
开机的时候 是否显示品牌logo
开机的时候 bios firmware中的内容是否可以被修改
是否提供触控板和薄膜键盘
触控板是否正常工作
薄膜键盘是否正常工作
开机的时候 开机键是否亮起有反馈提示
是否提供命令行工具和运行组件库
是否提供microsoft等常用工具
是否允许重装系统
是否允许固件升级
…
如何评判在普通模式下和流模式下 两种工作模式的回答效果
首先需要理解两者的工作形式
在普通模式下 当次的回答是基于用户的输入 以及当前已经回答的所有上下文 做一个整体的思考
而流模式下 档次的回答仅基于用户输入 及当前已经回答的部分 做部分的思考 且基于这个思考来进行一个分段式的回复
所以两者相比较之下 普通模式下的回答是更加稳定且高质量的 而后者虽然回答效率高 但是其有可能会因为这个效率 而丢失精度 特别是在用户的输入指令不明确和上下文信息缺失的前提下
但是如果是对模型的上下文进行了一个良好的处理 就可以做到同时做到流模式下的输出效率 以及普通模式下的高质量回答
那么如何对他进行测试呢?
依旧可以从回答的五个方面进行思考
功能
回答准确性:回答的内容是否对 是否准确 是否具有条理性
回答相关性:回答的内容是否与所问的主题是相关的
回答效果稳定性:单模型在多次回答的时候 他所回答的内容是否一致的
性能
响应速度:两者的响应速度是否相似(两模式下生成相似字数的回答所耗费的时间)
模型的稳定性:在面对一些极端问题的时候 两者的回答是否都具有稳定性 是否会有崩溃的几率 这个几率大不大 是否会影响正常使用
安全 & 兼容性
多语言支持:模型是否会受训练集中内容的影响 在不同语言下的回答效果不一样 是否会出现语法错误 语序错误 回答内容不准确等情况
误导攻击测试:对一些误导性的问题 两个模式下模型的响应是否一致 是否会因为六模式下加快了模型的响应速度 从而降低了他判断舞蹈问题的能力?
噪声攻击测试:对一些语法错误 语序错误 或者含有错别字 干扰段的内容 模型在两种模式下是否能正确识别出输入的主要意思 并在甄别后进行回答
吐字稳定性:流模式下 回答的内容是否会根据内容而改变回答的速率?
对抗性测试:是否能够识别用户输入问题的合理性
隐私保护:是否会因为流模式下生成内容的快速性 从而增加了泄漏用户隐私的风险
法律合规性:生成的内容是否合法合规