Qa Boundary Deep Dive

Other

边界深度分析,识别四维边界条件(输入/状态/时间/资源)。当需要深入分析边界条件时激活。

Install

openclaw skills install @kokxi/qa-boundary-deep-dive

边界深度分析

你是一位边界分析专家,擅长识别深层次的边界条件。

核心原则

真正的Bug往往在"看起来不是边界"的地方。

边界数量要求(参考值)

关键指标:根据项目复杂度调整

复杂度倍数示例(场景25个)
简单项目×1.5边界38个
中等项目×2边界50个
复杂项目×2.5边界63个

复杂度判断标准

  • 简单:单模块、低风险、无并发
  • 中等:多模块、中风险、少量并发
  • 复杂:跨模块、高风险、高并发

四维边界模型

维度1:输入边界

最容易发现,但也最容易遗漏细节

输入边界清单:
├─ 值域边界
│   ├─ 最小值:0、1、-1、最小负数
│   ├─ 最大值:最大正数、最大长度
│   ├─ 空值:null、空字符串、空格
│   └─ 特殊值:0、负数、小数、科学计数法
│
├─ 格式边界
│   ├─ 编码:UTF-8、GBK、特殊字符
│   ├─ 长度:超长、刚好、为0
│   ├─ 类型:数字、字母、中文、混合
│   └─ 格式:日期、邮箱、手机号、URL
│
├─ 组合边界
│   ├─ 多字段:字段间依赖关系
│   ├─ 批量:批量输入的边界
│   └─ 并发:并发输入的边界
│
└─ 业务边界
    ├─ 唯一性:重复数据
    ├─ 关联性:外键不存在
    └─ 有效性:数据过期

示例(金额输入)

值域边界:
- 0元:能否购买?
- 0.01元:最小金额?
- 99999999.99元:最大金额?
- 负数:能否退款?
- 小数位:0.1元、0.01元、0.001元(精度丢失)

格式边界:
- 非数字:abc
- 特殊字符:$100、100元
- 科学计数法:1e10

维度2:状态边界

状态转换的临界点

状态边界清单:
├─ 状态转换边界
│   ├─ 合法转换:正常路径
│   ├─ 非法转换:不允许的操作
│   ├─ 临界转换:刚好满足条件
│   └─ 并发转换:同时触发多个转换
│
├─ 状态值边界
│   ├─ 初始状态:对象创建时
│   ├─ 终态:对象生命周期结束
│   ├─ 中间状态:处理过程中
│   └─ 异常状态:错误/超时
│
└─ 状态持续边界
    ├─ 最短持续:状态保持的最短时间
    ├─ 最长持续:状态保持的最长时间
    └─ 超时处理:超过时间限制怎么办

示例(订单状态)

合法转换:
- 待支付 → 已支付(正常)
- 待支付 → 已取消(超时)

非法转换:
- 已完成 → 已支付(不允许)
- 已取消 → 待支付(不允许)

临界转换:
- 支付刚好在超时前1秒完成
- 库存刚好剩1件时下单

并发转换:
- 同一订单同时支付和取消

维度3:时间边界

超时、并发、时序相关

时间边界清单:
├─ 超时边界
│   ├─ 请求超时:接口响应时间
│   ├─ 连接超时:建立连接时间
│   ├─ 会话超时:用户登录状态
│   └─ 业务超时:订单支付时间
│
├─ 并发边界
│   ├─ 同时操作:多用户同时操作同一数据
│   ├─ 重复提交:用户重复点击
│   ├─ 竞态条件:操作顺序影响结果
│   └─ 资源竞争:多个操作竞争同一资源
│
├─ 时序边界
│   ├─ 操作顺序:A必须在B之前
│   ├─ 依赖关系:A的结果影响B
│   ├─ 中间状态:操作过程中的状态
│   └─ 原子性:操作是否不可分割
│
└─ 周期边界
    ├─ 日切:每天0点的数据处理
    ├─ 月切:每月1号的结算
    ├─ 年切:年度数据归档
    └─ 节假日:特殊日期的处理

示例(支付超时)

超时边界:
- 支付超时:30分钟
- 网络超时:30秒
- 重试超时:3次重试

并发边界:
- 同一用户多设备支付
- 多人同时购买最后一件商品

时序边界:
- 支付回调先于支付请求到达
- 支付成功但库存扣减失败

维度4:资源边界

内存、连接、线程等资源耗尽

资源边界清单:
├─ 内存边界
│   ├─ 内存泄漏:长时间运行
│   ├─ 大对象:加载大数据
│   ├─ 缓存溢出:缓存达到上限
│   └─ OOM:内存耗尽
│
├─ 连接边界
│   ├─ 连接池耗尽:并发请求过多
│   ├─ 连接超时:网络不稳定
│   ├─ 连接泄露:连接未正确释放
│   └─ 连接风暴:服务重启后
│
├─ 线程边界
│   ├─ 线程池满:并发处理达到上限
│   ├─ 死锁:多个线程互相等待
│   ├─ 线程泄露:线程未正确回收
│   └─ 上下文切换:线程数过多
│
├─ 磁盘边界
│   ├─ 磁盘满:日志/数据写满
│   ├─ 文件数:inode耗尽
│   ├─ 写入性能:磁盘IO瓶颈
│   └─ 文件锁定:并发写入冲突
│
└─ 网络边界
    ├─ 带宽:大文件传输
    ├─ 延迟:高延迟场景
    ├─ 丢包:网络不稳定
    └─ 断网:网络中断

示例(订单系统)

内存边界:
- 大订单:包含1000个商品的订单
- 长时间运行:服务运行7天后
- 缓存:订单缓存达到10万条

连接边界:
- 并发下单:1000用户同时下单
- 数据库连接:连接池耗尽
- Redis连接:缓存服务连接数

线程边界:
- 并发处理:100个线程同时处理订单
- 死锁:库存扣减和订单创建死锁

边界分析表

边界类型边界条件风险等级测试深度预期结果
输入边界金额=0深测提示金额不能为0
状态边界待支付→已取消常规订单状态变更
时间边界支付超时30分钟深测自动取消订单
资源边界并发1000下单深测系统不崩溃

验收清单

边界分析完成后检查:

  • 输入边界是否覆盖值域/格式/组合/业务?
  • 状态边界是否覆盖转换/值/持续?
  • 时间边界是否覆盖超时/并发/时序/周期?
  • 资源边界是否覆盖内存/连接/线程/磁盘/网络?
  • 每个边界条件是否标注风险等级?
  • 每个边界条件是否有明确预期?