- Redmine
- 5.0 及以上、6.x, 7.x
- 报表
- 12 份,支持 CSV 与 Excel
- 权限
- 18 项,按项目角色分配
- CI/CD
- REST API,API 密钥认证
- 语言
- 50 个语言文件
- 问题跟踪器
- 沿用你现有的,原样不动
Reusable test cases
Suites & bundles
Immutable executions
Automation mapping
CI/CD REST API
Dashboards & reports
从需求到它引出的缺陷,一条链贯通
链上没有任何一环是副本。问题指向证明它的测试用例,每次运行新增一条执行记录,失败的执行记录指向它提出的缺陷。顺着链接往哪个方向走,落脚的都是真实的 Redmine 记录。
1. 问题
功能、用户故事或需求,放在你已经在用的任意跟踪器里。插件不会新增自己的跟踪器。
2. 测试用例
可逐个分配,也可通过测试包分配。同一个用例(例如 TC-41)可以服务任意多个问题。
3. 计划与运行
计划(TP-2)划定一次发布的范围;运行(TR-5)是针对某个构建的一轮测试。
4. 执行
通过、失败、阻塞或跳过,附带构建、提交、环境、步骤结果和截图。事后绝不修改。
5. 缺陷
一个普通的 Redmine 问题,由失败记录链接过来,可手动创建,也可在测试失败时自动创建。
把这条链拧紧的规则
TC-、TB-、TP-、TR- 和 DS- 编号,前缀由你决定;执行记录固定指向实际运行的用例版本;还可启用一条可选规则:测试未通过,问题就不能关闭。
完整流程,截自一套运行中的 Redmine 6.1
以下均为插件在 Redmine 默认主题下的真实界面。项目、人员和结果是演示数据,来自一家名为 Harbor Storefront 的虚构网店。
编写:可复用的测试用例库
按模块、状态、自动化情况和标签搜索与筛选。每个用例都有结构化步骤、评审记录和自己的版本历史。

计划:测试包、发布计划与测试数据
测试包把用例收拢起来以便复用。计划把测试包、问题、测试人员和 Redmine 版本串在一起。数据集为一个用例提供多行数据。


执行:测试就发生在问题上,也发生在运行里
开发和测试人员不用换地方工作。每个结果都是一条新的执行记录,所以历史本身就是审计轨迹。




决策:能回答“能不能发布?”的报表
十二份报表,每份都支持 CSV、Excel 和打印。其中两份专为发布评审而设。



按你的方式运转:导入、通知与设置



三十天的测试在报表里是什么样子
以下数字直接取自截图中的演示项目,从插件自带的报表中读出:2026 年 9 月 9 日至 10 月 8 日期间的 70 个测试用例和 1,242 次执行。它们展示的是插件能度量什么,并非基准数据,也不是客户的实际结果。
| 指标 | 数值 | 详情 |
|---|---|---|
| 测试用例 | 70 | 61 个已批准,5 个评审中 |
| 执行 | 1,242 | 856 次自动化,386 次手动 |
| 通过率 | 87.8% | 目标 90% |
| 自动化覆盖率 | 60% | 70 个用例中的 42 个 |
| 由失败引出的缺陷 | 5 | 已关联到失败的执行记录 |
| 环境 | 执行 | 通过 | 失败 | 阻塞 | 跳过 | 通过率 |
|---|---|---|---|---|---|---|
| QA | 700 | 610 | 47 | 29 | 14 | 87.1% |
| Staging | 344 | 307 | 20 | 10 | 7 | 89.2% |
| DEV | 162 | 142 | 12 | 5 | 3 | 87.7% |
| UAT | 36 | 31 | 3 | 1 | 1 | 86.1% |
| 模块 | 用例 | 执行 | 已通过 | 通过率 |
|---|---|---|---|---|
| API | 5 | 129 | 123 | 95.3% |
| 商品目录 | 8 | 118 | 112 | 94.9% |
| 通知 | 5 | 99 | 93 | 93.9% |
| 后台管理 | 6 | 62 | 56 | 90.3% |
| 搜索 | 6 | 143 | 128 | 89.5% |
| 身份认证 | 10 | 193 | 172 | 89.1% |
| 结算 | 8 | 131 | 114 | 87.0% |
| 订单 | 6 | 89 | 73 | 82.0% |
| 购物车 | 8 | 143 | 116 | 81.1% |
| 支付 | 8 | 135 | 103 | 76.3% |
在 Redmine 里,同样的数字会出现在仪表板上(通过率圆环、结果分布、14 天趋势、模块与组件覆盖率),也出现在表格型报表中,每份都可导出为 CSV 和 Excel。
围绕一条规则构建:测试用例绝不重复
可复用的测试用例
标题、前置条件、带预期结果的结构化步骤、模块、组件、优先级、严重程度、类型和标签。支持克隆、批量编辑、导入和导出。
保护历史的版本机制
编辑一个已经执行过的用例会生成新版本。旧的执行记录仍然指向当时实际运行的步骤。
评审与批准
草稿、评审中、已批准、已弃用。每个决定都会连同评审人、日期和意见一并记录,并通知作者。
测试包、计划与运行
测试包把用例分组以便复用。计划针对某个 Redmine 版本划定一次发布或一个冲刺的范围。运行记录的是某个构建上的一轮测试。
每个问题上都有测试面板
已分配的用例、最新结果、通过率、关联缺陷和一键记录,只在你选定的跟踪器上显示。
可审计的执行记录
每次运行新增一条记录,包含结果、方式、环境、构建、提交、耗时、步骤结果、日志和截图。任何内容都不会被覆盖。
数据驱动测试
可复用的数据集,列名自定。把它们关联到用例或整个测试包,并记录每次执行用了哪一行。
自动化映射与 CI/CD
把用例映射到某个框架和你的运行器认得的标识符,然后让流水线自行获取要跑的内容并上传结果。
仪表板与十二份报表
每位用户可用八种部件自行排布的仪表板,外加就绪度、覆盖率、趋势、环境、缺陷和监控等报表。
四个小小的生命周期,全都在页面上看得见
| 记录 | 主路径 | 其他状态 |
|---|---|---|
| 测试用例 | 草稿 → 评审中 → 已批准 | 要求修改、已弃用 |
| 测试计划 | 草稿 → 生效中 → 已完成 | 已归档 |
| 测试运行 | 已计划 → 进行中 → 已完成 | 已中止 |
| 执行结果 | 通过、失败、阻塞或跳过 | 未执行。每个结果都会标明是手动还是自动化。 |
流水线先问该跑什么,再把结果报回来
REST API 位于 /testcases/api/v1 之下,使用普通的 Redmine API 密钥认证。凡是能发 HTTP 请求的工具都能用它。插件内置一份指南,会带着你自己的 URL 一步步完成配置。
| 方法 | 端点 | 用途 |
|---|---|---|
| GET | /issues/:id/testing | 某个问题该跑哪些用例 |
| POST | /executions/upload | 一个构建针对一个问题的结果 |
| POST | /executions/bulk_upload | 多个问题或多个构建的结果 |
| POST | /test_runs | 为本次构建创建一次运行 |
| POST | /test_runs/:id/results | 把结果推送到某次运行 |
| GET | /test_cases | 列出、创建和更新用例 |
| GET | /test_plans | 列出、创建和更新计划 |
| GET | /issues/:id/coverage | 某个问题的测试覆盖情况 |
| GET | /reports/:name | 以 JSON 获取任意报表 |
| GET | /dashboard | 汇总指标 |
上传一次构建的结果
把问题 id、构建号、提交 SHA、环境和一组结果 POST 到 /executions/upload。结果会按自动化标识符、用例 id 或编号匹配到用例,每一条都成为一条新的执行记录。结果名称会被规范化,所以运行器给出的 passed、failure 和 ignored 都能正确归类;失败结果若带上 create_defect,还会创建一个关联的缺陷。
一个项目模块,十八项权限
测试是一个标准的 Redmine 项目模块。在需要测试的项目里启用它,只给每个角色它所需要的权限。菜单标签页随权限显示。
| 角色 | 典型权限 | 他们做什么 |
|---|---|---|
| QA 负责人 | manage_test_cases, approve_test_cases, manage_test_bundles, manage_test_plans, assign_test_bundles | 负责用例库,批准用例,搭建测试包和发布计划 |
| 测试人员 | view_test_cases, execute_tests, manage_test_runs, manage_test_data | 执行测试,记录结果,维护测试数据 |
| 自动化工程师 | manage_test_automation, view_test_executions | 把用例映射到框架和标识符 |
| 开发人员 | view_test_cases, view_test_executions, view_test_runs | 查看一个问题上测了什么、为什么失败 |
| 项目经理 | view_test_reports, view_test_plans | 查阅就绪度、覆盖率和监控报表 |
| CI 服务账号 | upload_test_results | 用自己的 API 密钥上传结果,仅此而已 |
| 管理员 | admin_testing_settings, manage_test_environments | 前缀、环境、目标和关闭规则 |
你的 Redmine 跑在哪里,它就跑在哪里
| 环境 | 状态 | 说明 |
|---|---|---|
| Redmine 7.x | 支持 | |
| Redmine 6.1 | 支持 | 开发目标版本,基于 Rails 7.2 和 Ruby 3.4。本页截图来自 6.1.2。 |
| Redmine 6.0 | 支持 | |
| Redmine 5.x | 支持 | 5.0 是插件声明的最低版本 |
| MySQL 8 | 支持 | 用于开发,也用于本页的演示 |
| 问题跟踪器 | 沿用你现有的 | 适用于任何跟踪器配置。可以把测试面板限定在选定的跟踪器上,也可以对全部跟踪器开放。 |
| 额外 gem | 一个,可选 | roo,仅用于导入 .xlsx 和 .xls 文件 |
三步完成安装
需要 shell 访问权限并能执行 rake 任务。安装插件前请务必备份。
cd /opt/redmine # unpack so the folder is plugins/redmine_testcases bundle install
RAILS_ENV=production bin/rails redmine:plugins:migrate NAME=redmine_testcases
# Project → Settings → Modules → Test Case Management # Administration → Roles and permissions → grant the testing permissions # Testing → Settings → environments, pass-rate target, trackers
RAILS_ENV=production bin/rails redmine:plugins:migrate NAME=redmine_testcases VERSION=0
它会新增自己的需求、用户故事或缺陷跟踪器吗?
有人编辑测试用例后,旧的结果会怎样?
测试失败能阻止问题被关闭吗?
它支持哪些 CI 系统?
失败能自动创建缺陷吗?
能把电子表格里的测试用例迁移过来吗?
本页上的数字是真实的吗?
价格
需要定制的 Redmine 解决方案?
想要我们现有插件尚未提供的功能?
RedmineKit 提供 Redmine 插件定制开发、现有插件改造、工作流自动化、第三方系统集成,以及为您的业务量身打造的解决方案。
告诉我们您的需求。我们会评估您的需求,并提供合适的方案,附上预估费用和时间。
