N4darae/shrt
人が承認したベースラインと照合しながら、記録済みのAPI呼び出しチェーンをバックエンドに再送してリリース間の変更を検出する回帰テスト用ハーネス。
- スター
- 2,388
- フォーク
- 164
- 未解決の Issue
- 6
- 最終コミット
- 12 日前
これは何?
shrtは、ログイン、アイテムの作成、在庫の追加、読み戻しといったYAMLで定義したAPI呼び出しのチェーンを通じて、バックエンドをテストします。成功した実行を人がベースラインとして承認し、以降のリリースではそれと照合する形で再実行します。フィールドに変更があると、shrtは該当するステップとフィールド、原因と推定される書き込みを報告します。
コントラクトファイルには、各rpcで必要となる条件、値の取得元、不正な入力を拒否する方法、書き込みによる数値フィールドの変更を記述します。このコントラクトから、境界値、欠落または無効なトークン、未知のID、重複を調べるチェーンを生成できます。HTTP POSTでConnectプロトコルを使用するため、connect-goで構築されたサーバーで動作します。通常のgRPCのみをサポートするサーバーには対応していません。Unaryとserver-streamingのrpcを処理でき、ストリームは最初のメッセージまで読み取ります。
このツールはGoで実装されており、.protoファイルのコンパイルにはbufが必要です。認証情報は環境変数から読み込み、実行記録ではマスキングされます。設定ファイルに対象ホストを登録しない限り、localhostにしかリクエストを送信しません。コーディングエージェントによる実行を想定していますが、各コマンドは手動でも実行できます。
主な機能
- 01API呼び出しのチェーンをYAMLファイルで定義し、リリースごとに再実行できます。
- 02人が承認したベースラインには、アサーションで検査されないものも含め、レスポンスのフィールドが記録されます。
- 03コントラクトファイルから、境界値、認証の失敗、重複を網羅する検査用チェーンを生成できます。
- 04失敗時には、該当するステップ、変更されたフィールド、原因と推定される書き込みが示されます。
- 05本番データを保護するため、リクエストの送信先はlocalhostまたは明示的に許可したホストに限定されます。
- 06CI用のゲートコマンドは、失敗時にゼロ以外の終了コードを返します。
ユースケース
- リリース間でconnect-goバックエンドの回帰を検出する。
- 新しいビルドごとに、CIでAPIの回帰テストを実行する。
- 人のレビューのもとで、コーディングエージェントにAPIテスト用コントラクトを作成・保守させる。
クイックスタート
- 1
buf(shrt が PATH 上で必要とする Protocol Buffers のビルドツール)をインストールする
- 2
Go 1.26 以降で shrt をインストールする
go install github.com/N4darae/shrt/cmd/shrt@latest - 3
インストールされているバージョンを確認する
shrt version - 4
バックエンドプロジェクトで shrt をセットアップして確認する
shrt init
使う前に知っておきたいこと
- Go 1.26 以降と、PATH 上の buf が必要です。
- Connect プロトコルを使用するサーバーでのみ動作します。gRPC のみを使用するサーバーでは動作しません。
- ストリーミング RPC は最初のメッセージまでしか読み取りません。
- shrt init はどの RPC がログイン用かを推測するため、結果を確認する必要があります。
収録されている特集
トピック
よくある質問
- shrt とは?
- 人が承認したベースラインと照合しながら、記録済みのAPI呼び出しチェーンをバックエンドに再送してリリース間の変更を検出する回帰テスト用ハーネス。 shrtは、ログイン、アイテムの作成、在庫の追加、読み戻しといったYAMLで定義したAPI呼び出しのチェーンを通じて、バックエンドをテストします。成功した実行を人がベースラインとして承認し、以降のリリースではそれと照合する形で再実行します。フィールドに変更があると、shrtは該当するステップとフィールド、原因と推定される書き込みを報告します。
- shrt は無料で使えますか?ライセンスは?
- shrt は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- shrt は今もメンテナンスされていますか?
- 活発にメンテナンス中。shrt の最終コミットは 2026年10月26日 です。
- shrt は何に使えますか?
- リリース間でconnect-goバックエンドの回帰を検出する。 新しいビルドごとに、CIでAPIの回帰テストを実行する。 人のレビューのもとで、コーディングエージェントにAPIテスト用コントラクトを作成・保守させる。
- shrt のインストール方法は?
- buf(shrt が PATH 上で必要とする Protocol Buffers のビルドツール)をインストールする Go 1.26 以降で shrt をインストールする: go install github.com/N4darae/shrt/cmd/shrt@latest インストールされているバージョンを確認する: shrt version バックエンドプロジェクトで shrt をセットアップして確認する: shrt init
- shrt はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/N4darae/shrt
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
JSON入力でgRPCサーバーを呼び出す、curlのようなコマンドラインツール。server reflectionやprotoファイルからスキーマを取得できます。
gRPCサーバーにリクエストを対話的に送信するブラウザベースのUIを起動するCLIツール。REST向けのPostmanに相当します。
HTTP、GraphQL、gRPC、WebSocket、SSEのリクエストを、gitで管理できるプレーンな.httpファイルに保存するターミナルAPIクライアント。
Go製のローカルファーストなネイティブAPIクライアント。REST、gRPC、GraphQL、WebSocketに対応し、トラフィックプロキシを内蔵。
JavaScriptでパフォーマンステストを記述し、Go製バイナリで実行するオープンソースの負荷テストツール。