
2026/01/16 3:54
**Show HN: 「Tusk Drift」– 本番トラフィックを API テストに変換する** *実際のユーザーリクエストを収集し、オートメーションテストへと転換するオープンソースツールの概要。* --- ## Tusk Drift とは? - **目的** 本番環境で発生しているライブトラフィックを取得し、自動的に再現可能な API テストケースを生成します。 - **主な機能** - HTTP(S) トラフィックを記録する透過プロキシ - 再現性のあるリクエスト/レスポンス・フィクスチャを作成 - Jest、PyTest 等既存テストフレームワークとの統合 - 期待される振舞いと現在実装との差異(ドリフト)を検知 --- ## 動作概要 1. **プロキシ設定** Tusk Drift プロキシを API ゲートウェイやサービスの前段にデプロイします。 2. **トラフィック取得** すべてのリクエストがプロキシ経由で通過し、リクエスト/レスポンスペアが保存されます。 3. **フィクスチャ生成** ツールは捕捉したペアをテストファイルへ変換し、ステータスコード・ヘッダー・ボディに対するアサーションを自動付与します。 4. **テスト実行** 生成されたテストをステージングまたは CI 環境で走らせ、本番の挙動と差異がないか検証します。 --- ## 利点 - **リアルデータベース** テストは合成シナリオではなく、実際に発生したユーザーアクセスを基に作成されます。 - **継続的回帰テスト** トラフィックの変化に応じて自動でテストスイートが更新されるため、常に最新状態を保てます。 - **信頼性向上** 「本番では動く」バグを早期に発見し、ドリフトを抑制します。 --- ## はじめ方 1. リポジトリをクローン ```bash git clone https://github.com/your-org/tusk-drift.git ``` 2. 依存パッケージをインストール ```bash pip install -r requirements.txt # Node.js を使用している場合は npm install ``` 3. API がプロキシ経由で通信するよう設定 4. キャプチャコマンドを実行し、一定期間トラフィックを集める 5. テスト生成 ```bash tusk drift generate --output ./tests/ ``` 6. CI パイプラインへ組み込む --- ## 今後のロードマップと貢献 - **追加予定機能** - GraphQL クエリへの対応 - フィクスチャ自動サニタイズ(PII の除去) - テスト失敗時のビジュアル差分ツール - **貢献について** プルリクエスト歓迎です!詳細は `CONTRIBUTING.md` をご確認ください。 --- ## 最後に Tusk Drift は、本番利用と自動テストを橋渡しし、実際の条件下で API が期待通りに機能することを保証します。ユーザーへ影響が出る前に回帰を検知したい方は、ぜひお試しください。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Tusk Drift は、実際のトラフィックをキャプチャし、それをローカルまたはクラウドで再生できるオープンソースの API テストレコード/リプレイシステムです。AI アシストツールを使用して開発者が回帰を検出するのに役立ちます。
インストール:Linux / macOS では、curl スクリプト(
)を実行するか、バージョンを指定して実行します(curl -fsSL https://cli.usetusk.ai/install.sh | sh)。Windows ユーザーは WSL を使用するか、GitHub Releases から ZIP をダウンロードし、sh -s -- v1.2.3を解凍して PATH に追加し、TCP 通信モードを設定してください。tusk.exeセットアップ:CLI は AI 搭載の
を提供し、コードベースを分析し、SDK(Node.js / Python)をインストルメント化し、構成ファイルを作成し、レコーディング/リプレイテストを実行します。対話型設定を好むユーザー向けにtusk setupというマニュアルウィザードも利用可能です。tusk initテストの実行:ローカルでは
を使用し、トレースディレクトリ / ファイル / ID の指定、パスフィルタリング、同時実行設定、サービスログ有効化、および結果保存などが可能です。結果・ログ・トレースはデフォルトでtusk run、.tusk/results、.tusk/logsに保存されます(.tusk/tracesで上書き可能)。これらのディレクトリをconfig.yamlに追加してください。.gitignoreクラウド統合:テストは Tusk Drift Cloud 上にスイートとして格納でき、ライブトラフィックから自動的にレコーディングされます。クラウド API はトレースの一覧表示(
、tusk list)や、tusk list --cloud、--cloud、--trace-test-id <id>のようなフラグを使ってクラウドテストに対して実行することをサポートします。--all-cloud-trace-testsUI と出力:ターミナルに接続されている場合、TUI は 150 × 40 文字以上のウィンドウが必要です。ヘッドレス JSON 出力は
を使用して取得できます。--print --output-format=jsonソースからビルド:Go 1.25+ が必要です。リポジトリをクローン(
)し、git clone https://github.com/Use-Tusk/tusk-drift-cli.gitとmake depsを実行してからmake buildで開始します。tusk --helpコミュニティとサポート:貢献ガイドライン、ライセンス情報、および Slack コミュニティサポートは GitHub にホストされています。
将来の拡張機能:計画されている機能には、自動ライブトラフィックレコーディング、詳細な逸脱分析、根本原因検出、および推奨修正が含まれます。これらはすべて CI パイプラインを強化し、API の品質向上を目指しています。
本文
Tusk Drift CLI – クイックリファレンス
概要
Tusk Drift は、実際のトラフィックから生成されたリアルなテストを実行できる API テスト記録/再生システムです。CLI はローカルおよび CI での実行を調整し、Tusk Drift SDK とクラウドと連携します。
1. SDK
- Node.js
- Python
- …さらに追加予定!
2. 機能
| 機能 | 説明 |
|---|---|
| 記録済みトレースの再生 | テスト対象サービスに対してテストを実行 |
| 決定的 I/O | ローカルモックサーバーでアウトバウンド通信を分離 |
| JSON 比較 | UUID、タイムスタンプ、日付など動的フィールドのルール |
| Tusk Drift Cloud | ストア済みテストを取得/再生し、CI/CD で回帰分類用に結果をアップロード |
3. インストール
推奨クイックインストール
Linux / macOS
# 最新バージョン curl -fsSL https://cli.usetusk.ai/install.sh | sh # 特定バージョン curl -fsSL https://cli.usetusk.ai/install.sh | sh -s -- v1.2.3
リプレイサンドボックス用の依存関係
| ディストリビューション | コマンド |
|---|---|
| Debian/Ubuntu | |
| Fedora/RHEL | |
| Arch | |
これらをインストールしないと、サンドボックスが無効になりネットワーク分離なしでリプレイが実行されます。
Homebrew
近日公開予定。
Windows
WSL を推奨します。ネイティブ Windows 用:
-
GitHub Releases から最新版をダウンロード。
-
(または ARM)を解凍。tusk-drift-cli_*_Windows_x86_64.zip -
を PATH 内のディレクトリへ移動(例:tusk.exe
)。C:\tools\ -
フォルダを PATH に追加:
- PowerShell (管理者):
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\path\to\tusk", "User") - システム設定:Win+R →
→ 詳細設定 → 環境変数 → Path を編集 → 新規。sysdm.cpl
- PowerShell (管理者):
-
ターミナルを再起動し確認:
tusk --help
Windows では追加の TCP 通信モード設定が必要です(「Windows サポート」を参照)。
4. ソースからビルド
git clone https://github.com/Use-Tusk/tusk-drift-cli.git cd tusk-drift-cli make deps make build tusk --help
Go 1.25+ が必要です。
5. はじめに
AI 搭載セットアップ(推奨)
cd path/to/your/service export ANTHROPIC_API_KEY=your-api-key tusk setup
エージェントが行うこと:
- コードベースを解析
- SDK をインストルメント
- 設定ファイル作成
- 収録・リプレイでテスト実行
サポート言語:Python、Node.js。
手動セットアップ
cd path/to/your/service tusk init # 対話型ウィザード
あるいは
.tusk/config.yaml を手動作成(詳細はドキュメント)。
6. トレースの記録とリプレイ
トレースを記録 – SDK のガイドに従いトレースファイルを生成。
ローカルトレース(デフォルト)
# ローカルトレースからすべてのテストを実行 tusk run # ソース指定 tusk run --trace-dir .tusk/traces tusk run --trace-file path/to/trace.jsonl tusk run --trace-id <traceId>
よく使うフラグ
| フラグ | 説明 |
|---|---|
| リクエストパスに対する正規表現フィルタ |
| 並列度 |
| にリプレイログを保存 |
| 結果を永続化 |
7. Tusk Drift Cloud
CI/CD で API テストとして Tusk Drift を利用:
- 自動記録 – ライブトラフィックを取得。
- 安全な保管 – トレースをテストスイートとして保存。
- 逸脱分析 – 意図した変更と意図しない変更の分類、根本原因解析、推奨修正。
tusk setup を実行していればクラウド設定は既に含まれます;そうでなければウィザードを起動:
tusk cloud init # (または同等のコマンド)
8. CLI の使い方
トレース一覧表示
| コンテキスト | コマンド |
|---|---|
| ローカル | または |
| クラウド | |
テスト実行
| コンテキスト | コマンド |
|---|---|
| インタラクティブ TUI(デフォルト) | |
| クラウド | |
| 単一クラウドテスト | |
| サービス全体のクラウドテスト | |
TUI はターミナルが 150 × 40 以上で最適に表示されます。
ヘッドレス JSON 出力
tusk run --trace-id <id> --print --output-format=json
9. ディレクトリ構成 & .gitignore
| パス | 用途 |
|---|---|
| 記録済みトレース(デフォルト) |
| リプレイ結果 () |
| サービスログ ( または ) |
.gitignore に追加:
.tusk/results .tusk/logs .tusk/traces # クラウドのみ利用する場合
10. リソース
- アーキテクチャ概要 – 詳細設計書
- 設定 –
のカスタム設定config.yaml - トラブルシューティング – よくある問題と対策
コミュニティ & 開発
- Slack コミュニティに参加(ドキュメント内リンク)
- [CONTRIBUTING.md] で貢献
- ライセンスは [LICENSE] を参照