前回は、テスターのGUI操作を自動化するツールとして、キャプチャーリプレイツールを紹介しました。今回は、キャプチャーリプレイツールによるテスト実行をより効率化するための「キーワード駆動テスト」について紹介します。
前回解説した通り、キャプチャーリプレイツールでは、テスト実行の一連の操作をスクリプトとして生成、実装します。『ソフトウェアテストの基礎』(Dorothy Graham他著、センゲージ ラーニング刊)によると、スクリプトの記述方法は、その再利用性に着目して表1の5段階のレベルに分類されます。
記述レベル | 概要 |
---|---|
線形スクリプト | 手動で作成するか、手動のテストをキャプチャーして記録する方法 |
構造化スクリプト | 選択と繰り返しのプログラミング構造を使用する方法 |
共有スクリプト | スクリプトを他のスクリプトから呼び出すようにして再利用する方法。ただし共有スクリプトには構成管理下にある公式なスクリプトライブラリが必要 |
データ駆動スクリプト | コントロールスクリプトを使ってファイルあるいはスプレッドシートにあるテストデータを読み込む方法 |
キーワード駆動スクリプト | ファイルあるいはスプレッドシートに、コントロールスクリプトまで含めたテストについての情報のすべてを格納してしまう方法 |
これらの記述レベルは、表の下の方ほど再利用性が高くなります。前回の記事でキャプチャーリプレイツールの機能として紹介した「スクリプトのモジュール化」は、3番目の共有スクリプトに、「入力データ、検証用データの外部ファイル化」の機能は、4番目のデータ駆動スクリプトに該当します。そして今回紹介するキーワード駆動テストは、最上位のスクリプトの記述レベルを用いたテストです。
テスターの操作内容も記述する
キーワード駆動テストでは、スプレッドシートなどの外部ファイルに、テストデータだけでなく、テスターの操作内容などのテストに必要なすべての情報を記載します。
これだけではキーワード駆動テストのイメージが伝わりにくいので、例を用いて説明します。前回までに利用した掲示板Webアプリケーションのテストを考えてみましょう(図1)。
キーワード駆動テストよりも一つ下のレベルにあたるデータ駆動テストでは、まず「投稿者を入力する」「メールを入力する」「タイトルをクリックする」といった操作をキャプチャーして、スクリプトを作成します(記録せずにスクリプトを直接記述することもできます)。その上で、作成したスクリプトのテストデータ部分を変数に修正して、テストデータをスプレッドシート等の外部ファイルに切り出します。データ駆動テストによる自動化のイメージを、図2に示します。
それでは、キーワード駆動テストの場合はどうなるのでしょうか。キーワード駆動テストでは、テストデータだけでなく、操作内容も外部ファイルに記載します(図3)。このとき操作内容は、ツールごとに決められたキーワードを使います。例えば、テキストの入力なら「SetText」、クリックする動作なら「Click」といった具合です。
この操作内容を、あらかじめ提供されている共通のスクリプト(あるいはツールに備わっている機能など)が解釈して、テストを実行します。このため、キーワード駆動テストでは、スクリプトの記述が不要になります。
キーワード駆動テストでは、テストスクリプトがテストデータに依存しないため、多くのデータのバリエーションテストをする場合は非常に効果的です。ですが、それはデータ駆動テストでも同じです。キーワード駆動テストの特筆すべき点は、テストスクリプトがテスターの操作内容に依存しないことにあります。これにより、具体的に以下のようなメリットが得られます。
- 操作内容を変更する場合でも、テストスクリプトの修正が不要である
- 操作内容が特定のシンプルなキーワードで記述されるため、スクリプトに比べて可読性が高い
また、キーワード駆動テスト以外のテストでは、スクリプト作成のために操作内容をキャプチャーすることが一般的です。キャプチャーによるスクリプト作成は非常に効率的ですが、新規システムの開発時などでは、テスト開始のギリギリまでシステムに触ることができないケースが多々あります。このような場合は、テスト工程の開始時に急いでキャプチャーしなければならず、開発現場に混乱をもたらすことが少なくありません。
キーワード駆動テストの場合は、操作内容をキャプチャーせずに、スプレッドシートのファイルにキーワードを埋め込むことでスクリプトを作成できます。そのため、新規の開発時にも前もってテスト自動化の準備ができます。