selenium database testing using webdriver
前回のSeleniumチュートリアルでは、次の方法を学びました。 セレンスクリプトで繰り返し発生する問題のトラブルシューティング 。リストを実装して複数のリンクにアクセスし、マウスとキーボードのイベントを処理するいくつかの高度な概念について説明しました。
私たちを前進させる Seleniumトレーニングシリーズの高度なトピック 、のコンセプトをご紹介します SeleniumWebDriverを使用したデータベーステスト。
データベース接続、クエリの実行、データのフェッチ、データベースインスタンスの切断などの基本的なプロセスについて説明します。また、データベースのテストと自動化テストが必要な場合のさまざまな実際的な影響についても説明します。 完全なエンドツーエンドのシナリオ。
自動データベーステストに関連する技術的な影響に進む前に。自動化テストとともにデータベーステストを実行する必要があるいくつかのシナリオについて説明します。ただし、その前に、データベーステストは非常に特殊なタイプのテストであるのに対し、SeleniumWebDriverはユーザーによるアプリケーションUIの操作をシミュレートおよび自動化するために使用されるツールであることをここで確認したいと思います。
したがって、技術的に言えば、データベーステストを正確に実行しているのではなく、データベースと組み合わせてアプリケーションをテストし、変更が両端に反映されていることを確認して、欠陥を早期に特定しています。
絶対にすべてのWebアプリケーションには、データを保存するためのバックエンドが必要です。最近では、MySQL、Oracle、SQLServerなどのデータベースがかなり人気があります。
ここで元のトピックに戻り、自動化テストとともにデータベーステストの需要を例示するためのいくつかのシナリオについて説明します。
学習内容:
次のシナリオを検討してください
#1) UIから入力されたデータがデータベースに一貫して反映されていることを確認する必要がある場合があります。したがって、データベースから情報を取得し、取得した情報をUIから提供された情報と照合します。たとえば、登録フォーム、ユーザーデータ、ユーザープロファイル、ユーザーデータの更新と削除。したがって、自動化するテストシナリオは、「ユーザーがアプリケーションに登録するとすぐに、ユーザーの情報がデータベースに正常に保存されていることを確認する」というものになります。
#二) Selenium WebDriverを使用してデータベーステストを実行する別のユースケースは、ユーザーがデータベースからテストデータまたは期待されるデータをロードするように指示された場合に発生する可能性があります。したがって、このような場合、ユーザーはサードパーティのAPIを使用してデータベースに接続し、クエリを実行してデータセットからデータを取得し、データベースからフェッチしたデータを、アプリケーションUIに入力された実際のデータでアサートします。 。
#3) 別のユースケースは、連想データベーステストを実行することです。アプリケーションのUIで操作を実行し、データベースでの反映をテストするとします。関連付けにより、影響を受けるデータがデータベースのさまざまなテーブルに存在する場合があります。したがって、影響を受けるすべての領域でデータの反映をテストすることを常にお勧めします。
私が言ったように、Seleniumは、テスト対象のアプリケーションとのユーザーの対話をシミュレートします。キーボードイベントやマウスアクションなどをシミュレートできます。ただし、ユーザーがブラウザの近く以外でWebアプリケーションの操作を自動化することを望む場合、セレンはあまり役に立ちません。したがって、エンドツーエンドのテストを実行するには、他のツールまたは機能が必要です。
したがって、上記のすべてのシナリオで、UIオートメーションとともにデータベーステストを実行する必要がある場合があります。データを操作し、その反映を検証することにより、ビジネスロジックをチェックする場合があります。また、ソフト削除、フィールド検証など、データベース自体の技術的側面を確認する場合もあります。
それでは、実際の実装を進めましょう。データソースからデータを抽出するSeleniumWebDriverスクリプトを開発する前に、データベースにテストデータを作成しましょう。このチュートリアルでは、MySQLをデータベースとして使用します。
データベースでのテストデータの作成
データベースをまだダウンロードしていない場合は、 リンク 。ユーザーは、データベースをダウンロードしてインストールするために、いくつかの基本的な手順に従う必要があります。
= >>このチュートリアルを読んで MySQLデータベースをダウンロードしてインストールします 。
データベースが正常にインストールされると、ユーザーは次のスクリーンショットのようなMySQLコマンドラインプロンプトを起動できます。アプリケーションは、ユーザーにパスワードの入力を求める場合があります。デフォルトのパスワードは「root」です。
注意 :ユーザーは、データベースに接続するためにインターネット経由でGUIベースのクライアントを見つけることもできます。いくつか例を挙げると、ユーザーはクエリブラウザまたはワークベンチをダウンロードしてインストールできます。
新しいデータベースの作成
次のステップは、データベースとの接続を確立してクエリを実行するために、いくつかのテーブルとそれらのテーブルに格納されたレコードを使用してテストデータベースを作成することです。
ステップ1) 「showdatabases」と入力して、すでに利用可能なすべてのデータベースを表示します
Webアプリケーションのサンプルテストケース
データベースを表示します。
ステップ2) 「データベースユーザーの作成」と入力します。 「user」という名前のデータベースを作成します。
データベースユーザーを作成します。
ユーザーとしてのデータベース名が作成され、データベースのリストに表示されることに注意してください。
ステップ3) 「useuser;」と入力します。新しく作成されたデータベースを選択します。また、「showtables;」と入力します。ユーザーデータベースで使用可能なすべてのテーブルを表示します。
ユーザーを使用します。
テーブルを表示します。
「テーブルの表示」の結果に空のセットが表示されることに注意してください。ユーザーデータベース内に使用可能なテーブルがなかったため、クエリを実行します。
ここで、いくつかのテーブルを作成し、それらにレコードを追加しましょう。
ステップ4) 次のコマンドを入力して、4つのフィールド/列(userId、userName、userAge、userAddress)を持つテーブルを作成します。
テーブルuserinfoを作成します
((
userId int、
userName varchar(255)、
userAge int、
userAddress varchar(255)
);
次のステップは、「userinfo」テーブルにいくつかのデータレコードを追加することです。
ステップ5) 次のコマンドを入力して、4つのフィールド4フィールド/列(userId、userName、userAge、userAddress)すべてのテーブルにデータを挿入します。
userinfo(userID、userName、userAge、userAddress)に値(「1」、「shruti」、「25」、「Noida」)を挿入します。
追加されたデータを表示するには、次のコマンドを入力します。
select * from userinfo;
同様に、テーブルにデータを追加したり、他のテーブルを作成したりすることもできます。
これで、データベースが作成されました。私たちは先に進み、理解することができます データベースからレコードをフェッチするための自動クエリの実装。
以前にも繰り返しましたが、SeleniumWebDriverはUIオートメーション用のツールです。したがって、Selenium WebDriverだけではデータベースのテストを実行できませんが、これはJava Database Connectivity API(JDBC)を使用して実行できます。 APIを使用すると、ユーザーはデータソースに接続して操作し、自動クエリを使用してデータをフェッチできます。 JDBC APIを利用できるようにするには、システムでJava仮想マシン(JVM)を実行する必要があります。
JDBCワークフロー
私たちは、次のプロセスに焦点を合わせ続けます。
- データベースとの接続を作成する
- データを抽出/フェッチするためのクエリと更新ステートメントの実行(CRUD操作)
- 結果セットの形式でデータベースから抽出されたデータを使用および操作します。 (結果セットは、行と列に編成されたデータのコレクションです)
- データベース接続を切断します。
前述のように、Selenium WebDriverテストスクリプトからデータベースを自動的にテストできるようにするには、テストスクリプト内のJDBC接続を介してデータベースに接続します。接続に投稿すると、データベースでCRUD(作成、読み取り、更新、削除)操作をいくつでもトリガーできます。
このチュートリアルでは、「読み取り操作とそのバリアント」と、SeleniumWebDriverスクリプトでの実装について説明します。ただし、その前に、「MySQLコマンドライン」を使用して手動でテストシナリオを確認しましょう。
シナリオ:
経験豊富なmssqlサーバーインタビューの質問と回答
1) データベースサーバーを開き、「ユーザー」データベースに接続します。
二) 「userinfo」テーブルからすべてのレコードをリストします。
構文: select * from userinfo;
3) データベース接続を閉じます。
読み取りクエリは、userinfoテーブルに存在するすべてのユーザーデータを一覧表示することに注意してください。このテーブルは、次の列で構成されています。
- ユーザーID
- ユーザー名
- userAge
- userAddress
この結果は、テーブル内に存在するデータセットが1つしかないことも示しています。
ここで、Javaクラスを使用して同じシナリオを実行してみましょう。
データベースにアクセスできるようにするために、ユーザーはデータベースとの接続に使用できるさまざまなコネクタオプションの中から選択することができます。ほとんどのデータベースコネクタは、「jar」ファイルとして自由に配布されます。 MySQLをデータソースとして使用しているため、MySQLに固有のjarファイルをダウンロードする必要があります。
jarファイルは次の場所からダウンロードできます。 ここに または ここに。
ステップ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(' ' + res.getString(2)); System.out.print(' ' + res.getString(3)); System.out.println(' ' + res.getString(4)); } } catch(Exception e) { e.printStackTrace(); } } @After public void tearDown() throws Exception { // Close DB connection if (con != null) { con.close(); } } }
上記のコードの出力は次のとおりです。
1シュルティ25ノイダ
2 shrivastava55ムンバイ
ステートメントバリアントを読む
単一条件のWHERE句
String query =“ select * from userinfo where userId = '” + 1 +“‘”;
ResultSet res = stmt.executeQuery(query);
出力:
1シュルティ25ノイダ
複数の条件を持つWhere句
文字列アドレス=”ムンバイ”;
String query =“ select * from userinfo where userId = '” + 2 +“‘ and userAddress = '” + Address +”‘”;
ResultSet res = stmt.executeQuery(query);
出力:
2 shrivastava55ムンバイ
userIdを表示する
String query =“ userinfoからuserIdを選択”;
ResultSet res = stmt.executeQuery(query);
出力:
1
二
where句を使用してuserIdを表示する
Javaで配列を逆にする方法
文字列アドレス=” Noida”;
String query =“ select userId、userName from userinfo where userAddress = '” + Address +”‘”;
ResultSet res = stmt.executeQuery(query);
出力:
二
shrivastava
したがって、同じ方法で、ユーザーはデータベースに対してさまざまなクエリを実行できます。
これで、結果のアクセシビリティ方法にも光を当てましょう。
結果のアクセシビリティ方法:
メソッド名 | 説明 |
---|---|
double getDouble() | メソッドは、結果セットからdouble型データをフェッチするために使用されます |
文字列getString() | メソッドは、結果セットから文字列型データをフェッチするために使用されます |
int getInt() | メソッドは、結果セットから整数型データをフェッチするために使用されます |
ブールgetBoolean() | メソッドは、結果セットからブール値をフェッチするために使用されます |
float getFloat() | メソッドは、結果セットからfloat型データをフェッチするために使用されます |
long getLong() | メソッドは、結果セットからlong型データをフェッチするために使用されます |
短いgetShort() | メソッドは、結果セットから短い型のデータをフェッチするために使用されます |
日付getDate() | メソッドは、結果セットからDate型オブジェクトをフェッチするために使用されます |
結果のナビゲーション方法:
メソッド名 | 説明 |
---|---|
boolean next() | メソッドは、結果セットの次のレコードに移動するために使用されます |
ブール値previous() | メソッドは、結果セットの前のレコードに移動するために使用されます |
ブール値first() | メソッドは、結果セットの最初のレコードに移動するために使用されます |
ブールlast() | メソッドは、結果セットの最後のレコードに移動するために使用されます |
ブール値 絶対(int行番号) | メソッドは、結果セット内の特定のレコードに移動するために使用されます |
結論
このチュートリアルを通じて、私たちはあなたにの概念を知ってもらうことを試みました 自動データベーステスト 。データベーステストの技術的な意味とニーズに明確に重点を置きました。
シリーズ全体がSeleniumに焦点を当てているため、読者が誤解され、このチュートリアルでSeleniumを使用してデータベーステストを実行する方法を教えてくれるような印象を与える可能性がありますが、前述したように、UIテストの周辺にあるものはすべて、Seleniumでは処理できません。そのため、Selenium WebDriverスクリプト内にコードを埋め込んでデータベーステストを実行するために、Java Database Connectivity(JDBC)APIを導入します。
JDBCを使用すると、javaクラスがデータベースに接続したり、データベースからデータを取得したり、実際にはCRUD操作を実行したり、結果のデータを操作したり、接続を閉じたりすることができます。
したがって、チュートリアルは、上記のプロセスの基本的なサンプル実装を構成します。
次のチュートリアル#29 :Seleniumの高度なトピックを進めます。次のチュートリアルでは、Selenium GRIDについて説明します。これは、マルチブラウザーテストを実行する必要があり、テストケースが多数ある場合に使用されます。