Eggplant Functionalによるデータ駆動型テスト
データ駆動型のテストアプローチは、テストデータのセットを使用した繰り返しテストを効率的に、簡単に管理する方法を提供します。Eggplant FunctionalとSenseTalkは、データ駆動型テストを簡単に行うさまざまな機能を含んでいます。
Eggplant Functionalは、プレーンテキストファイル、Microsoft Excelファイル、データベースなどのさまざまなデータソースからのテストデータの使用をサポートし、SenseTalkには、デー タにアクセスし、操作し、解析するためのコマンドと関数が含まれています。この記事では、スクリプトにデータ駆動型テストを組み込むためにEggplant Functionalをどのように使用するかを示します。
また、Eggplant FunctionalのTables機能を使用し、テーブルテストにデータファイルを関連付けることによってデータ駆動型テストを実行することもできます。
キーワード駆動型フレームワークを作成するためにデータファイルを使用する方法については、カスタムキーワード駆動型フレームワークの作成を参照してください。
データ駆動型テストとは何ですか?
データ駆動型テストとは、外部データセットをテスト入力として使用する概念です。テストでは、入力データをさまざまな方法で使用することがあります。たとえば、テスト対象のアプリケーションのフォームに入力されるテキストを指定したり、表示される値を期待される値と比較して検証したり、テスト定数のセットを確立したりします。
テストは、データソースからデータを受け取ることができるように、パラメータ化を使用して一般的に記述されます。テストが使用するデータは、元のデータソースを手動で編集する、テストを新しいデータソースに向ける、データソースへの更新を自動 化することにより変更することができます。
以下のデータソースへの接続に関するセクションでは、サンプルのSenseTalkコードがデータ駆動型テストのための外部データの使用例を示しています。
データソース
自動化で使用するテストデータを含むデータソースは、データ駆動型テストに必要です。Eggplant Functionalは以下のタイプのデータソースをサポートしています:
使用するデータソースは、SenseTalkをどのように使用してデータソースにアクセスし、データを解析するかを決定します。
データソースの保管
プレーンテキストまたはExcelのデータソースを使用する場合、ファイルはEggplant Functionalマシンのローカルファイルシステムにアクセス可能でなければなりません。これにはネットワーク化されたドライブや共有ドライブも含まれます。
Eggplant FunctionalをWindowsで使用している場合、共有ドライブは文字にマップされている必要があります(例:D:\)。UNCパスはサポートされていません。
スイートのResources paneは、スイート内にプレーンテキストとExcelのデータファイルを保管するための簡単な方法を提供します。その後、ResourcePath()関数を使用してスクリプトからこれらのファイルを簡単に参照することができます。
データベースの場合、Eggplant Functionalとデータベースとの間の通信は、Eggplant Functionalマシンに設定されたODBC Administratorによって管理されます。
プレーンテキストファイルとのインタラクション
Eggplant Functionalを使用してデータ駆動型テスト戦略を実装するための最も簡単な方法は、プレーンテキストファイルを使用することです。
ファイルアクセス
プレーンテキストファイルの内容にアクセスする背景については、File and Folder InteractionおよびAccessing a File as a Containerのドキュメンテーションを参照してください。
プレーンテキストファイルの内容にアクセスするとき、open file
およびclose file
コマンドを使用することは必要ありません。ただし、ファイルに対して多数の高速な読み書きイベントを行っている場合は、open file
およびclose file
コマンドの使用が推奨されます。データ駆動型テストのほとんどのケースでは、ファイルは一度だけ、または稀にアクセスされるため、これらのコマンドは必要ありません。
プレーンテキストファイルと対話する最も簡単な方法は、put
またはset
コマンドを使用してファイルをコンテナとしてアクセスすることです。ファイルを参照するときは、ファイル拡張子(例:.txt、.csv)を含めてください。例えば:
Set MyPrices to file ResourcePath("prices.txt") -- データファイルはスイートのリソースに保存されています
Set MyProducts to file "C:\Users\Carrie\Desktop\products.csv" -- データファイルはEggplantマシンの他の場所に保存されています
chunk expressionsを使用して、ファイル内容の一部をコンテナとしてアクセスすることができます。例えば:
Set MyPrice to line 3 of file ResourcePath("prices.txt")
ファイル内容の解析
プレーンテキストファイルの内容をパースするためのSenseTalkメソッドは、データがCSV形式であるかそれ以外の形式であるかによります。
CSV形式のファイル
ヘッダー行を含むCSV形式に従うプレーンテキストファイルの場合、CSVValue()
Functionは、ファイルの内容を操作するための最も簡単な方法を提供します。これはヘッダー行を自動的にパースするためです。SenseTalkスクリプト内でヘッダー名に基づいてデータにアクセスするためにCSVValue()
を使用することができます。
CSV形式に従う基本的なプレーンテキストファイルであるLoginCredentials.csvの内容は次のようになる可能性があります:
username,password
admin,adminpass
user,userpass
CSVValue()
は、ファイルのCSV形式の内容をproperty listsのlistに変換します。ここで、内容のヘッダー行はプロパティ名を指定するために使用され、その後の行はプロパティ値を指定するために使用されます。ヘッダーの下の各行は、プロパティリストのリスト内に独自のプロパティリストを持っています。
put CSVValue(file resourcePath("LoginCredentials.csv"))
次のプロパティリストのリストを作成します:
((password:"adminpass", username:"admin"),(password:"userpass", username:"user"))
プロパティ値は、ヘッダー、またはプロパティ名と一緒に所有形を使用するなど、さまざまな方法でアクセスすることができます:
Set Credentials to CSVValue(file resourcePath("LoginCredentials.csv"))
Log the first item of Credentials -- ログ '(password:"adminpass", username:"admin")'
個々のプロパティリストはlist item chunk typeを使用してアクセスすることができます:
Set FirstLogin to the first item of CSVValue(file resourcePath("LoginCredentials.csv"))
Log FirstLogin's password -- ログ 'adminpass'
repeat with each
を使用してリスト内の項目に基づいて繰り返しを行い、プロパティにアクセスします:
Set Credentials to CSVValue(file resourcePath("LoginCredentials.csv"))
repeat with each item CredentialSet of Credentials
Set Username to CredentialSet's username
Set Password to CredentialSet's password
Click "UsernameField"
TypeText Username
Click "PasswordField"
TypeText Password
end repeat
CSV形式以外のファイル
以下のSmokeTest.txtの例のようなプレーンテキストファイルも、lines and text itemチャンクタイプに基づいてパースすることができます。
TestName,Smoke
RemoteWorkInterval,.3
MouseClickDelay,.1
ImageUpdate,auto
デフォルトのthe lineDelimiterおよびthe wordDelimiterローカルプロパティの値によれば、SenseTalkはこのファイルを4行あり、各行に2つのテキストアイテムがあると見ています。これらはカンマで区切られています。チャンク表現を使用して個々の行やテキストアイテムにアクセスすることができます。例えば:
log the first item of line 3 of file resourcePath("smoketest.txt") -- ログ 'MouseClickDelay'