Repolode
N4darae

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. 1

    buf(shrt が PATH 上で必要とする Protocol Buffers のビルドツール)をインストールする

  2. 2

    Go 1.26 以降で shrt をインストールする

    go install github.com/N4darae/shrt/cmd/shrt@latest
  3. 3

    インストールされているバージョンを確認する

    shrt version
  4. 4

    バックエンドプロジェクトで shrt をセットアップして確認する

    shrt init

使う前に知っておきたいこと

  • Go 1.26 以降と、PATH 上の buf が必要です。
  • Connect プロトコルを使用するサーバーでのみ動作します。gRPC のみを使用するサーバーでは動作しません。
  • ストリーミング RPC は最初のメッセージまでしか読み取りません。
  • shrt init はどの RPC がログイン用かを推測するため、結果を確認する必要があります。

収録されている特集

トピック

#testing#api-testing#regression-testing#go#connect-rpc#grpc#ci-cd#ai-agent

よくある質問

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 の数値は毎日更新されます。

関連プロジェクト