首页/开发/软件测试速查/数据库测试要点
测试基础与分层67 条

数据库测试要点

验证数据模型、约束、事务与迁移脚本的正确性:包括 CRUD 逻辑、唯一约束、级联行为、迁移回滚与数据一致性。

软件测试速查开发更新于 2026-10-13

数据库测试要点

数据库测试验证数据模型、约束、事务与迁移脚本的正确性:包括 CRUD 逻辑、唯一约束、级联行为、迁移与回滚、并发一致性与数据质量。数据库往往被多个系统共享,SQL 层面的缺陷会绕过接口校验直接污染数据,事后清理代价极高。

基本信息

约束验证主键、外键、唯一索引冲突时的行为
事务与隔离并发更新、回滚后的数据状态
迁移测试升级脚本与回滚脚本在新旧数据上都能执行
数据质量脏数据与边界值在报表统计中的表现
环境手段用容器快速起干净实例(Testcontainers 等)

约束与回滚验证

约束与回滚验证
def test_unique_email(db):
    db.insert_user(email="a@x.com")
    # 唯一约束冲突应抛出明确异常
    with pytest.raises(IntegrityError):
        db.insert_user(email="a@x.com")
    # 断言冲突没有留下残留数据
    assert db.count_users() == 1

典型使用场景

  • 新表与新索引:约束、默认值、级联规则逐条验证。
  • 迁移演练:在接近生产的数据量上执行升级与回滚。
  • 事务边界:回滚后不留半截数据,重试不重复写入。
  • 并发场景:两个事务同时更新同一行,验证锁与隔离语义。
  • 报表口径:边界数据在聚合统计中的表现。
  • 环境隔离:容器起库,用完即弃,不污染共享环境。

测试类型与预期

类型动作预期
约束唯一与外键冲突明确异常、数据不变
事务中途失败回滚无半截数据
迁移升级与回滚新旧数据均可执行
并发同行动作交叉符合隔离级别语义
迁移脚本的验证分两段:空库初始化与旧数据升级,两段都要跑回滚。
断言要落到 SQL 层:接口报错后数据是否残留,只有查库才能确认。
数据库测试可用容器快速起干净实例,避免污染共享环境。

易错点

  • 迁移脚本只在空库上验证,未在接近生产的数据量上演练
  • 测试直接修改共享数据库数据,导致其他用例随机失败
  • 只查接口返回值不查落库结果,脏数据问题漏检
  • 并发用例没有隔离设计,把锁等待误判为死锁缺陷
  • 回滚脚本从未演练,真正需要回滚时才发现不可用
  • 用例假设自增主键从 1 开始,环境遗留数据导致断言错位

数据来源与参考

  • Flyway 官方文档(flywaydb.org)
  • Liquibase 官方文档(liquibase.org)
  • Testcontainers 官方文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌