Seleniumデータベーステスト(WebDriverとJDBC APIを使用)

前回のSeleniumチュートリアルでは、seleniumスクリプトで発生するいくつかの問題をトラブルシューティングする方法を学びました。 リストを実装することによって複数のリンクにアクセスし、マウスとキーボードのイベントを扱ういくつかの事前の概念を議論しました。

Seleniumトレーニングシリーズの高度なトピックを進めて、Selenium WebDriverを使用したデータベーステストの概念を紹介します。

データベース接続、クエリの実行、データのフェッチ、データベースインスタンスの切断などの基本的なプロセスについて説明します。 また、完全なエンドツーエンドのシナリオをテストするために、データベーステストと自動化テストが必要なさまざまな実用的な含意についても

自動化されたデータベーステストに関連する技術的な影響を進める前に、Selenium

を使用したDBテスト。 自動化テストと一緒にデータベーステストを実行する必要があるいくつかのシナリオについて説明しましょう。 しかし、その前に、私はここで、データベーステストは非常に独特のタイプのテストであるのに対し、Selenium WebDriverはアプリケーションUIとのユーザー操作をシミュレートし、自動化するために使用されるツールであることを確認したいと思います。

したがって、技術的に言えば、データベーステストを正確に実行するのではなく、データベースと組み合わせてアプリケーションをテストして、変更が両端に反映され、欠陥を早期に特定するようにしています。

絶対にすべてのwebアプリケーションは、データを格納するためにバックエンドが必要です。 MySQL、Oracle、およびSQL Serverのようなデータベースは、これらの日は合理的に人気があります。

さて、元のトピックに戻って、自動化テストと一緒にデータベーステストの需要を例示するためのいくつかのシナリオについて議論しましょう。

次のシナリオを考えてみましょう

#1)UIから入力されたデータがデータベースに一貫して反映されていることを確認する必要がある場合があります。 したがって、データベースから情報を取得し、取得した情報をUIから提供された情報と照合します。 たとえば、登録フォーム、ユーザーデータ、ユーザープロファイル、ユーザーデータの更新および削除などです。 したがって、自動化するテストシナリオは、”ユーザーがアプリケーションに登録するとすぐにユーザーの情報がデータベースに正常に保存されたことを確認する”

#2)Selenium WebDriverを使用してデータベーステストを実行する別のユースケースは、ユーザーがデータベースからテストデータまたは期待されるデータをロードするように指示された したがって、このような場合、ユーザーはサードパーティのAPIを使用してデータベースと接続し、クエリを実行してdatasetからデータを取得し、データベースからフェッチされたデータをアプリケーションUIに設定された実際のデータでアサートします。

#3)別のユースケースは、連想データベーステストを実行することです。 アプリケーションのUIで操作を実行し、データベース内のリフレクションをテストすると仮定します。 関連付けのために、影響を受けるデータがデータベースのさまざまなテーブルに存在する場合があります。 したがって、影響を受けるすべての領域でデータの反射をテストすることを常にお勧めします。

Seleniumは、私が言ったように、テスト対象のアプリケーションとのユーザーの対話をシミュレートします。 それはキーボードのでき事、マウスの行為等を模倣できます。 しかし、ユーザーがブラウザとwebアプリケーションの相互作用の近くで何かを自動化することを望むなら、seleniumはあまり役に立ちません。 したがって、エンドツーエンドのテストを実行するには、他のツールや機能が必要です。

したがって、上記のすべてのシナリオでは、UI自動化とともにデータベーステストを実行する必要があるかもしれません。 当社は、データを操作し、その反映を検証することにより、ビジネスロジックを確認することがあります。 また、ソフト削除、フィールド検証などのデータベース自体の技術的側面を確認することもできます。

ここで、実際の実装を進めてみましょう。 データソースからデータを抽出するためのSelenium WebDriverスクリプトを開発する前に、データベースにテストデータを作成しましょう。 このチュートリアルでは、MySQLをデータベースとして使用します。

データベース内のテストデータの作成

まだデータベースをダウンロードしていない場合は、リンクを使用してダウンロードしてください。 ユーザーは、データベースをダウンロードしてインストールするためのいくつかの基本的な手順に従うことが期待されています。

=>> MySQLデータベースをダウンロードしてインストールするには、このチュートリアルを読んでください。

データベースが正常にインストールされると、ユーザーは次のスクリーンショットのようなMySQLコマンドラインプロンプトを起動できます。 アプリケーションは、ユーザーにパスワードの入力を求める場合があります。 デフォルトのパスワードは”root”です。

セレンを使用したDBテスト1

注:ユーザーはまたデータベースと接続するためにインターネット上のGUIによって基づく顧客を見つけることができます。 いくつかの例を挙げると、ユーザーはクエリブラウザまたはワークベンチをダウンロードしてインストールできます。

新しいデータベースの作成

次のステップは、データベースとの接続を行い、クエリを実行するために、それらのテーブルに格納されているいくつかのテーブル

ステップ1)”show databases”と入力して、すでに利用可能なすべてのデータベースを表示します

データベースを表示します;

Seleniumを使用したDBテスト2

ステップ2)「create database user;」と入力して、「user」という名前のデータベースを作成します。

データベースユーザーの作成;

Seleniumを使用したDBテスト3

ユーザーとしてのデータベース名が作成され、データベースのリストに表示されることに注意してください。

ステップ3)”use user;”と入力して、新しく作成したデータベースを選択します。 また、ユーザーデータベースで使用可能なすべてのテーブルを表示するには、”show tables;”と入力します。

ユーザーを使用します。
テーブルを表示します;

Seleniumを使用したDBテスト4

ユーザーデータベース内に使用可能なテーブルがなかったため、空のセットが”show tables;”クエリの結果に表示されることに注意してください。

ここでいくつかのテーブルを見て、それらにレコードを追加しましょう。

ステップ4)次のコマンドを入力して、4つのフィールド/列(userId、userName、userAge、userAddress)を持つテーブルを作成します。

テーブルを作成しますuserinfo
(
userId int,
userName varchar(255),
userAge int,
userAddress varchar(255)
);

Seleniumを使用したDBテスト5

次のステップは、”userinfo”テーブルにいくつかのデータレコードを追加することです。

ステップ5)次のコマンドを入力して、4つのフィールドすべての4つのフィールド/列(userId、userName、userAge、userAddress)のテーブルにデータを挿入します。

insert into userinfo(userID,userName,userAge,userAddress)values(‘1′,’shruti’,’25’,’Noida’);

追加されたデータを表示するには、次のコマンドを入力します。

select*from userinfo;

Seleniumを使用したDBテスト6

同様に、テーブルにデータを追加したり、他のテーブルを作成したりすることもできます。

さて、データベースを作成しました。 先に進み、データベースからレコードを取得する自動化されたクエリの実装を理解することができます。

先にも繰り返したように、Selenium WebDriverはUI自動化のためのツールです。 したがって、Selenium WebDriverだけではデータベーステストを実行できませんが、これはJava Database Connectivity API(JDBC)を使用して行うことができます。 このAPIを使用すると、ユーザーはデータソースに接続して対話し、自動化されたクエリの助けを借りてデータをフェッチすることができます。 JDBC APIを利用できるようにするには、システム上でJava仮想マシン(JVM)が実行されている必要があります。

Seleniumを使用したDBテスト7

私達は私達の焦点を次のプロセスと一直線に並べておきます:

  1. データベースとの接続の作成
  2. データの抽出/フェッチ(CRUD操作)
  3. 結果セットの形式でデータベースから抽出されたデータを使用して操作するためのクエリとupdate文 (結果セットは、行と列で編成されたデータの集合です)
  4. データベース接続を切断します。前述したように、Selenium WebDriverテストスクリプトからデータベースを自動的にテストできるようにするには、テストスクリプト内のJDBC接続を介してデータベースに接 接続にPostを実行すると、データベースに対して多くのCRUD(作成、読み取り、更新、および削除)操作をトリガーできます。

    このチュートリアルでは、”読み取り操作とその変種”と、Selenium WebDriverスクリプトでの実装について説明します。 しかし、その前に、”MySQLコマンドライン”を使用して手動でテストシナリオを確認しましょう。

    :

    1)データベースサーバーを開き、”user”データベースに接続します。

    2)”userinfo”テーブルのすべてのレコードを一覧表示します。

    構文:select*from userinfo;

    Seleniumを使用したDBテスト8

    3) データベース接続を閉じます。

    readクエリは、userinfoテーブルに存在するすべてのユーザーデータを一覧表示することに注意してください。 表は、次の列で構成されています。

    • userId
    • username
    • userAge
    • userAddress

    この結果は、テーブル内に単一のデータセットしか存在しないことも示しています。

    さて、Javaクラスを使用して同じシナリオを実行しましょう。

    データベースにアクセスできるように、ユーザーはデータベースに接続するために利用可能な多様なコネクタオプションの中から選択することができます。 ほとんどのデータベースコネクタは、”jar”ファイルとして自由に配布されます。 MySQLをデータソースとして使用しているため、MySQL固有のjarファイルをダウンロードする必要があります。

    jarファイルは、hereまたはhereからダウンロードできます。ステップ1:最初のステップは、プロジェクトのビルドパスを設定し、”mysql-connector-java-3.1.13-bin”を追加することです。外部ライブラリとしてのjar”ファイル。ステップ2:”DatabaseTesingDemo”という名前のjavaクラスを作成します。

    ステップ3:上記のステップで作成したクラスに以下のコードをコピーして貼り付けます。

    コードサンプル

    import org.junit.After;import org.junit.Before;import org.junit.Test;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;public class DatabaseTesingDemo { // Connection object static Connection con = null; // Statement object private static Statement stmt; // Constant for Database URL public static String DB_URL = "jdbc:mysql://localhost:3306/user"; // Constant for Database Username public static String DB_USER = "root"; // Constant for Database Password public static String DB_PASSWORD = "root"; @Before public void setUp() throws Exception { try{ // Make the database connection String dbClass = "com.mysql.jdbc.Driver"; Class.forName(dbClass).newInstance(); // Get connection to DB Connection con = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD); // Statement object to send the SQL statement to the Database stmt = con.createStatement(); } catch (Exception e) { e.printStackTrace(); } } @Test public void test() { try{ String query = "select * from userinfo"; // Get the contents of userinfo table from DB ResultSet res = stmt.executeQuery(query); // Print the result untill all the records are printed // res.next() returns true if there is any next record else returns false while (res.next()) { System.out.print(res.getString(1)); System.out.print("\t" + res.getString(2)); System.out.print("\t" + res.getString(3)); System.out.println("\t" + res.getString(4)); } } catch(Exception e) { e.printStackTrace(); } } @After public void tearDown() throws Exception { // Close DB connection if (con != null) { con.close(); } }}

    上記のコードの出力は次のとおりです:

    1shruti25Noida
    2shrivastava55ムンバイ

    読み取りステートメントバリアント

    単一条件を持つWhere句

    String query=”select*from userinfo where userId='” + 1 + “‘”;
    ResultSet res=stmt.executeQuery(query);

    出力:
    1shruti25Noida

    複数の条件を持つWhere句

    String Address=”Mumbai”;
    String query=”select*from userinfo where userId='”+2+”‘and userAddress='”+Address+”‘”;
    ResultSet res=stmt.executeQuery(query);

    出力:
    2shrivastava55Mumbai

    Display userId

    String query=”select userId from userinfo”;
    ResultSet res=stmt.executeQuery(query);

    出力:
    1
    2

    where句でuserIdを表示

    String Address=”Noida”;
    String query=”select userId,userName from userinfo where userAddress='”+Address+”‘”;
    ResultSet res=stmt.executeQuery(query);

    出力:
    2
    shrivastava

    したがって、同じようにユーザーはデータベース上でさまざまなクエリを実行できます。

    これで、結果のアクセシビリティ方法についてもいくつか光を当てましょう。

    :

    メソッド名 説明
    String getString() メソッドは、結果セットから文字列型のデータを取得するために使用されます
    int getInt() メソッドは、結果セットから整数型のデータを取得するために使用されます
    boolean getBoolean() メソッドは、結果セットからブール値を取得するために使用されます
    float getFloat() メソッドは、結果セットからfloat型のデータを取得するために使用されます
    ロング getLong() メソッドは、結果セットからlong型のデータを取得するために使用されます
    short getShort() メソッドは、結果セットからshort型のデータを取得するために使用されます
    double getDouble() メソッドは、結果セットからdouble型のデータを取得するために使用されます
    日付getDate() メソッドは、結果セットから日付型オブジェクトを取得するために使用されます

    結果ナビゲーション方法:

    メソッド名 説明
    boolean next() メソッドは、結果セット内の次のレコードに移動するために使用されます
    boolean previous() メソッドは、結果セット内の前のレコードに移動するために使用されます
    boolean first() メソッドは、結果セットの最初のレコードに移動するために使用されます
    boolean last() メソッドは、結果セットの最後のレコードに移動するために使用されます
    ブール値
    absolute(int rowNumber)
    メソッドは、結果セット内の特定のレコードに移動するために使用されます

    結論

    このチュートリアルでは、自動化されたデータベーステストの概念を理解しようとしました。 私たちは、データベーステストの技術的な意味とニーズに明確に重点を置いていました。

    私たちのシリーズ全体がSeleniumに焦点を当てていたので、読者は誤解され、このチュートリアルではSeleniumを使用してデータベーステストを実行するように教 そこで、Selenium WebDriverスクリプト内にコードを埋め込むことによってデータベーステストを実行するために、Java Database Connectivity(JDBC)APIを導入しました。

    JDBCを使用すると、javaクラスがデータベースに接続したり、データベースからデータを取得したり、実際にCRUD操作を実行したり、結果のデータを操作したり、接続を閉

    したがって、チュートリアルは上記のプロセスの基本的なサンプル実装を構成します。

    次のチュートリアル#29:高度なSeleniumトピックを進めます。 マルチブラウザテストを実行する必要があり、多数のテストケースがある場合に使用されるSelenium GRIDについて説明します。

    最終更新日:2021年11月29日

Leave a Reply

メールアドレスが公開されることはありません。