首页/开发/软件测试速查/测试中的密钥管理
自动化测试66 条

测试中的密钥管理

测试用的账号、令牌与密钥应通过环境变量或密钥管理注入,不提交进仓库;本地用 .env(列入 .gitignore),CI 用平台密钥变量,测试代码只引用变量名。

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

测试中的密钥管理是什么

测试用的账号、令牌与密钥应通过环境变量或密钥管理注入,不提交进仓库:本地用 .env(列入 .gitignore),CI 用平台密钥变量,测试代码只引用变量名。密钥进仓库的代价是长期的:即使回退提交,历史里仍可能残留,一旦推送到远端就应视为泄露并轮换。

基本信息

注入方式环境变量、CI 密钥变量、密钥管理服务
本地实践.env 文件加 .gitignore,样例文件用占位值
CI 实践平台密钥变量注入,日志脱敏
最小权限测试账号按环境隔离,仅授予用例需要的权限
泄露处置进入远端历史即轮换密钥,不只是回退提交

本地与 CI 思路

本地与 CI 思路
# 本地示例:变量来自 .env 或 shell 环境
export API_TOKEN=...      # 不写入仓库
export TEST_ENV=staging
# CI 中由平台密钥变量注入同名变量
# 测试代码只引用变量名:os.environ["API_TOKEN"]

典型使用场景

  • 接口测试:令牌经环境变量注入,代码里没有字面量。
  • 数据库测试:测试库账号独立于生产账号且权限最小。
  • CI 流水线:密钥变量与日志脱敏同时配置。
  • 报告归档:失败构件上传前检查是否含敏感字段。
  • 轮换演练:定期更换测试密钥,验证注入流程可用。
  • 新人上手:样例 .env 提供占位值,照做即可本地跑通。
提交进仓库的令牌即使回退提交,历史里仍可能残留;一旦进入远端历史应直接轮换密钥。
密钥扫描工具接入提交钩子与 CI,让问题在提交时被拦住,而不是上线后审计发现。
测试环境也要权限最小化:共用管理员账号会让误操作影响面扩大。
样例配置用占位值并注明获取渠道:新人知道去哪申请,才不会把真实值贴回文件。

易错点

  • 把测试密钥硬编码进用例并提交仓库
  • CI 日志打印请求头与完整配置,令牌随日志长期留存
  • 失败构件(截图、抓包文件)携带令牌直接上传归档
  • 测试账号权限过大,误删数据影响共享环境
  • 密钥轮换后本地 .env 未同步,用例集体失败
  • 把密钥写进代码注释或工单描述,同样构成泄露
  • 公共流水线直接使用生产密钥,把测试通道变成高风险入口

数据来源与参考

  • 12-Factor App:Config(12factor.net)
  • GitHub Actions 文档:Secrets(docs.github.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌