テスト自動化とは、テストの実行を制御し、実際の結果を予測結果と比較するために、(テスト対象のソフトウェアとは別の)ソフトウェアを使用することです。 [ 1 ]テスト自動化は、手動操作なしでテスト対象システム(SUT)のテストをサポートし、テスト実行の高速化とテスト頻度の増加につながります。テスト自動化は、継続的テストの重要な側面であり、多くの場合、継続的インテグレーションと継続的デリバリー(CI/CD)にも適用されます。[ 2 ]
自動化は、手動テストに比べて多くの利点を提供する。
APIテストでは、テストはアプリケーションプログラミングインターフェース(API)を介してテスト対象システム(SUT)を操作します。手動テストと比較して、自動化されたAPIテストは、比較的短時間で比較的多くのテストケースを実行できる場合が多いです。
GUIテストでは、キーストロークやマウスクリックなどのイベントを生成することで、テスト対象システム(SUT)のグラフィカルユーザーインターフェース(GUI)を介してテストを実行します。自動化されたGUIテストの開発は困難な場合もありますが、人間が同じテストを実行するよりもはるかに高速に実行できます。専門分野は以下のとおりです。
自動テストが導入されていれば、回帰テストは比較的迅速かつ容易に実施できます。多大な時間と労力を費やす代わりに、回帰テストの実行はボタンを押すだけで済み、実行開始自体も自動化できます。
以下は、テスト自動化に分類される代表的なテスト手法です。
継続的テストとは、ソフトウェアデリバリーパイプラインの一部として自動テストを実行し、SUTのリリースに伴うビジネスリスクを評価するプロセスです。[ 4 ] [ 5 ]テストの範囲は、ボトムアップの要件やユーザーストーリーの検証から、包括的なビジネス目標に関連するシステム要件の評価まで及びます。[ 6 ]
モデルベーステストでは、SUTがモデル化され、そこからテストケースが生成されて、コード不要のテスト開発をサポートします。一部のツールは、テストケースを複数のオペレーティングシステム、ブラウザ、スマートデバイスで使用できる平易な英語でエンコードすることをサポートしています。[ 7 ]
テスト駆動開発(TDD)には、自動化テストコードの生成が本質的に含まれています。ユニットテストコードは、SUTコードの作成と同時に作成されます。コードが完成すると、テストも完了します。[ 8 ]
その他のテスト自動化手法には以下が含まれます。
52人の実務家と26人の学術関係者の資料をレビューした結果、テスト自動化の決定において考慮すべき5つの主要な要素は、テスト対象システム(SUT)、テスト範囲、テストツールセット、人的および組織的トピック、横断的要素であることがわかりました。最も頻繁に特定された要素は、回帰テストの必要性、経済的要因、SUTの成熟度でした。[ 9 ] [ 10 ]
自動テストの再利用性はソフトウェア開発企業にとって高く評価される特性である一方、同じテストを繰り返し実行するとエラーの検出が停止するというプラトー効果を引き起こすため、この特性は欠点とみなされる場合もある。
テストツールは、製品のインストール、テストデータの作成、GUI操作、問題検出(テストオラクルを備えた解析エージェントやポーリングエージェントを検討)、欠陥ログ記録などのタスクを自動化するのに役立ちますが、必ずしもエンドツーエンドのテストを自動化するわけではありません。
自動テストを開発する際の考慮事項は以下のとおりです。
コードによる自動テストをサポートするには、テストエンジニアまたはソフトウェア品質保証担当者がソフトウェアコーディング能力を持っている必要があります。テーブル駆動型テストやノーコードテストなどの一部のテスト手法は、プログラミングスキルの必要性を軽減または解消することができます。
テスト自動化フレームワークは、テストロジック、テストデータ、その他のリソースを統合するプログラミング環境を提供します。このフレームワークはテスト自動化の基盤となり、自動化作業を簡素化します。フレームワークを使用することで、テスト開発と保守のコストを削減できます。テストケースに変更があった場合でも、更新する必要があるのはテストケースファイルのみで、ドライバスクリプトと起動スクリプトは変更されません。
フレームワークは、期待を表現する形式を定義し、SUTに接続または駆動するためのメカニズムを提供し、テストを実行し、結果を報告する役割を担います。[ 11 ]
様々な種類のフレームワークが利用可能です。
テスト自動化インターフェースは、システム/統合テスト用の複数のテストツールとフレームワークを組み込むためのワークスペースを提供するプラットフォームです。テスト自動化インターフェースを使用すると、コーディングなしでテストをビジネス基準にマッピングするプロセスを簡素化できます。テスト自動化インターフェースを使用すると、テストの保守の効率と柔軟性を向上させることができます。[ 12 ]

テスト自動化インターフェースは、以下の要素で構成されます。