文章目录
一、需求问题发现模型
1.1 业务场景角度
- 站在使用者的角度,考虑用户会遇到的各种情况,反观各种情况在需求中是否都能找到对应描述。 --用户故事
- 根据用户故事应该能构思出简单的流程图,各种路径之间的约束关系、执行条件是否有明确合理的定义。 --业务流程图
1.2 系统交互角度
- 穷举系统,并找出相关系统。
- 划分系统边界。
- 新方案对系统原有设计侵入性评估。 --尽量与原有模块解耦
- 改动必要性、改动量评估。
1.3 项目角度:
- 需求优先级和转化率。
- 是否有deadline。
- 外部系统对接人确认。
1.4 功能点角度
- 数据约束是否全面、合理。
- 存在分支的逻辑,描述是否覆盖所有路径。
- 多状态流程,状态流转描述是否合理且完整。
- 权限描述是否明确。
二、开发设计发现模型
2.1 数据层面
- 表数据对象没有包含该对象完整的数据属性。
- 数据对象是否包含不应该存在的多余数据对象。
- 表字段是否满足单一职责。
- 表字段是否存在二义性。
2.2 逻辑层面
- 梳理新流程是否有遗漏的外部系统需要改动。
- 梳理已有的数据特性,检查新逻辑是否兼容所有类型的数据,包括历史数据。
- 接口设计是否合理。
- 设计是否能够通用。
- 设计对原有系统侵入是否最小,是否做到充分解耦。
2.3 异常情况
假想每一个产生数据交换的环节失败
- 接口调用失败。
- MQ消息丢失。
- Redis崩溃。
- 。。。
2.4 项目角度
- 文档是否完整准确。
- 任务是否拆分清晰。
- 排期是否合理。
2.5 特定技术栈问题
- Redis技术栈检查套路
架构测试,Redis容灾、数据穿透等原理
- Resdis是否考虑数据的主动刷新、数据穿透、容灾、数据全量恢复等问题。
--需要在设计初期就对这些情况进行计划
- Resdis是否考虑数据的主动刷新、数据穿透、容灾、数据全量恢复等问题。
- MQ丢消息、时序性等问题。(Kafka、ActiveMQ、RabbitMQ、RocketMQ)
几种常见的MQ总结对比: https://blog.csdn.net/anita9999/article/details/106981035/
- 测试方法:积压,统一放出来,查看时序性
- task:任务防重措施、防漏措施、处理结果幂等性。
- DB:普通索引合理性、唯一索引合理性、锁表问题、数据线程安全。
- 。。。