データベースの値の検証2

Ranorex では、データベースの値を比較する専用の機能は用意しておりませんが、Ranorex が持ついくつかの機能を組み合わせることで、実現することが可能です。

過去に投稿したブログ記事「データベースの値の検証」にてご紹介している方法を利用することで、テスト実行中に更新されたデータベースの値検証なども可能になります。

今回は、こちらの記事でご紹介した「ユーザーコードを使用する方法」に焦点を当て、SQL Server の値の検証方法をご紹介します。サンプルコードでは、Ranorex のデータ駆動型テストの機能を使用して、期待値を用意したデータソースとデータベースのデータを比較します。

※本記事では、Ranorex v10.2.2 を使用しています。

ユーザーコードコレクションの作成

ユーザーコードコレクションに作成したメソッドは、すべてのモジュールで使用できます。

1. Ranorex Studio のツールバーから、「ユーザーコードコレクションの追加」を選択します。

2. 任意のユーザーコードコレクション名を入力し、「作成」ボタンを押します。

3. 追加された「ユーザーコードコレクション名.cs」にて、「using System.Data.SqlClient;」を追加します。

4. 「public class ユーザーコードコレクション名」のクラス内で右クリックし、「新しいメソッドの追加」を選択します。

5. 「メソッド名」に任意の名前を設定します。

6. 追加されたメソッド内で、データベースの接続、データの取得、値の検証などの処理を記述します。
今回は、SQL Server で作成した以下の「Ranorex」データベースの「Product」テーブルのデータを使用します。
※別のデータベースをご利用の場合、コード内容は異なります。

上図のデータベーステーブルの ProductName 列の値と 下図の データソースの expectedValue 列の値を比較します。
※データベーステーブルの ProductId と データソースの id を紐づけます。

以下がサンプルコードになります。今回は、メソッド引数を後に変数化し、データソースと連携します。

public static void DatabaseValidation(string databaseName,string id,string expectedValue)
 {   
     //データベースのサーバー名、データベース名、Windows認証設定の情報
     var builder = new SqlConnectionStringBuilder();
     builder.DataSource = @"サーバー名";
     builder.InitialCatalog = databaseName;
     builder.IntegratedSecurity = true;
     var connectionString = builder.ToString();
     
     //SQLQuery文(ProductテーブルでProductIDが{id}のProductNameを取得する)
     var sql=$"select ProductName from Product where ProductID = {id}";
        	
     using (var connection = new SqlConnection(connectionString))
     using(var command = new SqlCommand(sql,connection))
     {
        connection.Open();
        using(var reader = command.ExecuteReader())
        {
         reader.Read();
         var productName = Convert.ToString(reader["ProductName"]);
            
          //Ranorex のAPIで用意されているValidate機能を使用
      Validate.AreEqual(productName,expectedValue,"データベースの更新値検証:実際の値="+productName+","+"期待値="+expectedValue);
     }
     }
}

このサンプルコードでは、Ranorex API の Validate.AreEqual メソッドを使用しています。こちらは、テスト実行時の値と期待値を比較する機能になります。

詳細につきましては、こちらをご参照ください。API ドキュメントは、Ranorex Studio のメニュー > 「ヘルプ」>「API ドキュメント」からご確認できます。

ユーザーコードアクションの使用

1. 対象のモジュールを開き、上のアクションテーブルで右クリックし、「新しいアクションの追加」 > 「ユーザーコード」 > 「ライブラリから選択」をクリックします。

2. ライブラリから作成したユーザーコードメソッドを選択します。

3. 追加されたユーザーコードアクションを選択し、「databaseName」に接続先のデータベース名を入力します。(今回は、接続先のデータベースは1つのため、固定値で入力します。)

4. 「id」と「expectedValue」は変数化します。

  • ▼をクリックし、「As new variable」を選択します。
  • 任意の変数名を入力します。

変数化後は、先頭に$が付き、緑の文字列になります。

データソースと変数の連携

ユーザーコードアクションの使用-手順4で作成した変数とデータソースを連携します。

変数とデータソースの連携についての詳細は、以下のユーザーガイドをご参照ください。

テスト実行と結果の確認

1. テストスイート画面から「RUN」ボタンをクリックし、テスト実行します。

2. レポート結果を確認します。

データ駆動型テストにて、3行分のデータが検証されたため、テストケースが3回実行されています。

まとめ

今回のようなユーザーコードを記述することで、データベースの値検証がおこなえます。今回のサンプルコードは、Ranorex の Validation (検証)とデータ駆動型テストの機能を使用した検証になります。そのため、テスト結果がテストケースごとの出力になりましたが、データソースの取り込みや反復処理などの複雑なコードを記述することで、1つのテストケースですべての行と列の値を検証することも可能になります。