APIテスト、GUIテスト、およびテスト自動化
APIテストは、GUIテストよりもテスト自動化や継続的テスト(特にアジャイルソフトウェア開発やDevOpsで使用される自動化)に適していると認識されています。[ 3 ] [ 4 ]その理由としては、以下のようなものが挙げられます。
- システムの複雑性: GUIテストでは、多層アーキテクチャに関連する機能パスやバックエンドAPI/サービスを十分に検証できません。APIは、テスト対象システムへの最も安定したインターフェースであると考えられます。
- 短いリリースサイクルと迅速なフィードバックループ:短いイテレーションと迅速なフィードバックループで作業するアジャイルチームやDevOpsチームは、頻繁な変更に対応するためにGUIテストにかなりの手直しが必要になることに気づきます。APIレイヤーでのテストは、より堅牢で保守が容易です。
これらの理由から、チームは API テストのレベルを上げ、 GUI テストへの依存度を下げることを推奨します。テスト自動化作業の大部分と可能な限りのエッジ テストには API テストが推奨されます。GUI テストは、システム レベルでの典型的な使用例の検証、モバイル テスト、ユーザビリティ テストのために確保されます。[ 3 ] [ 4 ] [ 9 ]
APIテストの種類
APIに対して実行できるテストにはいくつかの種類があります。例えば、スモークテスト、機能テスト、セキュリティテスト、侵入テスト、検証テストなどが挙げられます。
- APIテストで使用される人工知能(AI)は、テストプロセスの効率と精度を向上させます。AIは、テストケースを自動的に生成し、潜在的な問題を特定し、機械学習を通じてテスト結果を分析してパターンや異常を特定することができます。[ 10 ]
- スモークテスト- これは、APIの最も重要な機能が正しく動作しているかどうかを確認し、さらなるテストを行う前に重大な問題を特定するための予備テストです。
- 機能テスト- このタイプのテストは、入力を与え、出力を検証することで、ソフトウェアシステムが機能要件を満たしているかどうかを検証します。主にブラックボックステストであり、ソースコードは対象としません。
- ブラックボックステストとは、テスト担当者がAPIの内部動作を知らないままAPIとやり取りするテスト手法です。テスト担当者は入力を行い、APIが生成する出力を観察することで、想定されるユーザー操作と想定外のユーザー操作に対するAPIの応答を特定します。
- 単体テスト- これは、アプリケーションの最小単位である「ユニット」が正しく動作するかどうかをテストするものです。APIテストでは、単一のエンドポイントを単一のリクエストでテストすることが含まれます。
- 相互運用性テスト- このテストでは、APIが互換性の問題なく他のソフトウェアコンポーネントやシステムと連携できるかどうかを確認します。これはSOAP APIに適用されます。
- 信頼性テスト- これは、APIが機能性、信頼性、パフォーマンス、セキュリティに関する期待を満たしているかどうかを判断するためのテストです。APIが常に期待どおりに動作することを保証することを目的としています。
- 検証テスト- これは、ソフトウェアがビジネス要件を満たしているか、およびAPIテストが期待される結果と一致しているかを確認するものです。ユーザー受け入れテストと密接に関連しています。
- 実行時エラー検出- これは、APIの実際の実行状況を評価し、監視、実行エラー、リソースリーク、およびエラー検出に重点を置きます。検出されたエラーは、実行時の障害を防ぐために修正されます。
- ファジングとは、未知のバグや欠陥を発見するために、ランダムな、無効な、または予期しない入力をAPIに送信するテストです。APIファザーは、APIに対してテスト入力とリクエストシーケンスを生成し、応答を記録して、バグやセキュリティ脆弱性が発見されるかどうかを確認します。
- 負荷テスト- このタイプのテストは、実際のワークロードをシミュレートして、システムまたはアプリケーションのパフォーマンスを確認します。目的は、ボトルネックを見つけ出し、システムが処理できる最大ユーザー数またはトランザクション数を特定することです。
- パフォーマンス テスト- このタイプのテストでは、特定の条件下で API がどのように動作するかを評価し、高負荷を処理し、高いパフォーマンス レベルを維持する API の能力を評価します。
- セキュリティテスト- これは、APIの脆弱性をチェックし、セキュリティ上の欠陥を見つけて修正するものです。ハッカーの行動を模倣することでバグを発見し、攻撃者がAPIやそのデータにアクセスしたり、妨害したりすることを防ぎます。
- 侵入テスト- 倫理的ハッキングは、API設計のセキュリティを評価するために使用されます。外部の侵入テスト担当者が、不適切なビジネスロジックやプログラミング上の問題に起因するAPI統合の脆弱性を発見し、攻撃者が悪用する可能性のあるセキュリティ上の脆弱性を特定します。
- Web UIテストとは、Webアプリケーションのユーザーインターフェースの視覚要素が正しく機能し、ユーザーフレンドリーであるかどうかを確認するテストです。ソフトウェアコンポーネント間の通信をテストするAPIテストとは異なります。
参考文献
- 1 2 3 APIテストはアプリケーションと評判を守る、エイミー・ライヒャート著、SearchSoftwareQuality 2015年3月号
- 1 2 APIテストのすべて:ジョナサン・クーパーへのインタビュー、キャメロン・フィリップ=エドモンズ著、Stickyminds、2014年8月19日
- 1 2 3 Forrester Waveによる機能テスト自動化(FTA)の評価レポートが公開されました。その内容はGUIテストの枠を超えたものです。 2015年5月28日にWayback Machineにアーカイブされました。執筆者:Diego Lo Giudice、 Forrester、2015年4月23日
- 1 2 3 4階層型テスト戦略を用いてより良いソフトウェアを開発する、SEAN Kenefick著、 Gartner、 2014年1月7日
- ↑サードパーティAPIの責任はエンタープライズ開発者にある(2019年7月31日にWayback Machineにアーカイブ済み、Amy Reichert著、SearchSoftwareQuality、2014年7月)
- ↑優れたWeb APIを設計するためのガイダンスフレームワークエリック・ニップとゲイリー・オリフ著、ガートナー、 2014年8月20日
- ↑「脆弱なスクリプトとソフトウェアの欠陥との戦い」、エイドリアン・ブリッジウォーター著、ドクター・ドブス・ジャーナル、 2011年10月26日
- ↑複合アプリケーションテストの専門用語をどうやって学ぶか?、エイドリアン・ブリッジウォーター著、ドクター・ドブス・ジャーナル、 2012年2月14日
- ↑コーン、マイク(2009)。アジャイルで成功する:スクラムを用いたソフトウェア開発。アディソン・ウェスリー・プロフェッショナル。312ページ。ISBN 978-0321579362。
- ↑ J. Gao、C. Tao、D. Jieĺ、S. Lu (2019)。AIソフトウェアテストとは何か?そしてその理由。IEEE。pp . 27–2709。doi : 10.1109 /SOSE.2019.00015。
{{cite book}}: CS1 maint: 複数の名前: 著者リスト (リンク)