Skip to content

测试策略

状态:初步设计,尚无实现或测试结果。依据为原始 v1.1 说明书第 15、17 章及项目执行标准。本文件定义验证方法,不表示任何测试已通过。

风险排序与证据

优先级按不可逆损害排列:密钥与明文泄露、误格式化和跨 Profile 泄露;认证/联系人验证绕过与协议降级;消息丢失、重复、乱序;备份恢复与迁移;推送和运维可用性;视觉与性能。每个验收项须留下测试版本、环境、步骤、预期、实际、证据链接、缺陷与复测记录。不能用 HTTP 成功码代替状态和数据断言。

层级必须验证的事实主要方法
协议与密码封装版本拒绝、规范化编码、跨语言向量、签名/认证失败、乱序与重放上限冻结公开测试向量、属性测试、故障注入、至少 24 小时解析模糊测试
iOS 本地安全Keychain/数据库隔离、锁屏不可读、主/假密码路由、格式化默认关闭及中断恢复单元测试、XCUITest、真机残留检查和人工评审
服务端签名 challenge、预密钥原子消费、密文幂等、ACK/TTL、配额、权限Go 集成测试,PostgreSQL/Redis 故障与并发测试
端到端首次建联、扫码验证、密钥变化、离线收发、超时后重试真机与 Docker Compose 环境;断言消息与持久化状态
部署与发布备份/恢复、升级/回滚、磁盘满、数据库切换、APNs 不可用演练记录、SAST/依赖/容器扫描、TestFlight

场景矩阵

每条核心路径至少覆盖正常、边界、异常/非法输入、并发与恢复。特别要求:提交成功但响应超时后重试仍只存一条;100 条乱序消息在跳跃密钥上限内正确解密;并发领取同一一次性预密钥仅一次成功;伪造或变更身份密钥触发拒绝或降级警告;Push 失败后通过拉取最终收取;迁移中断不产生半成品 Profile;错误密码、Face ID 失败、取消、退后台和系统终止均不误格式化。

格式化分别验证关闭与开启状态。关闭时重复使用假密码不影响真实空间;开启时仅精确命中可触发,先销毁关键密钥,再检查沙箱文件、WAL/SHM、缓存、通知等残留。强制终止各步骤后,恢复状态必须是“真实密钥仍完整可用”或“已不可恢复”,不得留下可解密的部分清理状态。外部备份不在本地清理承诺内。

自动化与发布记录

合并门禁拟包括 Swift/Go 测试、静态检查、OpenAPI 与协议向量校验、依赖许可证/SBOM 和镜像扫描;夜间任务包括长时模糊测试、断网/故障和真机回归。对性能、崩溃自由会话及可用性设基线后,再在发布门槛记录量化目标,不能先写“达标”。安全测试不能替代独立密码学审计。

系统初步设计 · 待决事项不代表批准 · 安全方案尚未完成独立审计