キーワード駆動テストとは?詳しく解説します
概要
キーワード駆動テストは、テスト開発からテスト設計を分離するソフトウェアテスト手法の
一つです。
従来であれば、テストはソフトウェアエンジニアやテストエンジニアが実施するものです。これらは当然ながらプロジェクトに必要なテクノロジーやツール、あるいはプログラミング言語を彼らが理解していることが前提となります。これにより、機能テスターの選択肢が制限される可能性や様々なリソースの問題などの課題が生まれるケースがありました。
キーワード駆動型テストは、これらの課題を排除し、テスト設計、テスト開発、およびテスト実行ステージを個別のモジュールに分割して、より簡潔で読みやすくするのに役立ちます。
つまり、各工程におけるアクションをキーワードとして分類することにより、このテストフレームワークは自動化に役立ちます。その後、短時間で多数のテストを実行し、人的エラーの可能性を最小限に抑えることができます。
そのため、テスト自動化プロセスにビジネスアナリストなどの専門家を含めることができるという点がキーワード駆動テストにおける大きな特徴です。
さらに詳しくキーワード駆動テストについて説明させていただきます。
設計と実装
キーワード駆動テストは設計と実装という2つのポイントが重要となります。
キーワード
設計はアプリケーションを関数に分割することです。
関数は、階層的に低レベルまたは高レベルのいずれかに分類できます。
「クリック」や「ダブルクリック」など1ステップのアクションを表す各機能は、低レベルのキーワードです。
これらは、アプリケーションがより複雑なタスクを実行できるようにするビルディングブロックです。
高レベルキーワードは、多数の低レベルキーワード機能を組み合わせた複雑なタスクを記述します。
実装
次にキーワードの実装を行います。
これは、キーワードが説明する機能を実行するために必要な一連の操作のように、キーワードを適切なデータ値に関連付けるプロセスであり、Excelシートのような表で行います。
さらにテストケースを作成します。テストケースを作成するには、関連するキーワードをアクション テーブルと呼ばれるものにリストする必要があります。
また、入力する値や操作対象のオブジェクトなど、テストを実行するために必要なデータもリストする必要があります。
このテーブルは通常、.CSV や .XLS などの一般的なデータ形式です。
テストを作成する最も簡単な方法は、アプリケーションを使用しながらテストを記録することです。
そうすれば、キーワードテスターは、アプリケーションの内部動作を理解する必要はありません。
必要なのはテストする機能の計画だけです。記録を作成したら、必要に応じていつでもテストケースを変更できます。
次にドライバスクリプトを実行するという工程もあります。
これは、テストケース情報を使用してテストを実行する工程です。
テストスクリプト
通常、テストごとに個別のスクリプトを作成する必要がありますが、キーワードテストはモジュール式です。そのため、代わりにテストフローのさまざまなセクションを処理する再利用可能なスクリプトを作成することができます。
次に、ドライバースクリプトは各パーツを正しい順序で呼び出して、テストを実行します。
ドライバースクリプトは、テストアプリケーションをテストするための別のスクリプトをトリガーするために機能します。 このドライバースクリプトでは、条件ロジックまたは他の制御ロジックを使用してドライバ内の他のテストのオプションの実行を管理することはあります。
ドライバースクリプト自体がテスト実施をするのではない点に注意が必要です。
また、1つのテストスイートには、テストアプリケーション内の異なる時点で実行される、多数のテストが含まれています。
テストスイートにある各スクリプトは、ドライバースクリプトによって呼び出すことができ、これらのドライバースクリプトは、スクリプトと同様に作成します。
つまり、テストアプリケーションをテスト開始の正しいポイントまで駆動し、さらにスクリプトを呼び出してそのテストサイトでテストを開始するために機能します。
テストが終了すると、ドライバースクリプトに制御が戻され、次のテストサイトに進みます。 ドライバースクリプトの作成は、個々のスクリプトを手動で記録する場合と同様に行うことができます。
ドライバースクリプトは、アプリケーションのテストに対するモジュール式アプローチを推進するものです。
完全なテストを実行する1つのスクリプトを作成する代わりに、テストフロー全体のうちの個々の部分をテストする再利用可能なスクリプトを複数作成して、ドライバースクリプトで各部分を呼び出すようにすることができます。
テスト全体のうちの一部を変更する場合は、変更が必要なスクリプトだけを更新します。
自動化
テストを実行するために、ユーザーまたは自動化の専門家は、キーワード引数とも呼ばれる必要なパラメーターを使用してドライバースクリプトを実行できるようになりました。
関数のバッチをまとめてテストする場合は、テストに意思決定ロジックを追加できます。
たとえば、AとBの2つのテストがあり、テストBがテストAに依存する関数である場合、テストAが成功した場合にのみテストBが実行されるように自動化を調整できます。
特定の自動化フレームワークには、複数の結果を生成するテストを処理する独自の方法がある場合があります。
キーワードテストを変更して再度実行する場合は、パラメーターを変更するだけで、ドライバースクリプトにはまったく手を加える必要はありません。
これが、キーワード駆動型テストの自動化がスクリプトを使用したテストよりも保守がはるかに簡単である理由です。
メリット
キーワード駆動テストのメリットについていくつか紹介させていただきます。
依存の排除
一点目がプログラミング言語に関する依存をなくすことです。
スクリプトのみに依存するテストには、スクリプト言語を理解する開発者やテストエンジニアが必要となります。
一方で、キーワード駆動テストを導入することで、それらは不要となります。
つまり、データ駆動型テストのような従来のアプローチではなく、アプリがどのように機能するかを理解するだけでテスト実行が可能となります。
さらに、テストエンジニアがテストを計画している場合は、それらをアプリに記録し、目標に合わせてアクションテーブルのパラメーターを変更できます。
これにより、テスターはコードからさらに分離され、テスト スクリプトを作成する代わりに、機能テストの実行に完全に集中できるようになります。
これらはチーム全体の効率化や最適化を実現することが可能でありスムーズなプロジェクト運営に寄与します。 例えば、経験の浅いテストエンジニアやプロジェクト経験が浅いテストエンジニアにおいてもすぐにテストにとりかかることができます。さらに、プロジェクトの利害関係者がテストケースを共有し、それらを理解することも大きなメリットの一つと言えるでしょう。
無駄のない機能性
二点目が無駄のない機能性を実現することができる点です。
それぞれが特定の機能を説明するキーワードのフレームワークを使用してテストを構築するため、キーワード駆動テストは、より抽象的な方法でテストを作成するのに役立ちます。
モジュール構造のため、キーワード駆動型テストでは、完全な安定したビルドを作成する前に、ソフトウェア開発ライフサイクルの早い段階で自動化を開始することもできます。代わりに、エラーをデバッグする方がはるかに簡単で安価なときに、できるだけ早く各機能の簡単な機能テストを作成できます。
まとめ
いかがでしたでしょうか?
キーワード駆動テストについて詳しく解説させていただきましたので、参考にしていただけましたら幸いです。