保命
总结自己在做后端开发的 check list ,目的是保命,依次是:需求分析->功能设计->编码阶段->测试阶段->上线阶段->检视阶段。
1. 需求分析
- 当需求本身存在不明确的地方时,是否有和产品进行沟通?
- 基于需求想要解决的问题,是否有从研发角度找出是否有更优的实现方案?
- 需求拆分和工时估算中,是否拆分的足够细?
- 需求拆分和工时估算中,是否考虑到自测时间?
- 需求拆分和工时估算中,是否考虑到联调时间?
- 需求拆分和工时估算中,是否考虑到留出一定冗余时间?
2. 功能设计
- 需求本身复杂度较高时,是否有考虑先画流程图?
- 需求本身或者开发过程中,是否有可能涉及安全问题?
- 需求本身是否设计到状态流转,是否有考虑先画流程图?
- 是否有涉及好判定功能正常与否的关键指标?
- 是否涉及删除功能,删除是否有使用校验?
- 功能设计给大家 review 之前,是否有自己对着需求文档过一遍逻辑和格式?
- 数据库:普通索引是否创建?
- 数据库:唯一性索引是否创建,是否牵扯到删除的问题?
- 多租户
- 是否有数据安全性问题?
3. 编码阶段
- 是否有将数据库变更同步到测试环境?
- 是否存在漏打日志,异常处理是否规范?
- 是否存在并发问题,事务是否能够保证一致性?
- 是否存在远程调用,远程调用失败是否有后续操作(日志或者重试机制)?
- 是否有对核心逻辑,复杂逻辑进行单元测试覆盖?
- 是否有合理的日志覆盖用于上线后的正常与否判定,以及问题追踪?
- 是否修改了现有代码,如果修改是否通知相关调用方?
- 提交 PR 之前,是否有自己先过一遍代码规范?
- 提交 PR 之前,是否有在本地跑过单元测试?
4. 测试阶段
这里举例常见的一个增删改查的需求。备注:这里是 check 测试用例以及执行测试用例,而测试用例的构建,我建议放在编码阶段之前。
- 对于输入参数是否进行了有效性校验?
- 对于输入参数是否进行了边界值校验?
- 对于权限校验是否有进行确认?
- 对于返回参数的格式和数据是否进行确认?
5. 上线阶段
- 是否有确认过各个项目的部署顺序依赖?
- 是否有和其他同事确认过此时可以上线?
- 是否有线上配置文件更改,例如nacos?
- 是否有数据库上线?
- 新建字段,有没有默认值?
- 修改字段,原有数据怎么处理?
- 修改字段默认值,原有数据是否更改?
- 是否需要备份更改的数据?
- 是否存在锁库的问题?
6. 检视阶段
- 是否有按照功能设计阶段制定的计划,对关键的数据指标或者日志进行检查?