parallel_tests
3,527
Stars
—
Forks
0
Watchers
—
Open Issues
待补全
许可证
Ruby
语言
—
创建时间
最近更新
项目能做什么
利用多核 CPU 加速 Ruby 运行 RSpec、Test::Unit 和 Cucumber 测试的并发工具。
来源:AI 基于仓库事实生成
· 内容以仓库实际 README 为准
使用说明 查看原始 README 原仓库文档
中文使用说明暂未生成。下面保留原仓库 README 摘录,命令与配置均以原文为准。
原始 README 摘录(英文原文,节选前 3000 字符)
# parallel_tests
[](https://rubygems.org/gems/parallel_tests)
[](https://github.com/grosser/parallel_tests/actions?query=workflow%3Atest&branch=master)
Speedup Minitest + RSpec + Turnip + Cucumber + Spinach by running parallel on multiple CPU cores.<br/>
ParallelTests splits tests into balanced groups (by number of lines or runtime) and runs each group in a process with its own database.
Setup for Rails
===============
[RailsCasts episode #413 Fast Tests](http://railscasts.com/episodes/413-fast-tests)
### Install
`Gemfile`:
```ruby
gem 'parallel_tests', group: [:development, :test]
```
### Add to `config/database.yml`
ParallelTests uses 1 database per test-process.
<table>
<tr><td>Process number</td><td>1</td><td>2</td><td>3</td></tr>
<tr><td>ENV['TEST_ENV_NUMBER']</td><td>''</td><td>'2'</td><td>'3'</td></tr>
</table>
```yaml
test:
database: yourproject_test<%= ENV['TEST_ENV_NUMBER'] %>
```
### Create additional test database(s)
rake parallel:create
rake parallel:create:<database> # if using multi-db setup, <database> would be `secondary` for example
### Copy development schema into all test databases (repeat after migrations)
rake parallel:prepare
### Run!
rake parallel:test # Minitest
rake parallel:spec # RSpec
rake parallel:features # Cucumber
rake parallel:features-spinach # Spinach
rake "parallel:test[1]" --> force 1 CPU --> 86 seconds
rake parallel:test --> got 2 CPUs? --> 47 seconds
rake parallel:test --> got 4 CPUs? --> 26 seconds
...
Test by pattern with Regex (e.g. use one integration server per subfolder / see if you broke any 'user'-related tests)
rake "parallel:test[^test/unit]" # every test file in test/unit folder
rake "parallel:test[user]" # run users_controller + user_helper + user tests
rake "parallel:test['user|product']" # run user and product related tests
rake "parallel:spec['spec\/(?!features)']" # run RSpec tests except the tests in spec/features
### Example output
2 processes for 210 specs, ~ 105 specs per process
... test output ...
843 examples, 0 failures, 1 pending
Took 29.925333 seconds
### Run an arbitrary task in parallel
```Bash
RAILS_ENV=test parallel_test -e "rake my:custom:task"
# or
rake "parallel:rake[my:custom:task]"
# limited parallelism
rake "parallel:rake[my:custom:task,2]"
```
### Run migrations in all test databases (repeat after migrations)
rake parallel:migrate
rake parallel:migrate:<database> # for multi-db setup
### Setup environment from scratch (create db and loads schema, useful for CI)
rake parallel:setup
### Drop all test databases
rake parallel:drop
rake parallel:drop:<database> # for multi-db setup
Running setup or teardown once
===================
```Ruby
require "parallel_tests"
阅读完整原文
项目深度分析 AI 生成
CI 测试耗时分析与智能分组 SaaS
| 产品构想 | 基于 parallel_tests 的 runtime-log 机制,提供云端 SaaS 服务自动收集每次 CI 的测试耗时,动态计算最优分组策略并通过 API 下发给 CI 节点,同时提供慢测试趋势告警。 |
| 核心功能 | runtime-log 云端自动上传与拉取、基于历史数据的智能负载均衡算法、慢测试排行榜与波动监控面板。 |
| 目标用户 | 测试运行时间超过 10 分钟、使用 GitHub Actions/GitLab CI 等云端 CI 的 Ruby/Rails 团队。 |
| 难度/周期 | 中 · 1-2 个月 · 成本:低(轻量级 Web 服务与对象存储) |
| 收费模式 | 按团队规模或月度 CI 构建次数订阅收费(SaaS)。 |
| 竞争风险 | 部分团队可能仅使用免费的 CI 缓存机制即可满足需求,付费转化率需验证。 |
| 依据 | 已验证事实(README 明确提到需手动或通过 CI 脚本上传/下载 runtime-log 以实现均衡分组) |
分布式跨机测试编排器(CI Matrix 增强)
| 产品构想 | parallel_tests 目前主要针对单机多核并行(依赖多数据库实例 ENV['TEST_ENV_NUMBER']),可将其扩展为支持跨多台 CI 容器/虚拟机的分布式并行调度工具,突破单机 CPU 核数上限。 |
| 核心功能 | 跨节点测试文件动态分发、统一测试结果聚合、与主流 CI 矩阵(Matrix)无缝集成的 CLI 包装器。 |
| 目标用户 | 拥有超大型测试套件、单机多核仍无法满足构建速度要求的中大型 Rails 企业。 |
| 难度/周期 | 中高 · 2-3 个月 · 成本:低至中 |
| 收费模式 | 开源核心 + 商业版调度服务/企业授权(Open Core)。 |
| 竞争风险 | 市面上已有 Knapsack Pro 等类似竞品,需明确差异化优势(如零配置兼容现有 parallel_tests)。 |
| 依据 | AI推测 |
Rails 测试提速与 CI 成本优化专项服务
| 产品构想 | 面向不愿自研基础设施的团队,提供基于 parallel_tests 的标准化加速方案落地,包括多数据库配置、CI 缓存优化及测试隔离问题排查。 |
| 核心功能 | CI 流水线诊断报告、parallel_tests 定制化脚本与数据库配置模板、团队培训与长期技术支持。 |
| 目标用户 | 测试环境配置复杂、存在数据库锁或竞态条件(如 README 提及的 first_process 竞态问题)的 Rails 团队。 |
| 难度/周期 | 低 · 2-4 周即可启动 · 成本:极低(主要为人力时间成本) |
| 收费模式 | 按项目一次性咨询收费或按月收取顾问服务费。 |
| 竞争风险 | 服务模式难以规模化,高度依赖个人交付时间。 |
| 依据 | 尚需验证的假设 |
AI 基于仓库公开数据分析生成,含推测成分,不构成收益承诺。
报告会保存到 个人中心
竞品与相似项目 GitHub Search 真实检索
相似项目数据正在完善中,暂不展示(避免误导)
项目优势与风险
| 技术成熟度 | 创建时间待补全,最近推送 |
| 社区活跃 | Star 3,527 / Fork 0 / Issue 0(数据支持,可自行核实) |
| 许可证 | 未检测到(需人工确认) |
| 主要风险 | 上游项目方向可能变化;同赛道竞争者较多(见竞品表);热度与需求不完全等价 |
安装与使用
快速开始(以仓库 README 为准)
git clone https://github.com/grosser/parallel_tests.git cd parallel_tests docker compose up -d # 或参考 README 中的 docker run 命令
术语说明:Docker=应用容器(把程序和依赖打包运行);API Key=调用外部服务的密钥;Git Clone=把仓库代码下载到本地。常见错误:API Key 未配置 / 端口占用 / 数据库连接失败,多数项目在 README 的 Troubleshooting 章节有说明。