0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【UFT】ユーティリティまとめ ~データベース(Database)の制御~ - SQL/Query/Oracle -

Last updated at Posted at 2020-08-06

テスト自動化ツールである、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にインストールされ、適切に設定されていることが必要です。

Oracle
'!注意! あくまでサンプルコードです。コードミスや動かない場合があります。ご承知おきください。

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?