テスト自動化ツールである、UFT(Unified Functional Testing)
今回は Databaseの制御について、まとめたいと思います。
UFTのメソッドでは直接データベースを制御する機能は実装されていません。
そのため、制御についてはVBScriptを用いて実現します。
ADODBのプロパティ・メソッド
UFTでデータベースを操作するには、[ ADODBオブジェクト ]を使います。
ADODBにはデータベースを制御できるプロパティ、メソッドが4つあります。
ADODB.Connection データベースへ接続するために使います
ADODB.Command QueryなどSQLコマンドの実行に使います
ADODB.Fields Query実行後に、取得したテーブルから特定のカラム(列)を取得するために使います
ADODB.Recordset データベースからデータを取得するために使います
CreateObject関数を使い以下のようにオブジェクトを取得します。
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
取得できるオブジェクトについては、ボリュームが大きいので、別記事にて記述をしようかと思います。
データベースへの接続方法
データベースへの接続は、各データベースによって接続方法が異なります。
詳細情報については、こちらを参考にしてください
https://www.connectionstrings.com/
データベースやその他のVBScriptの使い方については、下記のサイトを参考してみてください
http://excel.style-mods.net/tips_vbs/index.htm
Oracleへの接続&データ取得
OracleDatabaseへの接続・Query実行・データ取得について、サンプルコードを用いて解説します。
前提条件として、データベースがPCにインストールされ、適切に設定されていることが必要です。
'!注意! あくまでサンプルコードです。コードミスや動かない場合があります。ご承知おきください。
Dim adoDB
Set adoDB = Createobject("ADODB.Connection")
' DB接続情報をセット
adoDB.ConnectionString = "DSN=DSN1;UID=user1;PWD=password1;"
' 接続をオープン
adoDB.Open
' ログインユーザーのテーブル一覧を取得するSQL文
Dim adoRS
adoRS = CreateObject("ADODB.Recordset")
' SQL処理
adoRS.Open "SELECT * FROM USER_TABLES ORDER BY TABLE_NAME"
' レコードセットが終端になるまでrows分繰り返す
Dim recodeSet
Set recodeSet = CreateObject("system.collections.ArrayList") '動的配列の準備
'結果が0件の場合の処理
If Not adoRS.EOF Then
Do
Dim dicRow
Set dicRow = CreateObject("Scripting.Dictionary")
Dim iFieldIdx
For iFieldIdx = 0 To adoRS.Fields.Count-1
dicRow.Add adoRS.Fields.Item(iFieldIdx).Name, adoRS.Fields.Item(iFieldIdx).Value
Next
recodeSet.add dicRow
adoRS.MoveNext
Loop While adoRS.EOF = False
End If
' レコードセットと接続をCloseする
adoRS.Close
adoDB.Close
おわりに
これでSQLを実行し、値を取得することができました。
実際にUFTで使う場合は、サンプルコードのような処理を関数化させて、
実行結果を変数に格納したりと少々工夫が必要となってきます。
その他にも接続先のDatabaseの種類や実装したいこと次第では、さらに工夫、アレンジをする必要があります。
弊社ベリサーブでは、UFTについてのノウハウを有しております。
実際にUFTを用いた自動化が上手くいっていない・もっとよくしたいなどありましたら、ご相談いただけたらと思います。
株式会社ベリサーブ -ホームページ-
参考・参照
・The Connection Strings Reference
https://www.connectionstrings.com/
・Excel VBA Workshop
http://excel.style-mods.net/tips_vbs/index.htm
・QTP Tutorial
https://www.tutorialspoint.com/qtp/qtp_accessing_databases.htm