T-Plan Robot Enterprise 向け SQL Database Plugin
目次:
1. 概要
2. プラグインのインストール
3. 使用方法
1. 概要
SQL Database Pluginにより、T-Plan Robot Enterpriseのテストスクリプトは、JDBC接続経由でSQLデータベースとやり取りできます。
このプラグインは主に、 TPR言語で書かれたテストスクリプトを対象としています。この機能はJavaテストスクリプトから呼び出すこともできますが、JDBC APIを直接使用する方が簡単な場合があります。Javaからプラグインスクリプトを呼び出すには、 DefaultJavaTestScript.run() メソッドを使用するか、 Java Test Script Basics 文書に記載されているスクリプトインスタンスのアプローチを使用します。
このプラグインは、完全なソースコードとともに「現状のまま」提供されます。自由に変更・再利用できます。NetBeansやEclipseなどのIDEでコードをコンパイルするには、T-Plan Robot Enterpriseのインストールフォルダにあるrobot.jarファイルをプロジェクトのクラスパスに追加してください。
ご質問やご提案がありましたら、 T-Planサポートまでご連絡ください。T-Planが提供する他のプラグインの一覧は こちらをご覧ください。
2. プラグインのインストール
このプラグインには、T-Plan Robot 3.2以降が必要です。インストールするには:
-
次のURLからプラグインをダウンロードします:
https://downloads.t-plan.com/releases/robot/plugins/tprdb_v1.zip
オプション1:
-
ファイルを解凍し、tprdb.jarファイルをRobotのインストールディレクトリ下のplugins/ディレクトリにコピーします。これにより、Robotは起動時にクラスを読み込むようになります。
-
Robotを起動または再起動します。
オプション2:
-
ファイルをハードドライブ上の任意の場所に解凍します。
-
TPRスクリプトでプラグインを使用する場合は、各テストスクリプトの先頭に次のコマンドを追加します:
Include"<location>/tprdb.jar"
-
Javaテストスクリプトでプラグインを使用する場合は、tprdb.jarファイルをJavaのクラスパスに追加します。
プラグインをアンインストールするには、単にファイルを削除するだけです。
3. 使用方法
このプラグインには、5つのJavaテストスクリプトが含まれています:
|
スクリプト名 |
説明 |
戻り値 |
|---|---|---|
|
com.tplan.db.Connect |
指定したデータベースへの接続を作成します。 |
成功時は0、JDBCドライバを利用できない場合は1、接続に失敗した場合は2 |
|
com.tplan.db.Execute |
SQLステートメントを実行します。 |
成功時は0、接続が確立されていない場合は1、ステートメントの実行に失敗した場合は2 |
|
com.tplan.db.Commit |
トランザクションをコミットします。 |
成功時は0 、接続が確立されていない場合は1、コミット操作に失敗した場合は2 |
|
com.tplan.db.Rollback |
トランザクションをロールバックします。 |
成功時は0、接続が確立されていない場合は1、ロールバック操作に失敗した場合は2 |
|
com.tplan.db.Disconnect |
データベースから切断します。 |
常に0を返します |
プラグインスクリプトは、Runコマンドを使用してTPRテストスクリプトから呼び出します。コマンドインスタンスは、コマンドウィザードツールを使用して簡単に作成できます。既存のRunコマンドを編集するには、それを右クリックしてコンテキストメニューからプロパティを選択します。
データベース接続を確立するには、JDBCドライバをダウンロードし、ドライバクラス名とデータベースURLを確認する必要があります:
-
Java DBおよびMySQLについては、次を参照してください:
JDBC Tutorial
-
参照:
例1
-
-
Microsoft JDBC Driver 4.0 for MS SQL Server
-
インストール後、使用する.jarファイルについては次の場所の説明を確認してください: "C:\Program Files\Microsoft JDBC Driver 4.0 for SQL Server\sqljdbc_4.0\enu\help\default.htm"
-
上記の注記は、JDBC Driver 4.0がインストールされていることを前提としています。別のバージョンをインストールした場合は、パスを変更してください
-
-
参照:
例2
-
-
Oracle DB JDBCドライバ
-
使用しているDBのバージョンに対応するojdbc6.jarファイルを選択してください
-
参照:
例3
-
-
その他のデータベースについては、DBベンダー(製造元)にお問い合わせください。
ドライバは通常、JARファイルの形式で配布されます。これをRobotから認識できるようにするには、次のいずれかの方法を使用します:
-
次を呼び出して読み込む:
Include
(この例のケース)。
-
Robotのインストールディレクトリ下のplugins/フォルダにコピーする(Robotの再起動が必要)。
-
JARファイルのパスを、Robotの起動コマンドのクラスパスに追加する。
このプラグインはデフォルトでデータベース接続をプールします。これは、作成された接続が、com.tplan.db.Disconnectの呼び出しによって明示的にクローズされるか、Robotが終了するまで存在し続けることを意味します。別のスクリプトが同じデータベースへのConnectを呼び出すと、新しい接続ではなくプールされた接続を受け取ります。これには2つの明確な利点があります:
-
スクリプトやその一部を頻繁に実行する必要があるテストスクリプトの開発段階で、時間を節約できます。
-
テストスクリプトが同時に複数のデータベースを操作する必要がある場合に、接続間を高速に切り替えることができます。
プーリングメカニズムは同期化されていません。つまり、並列実行される2つのテストスクリプトが同じデータベースに接続した場合、同じ接続を使い回してしまう可能性があります。そのため、プーリングモードは、1つのJVM内で複数の自動テストプロセスを並列実行する環境での使用を意図していません。プーリングを無効にするには、com.tplan.db.Connectの呼び出しにpool=falseパラメータを渡します。この場合、接続はプールされず、明示的に早くクローズされない限り、スクリプトの終了後に自動的にクローズされます。
JDBCフレームワークは、デフォルトで、すべての新しい接続を自動コミットモードを有効にした状態で作成します。これは、個々のSQLステートメントがトランザクションとして扱われ、実行直後に自動的にコミットされることを意味します。この動作を抑制するには、com.tplan.db.Connectの呼び出しにautocommit=falseパラメータを渡し、その後スクリプトからcom.tplan.db.Commitおよびcom.tplan.db.Rollbackの呼び出しを使用してトランザクションを管理します。
Disconnect以外のすべてのプラグインスクリプトは、発生したDBエラーを次のように処理します:
-
エラーは
実行ログ
に記録されます。
-
_DB_ERROR変数にエラーの説明が設定されます。
-
スクリプトは0以外の終了コードを返します。
-
呼び出し元のスクリプトは
Exitコマンド
の呼び出しによって終了します。この動作を抑制するには、"makefail=false"パラメータを指定して接続を開始します。このモードを使用する場合は、各DB呼び出しの戻り値をテストし、失敗が検出された場合は適切な対応を取ることを推奨します。
SQLのSELECT文を使用してデータを照会するには、com.tplan.db.Executeスクリプトを使用します。結果として得られたデータは、変数の形式で呼び出し元のテストスクリプトに公開されます:
|
変数名 |
説明 |
|---|---|
|
_DB_COLUMN_COUNT |
SQLのSELECT文の結果として得られる列数。 |
|
_DB_ROW_COUNT |
SQLのSELECT文の結果として得られる行数。 |
|
_DB_VALUE<row>_<column> |
指定した行と列の値です。例えば、_DB_VALUE_2_3変数には、データの2行目の3番目の値が格納されます。 |
例1: Java DBインスタンス(Derby)
次の例は、組み込みのJava DBインスタンス(Derby)に接続し、「dummy」という名前のテーブルを作成し、2行のデータを投入し、テーブルの内容を照会して、_DB_VALUE変数から取得した値を出力するテストスクリプトを示しています。JDKがインストールされていて、derby.jarへのIncludeパスが正しく設定されていれば、この例をすぐに実行できます。
# JavaDB用のJDBCドライバクラスを含むJARファイルを読み込みます
Include "C:\Program Files\jdk1.6.0_31\db\lib\derby.jar"
# データベースに接続します
Run "com.tplan.db.Connect" driver="org.apache.derby.jdbc.EmbeddedDriver" url="jdbc:derby:testdb;create=true"
# 「dummy」テーブルを作成し、データを投入します
Run "com.tplan.db.Execute" statement="create table dummy (pid int, Name varchar(20))"
Run "com.tplan.db.Execute" statement="insert into dummy values (1, 'Value')"
Run "com.tplan.db.Execute" statement="insert into dummy values (2, 'Another value')"
# テーブルの内容を照会します
Run "com.tplan.db.Execute" statement="select * from dummy"
# データを反復処理し、その値を実行ログに書き込みます
for (row=1; {row} < {_DB_ROW_COUNT}+1; row={row}+1) {
for (column=1; {column} < {_DB_COLUMN_COUNT}+1; column={column}+1) {
Log "Value at [row, column] = [{row}, {column}]: \"{_DB_VALUE_{row}_{column}}\""
}
}
# データベース接続を閉じます。
Run "com.tplan.db.Disconnect"
例2: SQLExpressデータベースインスタンス
次の例は、MS SQL Serverデータベースに接続します:
# SQL Server DB用のJDBCドライバクラスを含むJARファイルを読み込みます
Include "C:\Program Files\Microsoft JDBC Driver 4.0 for SQL Server\sqljdbc_4.0\enu\sqljdbc4.jar"
# データベースに接続します
Run "com.tplan.db.Connect" driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://localhost\SQLEXPRESS;DatabaseName=<dbName>;UserName=<SQLusername>;Password=<SQLpassword>
例3: Oracle DB
次の例は、ローカルマシン上で実行されているデフォルトのOracleデータベース(orcl)に接続し、すべてのテーブル名を照会します:
// Includeコマンドは、JARファイルが次の場所にあることを前提としています:
// このスクリプトと同じフォルダ
Include "tprdb.jar"
Include "ojdbc6.jar"
// ローカルで実行中のOracleにsystemとして接続
Run "com.tplan.db.Connect" driver="oracle.jdbc.driver.OracleDriver" password="oracle12" user="system" url="jdbc:oracle:thin:@//localhost:1521/orcl"
// すべてのテーブル名を取得
Run "com.tplan.db.Execute" statement="select table_name from tabs"
スクリプトが正常に実行されると、変数はExecution Varsテーブルで確認できます: