提高服务端编码质量 - 用例检查列表

文章目录
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点

**是否删除成功(数据层面)**
    删除后数据库应该是查不到的。(这个特别注意缓存的同步问题)
    是真删除,还是伪删除。
    删除后可以添加同样的数据记录。
    不允许删除的数据
    因为业务的需求,有些数据正在使用,所以不允许删除。根据业务情况,进行分析。

删除数据的衍生影响
    例如这个记录在其他表由被引用到,互联网产品一般情况下不用外键,所以要特别注意,衍生数据的影响和处理机制。

(完)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值