Académique Documents
Professionnel Documents
Culture Documents
2
9. Implicit Wait vs Explicit Wait?
o Implicit wait est une attente qui attend pendant un temps spécifié tout en localisant un
élément avant de lancer «NoSuchElementException». Comme par défaut, le sélénium
essaie de trouver des éléments immédiatement sans aucune attente. Alors c'est bon
pour utiliser l'attente implicite. Cette attente s'appliquait à tous les éléments de
l'instance de pilote actuelle.
o Explicit wait est une attente appliquée à un élément Web particulier jusqu'à ce que la
condition ExpectedCondition spécifiée soit remplie.
o Explicit wait est simplement; si la condition est remplie avant l'expiration du délai, il
passera à l'étape suivante, si la condition n'est pas remplie dans le délai d'expiration,
lancez l'exception "No Such Element".
o Attente explicite parfois, nous devons attendre un certain événement / condition tel
que l'élément est visible, cliquable, activé
driver.manage().timeouts().implicitlyWait(5,TimeUnit.SECONDS);
wait.until (ExpectedConditions.visibilityOf(element);
Wait<WebDriver>wait=new
FluentWait<Webdriver>(driver).withTimout(5,timeUnit.seconds).pollingEvery(100,ti
meunit. milliseconds).ignoring(NoSuchElementException.class);
11. Quelles sont les différentes manières de localiser un élément dans Selenium ?
o Selenium Locators à Id & name
3
o In selenium locator is a means of finding an element in the html :
o Id, name, className, xpath, css, linkText, partialLinkText, tagName
12. Pourquoi je ne trouve pas d'élément ?
o Localisateur modifié
o Il y a une iframe
o Temps d'attente :: la page se charge lentement ou l'élément est dynamique :: locator
o La page n'est pas complètement chargée / ouverte
o La page change et cet élément n’existe plus
13. Comment mettre en évidence un élément ?
o Selenium WebDriver n'a pas d'action de mise en évidence.
o Mais nous pouvons utiliser JavaScript pour le faire
for(inti=0;i< 10;i++){
changeColor("rgb(0,200,0)",
element,driver);//1
changeColor(bgcolor,
element,driver);//2
o Syntax à //tagname[@attribute=`value`]
4
o Absolute xpath commence par slash simple (/), à partir de l'élément racine et
jusqu'à l'élément.
o • xpath relatif commence par double slash (//), commençant la sélection
correspondante n'importe où dans le document.
5
o J'ai des méthodes utilitaires qui fonctionnent avec la table. J'ai une méthode qui prend
un élément Web de table et renvoie tous les noms de colonne. J'ai une méthode qui
prend une table, un nombre et renvoie toutes les données de cette ligne.
o En utilisant l'expression (..) dans xpath, nous pouvons passer à l'élément parent
o avec xpath, nous pouvons rechercher des éléments vers l'arrière ou vers l'avant ...
css ne peut pas rechercher par index, mais css fonctionne plus rapidement que xpath.
6
o Dans l'automatisation des tests, le framework est le modèle de l'automatisation des
tests.
o Il comprend vos structures de dossiers, où enregistrer votre bibliothèque de fonctions,
les résultats des tests, les données de test, les ressources.
o C'est essentiel car lorsque vous travaillez sur un projet d'automatisation, tout le monde
aura une ligne directrice à suivre et notre le script sera plus facile à maintenir.
o J'utilise plusieurs méthodes de reporting dans mon framework, le script du pilote écrit
réussite / échec dans la feuille Excel des cas de test,
o L'objet utilitaire Reporter écrit dans le rapport UFT, j'ai également développé un
moteur de rapport HTML personnalisé.
o Il envoie du code HTML au Bloc-notes et crée un joli document de rapport HTML que
les personnes non techniques peuvent facilement comprendre et utiliser.
o driver.manage().window().maximize();
26. Dans certains cas, maximisez () ne fonctionnera pas> comment va-t-il se passer ?
28. Et s'il y avait une fenêtre contextuelle dynamique(popup) qui apparaît au hasard
7
29. What is Thread.sleep ()?
o Il s'agit d'une structure de code qui facilite la maintenance du code, la lisibilité du code
et la réutilisation du code.
o Il existe principalement 3 types de frameworks créés par Selenium WebDriver pour
automatiser les cas de test:
Excel
ou aperçu du scénario dans le fichier de fonctionnalités
TestNG data Provider
o Selenium WebDriver est un excellent outil pour automatiser les applications Web.
Mais il ne prend pas en charge les opérations de lecture et d'écriture sur les fichiers
Excel. Par conséquent, nous utilisons des API tierces comme Apache POI
Le test piloté par mot-clé est une technique de script qui utilise des fichiers de
données pour contenir les mots-clés liés à l'application testée.
Les mots-clés sont écrits dans certains fichiers externes comme le fichier Excel et
le code Java appellera ce fichier et exécutera des cas de test.
Framework hybride
8
31. Comment avez-vous utilisé des méthodes surchargées dans Selenium ?
alert.accept();
alert.dismiss();
alert.sendKeys();
alert.getText()
o S'il y a 4 cadres, vous devez passer par chacun d'eux consécutivement pour atteindre
certains cadres. Impossible de passer à la troisième image à partir de la première
image.
• driver.get () -> Pour ouvrir une URL et il attendra que la page entière soit chargée
• driver.navigateto () -> Pour naviguer vers une URL et il n'attendra pas que la page
entière soit chargée
9
o Cadres utilisés pour intégrer une page html dans une autre
o Steps
• Localisez l'iframe
• Passer à un autre iframe avec driver.switchTo (). frame ();
• .frame () -> prendre chaîne, Integer, webElement, nom ou id directement comme
paramètre
• driver.switchTo().frame(webElement); driver.switchTo().frame();
• driver.switchTo().frame(webElement); driver.switchTo().frame();
Maintenant que vous êtes dans la deuxième image, si vous voulez trouver un
élément en dehors de la deuxième image (sur laquelle vous êtes actuellement)
lance NosuchElementException
Si vous devez revenir à l’image précédente
o void dismis () -> clic sur le bouton «Annuler» dès que la fenêtre pop-up apparaît.
o void accept () -> clic sur le bouton «Ok» dès que la fenêtre pop-up apparaît.
o String getText () -> renvoie le texte affiché sur la boîte d'alerte.
o void sendKeys (String stringToSend) -> entre le modèle de chaîne spécifié dans la
boîte d'alerte.
10
o Selenium ne prend pas en charge les applications Windows, c'est un outil de test
d'automatisation qui prend uniquement en charge les tests d'applications Web.
o Nous pourrions gérer les fenêtres contextuelles dans Selenium en utilisant des outils
tiers tels que AutoIT, classe Robot
o driver.getWindowHandle (); Cela gérera la fenêtre actuelle qui l'identifie de manière
unique dans cette instance de pilote.
o driver.getWindowHandles (); Pour gérer toutes les fenêtres ouvertes
o Navigateur sans tête: navigateur qui ne s'ouvre pas, il s'exécute en tant que service /
programme d'arrière-plan.
o Exemple: htmlunitdriver de sélénium
o Phantonjsbrowser
• Plus stable
• navigateur = nouveau phantomjsbrowser ()
• ne donne pas d'exception si l'élément non trouvé comme liste de résultats a des
valeurs nulles
11
o Si vous ouvrez une fenêtre et que 5 onglets se sont ouverts, le sélénium est concentré
sur la première fenêtre
o Si vous êtes dans une nouvelle fenêtre et que vous dites au sélénium d’imprimer un
élément sur la fenêtre par défaut, cela fonctionnera toujours l’utilisateur se concentre
sur la nouvelle fenêtre
• Utilisez windowHandle ()
• Driver.getWindowHandle ()
43. Différence entre la méthode isDisplayed (), isEnabled (). And is Selected () method in
selenium WebDriver?
12
o isDispalyed () -> pour vérifier la présence d'un élément Web dans la page Web. Si
trouvé à vrai, Si non trouvé à faux
o isDisplayed () -> vérifier la présence de toutes sortes d'éléments Web disponibles
o isEnabled () -> pour vérifier si l'élément Web est activé ou désactivé dans la page
Web.
o isEnabled () -> est principalement utilisé avec les boutons
o isSelected () -> vérifie si l'élément Web est sélectionné ou non
o isSelected () -> utilisé avec des boutons radio, des listes déroulantes et des cases à
cocher.
45. ForScrolldown:
o Dans Selenium Webdriver, nous pouvons interroger et interagir avec les cookies avec
la méthode intégrée ci-dessous:
13
o driver.manage().getCookies(); // Return The List of all Cookies
driver.manage().getCookieNamed(arg0); //Return specific cookie according to name
driver.manage().addCookie(arg0); //Create and add the cookie
driver.manage().deleteCookie(arg0); // Delete specific cookie
driver.manage().deleteCookieNamed(arg0); // Delete specific cookie according Name
driver.manage().deleteAllCookies(); // Delete all cookies
o Chaque cookie est associé à un nom, une valeur, un domaine, un chemin, une date
d'expiration et l'état de sa sécurité ou non. Afin de valider un client, un serveur analyse
toutes ces valeurs dans un cookie.
o Lors du test d'une application Web à l'aide du pilote Web sélénium, il se peut que nous
devions créer, mettre à jour ou supprimer un cookie.
o Par exemple, lors de l'automatisation de l'application d'achat en ligne, nous devons
souvent automatiser des scénarios de test tels que passer une commande,
o Afficher le panier, les informations de paiement, la confirmation de commande, etc.
o Si les cookies ne sont pas stockés, nous devrons effectuer une action de connexion à
chaque fois avant d'exécuter les scénarios de test énumérés ci-dessus.
o Cela augmentera votre effort de codage et votre temps d'exécution.
o La solution consiste à stocker les cookies dans un fichier. Plus tard, récupérez les
valeurs de cookie de ce fichier et ajoutez-y votre navigateur actuel
o session. Par conséquent, vous pouvez ignorer les étapes de connexion dans chaque
scénario de test car votre session de pilote contient ces informations.
o Le serveur d'applications traite désormais votre session de navigateur comme
authentifiée et vous amène directement à l'URL demandée.
public class cookieRead extends BasePage{ public static void main(String[] args){
driver.get("http://demo.guru99.com/test/cookie/selenium_aut.php");
driver.findElement(By.name("username")).sendKeys("abc123");
driver.findElement(By.name("password")).sendKeys("123xyz");
driver.findElement(By.name("submit")).click();
14
File file = new File("Cookies.data"); // create file to store cookies
try {
file.delete(); // Delete old file if exists file.createNewFile();
FileWriter fileWrite = new FileWriter(file); BufferedWriter Bwrite = new
BufferedWriter(fileWrite);
for(Cookie ck : driver.manage().getCookies()){
Bwrite.write((ck.getName() +";"+ ck.getValue() +";"+ ck.getDomain() +";"+ ck.getPath()
Bwrite.newLine(); }
ex.printStackTrace(); }
}}
50. Utilisez les cookies stockés pour vous connecter aux informations
try{
String strline;
while((strline=Buffreader.readLine())!=null){
15
String domain = token.nextToken();
String val;
if(!(val=token.nextToken()).equals("null")) {
} driver.get("http://demo.guru99.com/test/cookie/selenium_aut.php");
SORTIE: Vous êtes directement redirigé vers l'écran de réussite de la connexion sans
entrer l'ID utilisateur et le mot de passe d'entrée
o Cela m'aide à écrire mon propre JavaScript. JS a bien plus de contrôle que le sélénium.
o nous pouvons envoyer des commandes JS au navigateur en utilisant cette classe
o jsExecutor.executeScript ("alert (" ATTENTION: Ceci est un message inutile ");" ->
Ce code affichera une fenêtre contextuelle JS
16
o Vous pouvez également mettre 2 paramètres soit .executeScript («js code», élément);
• Utilisé pour le défilement (le sélénium n'est pas bon avec le défilement, vous
pouvez dire qu'un défi est lorsque je travaillais sur la page des conditions
générales, où vous devez lire la page avant de cliquer sur continuer.
• Quand j'ai essayé d'utiliser le sélénium et la classe d'actions, cela ne fonctionnait
pas, j'ai donc utilisé javaexecutor) et en cliquant sur un élément;
if(driver.findElements(By.xpath("value")).size() != 0){
System.out.println("Element is Present");
}else{
System.out.println("Element is Absent");
o Or
if(driver.findElement(By.xpath("value"))!= null){
System.out.println("Element is Present");
}else{
System.out.println("Element is Absent");
o To check Visible:
}else{
System.out.println("Element is InVisible"); }
o To check Enable:
17
System.out.println("Element is Enable");
}else{
System.out.println("Element is Disabled"); }
if(driver.getPageSource().contains("Text to check")){
System.out.println("Text is present");
}else{
System.out.println("Text is absent"); }
o La classe Actions nous permet d'effectuer des opérations avancées sur la souris et le
clavier:
o Contrôlez la souris
o Classe qui fournit des méthodes pour les interactions utilisateur avancées
• Hovering
• Scroll
• Double click
• Drag and drop
• Right click
• mix/match operators
18
o Actions action = nouvelles actions (pilote)
o Méthodes d’action
• Double-cliquez
• Glisser-déposer
• Clic droit
• opérateurs mix / match
• cliquez sur ()
• effectuer ()
• tenir ()
• keydown () build ()
• moveToElement (élément)
• dragAndDrop (source, cible) .perform ()
• sendKeys () différent de celui que nous utilisons habituellement
o Pour effectuer des actions sur un élément Web à l'aide de la classe actions, nous
devons d'abord localiser l'élément:
o WebElement el = driver.findELement
Actions actions = new Actions (driver).perform actions.doubleClick(el).perform()
actions.moveTo(el).perform actions.doubleClick.perform
actions.moveTo(el).doubleClick().build.perform()
19
56. Téléchargement et téléchargement des fichiers
o Download
o Upload
o Si la liste déroulante n'a pas de balise de sélection, nous ne pouvons pas utiliser la
classe de sélection
o Traitez la liste déroulante et ses options comme des éléments séparés, localisez chaque
élément séparément
20
o Pour sélectionner une option:
59. Whatifthere'snoselecttag?
• Robot ou AutoIT
o Pour gérer des onglets / fenêtres séparés, nous devons passer à cet onglet
o Le pilote Web gère une page / un document html à la fois.
o Pour contrôler un autre onglet, nous devons toujours changer
o Pour pouvoir changer, nous devons d'abord obtenir la poignée de fenêtre en utilisant
21
//for each loop : driverGetWIndowHandles:
Driver.switchTo.window(“handle”)
Ifdriver.getTitle==expectedtitle;
Break;
• Ensuite, nous faisons sendKeys en passant le chemin du fichier que nous voulons
télécharger
o Création d'un chemin dynamique pour un fichier à l'intérieur de notre projet Chemin
d'accès à l'emplacement du projet:
65. How to input text in the textbox without calling the sendKeys()?
//Use javascriptExecutor
JavascriptExecutor JS = (JavascriptExecutor)webdriver;
JS.executeScript(“document.getElementById(‘User’).value= ’www.google.com’”);
22
JS.executeScript(“document.getElementById(‘pass’).value=’ tester’”);
66. Comment appuyer sur la touche ENTRÉE sur la zone de texte dans Selenium
WebDriver?
o Mentionnez toujours que vous disposez d'un fichier de contrôle pour les mots-clés tels
que le type de navigateur, l'url principale, le nom d'utilisateur, le mot de passe,
l'environnement.
Response response=RestAssured.given()
.contentType(ContentType.JSON)
.relaxedHTTPSValidation()
.get("https://api.got.show/api/continents");
System.out.println(response.asString());
o element.getLocation ();
o La classe WebElement a une méthode get Location avec renvoie le coin supérieur
gauche de l'élément
70. PageFactoryclass?
23
71. Expliquez-moi votre flux d'exécution de test avec le cucumber.
o Runner> Feature file> Scenario> Steps> Step def> Code Selenium utilisant POM
72. Quels outils utilisez-vous pour tester les services Web UX et Restful?
74. Quelles sont les exceptions que vous connaissez dans le sélénium?
L’élément n’est pas attaché au DOMà ‘try catch block ’dans la’
boucle for ’
Ou alors
24
1.Actualisez la page et essayez à nouveau pour le même
élément.
2.Attendez la roue jusqu'à ce qu'elle soit disponible
o TimeOutException
o L'assertion logicielle collecte les erreurs pendant @Test L'assertion logicielle ne lève
pas d'exception lorsqu'une assertion échoue et continue avec l'étape suivante après
l'instruction assert. Si les étapes de vérification échouent, il signalera un échec mais
continuera l'exécution!
Exemple: SoftAssert soft = new SoftAssert (); // pour soft create object
soft.assertTrue (boolean);
soft.assertAll (); // mis à la fin, il signalera ce qui échoue!
o Dans sélénium IDE, nous utilisons les commandes Selenium Verify et Assert comme
points de vérification
o Dans Selenium WebDriver, il n'y a pas de fonctionnalités intégrées pour les points de
vérification, cela dépend totalement de notre style de codage. Une partie des points de
vérification sont
25
pour vérifier certains éléments (zone de texte, bouton, liste déroulante, etc.)
o La balise de table utilisée pour les données de table est organisée dans un format de
grille
<tr>
<th>FirstName</th> column names on the very top row <th>Lastname</th>
<th>Age</th>
</tr>
26
</tr> balise tr utilisée pour indiquer une ligne, s'applique à la colonne entière
Balise td pour indiquer une colonne dans une ligne Exemple
<tr>
<td>Danny</td> actual_data_on_the_very_first_row <td>Smith</td>
<td>29</td>
</tr>
o Certaines tables ont tbody Utilisé pour indiquer les données de la table, n'inclut
généralement pas les noms de colonne (th)
o Selenium 3 a des corrections de bogues à partir de sélénium 2 et il est plus axé sur
l'automatisation mobile.
o Nous visons à ce que Selenium 3 soit «un outil d'automatisation centrée sur
l'utilisateur des applications mobiles et Web».
o Voici le résumé du changement.
27
TESTNG & JUNIT
o Vous avez 500 cas de test → Nous créons un package Java et 500 classes pour chaque
cas de test
o Le client vous a demandé d'exécuter seulement 40 d'entre eux pour un test de fumée
→ Nous le gérons dans Jasmine avec des blocages et un mécanisme de rapport.
o TestNG est un framework de test
o Contrôleur centralisé: gérez exécuter différents cas de test puis créez des rapports, des
journaux
o Exécution par lots: 100 cas de test et exécutez-les un par un
o Exécution facultative: nous pouvons ignorer certains cas de test
28
2. Qu'est-ce que les assertions dans TestNG?
o Nous exécutons le test et le cas de test de titre a échoué. Cela n'affectera pas les autres
cas de test, donc ne voulez pas que notre script s'arrête.
29
4. Navigateur croisé et test parallèle
o Dans mon projet actuel, nous utilisons sauceLab pour les tests multi-navigateurs. Mais
mon projet précédent, j'ai utilisé le fichier testng.xml.
o Fondamentalement, à l'intérieur de la suite, il y a 3 clés (nom, nombre de threads,
parallèle) et j'ai créé 2 tests différents, l'un d'eux est pour
o Chrome et l'autre est pour Firefox.
o Il existe également une annotation de paramètre et inclut le nom et la valeur; le nom
est le navigateur et la valeur est Chrome.
30
<?xml version="1.0" encoding="UTF 8"?> <!DOCTYPE suite SYSTEM ...>
<suite ...>
<classes>
<class name="testsuite..."/>
<classes>
<class name="testsuite...."/>
31
CUCUMBER & GHERKIN
1. Dites-m ‘en plus sur le cucumber, comment avez-vous décidé de commencer à utiliser
le cucumber?
De nombreuses équipes Agile ont appliqué avec succès l'approche de Behavior Driven
Development (ou BDD) dans le processus de test à l'aide de l'outil Cucumber. Alors,
qu'est-ce que le cucumber ? Et pourquoi est-ce l'une des bonnes approches des projets
Agile, utilisée avec BDD?
o Cucumber est un outil permettant d'exécuter des tests d'acceptation automatisés écrits
dans un style de développement axé sur le comportement. L'une de ses merveilleuses
caractéristiques principales est la possibilité d'exécuter une description fonctionnelle
en texte brut (écrite dans un langage nommé Gherkin) sous forme de tests automatisés.
Voici un exemple:
32
Construire des ponts entre les membres techniques et non techniques d'une
équipe logicielle
Permet une interaction directe avec le code des développeurs, mais écrit dans
un langage que les parties prenantes de l’entreprise peuvent comprendre
Dernier point mais non le moindre, Cucumber est un outil de test d'acceptation
automatisé qui exécute des tests écrits dans un style de développement (BDD).
2. Dites-moi quelles sont les choses les plus importantes dans le cucumber, qu'est-ce qui
le rend unique ?
o Mon framework génère le dossier de rapports de cucumber dans le dossier Target qui
contient les rapports.
o Lorsque nous exécutons les tests sur Jenkins, Jenkins enregistre le rapport de chaque
exécution.
o La page d'accueil du travail Jenkins pointe toujours vers les derniers rapports exécutés.
o Tous les rapports des exécutions précédentes se trouvent sous le numéro de build.
o Accédez au dossier Target
o Ouvrir avec l'explorateur système
o Accédez à Target> rapport cucumber> l'index affiche les tests que vous avez exécutés
1. Feature files
33
Se compose de scénarios qui testent une certaine feature ou fonctionnalité
Feature est l'histoire principale tandis que les scénarios sont les cas de test de
l'histoire (feature)
2. Cukes Runner
Une classe qui exécute strictement les tests, génère des codes pour la définition
des étapes
@smoketest
Cukesrunner → DANS CUCKESRUNNER, J'AI UN EMPLACEMENT DE
FONCTIONNALITÉ QUI MONTRE OU MA FONCTION EST SITUÉE
3. Step definition
• dryRun
• Plugin
§ “Pretty”
34
o Ajoute plus d'informations dans la console -> Donne des informations sur
les balises, les scénarios et les méthodes.
o "html: target/ cucumber report" -> Génère un rapport html situé dans le
dossier du target/ cucumber report "Json: target / cucumber.json
§ Tags
9. Que se passe-t-il lorsque vous dirigez votre classe de coureurs sans tags ?
o Tous les feature files s'exécuteront de haut en bas, mais uniquement les f feature files
qui se trouvent dans @CucumberOptions «features =»
o Cucumber hook nous permet de mieux gérer le flux de travail du code et nous aide à
réduire la redondance du code. On peut dire que c'est une étape invisible, qui nous
permet de réaliser nos scénarios ou tests.
o Classe qui utilise
35
• @Before → s'exécute avant chaque scénario de cucumber
• @After → s'exécute après chaque scénario (il fonctionnera toujours, peu importe
si le scénario réussit ou échoue)
• @After
36
o Imprime dans l'ordre pour la liste
o Aucune commande de map
o Avoir les mêmes étapes cucumber mais nous fournissons des données après le
scénario sous forme de tableau à l'aide d'exemples de mots-clés
37
BrowserUtils.hover(dashboard.all); break;};
16. Quels sont les paramètres qui comportent deux paramètres (paramètre de limitation,
paramètre de table) ?
o Exemple :
• Ensuite, les options de menu suivantes doivent être visibles pour la collaboration :
o Solution :
• @Then ("^ les options de menu suivantes doivent être visibles pendant
• public void
following_menu_options_should_be_visisble_for_Collaboration(String menu,
List<String> options) {
• String menu represents the 5 menu options ( Collaboration | Sales | Marketing |
Activities | All ) List<String>options represents the tables; | Home | Emails |
Documents | Projects |
o Dans mon projet actuel, j'utilise le plan de scénario avec des exemples
o Dans mon fichier de fonctionnalités de scénario, chaque fois que j'utilise une variable
en tant que donnée, j'utilise "<variable>"
o Puis dans des exemples :
38
| variable | column name
| data1. | row1
| data2 | row2
| data3 | row3
o . Data driven
• Les données de test sont séparées du code et stockées dans des sources externes :
tableau d'exemples de cucumber, fichiers Excel, CSV fichiers, base de données.
• Si la quantité de données n'est pas si énorme, j'utilise un aperçu du scénario de
cucumber avec un tableau d'exemples.
• Et d'autres fois, je gère les données de test dans des fichiers Excel et j'utilise la
bibliothèque Apache POI pour lire et écrire des données
• Si les données proviennent d'une base de données ou que je dois effectuer une
validation de base de données, j'utilise des requêtes SQL avec la bibliothèque
JDBC en java.
| first_name | John |
| last_name | Smith |
|cell_phone|8018888889 |
39
• Given je me suis connecté à suiteCRM
| first_name | <first_name> |
| last_name | <lname> |
| cell_phone | <cell_phone> |
| office_phone |<office_phone> |
40
| firstName | lastName | officePhone | cellphone | email
|
@Test (groups={“smokeTest”,”FunctionalTest”})
System.out.println(“Logged in successfully”);
o En utilisant l'annotation @DataProvider, nous pouvons créer une structure basée sur
les données
41
Data[1][0] = “SecondUid”;
Data[1][1] = “SecondPWD”; Return data; }
<groups>
<define name=”all”>
<run>
</run>
</groups>
42
28. Comment exclure une méthode de test particulière de l'exécution d'un scénario de
test ?
o En ajoutant la balise exclude dans le fichier testing.xml
<classes>
<class name="TestCaseName">
<methods>
<exclude name="TestMethodNameToExclude"/>
</methods>
</class>
</classes>
29. Comment exclure un groupe de test particulier de l'exécution d'un scénario de test ?
o En ajoutant la balise d'exclusion dans le fichier testing.xml
<groups>
<run>
</groups>
30. Quelles sont les différentes manières de produire des rapports pour les résultats de
TestNG?
o TestNG propose deux méthodes pour produire un rapport
o L'instance IReporter reçoit une liste d'objets décrivant l'ensemble de l'exécution du test
31. À quoi sert l'annotation @Listener dans TestNG ?
o Configurer les rapports et les logs.
o listeners largement utilisés: interface ITestListener.
43
o Il a des méthodes comme onTestStart, onTestSucess. onTestFailure, sur
TestSkipped ...
o Nous devons implémenter cette interface en créant notre propre classe d'auditeur,
o Ensuite, nous devons ajouter l'annotation des écouteurs (@Listeners) dans la classe
o Une expression régulière est une chaîne de texte spéciale pour décrire un modèle de
recherche.
o Vous pouvez considérer les expressions régulières comme des caractères génériques
sur les stéroïdes.
o Vous connaissez probablement les notations génériques telles que * .txt pour
rechercher tous les fichiers texte dans un gestionnaire de fichiers.
o L'équivalent Regex est. * \. Txt.
33. Comment écrire une expression régulière dans le fichier testing.xml pour rechercher
des méthodes @Test contenant le mot-clé «smoke» ?
o L'expression régulière pour trouver la méthode @Test contenant le mot-clé "fumée"
est mentionnée ci-dessous
<methods>
<include name=".*smoke.*"/>
</methods>
34. Quelle est l'unité de temps que nous spécifions dans les suites de tests et les cas de
test?
o Nous spécifions l'unité de temps dans les suites de tests et les cas de test est en
millisecondes.
35. À quoi sert @Test (invocationCount = someInteger)?
@Test(invocationCount=10)
44
o // l'attribut de nombre d'appels indique combien de fois TestNG doit exécuter une
méthode de test
@Test1(threadPoolSize=3,invocationCount=10,timeOut=10000)
o : // dans cet exemple: la fonction test1 sera invoquée dix fois à partir de trois threads
différents. De plus, un délai d'expiration de plusieurs secondes garantit qu'aucun des
threads ne se bloquera indéfiniment sur ce thread.
o @Factory → exécute toutes les méthodes de test présentes dans une classe de test en
utilisant une instance distincte de la classe avec ensemble différent de données
o @DataProvider → une méthode de test qui utilise dataProvider sera exécutée avec
les méthodes spécifiques plusieurs nombres de heures basées sur les données fournies
par le dataProvider.
46
o mot-clé de feature le cukesrunner
o les Tags et les features peuvent également être transmises à l'aide de la ligne de
commande
o ● mvn test -Dcucumber.options = "- tag @smoke"
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j- core</artifactId>
<version>2.11.0</version>
</dependency>
47
47. Qu'est-ce que la classe de base de test ? et comment mettez-vous en œuvre dans votre
Framework ?
o La classe Test Base est la classe dans laquelle j'ai le plus utilisé les méthodes dans mes
tests.
o Mes classes de test étendent la classe Test Base et ont ainsi accès à ces méthodes. Cela
m'aide à faire mon code réutilisable
o Méthodes de test avant / après méthodes de l'utilitaire d'attente / de synchronisation.
• SwitchToWindow (title)
• driveWebDriver;
o Dans mon framework TestNG, les tests échoués sont signalés dans le fichier
testng_failed_.xml dans le dossier cible.
o Nous pouvons ajouter ce fichier dans le fichier pom afin que maven essaie d'exécuter
les tests qui ont échoué à chaque fois.
o If ne s'exécutera qu'en cas d'échec du test.
o Dans Jenkins, il existe des plugins qui ré-exécutent les tests ayant échoué Cas
unitaires.
o Vous pouvez donc configurer votre exécution de compilation Maven sur Jenkins en
utilisant l'option :
o Dsurefire.rerunFailingTestsCount = 2
48
51. EXÉCUTER DES TESTS DE CUCUMBER EN PARALLÈLE?
Il existe quelques options sur la façon de faire fonctionner le framework Cucumber + JUnit en
parallèle
https://cucumber.io/blog/2018/09/24/announcing-cucumber-jvm-4-0-0
Par documentation officielle, afin d'exécuter des tests en parallèle, nous devons ajouter une
option parallèle au plugin maven surefire dans le fichier pom.
<build>
<plugins>
<parallel>both</parallel>
<threadCount>4</threadCount> </configuration>
</plugin>
</plugins>
</build>
49
Mais dans mon projet spécifique, nous avons ajouté le plugin de sécurité maven pour nous
assurer que les tests continuent à s'exécuter même si certains échouent. Ce plugin s'assure que
les tests continuent à s'exécuter
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.18</version>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
<skipTests>false</skipTests>
<includes>
<include>**/runners/*TestRunner.java</include> </includes>
</configuration>
</plugin>
<plugins>
Ce plugin exécute des tests en parallèle. Dans cette configuration de plugin, nous indiquons
quels fichiers runner nous voulons exécuter. Nous pouvons également indiquer comment les
tests simultanés que nous voulons exécuter.
Nous avons créé des fichiers d'exécution cukes en fonction du nombre de tests que nous
voulons exécuter et de la manière dont nous voulons décomposer les tests. Chaque coureur de
cukes pointera vers certains scénarios de configuration / fichiers de fonctionnalités
50
Comment exécuter?
o Nous pouvons exécuter des tests en parallèle dans notre framework uniquement en
exécutant des tests comme une commande maven
o mvn verifyàthis exécutera les tests et générera des rapports
o mvn clean verifyàit supprimera d'abord le dossier cible, puis exécutera les tests, puis
générera des rapports
Avantages de la parallélisation :
API
1. Qu'est-ce que l'API?
o Cela signifie la connectivité. Je veux dire que l'API est le messager qui prend les
demandes et dit à un système ce que vous voulez faire, puis vous renvoie la réponse.
o API est l'acronyme d'Application Programming Interface (qui est un intermédiaire
logiciel) qui permet aux applications de communiquer entre elles.
• SOAP → XML
• REST → JSON, XML, TEXT
• Postman, Rest Assured Library
51
3. Qu'est-ce que SoapUI ? et comment l'avez-vous utilisé dans votre projet actuel ?
4. Nom de certaines méthodes HTTP couramment utilisées dans l'architecture basée sur
REST?
● Read → GET (récupère les données d'un serveur donné en utilisant un URI donné)
o 1xx → Informatif
o 2xx → Succès (la demande a été acceptée avec succès) (200 → Ok, 201 → Créée, 202
→ Acceptée, 204 → Pas de contenu)
o 3xx → Redirection
o 4xx → Erreur client (400-Bad Request, 401-Unauthorized, 403-Forbidden, 404-Not
Found, 405-Method not Allowed)
o 5xx → Erreur de serveur (500-Erreur de serveur interne, 502-Passerelle incorrecte,
501-Non implémenté, 503-Service indisponible)
6. Quelle est la première chose que vous vérifiez lorsque vous obtenez une réponse ?
52
8. Paramètres api
o 2 TYPES:
• Hamcrest est un cadre d’écriture d’objets matcher permettant de définir des règles de
«correspondance» de manière déclarative.
53