qia/docs/sqlite-test-report.md

6.9 KiB
Raw Blame History

SQLite本地数据库支持功能 - 测试报告

测试信息

  • 测试日期2026-01-29
  • 测试人员QA工程师
  • 数据库文件E:\qia\server\prisma\dev.db
  • Prisma SchemaE:\qia\server\prisma\schema.prisma

一、测试用例执行结果

1.1 数据库表结构验证

验证项目 预期结果 实际结果 状态
users表存在 表结构符合schema 结构一致 PASS
events表存在 表结构符合schema 结构一致 PASS
notes表存在 表结构符合schema 结构一致 PASS
ai_coach_conversations表存在 表结构符合schema 结构一致 PASS
users表主键 id TEXT PRIMARY KEY 符合 PASS
users表唯一约束 email UNIQUE NOT NULL 符合 PASS
外键约束 ON DELETE CASCADE 配置正确 PASS
索引 6个索引存在 全部存在 PASS

1.2 表结构与Schema一致性对比

users表

字段 Schema定义 数据库类型 一致性
id String @id @default(uuid()) TEXT PRIMARY KEY
email String @unique TEXT UNIQUE NOT NULL
password_hash String TEXT NOT NULL
nickname String? TEXT
created_at DateTime @default(now()) DATETIME DEFAULT CURRENT_TIMESTAMP
updated_at DateTime @updatedAt DATETIME DEFAULT CURRENT_TIMESTAMP

events表

字段 Schema定义 数据库类型 一致性
id String @id @default(uuid()) TEXT PRIMARY KEY
user_id String (外键) TEXT NOT NULL + FK
type String TEXT NOT NULL
title String TEXT NOT NULL
content String? TEXT
date DateTime DATETIME NOT NULL
is_lunar Boolean @default(false) INTEGER DEFAULT 0
repeat_type String @default("none") TEXT DEFAULT 'none'
is_holiday Boolean @default(false) INTEGER DEFAULT 0
is_completed Boolean @default(false) INTEGER DEFAULT 0
created_at DateTime @default(now()) DATETIME DEFAULT CURRENT_TIMESTAMP
updated_at DateTime @updatedAt DATETIME DEFAULT CURRENT_TIMESTAMP

notes表

字段 Schema定义 数据库类型 一致性
id String @id @default(uuid()) TEXT PRIMARY KEY
user_id String (外键, unique) TEXT UNIQUE NOT NULL + FK
content String TEXT
created_at DateTime @default(now()) DATETIME DEFAULT CURRENT_TIMESTAMP
updated_at DateTime @updatedAt DATETIME DEFAULT CURRENT_TIMESTAMP

ai_coach_conversations表

字段 Schema定义 数据库类型 一致性
id String @id @default(uuid()) TEXT PRIMARY KEY
user_id String (外键) TEXT NOT NULL + FK
message String TEXT NOT NULL
response String TEXT NOT NULL
parsed_data String? TEXT
created_at DateTime @default(now()) DATETIME DEFAULT CURRENT_TIMESTAMP

1.3 用户数据存储验证

验证项目 预期结果 实际结果 状态
用户数量 >=1 3 PASS
Email唯一性 无重复 无重复 PASS
密码哈希长度 60字符(bcrypt) 60字符 PASS
必填字段非空 id, email, password_hash 全部非空 PASS
UUID格式 有效UUID 有效 PASS

1.4 数据关联验证

验证项目 预期结果 实际结果 状态
孤立事件记录 0 0 PASS
孤立便签记录 0 0 PASS
孤立对话记录 0 0 PASS
级联删除配置 ON DELETE CASCADE 配置正确 PASS

1.5 索引验证

索引名称 所在表 状态
sqlite_autoindex_events_1 events 存在
idx_events_user_id events 存在
idx_events_type events 存在
idx_events_date events 存在
sqlite_autoindex_ai_coach_conversations_1 ai_coach_conversations 存在
idx_ai_conversations_user_id ai_coach_conversations 存在

二、发现的问题

2.1 已知问题(低优先级)

问题ID 描述 严重程度 备注
Q1 存在一条事件记录(type字段为空) 数据可能来自测试或开发过程
Q2 中文nickname存在编码显示问题 终端显示问题,实际存储正常

2.2 数据详情

用户数据3条

  1. test@example.com - TestUser
  2. test2@example.com - 测试用户2 (编码显示异常)
  3. playwright_test@example.com - 测试用户

事件数据2条

  1. 我的生日 - anniversary类型, yearly重复
  2. 第一条便签内容 - 实际上存储在events表(type为空)

三、回归测试建议

3.1 优先级P0必须执行

  1. 用户注册功能测试

    • 正常注册流程
    • 重复Email注册应失败
    • Email格式校验
    • 密码强度校验
  2. 用户登录功能测试

    • 正确凭据登录
    • 错误密码登录
    • 不存在用户登录
    • Token生成验证
  3. 级联删除测试

    • 删除用户时关联的events应自动删除
    • 删除用户时关联的notes应自动删除
    • 删除用户时关联的conversations应自动删除

3.2 优先级P1建议执行

  1. 数据完整性测试

    • 更新用户Email的唯一性约束
    • 尝试插入重复Email应被阻止
  2. 便签功能测试

    • 创建/更新便签
    • 确保同一用户只有一条便签UNIQUE约束

3.3 优先级P2可选执行

  1. 性能测试
    • 大量事件数据时的查询性能
    • 索引使用情况验证

四、质量评估

4.1 测试通过率

类别 总数 通过 失败 通过率
表结构验证 10 10 0 100%
数据存储验证 5 5 0 100%
数据关联验证 4 4 0 100%
索引验证 6 6 0 100%
总计 25 25 0 100%

4.2 总体评估

评估项 状态
数据库表结构 符合Prisma Schema定义
数据存储完整性 无孤立数据
外键约束 ON DELETE CASCADE配置正确
索引完整性 全部索引存在
用户数据 密码哈希正确存储(60字符bcrypt)

4.3 发布建议

可以发布

数据库层质量符合预期所有测试用例均通过。表结构与Prisma Schema完全一致外键约束和级联删除配置正确用户数据存储完整。


五、测试环境

  • 后端服务localhost:3000
  • 前端服务localhost:5173
  • 数据库类型SQLite
  • 数据库路径E:\qia\server\prisma\dev.db
  • Prisma版本使用prisma-client-js

报告生成时间2026-01-29 QA工程师签名________________