NTTドコモR&Dの技術ブログです。

APIの動作確認時に利用するパラメータの妥当性チェックツールを、AmazonQを活用して作成してみた

記事概要と想定読者

NTTドコモ 情報システム部の宮下と申します。

本記事では、APIの動作確認時に利用しているツール「Postman」において、投入したパラメータの妥当性を自動チェックするツールをAmazonQ Developerも駆使しながら作成しチェック作業の効率化/品質向上を実現した取り組みをご紹介します。

以下のような方を読者として想定しておりますので、ぜひご一読ください。
* API開発に携わるエンジニア
* Postmanを始めとしたテストツールを利用している方
* パラメータ関連の人の目によるレビューを自動化したいと考えている方
* 生成AI(特にAmazonQ Developer)の活用事例を参考にしたい方

背景/課題

ミッションクリティカルなサービス/システムにおいて、特に障害発生リスクが高まる機能改修時にリスクを最小限にすることは非常に重要なミッションです。 リリース資材自体はもちろん「リリース後の動作確認手法/手順に誤りが混入している」状況も避けなければなりません。

自担当システムでAPIリリース後の動作確認時に利用しているツール「Postman」では実行時にAPIに応じたパラメータ(例えばアカウント情報等)を指定しますが、 手入力、人によるレビューを行っているためスペルミスや不正文字混入等のケアレスミスが起こりやすいという特性がありました。

パラメータの設定ミスを無くすために複数人でレビューを重ねるといった対処はコスト増の要因となるので、自動チェックによる効率化/品質向上を目指した、というのが今回の取り組みの背景です。

実現方式

以下の流れで、APIの動作確認のためPostmanに設定したパラメータをチェックするツールを作成しました。

[全体の処理フロー]

1.対象APIの実ソース(.py)をAmazonQ Developerに解析してもらい、パラメータの妥当性チェック用ファイル(.json)を生成 ※ツール①
  ⇒jsonファイルにより、APIのin情報となるパラメータに関して下記観点でチェックする
   必須パラメータ:必須パラメータの存在確認
   文字数:最大・最小長チェック
   属性:正規表現パターンチェック
   区分値:許可値リストチェック
   相関:パラメータ間の相関チェック

2.リクエストヘッダに指定する環境情報など、APIのin情報以外のパラメータに関する期待値リスト(csv)を定義
  ⇒リクエスト先URLなど環境情報の不正をチェックする

3.1,2のファイルをインプットにpostman資材との突合ツール(.py)を作成/実行しパラメータ不正をチェック ※ツール②

[イメージ図]

工夫/苦労した点

[Amazon Q Developerへのインプットについて]

  • ツール①は、
    ・APIのソースファイルを解析し、利用しているパラメータを抽出するとともに各パラメータの設定条件(形式や桁数等)を抽出したファイルを生成すること
    を要件にAmazonQ Developerにて作成しました。

  • ツール②は、
    ・インプット③で定義しているパラメータがインプット①(をツール①に噛ませたアウトプット)とインプット②の条件を逸脱していないかをチェックすること
    を要件にAmazonQ Developerにて作成しました。

  • AmazonQ Developerのプロンプトで効果的に指示を与える上では以下ページ等を参考にしました。
    ・AWSブログ(https://aws.amazon.com/jp/blogs/devops/mastering-amazon-q-developer-part-1-crafting-effective-prompts/)

  • 以下はプロンプトでのインプットにおいて特に重要と感じた点です。
    ・インプットを構造化すること
     例:①目的、②インプット、③アウトプット、④アウトプットの出力形式
     ⇒これをやらずにつらつらと実現したいことを書いた場合に、思わぬ文言が別の箇所に掛かってしまったりといったことがありました。
    ・複数のタスクを一度に依頼せず、段階を踏むこと。
     ⇒要素を詰め込みすぎると、こちらも思わぬ認識齟齬の原因に繋がりました。
    ・ソースを修正する際は、修正を期待する箇所/修正しない箇所を明確にすること。
     ⇒特に修正しない箇所を明確にしないと、部分修正で良い内容でソース全体にリファクタを掛けてしまったりということが起こりました。

[実行環境について]

  • Amazon Q DeveloperはVS Codeに拡張機能としてインストールし利用しています。
    なぜ生成AI系サービスの中でAmazonQを利用したのか?についてはAWS上に構築している自担当システムとの親和性があり活用事例も膨らみ始めていたため、ですがファイル/ソースを解釈/出力できるサービスであれば代用可能かと思います。

[その他]

  • APIが複数存在するかつAPI毎にin情報は異なるため、1つ1つ判定条件を人手で定義すると時間が掛かりますが、AmazonQ Developerにソースコードを解析してもらうことで作業工数を圧縮できました(1APIあたり1時間⇒10分程度)。
    ※API仕様書等のドキュメントをインプットにすることもできると思います

まとめ

本記事では、APIの動作確認時に利用しているツール「Postman」において、投入したパラメータの妥当性を自動チェックするツールをAmazonQ Developerも駆使しながら作成した取り組みをご紹介しました。 ツールは既に運用開始しており、人によるレビューを自動ツールに置き換えることができました。

同じように人の目によるレビューの自動化/効率化や品質向上を目指している方の参考になれば幸いです。
最後までお読みいただき、ありがとうございました。