単体テストで終わってない? 重要度が高まるAPIテスト、その始め方について解説:必要なのは「戦略」
TechTargetは、「APIの機能テスト」に関する記事を公開した。APIの信頼性をテストすることは、全てのチームにとって重要なタスクだ。
TechTargetは2023年12月28日(米国時間)、「APIの機能テスト」(以下、APIテスト)に関する記事を公開した。
アプリケーションはデータの提供、取得、保存処理をAPIに依存している。そのため、APIの信頼性をテストすることの重要性が増している。これまでも開発者は単体テストではAPIの信頼性を確認していたが、それ以降はAPIテストをほとんど実施していなかった。
だが、APIが注目され、侵入の潜在的な原因として認識されるようになったことで、定期的なAPIテストの必要性が増している現在、テストに精通したほとんどの組織は、アプリケーションの機能テストの一環としてAPIテストを定期的に実行している。
このように重要度の高まっているAPIテストについて、本稿では、そのテスト戦略に必要な要素や導入の課題、開始方法について説明する。
APIテストの課題
APIテストは、アプリケーションが期待通りに機能することを確認するのが目的だ。セキュリティやエラー状態を適切に管理しなければならないが、APIテストでそれは複雑な作業になるため、技術的なノウハウと「アプリケーションがどのようにデータを処理しているか」を深く掘り下げて理解する能力が求められる。APIテストは、UI(ユーザーインタフェース)にアクセスするだけで実行できる簡単なものではないのだ。
APIテストに必要なものは以下の通り。
- テストツールへのアクセスと、そのツールの使用方法に関するトレーニング
- テスト用の“変化できるセキュリティトークン”へのアクセス
- 適切なAPIドキュメント
- 全ての依存関係を完全にテストする機能
- APIシーケンス呼び出しを完全にテストする機能
- 全てのAPIと進行中の変更の追跡
テストではAPIの概念を理解する必要があるが、これは非常に技術的で説明が難しい。そのため、APIテストは開発者が担当することが多い。この役割があるせいで、開発者は新しいコードを作成する時間が少なくなっている。適切なトレーニング、ツール、APIドキュメント、そして質問に答えられるサポートシステムがあれば、品質管理を担当するテスター(QAテスター)でも継続的にAPIテストを担当できる。
これらの課題に対処するために、チームはAPIテストツールを選択し、積極的な開発者がQAテスターにAPIのテスト方法をトレーニングさせることを考えるべきだろう。最初のステップとして、依存関係やシーケンス情報など、APIの完全なドキュメントがあるかどうかを確認する。
QAテスターとIT担当者が不必要な情報を公開せずにAPIのセキュリティトークンを使用できるシステム開発の検討も必要だ。APIの多くはデータを交換するための認証トークンを必要とする。データを保存、取得するためにセキュリティトークンが必要なAPIもある。セキュリティトークンは使うたびに変更されるため、同じトークンコードを使い回すことはできない。APIを安全な方法で機能テストするには、ITチームの協力が不可欠だ。
次に、全てのAPI変更がストーリーまたはタスクとして追跡されていることを確認する。APIテストは、テストカバレッジを確保するための新しいテストを開発できるように、API機能の変更を理解することが重要だ。多くのチームは、全てのAPI、その機能、いつ更新、変更されるかを追跡できるAPIインベントリを作成している。
高品質のAPIテストを実現するには、アプリケーションとそれが依存するAPIの内部動作を理解することが不可欠だ。
包括的なAPI機能テスト戦略の重要な要素
QAテスターがAPIテストを成功させるには戦略が必要だ。この戦略には、次のものが含まれる。
- 依存関係とシーケンスを含むAPIドキュメント
- テストに必要なセキュリティ情報へのアクセス
- リクエストの作成、応答の読み取り、テストの自動化を支援するAPIテストツール
- できるだけ本番環境に近い形でAPIが機能するように設定できる専用のテスト環境
- ツールの使用と一般的なAPI機能に関するトレーニング
- 開発ライフサイクル全体でAPIテストを実行する計画
- 欠陥を修正する時間
- テストケースを整理し、見つけやすくするためのテスター支援ツール
- APIテストを分析、計画する時間
APIテストを成功させる唯一の方法は「API同士がどのように相互作用するか」「APIとアプリケーションはどのようなやりとりをするのか」を理解することに真剣に取り組むことだ。
QAテスターは、APIドキュメントと開発からのインプットを参考にすることで、テストケースを開発するだけでなく、さまざまなAPIの動作を判断し、それに対する特定のテストも作成できるようになる。APIを完全に理解すれば、UX(ユーザーエクスペリエンス)に与える影響に基づいてテストの優先順位を決め、スケジュールを組むことも可能だ。
APIテストの戦略を構築する
APIテスト戦略の構築を成功させるための最初のステップはAPIの機能と要件を理解することだ。APIの要件はAPIドキュメントに記載されているものの、必要とする具体的な詳細が省略されていることがある。QAテスターはAPI開発者と協力し、全てのシナリオで予想される動作、エラー状態とステータスコード、APIの目的、APIがアプリケーションワークフローにどのように影響するかなどを確実に文書化する必要がある。
次のステップは、QAテスターとして、テスト計画とアプローチを作成する。
QAテスターが自動と手動の両方のテストを作成、実行できるAPIテストツールを選択する。既存の多くのツールにはAPIテストの機能が含まれているため、新たなツールを追加する前にそれらを確認するとよいだろう。
次に、テスト計画を作成し、テストケースを作成する。テストケースを作成したら、それらを全ての動作する組み合わせに整理する。テストを作成してから整理してもよいし、整理しながらテストを作成する方法もある。別の言い方をすれば、テストケースを開発しながら、各リクエストをテストするということだ。
テスト担当者がAPIテストに慣れてきたら、自動化できるAPIテストを特定する。最初に自動化するのはアプリケーションにとって重要なAPIからだ。ほとんどのAPIテストツールには、自動化されたAPIテストを作成するための使いやすい機能が含まれており、テスト担当者は必要に応じてスケジュールを組んで実行できる。
APIテストは、アプリケーションが正確かつ安全に、優れたパフォーマンスで機能することを保証する。アプリケーションがデータを保存、取得、共有するときはAPIが中心となる。APIはコード化されており、内部的に変更されたり、APIを使用して接続する外部パートナーによって変更されたりする可能性がある。アプリケーションの品質と優れた顧客エクスペリエンスを確保するためには継続的なAPIテストが欠かせない。
APIテストには多くの課題が伴うが、時間をかけ、ベストプラクティスを順守することで克服可能だ。顧客が必要とするものをアプリケーションが提供できるように、APIの機能テストをQAテストの一部に含めることが重要だ。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 機械学習をPythonで学ぼう! 基礎、できること、ライブラリ
「知識ゼロから学べる」をモットーにした機械学習入門連載の第1回。ルールベースと機械学習ベースの違いから、教師あり学習などの学習方法、回帰/分類などのタスクまで基礎の基礎から説明。機械学習のためのPythonライブラリも概説する。 - OpenFeatureがCNCFの支援プロジェクトに フィーチャーフラグのための標準APIを提供
CNCFはOpenFeatureをインキュベーションプロジェクトとして受け入れることを決定した。OpenFeatureはフィーチャーフラグのための標準APIを提供するオープンな仕様だ。本記事ではOpenFeatureの概要について紹介する。 - 編集後記「ChatGPTで株取引スクリプトを作ってバックテスト」と「たんぱく質取ってますか?」
一色からは「ChatGPTで株取引スクリプトを作ってバックテスト」という題でChatGPTを使って株取引ストラテジーを生成してシミュレーションしたことについて、かわさきからは「たんぱく質取ってますか?」という題でカロリーを考慮して鳥貴族のメニュー選びをアシストしてくれるGPTsを作成してみたことについて書きました。