OrangePro について
OrangeProは開発者向けのローカルテスト分析ツールで、関数とテストの証拠を対応付け、保護されていないコードを順位付けし、意図的な変更をテストが検出するか検証します。分析と順位付けにLLMは不要で、任意のテスト生成にはユーザー提供のキーを使います。
主な機能
- 01関数とテスト証拠の対応付け
- 02リスクに基づくテスト不足の順位付け
- 03ミューテーションによるテスト検証
- 04任意のテスト案生成
- 05HTMLレポートとtests.csvの作成
活用シーン
- 01未検証の関数に優先順位を付ける
- 02テストがコード変更を検出するか確認
- 03コーディングエージェントでテスト不足を確認
- 04QAワークフロー向けにテスト案を出力
MCP 対応
MCPサーバーとして、コーディングエージェントに順位付けされたテスト不足、推奨テスト場所、検証手順を提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @orangepro/mcp-serverOPENAI_API_KEYシークレットOptional OpenAI BYOK key for AI candidate links and test generation.ANTHROPIC_API_KEYシークレットOptional Anthropic BYOK key for AI candidate links and test generation.OLLAMA_BASE_URLOptional Ollama endpoint for local AI candidate links and test generation.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
18掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| fresh | boolean | いいえ | 前回の実行以降に変更がない場合でも、完全実行します。デフォルトでは、変更のないリポジトリは unchanged_since と前回実行時のレポートをすぐに返します。 |
| model | string | いいえ | モデル名の上書き。 |
| no_ai | boolean | いいえ | プロバイダーキーが設定されていても、AI による弱いリンクと候補フローの処理を無効にします。 |
| ai_all | boolean | いいえ | ギャップのみではなく、すべての決定論的な動作ノードに対して AI による弱いリンク処理を実行します。 |
| source | string | いいえ | 分析するソースパス。デフォルトはワークスペースです。 |
| base_ref | string | いいえ | 任意の PR/差分ベース参照。デフォルトでは、可能な場合に main/master を自動検出します。 |
| provider | enum | いいえ | AI パス用の BYOK プロバイダーの上書き。openai | ollama | anthropic |
| workspace | string | いいえ | ローカルワークスペースのルート。デフォルトは現在のディレクトリです。 |
| no_ai_flows | boolean | いいえ | 弱い AI リンクを有効にしたまま、自動 AI 候補フローの検出を無効にします。 |
| prompt_version | enum | いいえ | 自動証明生成レーンのオプトイン生成戦略。デフォルトは v2/deterministic で、v5 はバッチ処理による 2 段階生成を使用します。どちらの場合も、証明/ミントのゲートは変わりません。v2 | v5 |
| include_markdown | boolean | いいえ | 要件に類する Markdown ドキュメントを補強します。デフォルトは true です。 |
| generate_coverage | boolean | いいえ | サポートされている場合、analyze の前に安全なローカルカバレッジ生成を実行します。デフォルトは false です。 |
| coverage_timeout_ms | integer | いいえ | コマンドごとのカバレッジ生成タイムアウト。 |
詳細
テストが実際にどのコードを保護しているかを確認しましょう。コードを意図的に壊して、それを証明します。
OrangeProは、リポジトリ内のすべての公開関数をマッピングし、それぞれを実際に呼び出すテストに結び付け、残りの関数を壊した場合の影響に基づいて順位付けします。重要なテストについては、隔離されたコピー内で関数を壊し、そのテストが失敗するか確認します。お使いのマシン上で実行され、スコアリングにAIモデルを使用せず、OrangeProにデータを送信することもありません。モデル呼び出しが行われるのは、任意のテスト生成や提案のために独自のキーを追加した場合のみです。
npx -y @orangepro/mcp-server@latest start .
目次
- 得られるもの
- 開発者に選ばれる理由
- クイックスタート
- エビデンスの段階
- 順位付けの仕組み
- テストを証明する
- コーディングエージェントと使う
- 設定
- 言語サポート
- 要件と制限
- プライバシーとネットワークの利用
- フィードバック
- リファレンス
得られるもの
実行するたびに、2つのレポートとテスト一覧のスプレッドシートが .orangepro/ に出力されます。
| ファイル | 対象 | 内容 |
|---|---|---|
short_behavior-coverage.html | リーダー、マネージャー、時間がない方 | 1ページに、優先度上位20個の関数に対して何をすべきか、理由とそれぞれに作成されたテストを含む上位5個、前回のレポートからの変更点、実行を再現する方法をまとめています。 |
behavior-coverage.html | 開発者 | 作業リスト: 順位付けされたすべての関数と、それぞれに対して何をすべきか、フィルター、エビデンス・順位付けの理由・作成されたテスト2件・証明コマンドを示すサイドパネルを掲載します。マップ: テストが領域ごとにどこまで到達しているかを示します。実行の詳細: 入力、件数、証明、フィンガープリント、設定を示します。 |
tests.csv | QA、テストマネージャー | テスト枠ごとに1行(事前条件、手順、テストデータ、期待結果、優先度、フォルダー)を含み、Excel、Google Sheets、TestRail、Jira Xray、Zephyr Scaleでそのまま使用できます。詳細レポートの Export tests (CSV) からダウンロードでき、列の対応関係は実行の詳細で確認できます(tests.csv のインポート)。 |
各関数には、次の4つの対応のいずれかが割り当てられます。
| 意味 | 対応 | |
|---|---|---|
| 完了 | このコードを壊すと、テストが失敗します。 | 対応は不要です。コードが変更されると、「証明」に戻ります。 |
| 証明 | テストがこの関数を実行するか、カバレッジ実行で実行されますが、破損を検知すると証明されたテストはありません。 | 証明コマンドを実行します。 |
| 確認 | テストファイルまたはテスト名がこの関数を指していますが、呼び出しは追跡されていません。 | まずそのテストファイルを読みます。その関数を実行するテストなら証明し、そうでなければテストを1件作成します。 |
| 作成 | まだこの関数の破損を検知するテストはありません。 | テストを作成します(上位20件については2件作成済みです)。その後、証明します。 |
1ページの概要
### 詳細レポート
どちらも、モデルキーなしで、コミット 64a5213 の OrangePro 自身のリポジトリを対象に実行したものです。そのため、テストは作成されていません。キーを設定すると、上位 20 件のそれぞれにテスト案が 2 つ表示され、サイドパネルにはそれらの手順とコードが表示されます。
開発者が活用する理由
- テストが何を実際に検証しているのかがわかります。実行している内容だけではありません。 関数を呼び出すテストが、その関数を検証しているとは限りません。
opro proveは、分離したコピー内で関数本体を固定の戻り値に置き換え、変更していない実際のテストを再実行します。それでもテストが成功するなら、そのテストはその関数を保護していません。 - 影響の大きいものから優先します。 1 つのフィルターで、削除または一括削除に至るコードパス(キャッシュの削除は対象外)を表示できます。ほかのフィルターでは、変更頻度が高いコード、多くの呼び出し元があるコード、スケジュール実行されるコードを表示します。
- 根拠を正直に示します。 テストがその関数を正確に呼び出す場合に限り、関数は「リンク済み」になります。似た名前のテストは手がかりであって、カバレッジではありません。モックのチェックだけを行うテストは対象外です。
- 再現性があります。 同じコミット、完全な Git 履歴、同じ設定、同じバージョンであれば、同じ順位になります。各レポートにはフィンガープリントが記録されるため、結果の変化がコードによるものか、ツールによるものかを見分けられます。
- コーディングエージェントから操作できます。 MCP サーバーとして、Claude Code、Cursor、Copilot、Codex などに、順位付けされた不足箇所、推奨するテストの場所、証明手順を 1 つのループで提供します。
- 無料で、ローカルで動作するオープンソース(MIT)です。 アカウントも、分析用の API キーも不要で、アップロードもありません。
クイックスタート
cd /path/to/your/repo
# install the repo's own dependencies first (npm ci, uv sync, go mod download, ...)
npx -y @orangepro/mcp-server@latest start .
open .orangepro/short_behavior-coverage.html
分析、順位付け、証明にモデルキーは必要ありません。テスト生成は任意で、ご自身のキーを使用します(モデルの設定を参照)。
最も正確に実行するためのヒント:
- 浅いクローンではなく、完全なクローンを使用してください。 変更履歴は順位付けの一部に影響し、履歴が不完全な場合はレポートに表示されます。
rank_exclude_pathsでプロダクトコード以外を除外してください(設定を参照)。- 変更後に再実行してください。 各レポートには、前回からの変更内容が記載されます。何も変わっていない場合(同じコミット、ファイル、設定、カバレッジ、証明)、
startは前回のレポートをすぐに再利用し、その旨を表示します。--freshを指定すると、いずれの場合もすべて実行します。
出力される内容:
.orangepro/
├── short_behavior-coverage.html ← one-page summary
├── behavior-coverage.html ← detailed report: worklist, map, run details
├── tests.csv ← drafted tests, one row per test
├── report-data.json ← the data both reports show (used to compare and reuse runs)
├── run-key.json, last-start.json ← what the last run saw, so an unchanged repo is not analysed again
├── graph.json ← the evidence graph (deterministic)
├── ledger.json ← proof certificates
├── rtm.md ← traceability matrix
└── config.json ← optional per-repo settings
orangepro_generated/ ← generated tests (only with a model key); your files are never edited
根拠の段階
すべての関数には、根拠ラベルが 1 つだけ付与されます。上記の 4 つの対応項目は、このラベルに基づいて表示されます。
| 根拠 | 意味 | 対応 |
|---|---|---|
| 証明済み | 元のコードではテストが成功し、この関数を分離したコピー内で壊した場合、テストは自身のアサーションで失敗しました。 | 完了 |
| テストで実行済み | 実行したカバレッジツールが、このコードを実行しました。 | 証明 |
| リンク済み | テストがこの関数を正確に呼び出しています。これは構造上のつながりであり、証明ではありません。 | 証明 |
| 未確認 | テストファイル、または似た名前のテストがこの関数を指していますが、呼び出しは追跡されていません。これは手がかりであり、根拠ではありません。 | 確認 |
| テスト未検出 | テストとのつながりが見つかりません。 | 作成 |
証明を実行しても不具合を検出できなかった場合、その関数は 作成 になります。コード変更前に行った証明は、再び 証明 になります。
OrangePro がカウントしない項目。リンク数はカバレッジ率ではなく、最低数を示します:
- モックに対するアサーションしか行わないテスト。
- HTTP 経由、またはエンドツーエンドテストスイートからの呼び出し。
- Python で、フィクスチャを介してのみテストに到達するオブジェクト。
フラグが付いたパスに対して新しいテストを書く前に、既存のテストを確認してください。
「証明済み 0」は初回実行では通常の状態です。 証明ではテストを実行するため、選択した関数、または
opro startの試行予算内にある関数のみが対象になります。
ランキングの仕組み
まだテストで証明されていない各関数に OrangePro リスクスコア(ORS = P × I × D)が付与されます。
- P:変更される可能性です。変更履歴、影響範囲、新しいコード、コードの規模を考慮します。
- I:問題が発生した場合の影響です。参照元の数、エントリーポイントとしての位置、データの機密性に加え、2 回以内の呼び出しで削除または消去に至るパスに対する下限値を考慮します。
- D:問題の発見しにくさです。証拠の階層(リンクされたテストやカバレッジ実行があれば、名前の一致のみ、または何もない場合よりも問題を発見しやすくなります)と、無人で実行されるかどうか(ジョブやスケジューラー)を考慮します。
スコアによって作業順が決まります。これは欠陥が発生する確率ではありません。重みは固定されており、AI モデルは関与しません。レポートには各行の算出根拠が表示されます。
テストを証明する
# Python: the mutation value is derived from the function (return annotation or its observed result)
opro prove-loop --target-symbol 'sym:app/billing/invoices.py#void_invoice' \
--test 'tests/test_invoices.py::test_void_marks_invoice_void' --replacement sentinel
# TypeScript / JavaScript: give the inert body to substitute
opro prove-loop --target-symbol 'sym:src/orders.service.ts#OrdersService.cancel' \
--test src/orders.service.spec.ts --replacement 'return null;'
- 証明済み: 元のコードではテストが成功し、壊したコードではそのテスト自身のアサーションで失敗します。
- 未証明: 壊したコードでもテストが成功するため、その関数を保護できていません。これも調査結果です。
- 実行不可: セットアップに失敗しました。どちらの場合にもカウントされません。
モデルキーなしで弱いテストを見つける:
opro roast . # passing tests whose targeted mutant still survives
コーディングエージェントで使用する
OrangePro は MCP サーバーとして動作します。クライアントの設定に追加してください。
{
"mcpServers": {
"orangepro-local": {
"command": "npx",
"args": ["-y", "@orangepro/mcp-server@latest", "mcp"]
}
}
}
| クライアント | 設定場所 |
|---|---|
| Claude Code | .mcp.json または ~/.claude.json |
| Cursor | ~/.cursor/mcp.json または Settings → MCP |
| VS Code / Copilot | MCP settings |
| Codex / OpenCode / Windsurf | npx -y @orangepro/mcp-server@latest agent --client codex を実行すると、セットアップ方法が表示されます |
一連の処理を実行するプロンプト:
「
orangepro_startを使い、続けてorangepro_find_test_gapsを実行してください。最も優先度の高いギャップについて、提案されたパスにテストを書いて実行し、その後orangepro_prove_loopを呼び出して、証明できたかどうかを教えてください。」
設定
任意です。リポジトリ内の .orangepro/config.json、またはすべてのリポジトリに適用する既定値として ~/.orangepro/config.json に設定します。ランキングを変更する各設定はレポートに表示されます。
{
"classification": {
"rank_exclude_paths": ["ui/**", "docs/**", "scripts/**"],
"test_support_paths": ["internal/testutil/**"],
"destructive_sinks": ["archive*"]
},
"tuning": { "churn_window_days": 180 },
"proof": { "python_runner": "auto", "attempt_limit": 20 },
"overrides": [
{ "symbol": "sym:src/legacy/shim.ts#shim", "action": "suppress", "reason": "generated shim, not product code" }
]
}
rank_exclude_pathsはランキングからパスを除外します。動作としては引き続きカウントされます。destructive_sinksはコードベースで削除に類する呼び出しを追加します。- オーバーライド(
suppress、pin、reclassify)にはそれぞれ理由が必要で、レポートにも記載されます。 - 重みと階層は設定できません。
言語サポート
| 言語 | 関数のマッピング | 関数を呼び出すテストのリンク | テストの下書き | ミューテーションによる証明 |
|---|---|---|---|---|
| TypeScript / JavaScript | ✓ | ✓ | ✓ Jest, Vitest, Mocha | ✓ Jest, Vitest, Mocha |
| Python | ✓ | ✓ | ✓ pytest | ✓ pytest |
| Go | ✓ | ✓ | ✓ *_test.go | ✓ go test |
| Java | ✓ | ✓ | ✓ JUnit 4 and 5 | ✓ Maven with JUnit 5 only |
| Kotlin, Rust, PHP, C#, Ruby, Swift, C, C++ | ✓ | 名前の一致のみ | 未対応 | 未対応 |
- 「名前の一致のみ」の場合、関数に似たテストファイル名またはテスト名があると、未確認(要確認)になります。呼び出しは追跡されないため、これらの言語では現時点でリンク済みまたは証明済みにはなりません。
- TypeScript と JavaScript は TypeScript コンパイラーで解析し、その他の言語は tree-sitter で解析します。
- Python の証明では、リポジトリ独自の環境を通して pytest を実行します。既存の
.venvまたはvenvを使用し、ロックファイルがある場合はuvまたはpoetryを使用します。それ以外の場合はpython -m pytestを実行します。独自のコマンドを使用するにはproof.python_runnerを設定してください。 - Java の証明には Maven(Surefire)と JUnit 5 が必要です。Gradle および JUnit 4 のプロジェクトはマッピングとリンクができますが、まだ証明には対応していません。
- まだ追跡されていないため、テスト済みのコードでも未確認と表示される場合があります。対象は、Go のテストスイートメソッドやヘルパーコンストラクターを介した呼び出し、実行時に配線される依存性注入、リフレクション、HTTP または RPC 経由の呼び出しです。
要件と制限
- macOS または Linux で、パッチが適用された Node.js:22.23.4 以降の 22.x、24.22.1 以降の 24.x、または 26.12.1 以降。 Windows はテストされていません。証明では POSIX パスとシンボリックリンクを使用します。
- パッチが適用された Node.js を使用してください。 2026 年 10 月 21 日の Node.js セキュリティリリース(22.23.4、24.22.1、26.12.1)では、重大度の高い問題がいくつか修正されています。また、Node.js 20 はサポート終了となっており、修正は提供されません。奇数番号の系列(23、25)には、パッチ適用済みリリースがありません。
package.jsonのenginesフィールドにはこの要件が記載されていますが、engine-strict=trueを設定しない限り、npm は警告を表示するだけです。node -vでバージョンを確認してください。Node.js のセキュリティリリースに関するお知らせを参照してください。 - 変更履歴の確認に Git が必要です。 Git がない場合、またはシャロークローンの場合、順位付けには構造だけが使われ、その旨がレポートに記載されます。Git チェックアウトではないフォルダーでは、常に全件実行されます。
- 最初にリポジトリの依存関係をインストールしてください(
npm ci、uv sync、go mod download、mvn -q install、…)。証明では、分離されたコピー内で独自のテストを実行するため、そこでテストがパスする必要があります。 - 読み取り対象: ソースファイルとテストファイル。
.gitignoreまたは.orangeproignoreに記載された項目(!による除外解除は未対応)、一般的なビルドおよび依存関係のフォルダー(node_modules、vendor、dist、build、target、coverage、.venv、…)、1 MB を超えるファイル、生成コード(Code generated … DO NOT EDITと記されたファイル)は対象外です。最大 100,000 ファイルです。ORANGEPRO_MAX_FILESでその数を減らし、ORANGEPRO_MAX_ANALYZE_MSでスキャンの制限時間を設定できます。 - テストのドラフト作成では、優先度が最も高い 20 個の関数を対象に、各関数につき 2 つのテストを、ワークリストに表示される順序で作成します。レポートにもこの 20 個が表示されます。関数のコードが変更されるまで、ドラフトは保持されます。
- 実行を再利用する際に「何も変更されていない」と見なす条件: コミット、Git で無視されない変更済みまたは未追跡のすべてのファイル、OrangePro の設定ファイルと除外ファイル、カバレッジファイル、証明台帳、
startオプション、モデルキーが設定されているかどうか、および分析バージョン。プロバイダーエラー(クレジット不足、レート制限)でテストのドラフト作成に失敗した実行は、全件再実行されます。 - CSV の列の対応付けは、各ツールの CSV インポーターに従います(tests.csv のインポートを参照)。初回はインポートプレビューを確認してください。
プライバシーとネットワークの使用
- コードや実行に関する情報が外部に送信されることはありません。 使用状況のテレメトリーはありません。
- ソースはプロセス内で読み取られ、保存またはアップロードされることはありません。 レポートとエビデンスグラフにはメタデータが含まれ、ソースは含まれません。
- ソースファイルが編集されることはありません。 証明は分離されたコピー内で実行されます。
- モデル呼び出しが行われるのは、キーを設定した場合だけです。 選択したプロバイダーへ、マシンから直接送信されます。キー、プロバイダー、そのエンドポイントとモデルは、シェル環境または MCP クライアントの設定にある
envブロックからのみ読み取られます。OrangePro は.envファイルを読み取らないため、スキャン対象のリポジトリがキーの送信先を指定することはできません。また、OrangePro がキーをどこかに書き込むこともありません。opro setupが保存するのは、プロバイダー名とモデル名だけです。 - キーを設定すると、レポートと
tests.csvにはモデルが作成したテストが含まれます。 また、プロンプトには、対象となる関数名、ファイル名、および根拠となるエビデンスが含まれます。 - レポートがネットワークから何かを読み込むことはありません。 外部リンクは、クリックしたものだけです。
フィードバック
レポートにはフィードバックを送信リンクと、各指摘事項にこれは間違っているようですリンクがあります。ときどき、指摘事項の後に、レポートが役に立ったかどうかも尋ねます。
- リンクを通じてプロジェクトに関する情報が送信されることはありません。 フォームから送信されるのは、確認して送信した内容だけです。
- メールアドレスを入力しない限り、匿名のままです。
opro feedback # print the link and your settings
opro feedback off # stop the "Did this help?" question (links stay)
ORANGEPRO_FEEDBACK_URL=off # hide every feedback link
質問が表示されるのは、最長でも 14 日に 1 回です(ORANGEPRO_FEEDBACK_COOLDOWN_DAYS)。この設定はお使いのマシンにのみ保存されます。MCP クライアントはリンクを任意の結果メタデータ(_meta["ai.orangepro/feedback_url"])として受け取り、エージェントからフィードバックを求めるプロンプトが表示されることはありません。
リファレンス
CLI
```bash opro # same as opro start . opro start . --no-ai --no-auto # analyze + reports, no model calls, no proof attempts opro start . --fresh # run in full even when nothing changed since the last run opro start --base main # scope to a branch diff opro analyze # build the evidence graph and reports opro gaps --limit 10 # top unproven behaviors, ranked opro prove-loop ... # mutation proof for one function (see above) opro roast . # find tests whose mutant survives (no key needed) opro doctor --proof # why top targets aren't proven yet opro generate --base main # tests for what this branch changed (needs a model key) opro rtm # traceability matrix opro export # metadata-only evidence pack opro coverage # find or generate runtime coverage artifacts opro feedback [on|off] # feedback link and invitation setting opro mcp # run as an MCP server (stdio) ``` 機械処理向けの出力には、読み取りコマンドに `--json` を追加してください。各フラグについては `opro help` を実行してください。MCP ツール(18)
| ツール | 機能 |
|---|---|
orangepro_start | 分析を行い、両方のレポートと tests.csv を作成して、次のアクションを返します。変更がない場合は unchanged_since とともに即座に返し(fresh を指定すると全処理を実行します)、 |
orangepro_analyze_sources | エビデンスグラフを構築または更新します |
orangepro_find_test_gaps | ORS に基づいて順位付けした、証明されていない動作 |
orangepro_prove_loop | 1 つの動作について、セットアップ+ミューテーション証明+レポート更新を行います |
orangepro_prove | ミューテーション証明のみを行います |
orangepro_generate_tests | ギャップに対する根拠のあるテスト(モデルキーが必要です) |
orangepro_changed_impact | 差分が影響する範囲 |
orangepro_status | 何も実行せずにワークスペースの状態を表示します |
orangepro_doctor | 次に追加すべきエビデンス |
orangepro_graph_score | グラフの準備状況(0~100) |
orangepro_rtm | トレーサビリティマトリクス |
orangepro_stats | 集計統計 |
orangepro_record_run | テスト実行結果を記録します |
orangepro_explain_test | テストが生成された理由 |
orangepro_export_evidence_pack | メタデータのみのエビデンスパック |
orangepro_update_graph | グラフを段階的に更新します |
orangepro_ai_links | 動作→コードの弱い候補(オプションの AI を使用しますが、エビデンスにはなりません) |
orangepro_ai_flows | フロー候補(オプションの AI を使用しますが、エビデンスにはなりません) |
カバレッジ関連成果物
まず独自のユニットテストと統合テストのカバレッジを実行してから、opro start を実行してください。OrangePro は Go coverprofile、lcov、coverage.py XML、JaCoCo XML を取り込み、ユニット、統合、未分類のカバレッジを別々に保持します。成果物にラベルを付けるには、.orangepro/coverage-suites.json を追加してください。
{
"artifacts": {
".orangepro/coverage/unit.coverprofile": { "suite": "unit", "command": "make unit-test-coverage" },
".orangepro/coverage/integration.coverprofile": { "suite": "integration", "command": "make integration-test-coverage" }
}
}
モデルの設定(BYOK、生成時のみ)
| プロバイダー | 環境変数 |
|---|---|
| OpenAI 互換 | OPENAI_API_KEY(任意:OPENAI_BASE_URL、OPENAI_MODEL) |
| Anthropic | ANTHROPIC_API_KEY(任意:ANTHROPIC_MODEL) |
| Ollama(ローカル、キー不要) | OLLAMA_BASE_URL(任意:OLLAMA_MODEL) |
自動検出の順序:OpenAI → Ollama → Anthropic。--provider と --model で上書きするか、opro setup を実行してください。
- モデルの出力によってエビデンスの階層が変わることはありません。 動作を Proven としてマークできるのは、ミューテーション証明のみです。
- 生成されたテストは
orangepro_generated/に保存されます。 根拠となったファイルと既存テスト、およびテストの実行場所と方法も記載されます。 - コンパイルチェックに失敗したコードを含むドラフトは、理由を明記した計画(「Plan only」)として保持されます。 キーがない場合、上位 20 件のそれぞれに、コーディングエージェントにコピーできるプロンプト付きの空スロットが 2 つ表示されます。
tests.csv のインポート
テストごとに 1 行を使用し、UTF-8 で保存します。最初の 12 列はインポート用です。残りの列には、各テストの優先度、エビデンス、証明コマンドが保持されます。優先度は、順位上位 5 関数が High、それ以外が Medium です。
tests.csv の列 | TestRail | Jira Xray | Zephyr Scale |
|---|---|---|---|
| ID | Test Case Identifier | (Key は空欄のまま) | |
| Title | Title | Summary | Name |
Section (a > b) | Sections Hierarchy | ||
Folder (a/b) | Test Repository Path | Folder | |
| Priority | Priority | Priority | Priority(Medium を Normal に対応付け) |
| Test type | Type | Labels | Labels |
| Preconditions | Preconditions | (Xray では別の課題にします。必要に応じて Description に追加してください) | Precondition |
| Steps | Manual Test Step: Action | ||
| Test data | Manual Test Step: Data | ||
| Steps with data | Steps | Test Script (Steps) - Step | |
| Expected result | Expected Result | Manual Test Step: Expected Result | Test Script (Steps) - Expected Result |
| References | References | Description | Objective |
- TestRail: **Test Case (Text)**テンプレートを使用してCSVからインポートします。テストケースごとに1行です。
- Jira Xray: Test Case Importerを使用します。各テストは1つの手動ステップとしてインポートされます。
- Zephyr Scale: テストデータ用のフィールドがないため、Steps with dataに記載します。
- 確定する前に、インポーターのプレビューを確認してください。
PR ワークフロー
opro generate --base main # tests for what this branch changed (read-only git diff)
opro generate --changed # current branch vs its base
opro generate --pr 1234 # checks out PR #1234 (asks first; refuses on a dirty tree)
ホステッドプラットフォーム
このリポジトリは無料のローカルツールです。OrangePro platformでは、次の機能が追加されます。
- PRとリポジトリをまたいで永続化されるグラフ
- エビデンスとリスクの変更に対するCIゲート
- 要件とインシデントの相関付け
- チームダッシュボード
貢献
git clone https://github.com/OrangeproAI/orangepro-mcp.git
cd orangepro-mcp && npm ci && npm run build
npm test
PRを歓迎します。大規模な変更の場合は、まずissueを作成してください。
MIT License · orangepro.ai
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。