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

APIのテストをシェルスクリプトで自動化してみた🚀

Posted at

はじめに

こんにちは!😃
今回は APIのテストをシェルスクリプトで自動化 し、Redisキャッシュを考慮した検証フローを構築 した話を紹介します!
特に、ChatGPT を活用しながら、APIの検証手順を効率化し、環境ごとのテストを統一する方法 にフォーカスします!🚀✨

🎯 目指したこと

APIのテストを行う際、キャッシュの影響を排除し、環境ごとに適切な設定で検証を行うことが超重要!
そこで、以下の4つのポイントを実現することを目標にしました!

🌟 1. API検証手順の簡素化

  • 検証前のRedisキャッシュ削除・バックアップを自動化し、手作業を減らす!
  • 環境(local, stg, pre)ごとに適切なRedisサーバーを自動識別し、統一的に処理!
  • APIの検証を一貫した手順で実行できるようにする!

🌟 2. 検証結果の正確性向上

  • 既存のキャッシュを削除し、正しいレスポンスを得られるようにする!
  • 意図したテスト条件のもとでAPIレスポンスを検証できるようにする!

🌟 3. 環境ごとの自動化

  • 各環境(local, stg, pre)に適したAPIエンドポイント・Redisサーバーを自動特定し、適切に処理!
  • 環境ごとのキャッシュ削除・バックアップを自動適用!
  • サーバーごとに適切な curl コマンドを実行し、APIをテスト!

🌟 4. 検証の再現性と信頼性の向上

  • 統一されたスクリプトを用いることで、チームメンバー間で一貫したテストが可能に!
  • キャッシュクリア後のAPIレスポンスを常に正しく取得し、検証結果の信頼性を向上!

💡 実装した機能

今回の自動化では、以下の3つの機能を実装しました!🎉

1. Redisキャッシュ削除・バックアップ

  • 環境(local, stg, pre)ごとに異なるRedisサーバーへ接続し、APIが使用するキャッシュを削除・バックアップ!
  • API用Redisを処理!(フロントエンド用は今回スコープ外)

2. APIエンドポイントの検証

  • 各環境ごとの実行サーバーで curl を用いてAPIのレスポンスを取得・確認!

3. ログ・レポート機能

  • キャッシュ削除やテスト結果を記録し、検証結果を可視化!
  • 結果を整理し、調査が必要なエラーを自動抽出・レポート化!

🤖 ChatGPT を活用したポイント

シェルスクリプトを手書きするのは楽しいですが、複雑なデータ処理やログ解析を効率化するには ChatGPT の助けが超便利!
以下は、実際の開発履歴順 に並べた ChatGPT とのやりとりの内容です!📚

📌 1. APIレスポンスログの解析

最初に、APIのレスポンスログを解析し、必要な情報を抽出するスクリプトを作成!
ChatGPT に相談し、awk を活用して api/** 以降のパスとエラーレベルを抽出** しました!

awk '{match($0, /api\//); print substr($0, RSTART), $3, $7}' log.txt
  • match()** で api/ の位置を見つけ、substr()api/ 以降を取得!**
  • エラーレベル ($3), ステータスコード ($7) も同時に取得!

📌 2. ERROR ステータス URL の順でソート

APIログを ERROR** のレベル、ステータスコード、URL順** にソートするため、sort を適用しました!

awk -F'api/' '{print $7, $3, $9, $0}' "$target_path" | \
sort -k1,1r -k2,2n -k3,3 | \
awk '!seen[$1,$2,$3]++'
  • ログを ERROR レベル(降順) → ステータス(数値として扱う) → URL でソート!
  • 重複するAPIリクエストのログを削除!

🚀 開発の結果

このシェルスクリプトを活用することで、APIテストの自動化が簡単に実現! 🎉
また、Redis キャッシュを活用することで、テストのパフォーマンスを向上!

特に、APIのレスポンスを自動で収集&解析し、重複を削除する処理がスムーズに動作!
これにより、無駄なログのチェックを減らし、運用の負担を軽減!

🎉 まとめ

  • APIのテスト自動化にはシェルスクリプトがめっちゃ便利!
  • Redis キャッシュのバックアップ、ロールバック、削除を自動化すると、APIテストの負荷をグッと減らせる!
  • ChatGPT を活用するとシェルスクリプトの開発効率が爆上がり!
  • 次はAPIに対応したフロントエンドのE2E テストも実装したい!!

「APIテストをシンプルに自動化したい!」 という方は、ぜひ **シェルスクリプト + ChatGPT ** の組み合わせを試してみてください!🚀✨

💖 最後に

この記事が役に立ったら、ぜひ 「LGTM」 してくれると嬉しいです! 💖
では、また次回の記事でお会いしましょう👋✨

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