テーブル機能とキーワード駆動テスト
Eggplant Functionalのテーブル機能を使用してキーワード駆動テストを行うことは、手動テストまたは自動テスト、特に大規模な組織やテストプロセスとテスト開発を分離したい環境において、良い選択となることがあります。本記事では、キーワード駆動テストとは何か、およびEggplant Functionalでテーブル機能を使用してそれを実装する方法について説明します。
キーワード駆動テストとは何ですか?
キーワード駆動テストは、テストケースまたはワークフローの作成とは別に機能テストスクリプトを開発するためのテストフレームワークです。テスト対象の特定の機能を表すキーワードまたはアクションワードを、各キーワードに対する引数(データ)とともに外部データテーブルで使用します。このアプローチはスクリプトレステストとも呼ばれます。なぜなら、テストケースをパラメータ化するためのスクリプトを書く必要がないからです。このプロセスはデータ駆動テストに似ていますが、純粋なデータを供給するのではなく、キーワードと対応するデータがテスト実行ドライバに共に供給されます。
Eggplant Functionalでは、テーブル機能を使ってキーワード駆動テストを実装することができます。スイートウィンドウでテーブルにアクセスし、テーブルを構築します。あなたのスクリプトはテーブルで選択可能なアクションとなり、ユーザーはテーブルを実行して各ステップの合格/不合格の結果を見ることができます。以下に、Eggplant Functionalでのテーブルの簡単なビデオデモンストレーションを示します:
キーワード駆動テストにおけるユーザーロール
このプロセスでは、ワークフローを「バックエンド」開発と「フロントエンド」実行に分けることができます。フレームワーク開発者(テストエンジニア)は通常、テストに必要なアクションやキーワードの仕様に基づいてスクリプトを作成します。テストアナリスト(テスター)は、テーブル内のテストワークフローを構築し、テストを実行します。この役割は高度な技術的スキルを必要としないため、組織によってはビジネスアナリストなどに割り当てることもできます。
開発プロセス全体を通して、テストエンジニアとテスターが連携することが重要です。環境の規模によっては、両方の役割を同じ人が担う場合もあります。その場合でも、テーブルが提供する柔軟性を活かして、テーブルベースのテストモデルを開発することが有効となる場合があります。
ステップバイステップ: テーブルを使用したキーワード駆動テストの作成
アプリケーションをテストする際には、アプリケーションの何らかの機能を表す多数のスタンドアロンアクティビティが見つかることがあります。例えば、小売ウェブサイトをテストする場合、「Navigate_To_Website(ウェブサイトへ移動)」「Register(登録)」「Search(検索)」「Add_To_Basket(カートに追加)」といったタスクがあるかもしれません。すべての関数が他の関数から独立して実行できるようにスクリプトを開発すれば、テーブルを用いて非常に多くのテストケースを作成できます。
-
テストを分割できる個別のタスクを特定します。
この段階では、テストエンジニアとテスターが一緒にブレインストーミングを行っているでしょう。目的は、テストプロセスにおける個々のアクションを特定することです。例えば、上記の小売ウェブサイトの例では、既にリストの作成を始めています。話を分かりやすくするために、ウェブサイトにアクセスし、検索を実行し、検索した項目が見つかったことを確認し、ブラウザを閉じてテスト対象システム(SUT)を元の状態に戻すというテストがあるとします。タスクは以下のようなものになるでしょう:
- Launch_Browser
- Navigate_to_Website
- Perform_Search
- Verify_Search
- Close_Browser
-
各タスクに対してスクリプトを作成します。
ウェブサイト検索の例では、テストエンジニアはスクリプトペインに5つのスクリプトを作成します。このプロセスは他のスクリプトの作成と変わりません。(スクリプトの作成方法については、スクリプトエディタを参照してください。)上記のリストにあるように、スクリプトにはアクションを表すキーワード(キーワード)を付けて名前を付けます。アクションを実行するための実際のスクリプトを作成する必要はありますが、ここではテーブルの一部として実行するアクションを作成し、名前を付けることだけに焦点を当てます。
スクリプトをテーブル内のアクションとして使用できるようにするには、「テーブルアクション」ペインの
InfoでスクリプトをExecuteまたはVerifyに設定します。 「スクリプト」ペインでスクリプトを選択した状態で「情報」ボタンをクリックすると、「テーブルアクション」ペインが表示されます。
スクリプトエディタのテーブルアクションペインでは、スクリプトをテーブルアクションとして設定します。
- 結果を確認したくないスクリプトについては、ドロップダウンリストから
Executeを選択します。 - スクリプトが戻り値を返し、それを確認したい場合は、ドロップダウンリストから
Verifyを選択します。
注記デフォルトの選択肢である
Not a Table Actionが選択されていると、Table Actionペインの他のオプションは表示されません。注記Table Actionペインから、テストエンジニアは
ExecuteおよびVerifyスクリプトのデフォルトの引数と、Verifyスクリプトのデフォルトの期待値を渡すことができます。ただし、テスターは、テーブル自体でこれらの値を変更することで、これらの値をオーバーライドできます。 - 結果を確認したくないスクリプトについては、ドロップダウンリストから
-
テーブルでテストケースを構築します。
テストエンジニアがスクリプト/タスクをテーブルアクションとして定義した後、テスターは以下の手順でテストを構築できます:
-
Tablesペインで右クリックし、
New Tableを選択します。テーブルに適切な名前を付け、Enterキーを押します。テーブルはSuiteウィンドウのメインボディの新しいタブで開きます。 -
テストで実行したいアクションを選択します。
新しいテーブルには空白の行が1つ含まれています。Action列のドロップダウンリストからアクションを選択できます。テストエンジニアがテーブルアクションとして割り当てたスクリプトは、このリストの一番下に表示されます。
アクションを選択すると、その行にステップ番号が割 り当てられ、新しい空白の行が作成されます。テストエンジニアがデフォルトの引数や期待値を割り当てていた場合、その情報は適切な列にテーブルに表示されます。それ以外の場合、必要な情報を記入する必要があります。
-
各ステップについて、スクリプトが必要か、あらかじめ定義されたアクションを使用できるかを決定します。
あなたがテーブルアクションとして定義したスクリプトに加えて、
Actionドロップダウンリストには、多くの一般的なEggplant Functionalのコマンドと関数が含まれています。テストプロセスを小さく、個別の単位に分割したため、場合によっては、同じ機能を達成するためのスクリプトを書くのではなく、組み込みのアクションを使用したいかもしれません。このプロセスの一部は、テスターとテストエンジニア間の密接なコミュニケーションを必要とします。たとえば、以下に、スクリプトとしての5つのアクションが挿入されたテーブルを示します:

スクリプトとして5つのアクションが挿入されたeggPlant Functionalテーブル
最初のステップ、Launch_Browserでは、意図したブラウザを起動するために画像をクリック(またはダブルクリック)するスクリプトを書くかもしれません。しかし、
ActionドロップダウンリストからClick(またはDoubleClick)を選択し、そのステップの引数として適切な画像を選択することで、同じ結果を得ることができます。Actionドロップダウンリストから画像ベースのコマンドや関数を選択すると、そのステップのArguments列は、現在のスイートからのすべての画像のドロップダウンリストを提供します。注記アクションを実行するためのスクリプトを書かない場合でも、引数として選択できるように、SUT内で画像をキャプチャする必要があります。
現在の例では、ステップの3つを組み込みのアクションで実行できます:ブラウザを開くために画像をクリックする、ブラウザを閉じるために画像をクリックする、およびImageFound() 関数を使用して検索を確認する:

5 つのステップ (スクリプトと組み込みアクション) を含む eggPlant 機能テーブル
-
スクリプトを作成します。
この時点で、どのアクションをまだスクリプト化する必要があるか明確になります。テストエンジニアは、Eggplant Functionalの通常のスクリプト作成ツールをすべて使用して、スクリプトのコードを作成できます。
-
テーブルからテストを実行する
スクリプト開発が完了し、テストシナリオがテーブルに作成されると、テスターはテストを実行する準備がほぼ整います。しかし、各アクションアイテムの引数と期待値が正しく割り当てられていることを確認する必要があります。
テストエンジニアがスクリプトのTable Actionパネルにデフォルト情報を含めていた場合、テスターがアクションとしてスクリプトを選択すると、それが自動的にテーブルに表示されます。異なる値でテストを実行したい場合は、デフォルト情報を上書きできることを覚えておいてください。また、スクリプト定義がテーブルにプレースホルダーテキストを送信する場合、そのプレースホルダーを実際の値に置き換える必要があります。いずれの場合も、テーブル内の現在の値を選択し、使用したい値に置き換えます。
確認したいステップがある場合は、Expected Value列に値を持っている必要があり、スクリプトやアクション自体が値を返す必要があります(Actual Valueは、テーブルを実行した後に入力されます)。これらの2つの値(ExpectedとActual)は、Pass/Failの結果を決定するために比較されます。
これでテーブルを実行してテストを実行する準備が整ったはずです。Runボタンをクリックすると、Eggplant Functionalはテーブルの各行のアクションを順番に実行します。個々の行がパスするか失敗するかに関係なく、テーブルはテーブル内の各ステップを進みます。
Pass/Fail列は各行で何が起こったかを表示します:
- 緑色: パス
- 赤色: 失敗またはエラー
- グレー: 行のアクションは成功裏に完了しましたが、パス/フェイルの検証は必要ありませんでした
- 黄色: 実行中(アクションが進行中です)
テストモデルの拡張
この二つのスクリプトをテーブルで繰り返し、毎回Perform_Searchに異なる引数を使用することで、テストアイテムのリストを素早く実行できます:
同じテーブルで、事前に定義されたアクションと同様に、複数回スクリプトをアクションとして選択することができます。上記の例では、Perform_Searchスクリプトは、テーブルに入力する引数から検索語を取得するように記述されています。Verify_Searchスクリプトは特定の引数を渡して常に同じものに対して検証します。

一連の検索語を検索および検証するために設定されたeggPlant機能テーブル