【测试准备】软件测试问题发现模型

一、需求问题发现模型

1.1 业务场景角度

结论先行:需从用户操作链路与异常场景覆盖度评估需求合理性。

  • 用户故事覆盖度
    需站在使用者的角度,考虑用户会遇到的各种情况,反观各种情况在需求中是否都能找到对应描述。并完整描述核心场景(如电商订单支付、物流状态同步)及异常场景(如网络中断重试、重复支付拦截)。

    • 拆解用户角色、操作路径、业务目标(如:用户下单→支付→库存扣减→物流通知)

    • 验证需求是否覆盖核心场景(如:正常流程、异常流程、边界场景)

    • 示例:电商场景中,是否考虑“库存不足时取消订单”“支付超时自动退款”等场景?

  • 业务流程图合理性

  • 根据用户故事构思出简单的流程图,各种路径之间的约束关系、执行条件是否有明确合理的定义。


  • 业务流程图
    • 根据用户故事构思出简单的流程图,各种路径之间的约束关系、执行条件是否有明确合理的定义。

      • 绘制流程图(泳道图/时序图),标注系统间交互节点

      • 检查路径约束(如:流程分支条件、状态跳转规则)

      • 示例流程:

        充足
        不足
        成功
        失败
        用户下单
        库存校验
        锁定库存
        提示缺货
        生成订单
        调用支付接口
        更新订单状态为已支付
        订单取消并释放库存

1.2 系统交互角度

结论先行:需明确系统边界,评估新方案对原有架构的侵入性。

  • 系统边界划分

    • 穷举关联系统(如:订单系统、支付系统、物流系统)
    • 定义数据流向(输入/输出/中转),标注调用方式(API/MQ/文件)
  • 系统边界清晰度

    系统类型示例系统接口协议数据交互内容
    内部系统订单系统、库存系统RPC(Dubbo)订单创建、库存锁定
    外部系统支付宝、微信支付HTTP/HTTPS支付请求、回调通知
  • 架构侵入性评估

    • 新方案是否需修改原有系统接口?(如:新增字段、调整协议)
    • 是否引入新中间件?(如:新增MQ组件对现有架构的影响)
    • 评估维度:代码改动量、部署复杂度、兼容性风险
      ⚠️ 反例:直接修改原有同步接口为异步调用(侵入性100%);
      💡 最佳实践:通过MQ解耦(如订单系统发送消息至Kafka,支付系统消费消息),侵入性<20%。

1.3 项目角度:

  • 需求优先级和转化率。
  • 是否有deadline。
  • 外部系统对接人确认。

1.4 功能点角度

  • 数据约束是否全面、合理。
  • 存在分支的逻辑,描述是否覆盖所有路径。
  • 多状态流程,状态流转描述是否合理且完整。
  • 权限描述是否明确。

二、开发设计发现模型

2.1 数据层面

  • 表数据对象没有包含该对象完整的数据属性。
  • 数据对象是否包含不应该存在的多余数据对象。
  • 表字段是否满足单一职责。
  • 表字段是否存在二义性。

2.2 逻辑层面

  • 梳理新流程是否有遗漏的外部系统需要改动。
    • 调用第三方接口时是否设计 熔断/重试机制
    • 数据格式是否兼容历史系统?(如:旧系统返回XML,新系统需支持解析)
  • 梳理已有的数据特性,检查新逻辑是否兼容所有类型的数据,包括历史数据。
  • 接口设计是否合理
    • 接口设计原则
      • 遵循 RESTful 规范(如:GET 查询/POST 创建/PUT 更新/DELETE 删除)
      • 响应结果标准化(统一错误码格式,如):
        {
          "code": "40001",
          "msg": "参数缺失"
        }
        
  • 设计是否能够通用
    • 公共逻辑抽象为工具类/微服务(如:支付逻辑可独立为支付服务)
  • 设计对原有系统侵入是否最小,是否做到充分解耦。

2.3 异常情况

结论先行:需对全链路进行故障注入测试,重点解决消息队列核心问题。
假想每一个产生数据交换的环节失败

  • 接口调用失败。
  • MQ消息丢失。
  • Redis崩溃。

故障注入测试场景

测试项模拟方法预期结果
MQ消息丢失主动删除Kafka分区数据生产者重试≤3次,消息不丢失
Redis缓存穿透发送10w+无效user_id查询布隆过滤器拦截率≥99.9%

消息队列健壮性方案

  • 重复消费:消息体携带唯一标识(如UUID),消费时通过数据库唯一索引或Redis SETNX去重;
  • 时序性:按业务ID分区(如同一用户订单消息写入Kafka同一分区),确保消费顺序与生产一致。

2.4 项目角度

  • 文档是否完整准确
    • 接口文档(Swagger自动生成+人工标注业务说明)
    • 数据字典(字段含义、枚举值、表关联关系)
  • 任务是否拆分清晰
    • 按模块拆分(如:前端/后端/中间件/部署)
    • 风险前置(先实现高风险模块,如:分布式锁逻辑)
  • 排期是否合理
    • 关键路径优先(如:依赖的第三方服务联调→核心功能开发→边缘功能开发)

2.5 特定技术栈问题

  1. Redis技术栈检查套路
    架构测试,Redis容灾、数据穿透等原理
    • Resdis是否考虑数据的主动刷新、数据穿透、容灾、数据全量恢复等问题。 --需要在设计初期就对这些情况进行计划
  • MQ丢消息、时序性等问题。(Kafka、ActiveMQ、RabbitMQ、RocketMQ)

    几种常见的MQ总结对比: https://blog.youkuaiyun.com/anita9999/article/details/106981035/

    • 测试方法:积压,统一放出来,查看时序性
  • task:任务防重措施、防漏措施、处理结果幂等性。

  • DB:普通索引合理性、唯一索引合理性、锁表问题、数据线程安全。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值