データベースの値の検証

結合テストやシナリオテスト、あるいはリグレッションテストの一環として、特定の操作の前と後でデータベースにアクセスし、テーブルの中身あるいはクエリの出力結果を比較するような検証が必要な場面があります。

Ranorex を使用する場合、残念ながらデータベースの値を比較する専用の機能はないものの、Ranorex が持ついくつかの機能を組み合わせることで、このような検証を実現することが可能です。今回は、テストシナリオの中でデータベースにアクセスし、テーブルの内容をチェックする方法を以下2種類ご紹介いたします。

  1. ユーザーコードを使用する方法
  2. テーブルの内容をCSVファイルで比較する方法

ユーザーコードを使用する方法

C#またはVB.Netでコーディングをすることによって、データベースへのアクセス~値の検証までを Ranorex で実行する方法です。ユーザーコードを使用することで、コードがRanorexのソリューション内で管理できる他、アクションテーブル上からメソッドを呼び出したり、メソッドの引数をRanorexのレコーダー変数で渡すなどの柔軟な使い方ができます。

ユーザーコードの概要は以下Blog記事をご参照ください。

なお、データベースの値検証のコードサンプル(英語)は以下ユーザーガイドで公開されておりますので、こちらを参考に実装がおこなえます。

実装さえできれば、メソッドを呼び出すだけでテスト実行時に一連の動作を自動でおこなってくれるため、プログラミングスキルのある方はこちらの方法が便利です。

一方で、このコードサンプルはOLE DBを使用して接続やクエリ実行をおこなう例となっており、OleDbConnectionでの接続文字列の生成を、使用するデータベースの種類や環境に合わせて自身で記述する必要があります。また実行するSQLステートメント、検証時の期待結果などはメソッドの引数として渡すため、こちらも別途記述する必要があります。このあたりのコード修正のハードルが高い、あるいはプログラミングに自信がないという方は、次のCSVファイルを使用する方法をご検討ください。

テーブルの内容をCSVファイルで比較する方法

こちらの方法では、データベースへのアクセス、SQL実行、結果のCSV出力まではRanorexではなく、DBMS側のコマンドラインを使用して実施します。Ranorex側では、これらの処理を起動する部分と、出力されたCSVファイルの比較のみをおこなう形となります。

前半のデータベースアクセス~CSV出力までをコマンド化する部分は各自で作成する必要があるものの、すべてユーザーコードで実装する場合と比較してデータベース接続方式の指定がなく、普段から使い慣れている方法で対応することができます。また、Ranorex内でコードを記述する必要はありません。

【手順】

1. 利用しているデータベースにあわせて、データベースへのアクセス、SQL実行、実行結果のCSV出力までの処理を.cmdや.batファイルなど、単体で起動できるファイルとして作成してください。作成した.cmdや.batは手動で起動して、想定どおりCSVファイルが生成されることを確認してください。

2. Ranorex Studioで対象のソリューションを開き、CSVファイル比較のためにオートメーションヘルパーを追加します。オートメーションヘルパー追加の手順はこちらをご参照ください。

3. レコーディングモジュールを開き、手順1で作成したファイルを起動するアクションを作成します。
[新しいアクションの追加] – [アプリケーションの起動(Run application)]をクリックするとアクションが追加されます。3列目:File nameに、起動したいファイルのパスを指定してください。

※File nameに指定するパスは、絶対パスまたは相対パスが使用可能です。相対パスの場合、フォルダの起点は以下となります。
<ソリューション名>/<プロジェクト名>/bin/Debug

4. コマンドでのCSV出力に時間がかかる場合は、待機時間を設定してください。[新しいアクションの追加] – [ディレイ(Delay)]にて、指定した時間待機をおこなうことができます。3列目で待機時間を設定できます。以下の例は30秒(30s)待機します。


5. CSVファイル比較の操作を追加します。[新しいアクションの追加] – [ユーザーコード(User code)] – [ライブラリから選択]をクリックします。表示された画面で、[ValidateFilesTextEqual(String filePath1, String filePath2)]を選択し、画面右下の[選択項目を追加]をクリックしてください。


6. User codeアクションがアクションテーブルに追加されます。アクションの4列目:filePath1と5列目:filePath2で指定した2つのファイルを比較しますので、filePath1に期待結果としたいCSVファイルのパスを設定し、filePath2には手順1で作成したファイルで出力されるCSVファイルの出力先パスを設定してください。filePath1とfilePath2に指定する内容は逆でも問題ありません。


7. 内容を保存し、テストを実行して、想定の操作となるか確認してください。

まとめ

以上の内容で、Ranorexのシナリオの中でデータベースにアクセスし、内容の検証が実施できます。テーブルの内容をCSVファイルで比較する方法では、データベースの値検証の部分のみを紹介していますが、期待結果とするCSVファイルについても、手順1~3と同じ方法で取得がおこなえます。これを活用して、テストケースの最初に期待結果のCSVファイル生成を実行しておき、画面操作を行った後にこの検証を実行するというような構成を作ることもできます。

また、今回オートメーションヘルパーで使用した ValidateFilesTextEqual(String filePath1, String filePath2) は、テキスト形式のファイル比較のメソッドとなります。CSVファイルだけでなく、ログファイルの検証などにも使用可能です。

データベース接続やSQL実行の部分の処理が課題になってくるかと思いますが、テストシナリオによっては、出番の多いメソッドあるいはモジュールになるはずです。ぜひお試しください。