文章目录
1. 查询
1.1. 分页显示
1.2. 数据一致性
1.3. 分类排序
1.4. 模糊查询
1.5. 查询条件
2. 新增
2.1. 是否必填
2.2. 字符长度
2.3. 数字边界
2.4. 合法数据
2.5. 特殊字符
2.6. 带空格的字段
2.7. 上传功能
2.8. 重复添加
3. 修改
3.1. 是否必填
3.2. 字符长度
3.3. 数字边界
3.4. 合法数据
3.5. 特殊字符
3.6. 带空格的字段
3.7. 重复修改
4. 删除
4.1. 删除不存在的数据
4.2. 删除合法数据
4.3. 不允许删除的数据
4.4. 删除数据的衍生影响
提高服务端编码质量,对我们的编码进行Code Review十分重要,今天我整理下我在开发过程中的历史经验,整理了一份检查列表,欢迎大家一起来补充和完善。
查询
分页显示
检查分页功能是否正常,分页边界是否有矫正机制,例如非数值类型,下限是否校验,上限是否设置允许最大值等。
数据一致性
查询数据是否一致,这种情况不一致可能是接口错误,或者存在缓存。
返回总数是否正确,这个经常会被忽略。
分类排序
是否有进行排序功能,排序是否符合需求,例如需求是要根据热度排序,接口返回按更新时间排序明显就和需求有偏差了。
模糊查询
是否是模糊查询,还是精确查询。
特殊字符是否过滤,例如MySQL的特殊字符:“&”和“_”。
查询的性能问题,MySQL的模糊查询走全表,所以客户端接口一定要确认性能是否有影响。客户端接口对性能有要求,建议使用Elasticsearch、Solr等全文搜索。
查询条件
开始时间和结束时间的边界
关键字对于特殊字符、空字符串、超长字符、数字边界等约束。
新增
是否必填
对于强制输入的字段,是否必填,错误信息是否正确。
字符长度
最长最短长度都要测。举个例子,比如数据库的一个字段类型是text,觉得需要测试它的上限么?答案是:要。一个真实案例,一个文章的内容一不小心可能就超过65535的上限,这个时候接口就出现500的错误咯。
数字边界
对于数字型的字段,测试上下边界非常重要。经常我们会忽略这点,举个例子,超过Integer上限并不是我们想象的那么遥不可及。
合法数据
如枚举类型(1-上架;2-下架),电话号码、电子邮箱、时间格式等。
特殊字符
特殊字符允不允许(业务决定),会不会导致数据库报错和乱码
是否存在SQL注入的可能。
是否存在xss攻击的可能。
带空格的字段
服务端是否有做trim操作,只输入空格是否正确保存。
上传功能
上传的文件是否可以使用,上传的文件格式是否有限制等。
重复添加
是否输入字段不能输入重复的数据,是否区分大小写的情况,如果输入重复数据,程序不能奔溃并且错误的提示信息正常(正常是409错误码)。
修改
修改接口检验标准和新增接口类似。
是否必填
对于强制输入的字段,是否必填,错误信息是否正确。
字符长度
最长最短长度都要测。举个例子,比如数据库的一个字段类型是text,觉得需要测试它的上限么?答案是:要。一个真实案例,一个文章的内容一不小心可能就超过65535的上限,这个时候接口就出现500的错误咯
数字边界
对于数字型的字段,测试上下边界非常重要。经常我们会忽略这点,举个例子,超过Integer上限并不是我们想象的那么遥不可及。
合法数据
如枚举类型(1-上架;2-下架),电话号码、电子邮箱、时间格式等。
特殊字符
特殊字符允不允许(业务决定),会不会导致数据库报错和乱码
是否存在SQL注入的可能。
是否存在xss攻击的可能。
带空格的字段
服务端是否有做trim操作,只输入空格是否正确保存。
重复修改
修改不存在的数据:是否有合理的错误提示。(正常是404错误码)。
修改合理数据:是否修改
删除
删除不存在的数据
是否有合理的错误提示。
删除合法数据
这个有几个Code Review点
**是否删除成功(数据层面)**
删除后数据库应该是查不到的。(这个特别注意缓存的同步问题)
是真删除,还是伪删除。
删除后可以添加同样的数据记录。
不允许删除的数据
因为业务的需求,有些数据正在使用,所以不允许删除。根据业务情况,进行分析。
删除数据的衍生影响
例如这个记录在其他表由被引用到,互联网产品一般情况下不用外键,所以要特别注意,衍生数据的影响和处理机制。
(完)