Probeとは?
Probeは、ソフトウェアが動くことをEnd-to-endで確かめる、無料のオープンソースツールです。 YAMLで書いたワークフローが、動いているサービスをHTTP、gRPC、SQL、メールなど、クライアントが使うのと同じプロトコルで操作し、応答を1つずつ検証します。 Probeは単体のバイナリで、手元でも、CIでも、cronからでも同じように動きます。
いま必要とされる理由
AIエージェントと開発すると、変更は速く、多くなります。 コードとユニットテストが通っても、ユーザーが目的を果たせるとは限りません。 ユーザーがたどる道筋(カスタマージャーニー)は、画面、API、データベース、メールなど、いくつものシステムにまたがるからです。 変更がその道筋を壊していないことは、動いているサービスを同じ道筋で操作して確かめる必要があります。 ユーザーが入力するフォーム、書き込まれる行、送信されるメールがそれにあたります。
Probeは、その確認を変更のたびに繰り返せるように、そしてAIエージェントもワークフローを書けるように作られています。
probe skillは、インストールされているバージョンに合うワークフローの書き方をAIエージェントに教えます。probe checkは、実行する前に書き間違いを見つけます。- ステップはOpenAPIドキュメントや
.protoファイルと照合できます。正しさを決めるのは、AIエージェントが書いたtestではなく仕様です。 --read-onlyと--allow-hostは、書き込みと、指定していないホストへの接続を、送信する前に拒否します。- レポートには、サービスが何をしたかがステップごとに載るので、変更をレビューする人が読めます。
次の例では、AIエージェントがワークフローとして書いたE2Eテストを検査し、サインアップAPIとそのデータベースに対して実行し、最後に--read-onlyでもう一度実行しています。
この形でプロジェクトを設定する手順は、AIエージェントと使うにあります。
何ができるのか?
ワークフローは1つのファイルなので、変更を確かめるために書いたものを、その後も使い続けられます。
- End-to-endテスト:エンドポイントを呼び、書き込まれた行を問い合わせ、送信されたメールを読むまでを1回の実行で行う
- APIテスト:リクエストと応答を、検証式とOpenAPIドキュメントの両方で確かめる
- 監視:
repeatで同じワークフローを一定の間隔で実行し、成功率を報告する - スモークテストとヘルスチェック:終了コードでデプロイを止める
- 再現できる実験:複数のプロトコルにまたがる手順を書き残し、同じ手順で何度でも実行する
主な特徴
同種のツールと比べたときのProbeの特徴は次のとおりです。 ほかのツールを選んだほうがよい場合は、類似ソフトウェアとの比較で説明しています。
複数のプロトコルを1回の実行で
HTTP、gRPC、MySQL、PostgreSQL、SQLite、SMTP、IMAP、DNS、SSH、シェルが組み込みです。ジョブはneedsで順序を決めない限り並行して動きます。
読みやすい
ワークフローは、jobs、steps、uses、withで構成する、GitHub Actionsに近いYAMLです。AIエージェントが書いたものを人がレビューできます。
AIエージェントへの対応
スキル、probe check、ガード、仕様との照合がバイナリに含まれています。
単体のバイナリ
Goで開発されており、実行時の依存がありません。1つのコマンドでインストールできます。
拡張可能
新しいプロトコルは、Probe本体を変更せず、独立したアクションとして追加できます。
簡単なワークフローの例
実際のコードを見ながらProbeの使い方を理解しましょう。
基本的なHello Worldワークフロー
まずは最もシンプルな例から始めましょう。以下のYAMLファイルを作成します:
name: Hello World Workflow
jobs:
- name: My First Job
steps:
- name: Say Hello
uses: hello
wait: 1s
echo: "Hello, World!"このワークフローをファイルに保存して実行します:
$ probe hello-world.yml
Hello World Workflow
⏺ My First Job (Completed in 1.07s)
⎿ 0. ✓ 🕐︎1s → Say Hello
Hello, World!
Total workflow time: 1.07s ✓ All jobs succeededより実践的な例:API監視
実際の使用例として、APIの稼働状況を監視するワークフローです:
name: API Health Check
jobs:
- name: Monitor API Health
defaults:
http:
url: https://httpbin.org
steps:
- name: Check Homepage
uses: http
with:
get: /status/200
test: res.code == 200
- name: Check API Response
uses: http
with:
get: /json
test: res.code == 200 && res.body != nilこのように、Probeを使えば簡単で迅速、そして楽しくワークフローを作成・実行できます。
利用可能なアクション
次のアクションが組み込まれています。 それぞれのページはリファレンスにあります。
| アクション | 用途 |
|---|---|
http | HTTPリクエストとその応答 |
grpc | gRPCとConnectの呼び出し(ストリーミングを含む) |
db | MySQL、PostgreSQL、SQLiteへのクエリ |
smtp | メールの送信 |
imap | メールボックスの読み取り |
dns | 名前に対してDNSサーバーが返すレコード |
ssh | リモートホストでのコマンド実行 |
shell | Probeを実行しているマシンでのコマンド実行 |
embedded | ステップから別のジョブファイルを実行 |
hello | レポートへの出力 |
外部アクションはそれぞれ独立したリポジトリにあり、ステップからコミットを指定して使います。 agent、android、browser、container、graphql、ios、jmap、mail-latency、redis、s3、websocketがあります。
カスタムアクション
必要なプロトコルを扱うアクションがなければ、Goで書いて外部アクションとして公開できます。 詳しくはアクションを参照してください。
始めてみましょう
Probeを始めるのは簡単です。以下の3つのステップで、すぐにワークフローを作成・実行できます:
適用シーン
Probeは様々な業務領域で活用できます。主な適用シーンをご紹介します。
DevOps・SRE
- CI/CDパイプラインでのスモークテスト
- サービス監視とアラート
- インフラストラクチャの健全性チェック
API開発・テスト
- REST APIの統合テスト
- パフォーマンステスト
- エンドツーエンドテストの自動化
運用・保守
- 定期的なヘルスチェック
- システム間の連携確認
- 障害時の自動復旧処理
困った時は?
Probeの使用中に問題が発生した場合や質問がある場合の、サポートリソースをご案内します。
ドキュメント
このウェブサイトには包括的なドキュメントが用意されています。基本的な使い方から高度な機能まで、すべてカバーしています。
コミュニティサポート
質問、フィードバック、アイデアの議論にはGitHub Discussions をご利用ください。お気軽にディスカッションを始めてください。
バグ報告
バグを発見した場合は、GitHub Issues で報告してください。
プロジェクトを応援してください
このプロジェクトが役に立ったら、ぜひ応援してください!皆様のご支援が開発者にとって大きな励みとなります。
- GitHubでスター を付ける
- Xでツイートして友人に紹介
- ブログや記事で紹介
- 機能改善のアイデアを提案
オープンソースへの貢献
オープンソースプロジェクトへの貢献に興味がある方、今がチャンスです!コードの貢献、ドキュメントの改善、バグ報告など、あらゆる形での貢献を歓迎します。