selenium database testing using webdriver
Dans notre dernier tutoriel sur Selenium, nous avons appris à résoudre certains problèmes récurrents dans les scripts sélénium . Nous avons discuté de certains concepts avancés dans lesquels nous traiterions des événements de souris et de clavier, en accédant à plusieurs liens en implémentant des listes.
Aller de l'avant avec notre sujets avancés de la série de formations Selenium , nous vous présenterons le concept de Test de base de données à l'aide de Selenium WebDriver.
Nous discuterions des processus de base tels que la connexion à la base de données, l'exécution de requêtes, la récupération de données et la déconnexion des instances de base de données, etc. Nous discuterions également de diverses implications pratiques où nous avons besoin de tests de base de données avec des tests d'automatisation afin de tester le des scénarios complets de bout en bout.
Avant d'aller de l'avant avec les implications techniques associées aux tests de bases de données automatisées. Laissez-nous discuter de quelques scénarios où nous avons besoin d'effectuer des tests de base de données avec les tests d'automatisation. Mais avant cela, je voudrais affirmer ici que le test de base de données est un type de test très particulier alors que Selenium WebDriver est un outil utilisé pour simuler et automatiser les interactions des utilisateurs avec l'interface utilisateur de l'application.
Donc, techniquement, nous n'effectuons pas précisément des tests de base de données, mais nous testons notre application en conjonction avec Database afin de nous assurer que les changements sont reflétés aux deux extrémités, identifiant ainsi les défauts tôt.
Absolument toutes les applications Web ont besoin d'un backend pour stocker les données. Les bases de données comme MySQL, Oracle et SQL Server sont relativement populaires de nos jours.
Revenant maintenant au sujet d'origine, discutons de quelques scénarios pour illustrer la demande de tests de bases de données avec les tests d'automatisation.
Ce que vous apprendrez:
- Considérez les scénarios suivants
- Création de données de test dans la base de données
- Création d'une nouvelle base de données
- Conclusion
- lecture recommandée
Considérez les scénarios suivants
#1) Parfois, nous devons nous assurer que les données saisies à partir de l'interface utilisateur sont systématiquement reflétées dans la base de données. Ainsi, nous récupérons les informations de la base de données et vérifions les informations récupérées par rapport aux informations fournies par l'interface utilisateur. Par exemple, les formulaires d'inscription, les données utilisateur, les profils utilisateur, les mises à jour et les suppressions de données utilisateur. Ainsi, le scénario de test à automatiser peut être «Vérifier que les informations de l’utilisateur sont correctement enregistrées dans la base de données dès que l’utilisateur s’inscrit dans l’application».
#deux) Un autre cas d'utilisation de test de base de données avec Selenium WebDriver peut survenir lorsque l'utilisateur est invité à charger les données de test ou les données attendues de la base de données. Ainsi, dans un tel cas, l'utilisateur établirait la connexion avec la base de données à l'aide d'une API tierce, exécuterait des requêtes pour récupérer les données de l'ensemble de données, puis affirmerait les données extraites de la base de données avec les données réelles qui sont renseignées sur l'interface utilisateur de l'application. .
# 3) Un autre cas d'utilisation consiste à effectuer des tests de base de données associatifs. Supposons que nous ayons effectué une opération sur l'interface utilisateur de l'application et que nous souhaitons tester la réflexion dans la base de données. Il se peut que les données impactées résident dans diverses tables de la base de données en raison de l'association. Par conséquent, il est toujours conseillé de tester la réflexion des données sur toutes les zones impactées.
Selenium, comme je l'ai dit, simule les interactions de l'utilisateur avec l'application testée. Il peut simuler les événements du clavier, les actions de la souris, etc. Mais si l'utilisateur souhaite automatiser quoi que ce soit en dehors du voisinage du navigateur - les interactions avec les applications Web, le sélénium ne peut pas être d'une grande aide. Nous avons donc besoin d'autres outils ou capacités pour effectuer des tests de bout en bout.
Ainsi, dans tous les scénarios ci-dessus, nous pouvons avoir besoin d'effectuer des tests de base de données avec l'automatisation de l'interface utilisateur. Nous pouvons vérifier les logiques commerciales en manipulant les données et en vérifiant leur reflet. Nous pouvons également vérifier les aspects techniques de la base de données elle-même comme la suppression logicielle, la validation de champ, etc.
Allons maintenant de l'avant avec la mise en œuvre proprement dite. Avant de développer des scripts Selenium WebDriver pour extraire des données de la source de données, créons des données de test dans la base de données. Pour ce tutoriel, nous utiliserions MySQL comme base de données.
Création de données de test dans la base de données
Si vous n'avez pas encore téléchargé la base de données, téléchargez-la à l'aide du lien . L'utilisateur doit suivre certaines étapes de base pour télécharger et installer la base de données.
= >> Lisez ce tutoriel pour télécharger et installer la base de données MySQL .
Une fois la base de données installée avec succès, l'utilisateur peut lancer l'invite de ligne de commande MySQL qui ressemblerait à la capture d'écran suivante. L'application peut demander à l'utilisateur de saisir le mot de passe. Le mot de passe par défaut est «root».
casque de réalité virtuelle pour xbox one
Noter : L'utilisateur peut également trouver des clients basés sur l'interface graphique sur Internet pour se connecter à la base de données. Pour n'en nommer que quelques-uns, l'utilisateur peut télécharger et installer le navigateur de requêtes ou Work Bench.
Création d'une nouvelle base de données
L'étape suivante consiste à créer la base de données de test avec quelques tables et enregistrements stockés dans ces tables afin d'établir une connexion avec la base de données et d'exécuter des requêtes.
Étape 1) Tapez «show databases» pour voir toutes les bases de données déjà disponibles
afficher les bases de données;
Étape 2) Tapez «créer un utilisateur de base de données»; pour créer une base de données nommée «utilisateur».
créer un utilisateur de base de données;
Notez que le nom de la base de données en tant qu'utilisateur est créé et peut être vu dans la liste des bases de données.
Étape 3) Tapez «utiliser l'utilisateur»; pour sélectionner la base de données nouvellement créée. Saisissez également 'afficher les tableaux'. pour afficher toutes les tables disponibles dans la base de données utilisateur.
utiliser l'utilisateur;
montrer des tables;
Notez que l'ensemble vide est affiché dans le résultat de «afficher les tables»; requête car il n'y avait aucune table disponible dans la base de données utilisateur.
Laissez-nous maintenant quelques tableaux et ajoutez-y des enregistrements.
Étape 4) Tapez la commande suivante pour créer une table avec 4 champs / colonnes (userId, userName, userAge, userAddress).
créer une table userinfo
(
userId int,
nom d'utilisateur varchar (255),
userAge int,
userAddress varchar (255)
);
L'étape suivante consiste à ajouter des enregistrements de données dans le tableau «userinfo».
Étape 5) Tapez la commande suivante pour insérer des données dans la table une table pour les quatre champs 4 champs / colonnes (userId, userName, userAge, userAddress).
insérer dans userinfo (userID, userName, userAge, userAddress) les valeurs («1», «shruti», «25», «Noida»);
Pour afficher les données ajoutées, tapez la commande suivante:
sélectionnez * dans userinfo;
De même, vous pouvez ajouter plus de données à votre table et créer également d'autres tables.
Maintenant que nous avons créé notre base de données. Nous pouvons avancer et comprendre le mise en œuvre de requêtes automatisées pour récupérer les enregistrements de la base de données.
Comme nous l'avons également répété précédemment, Selenium WebDriver est un outil d'automatisation de l'interface utilisateur. Ainsi, Selenium WebDriver seul n'est pas éligible pour effectuer des tests de base de données, mais cela peut être fait à l'aide de l'API Java Database Connectivity (JDBC). L'API permet à l'utilisateur de se connecter et d'interagir avec la source de données et de récupérer les données à l'aide de requêtes automatisées. Pour pouvoir exploiter l'API JDBC, il est nécessaire que la machine virtuelle Java (JVM) s'exécute sur le système.
quelle ide est la meilleure pour python
Flux de travail JDBC
Nous garderions notre attention alignée sur les processus suivants:
- Créer une connexion avec la base de données
- Exécuter des requêtes et mettre à jour des instructions afin d'extraire / récupérer des données (opérations CRUD)
- Utilisation et manipulation des données extraites de la base de données sous la forme de l'ensemble de résultats. (L'ensemble de résultats est une collection de données organisées en lignes et en colonnes)
- Déconnexion de la connexion à la base de données.
Comme indiqué précédemment, pour pouvoir tester automatiquement la base de données à partir de nos scripts de test Selenium WebDriver, nous nous connections à la base de données via la connectivité JDBC dans nos scripts de test. Publiez à la connexion, nous pouvons déclencher autant d'opérations CRUD (Créer, Lire, Mettre à jour et Supprimer) sur la base de données.
Dans ce didacticiel, nous aborderons «l'opération de lecture et ses variantes» et leur implémentation dans le script Selenium WebDriver. Mais avant cela, vérifions manuellement le scénario de test en utilisant la «ligne de commande MySQL».
Scénario:
1) Ouvrez le serveur de base de données et connectez-vous à la base de données «utilisateur».
deux) Listez tous les enregistrements de la table «userinfo».
Syntaxe: sélectionnez * dans userinfo;
3) Fermez la connexion à la base de données.
Notez que la requête de lecture listera toutes les données utilisateur présentes dans la table userinfo. Le tableau se compose des colonnes suivantes.
- identifiant d'utilisateur
- Nom d'utilisateur
- userAge
- userAddress
Le résultat montre également qu'il n'y a qu'un seul ensemble de données présent dans le tableau.
Maintenant, exécutons le même scénario en utilisant la classe Java.
Pour pouvoir accéder à la base de données, l'utilisateur peut choisir parmi les diverses options de connecteur disponibles pour se connecter à la base de données. La plupart des connecteurs de base de données sont distribués gratuitement sous forme de fichiers «jar». Comme nous utilisons MySQL comme source de données, nous devons donc télécharger le fichier jar spécifique à MySQL.
Le fichier jar peut être téléchargé à partir de: ici ou ici.
Étape 1 : La première étape consiste à configurer le chemin de construction du projet et à ajouter le fichier «mysql-connector-java-3.1.13-bin.jar» en tant que bibliothèque externe.
Étape 2 : Créez une classe Java nommée «DatabaseTesingDemo».
Étape 3 : Copiez et collez le code ci-dessous dans la classe créée à l'étape ci-dessus.
Exemple de code
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(); } } }
La sortie du code ci-dessus est:
1 shruti 25 Noida
2 shrivastava 55 Mumbai
Lire les variantes d'instructions
Clause Where à condition unique
String query = 'select * from userinfo où userId = '' + 1 + '' ';
ResultSet res = stmt.executeQuery (requête);
Production:
1 shruti 25 Noida
Clause Where avec plusieurs conditions
Adresse de chaîne = 'Mumbai';
String query = 'select * from userinfo where userId = '' + 2 + '' and userAddress = '' + Address + '' ';
ResultSet res = stmt.executeQuery (requête);
Production:
2 shrivastava 55 Mumbai
Afficher userId
largeur de la première traversée c ++
String query = «sélectionnez userId à partir de userinfo»;
ResultSet res = stmt.executeQuery (requête);
Production:
1
deux
Afficher userId avec la clause where
Adresse de chaîne = 'Noida';
String query = “sélectionnez userId, userName à partir de userinfo où userAddress = '” + Address + ”‘ ”;
ResultSet res = stmt.executeQuery (requête);
Production:
deux
Shrivastava
Ainsi, de la même manière, l'utilisateur peut exécuter diverses requêtes sur la base de données.
Avec cela, éclairons également les méthodes d'accessibilité des résultats.
Méthodes d'accessibilité des résultats:
Nom de la méthode | Description |
---|---|
double getDouble () | La méthode est utilisée pour récupérer les données de type double de l'ensemble de résultats |
Chaîne getString () | La méthode est utilisée pour récupérer les données de type chaîne à partir du jeu de résultats |
int getInt () | La méthode est utilisée pour récupérer les données de type entier à partir du jeu de résultats |
booléen getBoolean () | La méthode est utilisée pour récupérer la valeur booléenne du jeu de résultats |
float getFloat () | La méthode est utilisée pour récupérer les données de type float à partir du jeu de résultats |
long getLong () | La méthode est utilisée pour récupérer les données de type long à partir du jeu de résultats |
court getShort () | La méthode est utilisée pour récupérer les données de type court à partir du jeu de résultats |
Date getDate () | La méthode est utilisée pour récupérer l'objet de type Date à partir du jeu de résultats |
Méthodes de navigation des résultats:
Nom de la méthode | Description |
---|---|
booléen suivant () | La méthode est utilisée pour passer à l'enregistrement suivant dans le jeu de résultats |
booléen précédent () | La méthode est utilisée pour passer à l'enregistrement précédent dans le jeu de résultats |
booléen d'abord () | La méthode est utilisée pour passer au premier enregistrement du jeu de résultats |
booléen last () | La méthode est utilisée pour passer au dernier enregistrement de l'ensemble de résultats |
booléen absolu (entier rowNumber) | La méthode est utilisée pour passer à l'enregistrement spécifique dans le jeu de résultats |
Conclusion
A travers ce tutoriel, nous avons essayé de vous familiariser avec le concept de Test de base de données automatisé . Nous avons clairement mis l'accent sur les implications techniques et les besoins des tests de bases de données.
Comme toute notre série était axée sur Selenium, le lecteur peut être induit en erreur et peut donner l'impression que ce tutoriel enseignerait à effectuer des tests de base de données à l'aide de Selenium, mais comme je l'ai mentionné à plusieurs reprises plus tôt, tout ce qui se trouve en dehors de la périphérie des tests d'interface utilisateur , ne peut pas être manipulé par Selenium. Par conséquent, nous introduisons l'API Java Database Connectivity (JDBC) afin d'effectuer des tests de base de données en incorporant le code dans les scripts Selenium WebDriver.
JDBC permet à la classe java de se connecter à la base de données, de récupérer des données de la base de données ou, en fait, d'effectuer l'une des opérations CRUD, de manipuler les données résultantes et de fermer la connexion.
Ainsi, le didacticiel constitue l'exemple de mise en œuvre de base du processus susmentionné.
Tutoriel suivant # 29 : Nous avancerons avec des sujets avancés sur Selenium. Dans le prochain tutoriel, nous aborderons le Selenium GRID - qui est utilisé lorsque vous devez effectuer des tests multi-navigateurs et que vous avez un grand nombre de cas de test.
lecture recommandée
- Test de base de données avec JMeter
- Intégration de Selenium avec JMeter
- Tutoriel Cucumber Selenium: Intégration Cucumber Java Selenium WebDriver
- Introduction à Selenium WebDriver - Tutoriel Selenium # 8
- Meilleurs outils de test de logiciels 2021 (Outils d'automatisation des tests QA)
- Implémentation de notre premier script WebDriver - Tutoriel Selenium WebDriver # 10
- Le meilleur cours de formation en ligne Selenium WebDriver + JAVA
- Spock pour l'intégration et les tests fonctionnels avec sélénium