Skip to content

测试策略

**本文引用的文件** - [[go.work]](../file/go.work) - [[go.work.sum]](../file/go.work.sum) - [[bi-basic/Makefile]](../file/bi-basic/makefile) - [[bi-chat/bi-chat-web/package.json]](../file/bi-chat/bi-chat-web/package.json) - [[bi-common/mq/kafkax/config.go]](../file/bi-common/mq/kafkax/config.go) - [[bi-common/mq/kafkax/producer_tx.go]](../file/bi-common/mq/kafkax/producer-tx.go) - [[bi-common/database/gormx/config.go]](../file/bi-common/database/gormx/config.go) - [[_bmad/bmm/testarch/knowledge/test-levels-framework.md]](../file/bmad/bmm/testarch/knowledge/test-levels-framework.md) - [[_bmad/bmm/testarch/knowledge/data-factories.md]](../file/bmad/bmm/testarch/knowledge/data-factories.md) - [[_bmad/bmm/testarch/knowledge/selective-testing.md]](../file/bmad/bmm/testarch/knowledge/selective-testing.md) - [[_bmad/bmm/testarch/knowledge/nfr-criteria.md]](../file/bmad/bmm/testarch/knowledge/nfr-criteria.md) - [[_bmad/bmm/testarch/knowledge/ci-burn-in.md]](../file/bmad/bmm/testarch/knowledge/ci-burn-in.md) - [[bi-notify/Makefile]](../file/bi-notify/makefile) - [[ui-crx/mock_data.js]](../file/ui-crx/mock-data.js)

目录

  1. 引言
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能与非功能性测试
  8. 故障排查指南
  9. 结论
  10. 附录

引言

本测试策略面向BI分析平台,覆盖单元测试、集成测试、端到端测试的分层测试架构,结合Go语言测试框架、TypeScript测试配置、Python测试环境搭建,提供Mock对象与测试数据准备方法,详解Kafka消息测试、数据库事务测试、API接口测试最佳实践,并给出性能与压力测试方案、覆盖率要求与报告生成、CI/CD流水线中的测试集成与自动化执行、测试环境搭建与测试数据管理,以及AI智能体系统的测试方法与验证策略,确保测试质量与软件可靠性。

项目结构

本仓库采用多模块工作区组织,Go模块通过工作区文件统一管理,便于跨模块测试与构建;前端采用Next.js与TypeScript生态;公共组件包括Kafka与数据库适配层;另有大量测试知识资产沉淀于_bmad目录。

图示来源

章节来源

核心组件

  • Go测试与构建
    • 多模块工作区统一管理,便于整体测试与覆盖率聚合。
    • 各模块提供独立的测试目标与覆盖率生成脚本,便于CI集成。
  • Kafka消息中间件
    • 提供生产者与消费者配置、事务生产者封装,支持批量、压缩、超时、安全等配置项,便于测试消息可靠性与事务一致性。
  • 数据库访问层
    • GORM配置抽象,支持MySQL与StarRocks,提供连接池、日志、TLS等配置,便于测试不同数据库场景与事务隔离级别。
  • 前端测试生态
    • Next.js + TypeScript项目,具备开发、构建、启动与代码质量检查脚本,可扩展至端到端测试与组件测试。

章节来源

架构总览

测试架构分为三层:单元测试(快速反馈、无外部依赖)、集成测试(组件边界、数据库/消息/服务交互)、端到端测试(用户旅程、跨系统流程)。测试知识资产提供测试层级决策矩阵、选择性测试与CI烧入策略,确保测试金字塔合理分布与高效执行。

图示来源

详细组件分析

单元测试策略与实践

  • 目标
    • 快速反馈、高稳定性、易调试、覆盖复杂分支与边界条件。
  • 实施要点
    • 将纯函数与业务逻辑从框架依赖中剥离,便于直接调用与断言。
    • 使用工厂模式生成唯一、并行安全的测试数据,避免重复与竞态。
    • 对错误处理与边界输入进行专项覆盖(零值、负数、空输入、异常路径)。
  • 工具与配置
    • Go模块提供测试命令与覆盖率输出,可在CI中生成HTML报告。
    • 前端项目提供lint脚本,保障代码风格与静态检查。

图示来源

章节来源

集成测试策略与实践

  • 目标
    • 组件边界验证、数据库事务、API契约、服务间通信、中间件行为。
  • 实施要点
    • 使用测试数据库或容器,模拟真实数据层与事务隔离级别。
    • 对Kafka生产者/消费者进行配置化测试,覆盖批量、压缩、超时、安全等场景。
    • 对事务生产者进行提交/中止/回滚路径测试,确保幂等与一致性。
  • 工具与配置
    • Kafka配置抽象提供默认值与克隆能力,便于测试隔离与并发安全。
    • 数据库配置支持连接池、慢查询日志、TLS等,便于测试不同场景。

图示来源

章节来源

端到端测试策略与实践

  • 目标
    • 关键用户旅程、跨系统工作流、合规与监管要求、最终发布前验证。
  • 实施要点
    • 使用选择性测试与变更文件匹配策略,仅运行受影响的测试套件,提升CI效率。
    • 在CI中执行“烧入”策略,多次运行变更测试以暴露脆弱性。
    • 结合Mock数据与API种子,保证测试可重复与并行安全。
  • 工具与配置
    • 选择性测试脚本支持按文件模式、项目隔离、组件定位等策略。
    • 前端Mock数据集中管理,便于注入与替换。

图示来源

章节来源

API接口测试最佳实践

  • 目标
    • 验证API契约、响应格式、鉴权与限流、错误码与降级。
  • 实施要点
    • 使用OpenAPI生成的客户端与契约测试,确保前后端一致。
    • 对认证中间件、权限控制、请求校验进行专项测试。
    • 结合数据库事务测试,验证写入一致性与隔离级别。
  • 工具与配置
    • 通过Makefile生成API相关代码与OpenAPI文档,便于测试与联调。

章节来源

数据库事务测试最佳实践

  • 目标
    • 验证事务边界、提交/回滚、并发冲突、慢查询与连接池行为。
  • 实施要点
    • 使用测试数据库或容器,设置不同隔离级别与慢查询阈值。
    • 对连接池参数进行针对性测试(最大连接、空闲时间、生命周期)。
    • 针对StarRocks特性进行参数插值与连接池优化测试。
  • 工具与配置
    • GORM配置提供默认值与合并机制,便于测试隔离与参数覆盖。

章节来源

Kafka消息测试最佳实践

  • 目标
    • 验证消息可靠性、顺序性、重试与幂等、事务一致性。
  • 实施要点
    • 配置批量、压缩、超时、安全(SASL/TLS),覆盖正常与异常路径。
    • 对事务生产者进行提交/中止/回滚路径测试,确保幂等与一致性。
    • 消费者组模式与单分区模式分别测试,关注重平衡与分区监控。
  • 工具与配置
    • Kafka配置抽象提供默认值与克隆能力,便于测试隔离与并发安全。

章节来源

AI智能体系统测试方法与验证策略

  • 目标
    • 验证智能体规则、技能、工作流与提示词有效性。
  • 实施要点
    • 基于测试知识资产建立验收标准与可追溯矩阵,自动提取测试覆盖与缺口。
    • 对关键工作流进行端到端验证,结合Mock数据与API种子。
    • 定期生成测试评审报告,跟踪缺陷修复与覆盖率改进。
  • 工具与配置
    • 参考测试架构知识资产中的验收准则与可追溯性模板。

章节来源

依赖关系分析

  • 模块耦合
    • bi-common作为共享基础设施,被多个业务模块复用,测试时需关注其配置与行为对上层的影响。
    • 前端模块通过公共组件与后端API交互,测试时需考虑网络延迟与协议兼容性。
  • 外部依赖
    • Kafka与数据库依赖通过配置抽象屏蔽差异,测试时可通过环境变量切换配置。
  • 循环依赖
    • 通过配置文件与接口隔离,避免在测试中引入循环依赖。

图示来源

章节来源

性能与非功能性测试

  • 目标
    • 系统在预期负载下的吞吐、延迟、资源占用与稳定性。
  • 实施要点
    • 使用k6进行负载、压力、尖峰、持续负载与基准测试,设定SLO/SLA阈值。
    • 结合Playwright进行感知性能(如Core Web Vitals)验证。
    • 在CI中输出JSON报告并基于阈值判定失败。
  • 工具与配置
    • 参考非功能性测试知识资产中的脚本与阈值定义。

章节来源

故障排查指南

  • 常见问题
    • 测试不稳定:使用“烧入”策略多次运行变更测试,定位脆弱性。
    • 覆盖率不足:遵循测试层级决策矩阵,优先在单元层覆盖复杂逻辑。
    • 数据竞争:使用工厂生成唯一数据并通过API种子,避免共享状态。
    • Kafka事务异常:检查事务协调器连接、提交/中止路径与超时配置。
    • 数据库慢查询:调整连接池参数与慢查询阈值,定位热点SQL。
  • 工具与配置
    • 利用Makefile提供的测试命令与覆盖率报告生成。
    • 使用选择性测试脚本快速定位受影响的测试集。

章节来源

结论

通过分层测试架构与测试知识资产的指导,结合Go、TypeScript与Python测试工具链,本策略实现了从单元到端到端的全栈测试覆盖。配合Kafka与数据库的专项测试、性能与非功能性测试、CI/CD中的自动化执行与覆盖率报告,能够有效提升测试质量与软件可靠性,支撑BI分析平台的持续交付与高质量发布。

附录

  • 测试覆盖率要求建议
    • 单元测试:关键业务逻辑与算法达到高覆盖率(建议≥80%),边缘与异常路径必测。
    • 集成测试:数据库事务、消息可靠性、API契约覆盖主要路径。
    • 端到端测试:关键用户旅程与合规场景全覆盖。
  • 报告生成
    • Go模块通过覆盖率文件生成HTML报告,便于本地与CI查看。
    • k6输出JSON报告并在阈值不满足时返回失败码,便于CI判定。
  • 测试环境与数据管理
    • 使用配置抽象与环境变量切换测试配置,确保测试隔离。
    • 使用工厂与API种子生成唯一测试数据,避免竞态与污染。

章节来源