1. 導入:なぜ今、Hurlなのか?
API開発において、PostmanのようなGUIツールは便利ですが、テストケースのバージョン管理やCI/CDへの組み込みには手間がかかることが少なくありません。今回紹介する「Hurl」は、プレーンテキスト形式でHTTPリクエストとアサーションを記述できるツールです。Gitで差分管理が容易であり、軽量かつ高速なため、開発者のローカル環境からCIパイプラインまで一貫したテスト環境を構築できるのが最大のメリットです。
2. 基礎知識:Hurlの仕組み
Hurlは、拡張子が.hurlであるテキストファイルにHTTPリクエストを記述し、実行することでレスポンスを検証するツールです。cURLの文法に近い直感的な記述が可能で、JSONの構造を検証するための「JSONPath」や、レスポンスヘッダーのチェックなどの機能が標準で備わっています。複雑なプログラミング言語によるテストコードを書く必要がなく、HTTPプロトコルそのものに集中できる点がエンジニアにとって非常に強力です。
3. 実装:Hurlを使ったテストの組み立て
まず、Hurlをインストールします(macOSならbrew install hurl)。次に、テストしたいエンドポイントに対してリクエストファイルを作成します。Hurlの最大の特徴は、リクエストとレスポンスの検証を「同じファイル内」で完結できることです。これにより、APIの仕様書代わりにもなるドキュメントとしての役割も果たします。
4. サンプルプログラム:APIテストの記述例
以下のコードを「test_api.hurl」として保存し、コマンドラインから「hurl –test test_api.hurl」を実行してみてください。
ユーザー情報取得APIのテスト
GET https://api.example.com/users/1
HTTPステータスコードが200であることを確認
HTTP 200
コンテンツタイプがJSONであることを確認
[Asserts]
header “Content-Type” == “application/json”
JSONPathを使用して、特定のフィールドの値が期待通りか検証
jsonpath “$.id” == 1
jsonpath “$.name” == “John Doe”
レスポンスボディのサイズが0でないことを確認
body count > 0
5. 応用・注意点:現場での運用Tips
Hurlを実務で活用する際は、以下の点に注意してください。
環境変数の活用
開発環境やステージング環境など、接続先が異なる場合は「–variable」フラグを使ってホスト名を動的に切り替えましょう。これにより、テストファイルを修正することなく環境ごとのテストが可能になります。
認証の扱い
APIキーやBearerトークンが必要な場合は、Hurlの「[Options]」セクションで指定可能です。また、機密情報は環境変数から読み込む設計にすることで、誤ってGitに認証情報をコミットするリスクを回避できます。
CI環境での実行
GitHub ActionsなどのCIツールでHurlを実行する際は、Dockerイメージを利用するのがベストプラクティスです。軽量なバイナリであるため、パイプラインの実行時間を大幅に短縮できます。
Hurlは「複雑すぎるテストフレームワークに疲れた」というエンジニアにとって、最適解となり得るツールです。まずは手元のAPIに対して、簡単なテストを一つ書くことから始めてみてください。

コメント