保命

总结自己在做后端开发的 check list ,目的是保命,依次是:需求分析->功能设计->编码阶段->测试阶段->上线阶段->检视阶段。

1. 需求分析

  1. 当需求本身存在不明确的地方时,是否有和产品进行沟通?
  2. 基于需求想要解决的问题,是否有从研发角度找出是否有更优的实现方案?
  3. 需求拆分和工时估算中,是否拆分的足够细?
  4. 需求拆分和工时估算中,是否考虑到自测时间?
  5. 需求拆分和工时估算中,是否考虑到联调时间?
  6. 需求拆分和工时估算中,是否考虑到留出一定冗余时间?

2. 功能设计

  1. 需求本身复杂度较高时,是否有考虑先画流程图?
  2. 需求本身或者开发过程中,是否有可能涉及安全问题?
  3. 需求本身是否设计到状态流转,是否有考虑先画流程图?
  4. 是否有涉及好判定功能正常与否的关键指标?
  5. 是否涉及删除功能,删除是否有使用校验?
  6. 功能设计给大家 review 之前,是否有自己对着需求文档过一遍逻辑和格式?
  7. 数据库:普通索引是否创建?
  8. 数据库:唯一性索引是否创建,是否牵扯到删除的问题?
  9. 多租户
    1. 是否有数据安全性问题?

3. 编码阶段

  1. 是否有将数据库变更同步到测试环境?
  2. 是否存在漏打日志,异常处理是否规范?
  3. 是否存在并发问题,事务是否能够保证一致性?
  4. 是否存在远程调用,远程调用失败是否有后续操作(日志或者重试机制)?
  5. 是否有对核心逻辑,复杂逻辑进行单元测试覆盖?
  6. 是否有合理的日志覆盖用于上线后的正常与否判定,以及问题追踪?
  7. 是否修改了现有代码,如果修改是否通知相关调用方?
  8. 提交 PR 之前,是否有自己先过一遍代码规范?
  9. 提交 PR 之前,是否有在本地跑过单元测试?

4. 测试阶段

这里举例常见的一个增删改查的需求。备注:这里是 check 测试用例以及执行测试用例,而测试用例的构建,我建议放在编码阶段之前。

  1. 对于输入参数是否进行了有效性校验?
  2. 对于输入参数是否进行了边界值校验?
  3. 对于权限校验是否有进行确认?
  4. 对于返回参数的格式和数据是否进行确认?

5. 上线阶段

  1. 是否有确认过各个项目的部署顺序依赖?
  2. 是否有和其他同事确认过此时可以上线?
  3. 是否有线上配置文件更改,例如nacos?
  4. 是否有数据库上线?
    1. 新建字段,有没有默认值?
    2. 修改字段,原有数据怎么处理?
    3. 修改字段默认值,原有数据是否更改?
    4. 是否需要备份更改的数据?
    5. 是否存在锁库的问题?

6. 检视阶段

  1. 是否有按照功能设计阶段制定的计划,对关键的数据指标或者日志进行检查?
Last Updated:
Contributors: 拔土豆的程序员