18
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ビジネスエンジニアリング株式会社(B-EN-G)Advent Calendar 2023

Day 3

WebAPI 呼び出しのタイムアウトや特殊なレスポンスを試すためのテストツールを作った

Last updated at Posted at 2023-12-04

この記事は ビジネスエンジニアリング株式会社(B-EN-G)アドベントカレンダー2023 の記事です。

きっかけ

開発作業をしていて、以下のような場面がありました。

  • サーバーにタイムアウト時間の設定をしたが、本当にその時間でタイムアウトするかテストしたい。
  • タイムアウト時の挙動をテストするために 504 gateway timeout
  • 認証関連のプログラムを作成しているときに 401 unauthorized403 Forbidden が返ってきた時のテストをしたい

これらをテストするには、呼び出した WebAPI の 応答時間 及び レスポンスの Http Status Code を気軽に変更したくなります。次のような要件を満たすツールが欲しいなぁと思いました。

  • セットアップが簡単( nodeVisual C++ 再頒布可能パッケージDocker など実行に必要な他の物がない)
  • WebAPI の 応答時間 及び レスポンスの Http Status Code を気軽に変更できる
    • 「URL パラメータで指定できる」「設定ファイルを書き換えれば再起動なしで変更できる」など
  • Windows で動けばよい

見つからなかったから作った!

上記の要件にあうツールを探したのですが、見つけられなかったので自分で作りました。

Java の有名なフレームワークである Spring Boot でベースを作成しています。
Spring Boot には GraalVM ネイティブイメージのサポート という機能があり、この機能を活用して、Windows での実行可能ファイル(exe)を作成しました。
これにより アプリを動かす PC に Java が入っていなくても動作させることができます。

入手方法/使い方

※ Windows 上での操作を想定しています。

入手 と はじめての実行

  • https://github.com/HiroshiKuboBeng/pingPong/releases/tag/v1.0.0 から pingPong-vX.X.X-win-binary.zip をダウンロード。(2023-12-04 現在最新版は v1.0.0)
  • ダウンロードした zip ファイルを展開
  • 展開したファイル内の startPingPongServer.bat を実行
  • ブラウザで http://localhost:8888/ping にアクセスして pong と表示されたら成功

レスポンスを変更する方法

GET メソッドの呼び出しの場合は、クエリパラメータでレスポンスを操作できます。

  • クエリパラメータ delay_seconds=数値 を指定すると、指定された秒数分、待機してからレスポンスを返します
  • クエリパラメータ response_status_code=数値 を指定すると、指定された Http Status Code のレスポンスを返します
c:\>@rem 3秒後に http status code 500 のレスポンスを返す例
c:\>curl -i "http://localhost:8888/ping?delay_seconds=3&response_status_code=500"

HTTP/1.1 500
Content-Type: text/plain;charset=UTF-8
Content-Length: 4
Date: Sun, 03 Dec 2023 20:33:03 GMT
Connection: close

pong

POST PUT PATCH DELETE メソッドの呼び出しの場合は、リクエストボディでレスポンスを操作できます。

c:\>curl -i -X POST -H "Content-Type: application/json" -d "{\"delay_seconds\" : 3 , \"response_status_code\" : 500}" "http://localhost:8888/ping"

HTTP/1.1 500
Content-Type: text/plain;charset=UTF-8
Content-Length: 4
Date: Mon, 04 Dec 2023 00:14:56 GMT
Connection: close

pong

その他、詳細は zip ファイル内の readme.md をご覧ください。

カスタマイズ(サーバーが使用するポートを変更する)

zip ファイルを展開したフォルダ内にある application.ymlserver.port の数字を変更して再起動してください。

まとめ

WebAPI の 応答時間 及び レスポンスの Http Status Code を気軽に変更できるツールを作りました。
これを活用することにより、WebAPI連携のレアケースのテストがしやすくなります。
よろしければ、ご活用いただき、フィードバックをお寄せいただけると嬉しいです。

そして、やっぱり、もっと高機能な類似のアプリが世の中にはあるハズだ。。。あるなら教えて欲しい。

18
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?