[JAVA] Automatisation des tests d'applications Web

Matériel explicatif interne. Un aperçu des tests automatisés avec Selenium Webdriver.

Informations de base

Qu'est-ce que le sélénium

De nombreux sites sont écrits comme un framework (bibliothèque) pour tester des applications Web, mais il peut être plus facile de comprendre l'expression «outil RPA spécialisé pour les navigateurs Web».

Ce que tu peux faire

En programmant les opérations effectuées par des humains sur le navigateur et en créant un "robot d'exploitation du navigateur", l'effort de test pendant le développement de l'application Web peut être réduit. Je pense que ce qui suit sont les mérites.

  1. Vous pouvez terminer le test en appuyant simplement sur un bouton. (Aucun travail humain requis)
  2. Peut être testé dans différents navigateurs. (Selon la structure, mais ne nécessite généralement pas de recodage)
  3. Devenez un héritage. (Utilisation efficace des coûts)

L'effort de test lors du développement d'une application Web est enregistré comme un coût de développement, mais je pense que ce coût de test a tendance à être "jetable". En créant un scénario de test dans Selenium, il peut devenir un «héritage» qui peut être utilisé par la suite.

* À l'intérieur du PC Image d'un robot (Selenium) dans.

Comment utiliser (basique)

Utilisez un outil appelé Selenium Webdriver. Vous pouvez contrôler les pages Web (saisie de caractères, pression de bouton, etc.) en exécutant l'API Webdriver à partir de n'importe quel langage de programmation (C #, Groovy, Java, Perl, PHP, Python, Ruby et Scala: par wikipedia). Je peux le faire. Cette fois, je vais vous présenter comment écrire avec Java. L'exportation suivante est un modèle standard lors de l'utilisation d'IE.

System.setProperty("webdriver.ie.driver", "./driver/32/IEDriverServer.exe");
WebDriver driver = new InternetExplorerDriver();
driver.manage().timeouts().implicitlyWait(120, TimeUnit.SECONDS);

Le contrôle réel peut être effectué avec la syntaxe suivante.

driver.findElement(By.xpath("PATH_TO_TARGET")).OPERATION("PARAMETER");

La signification de cette syntaxe est de spécifier l'élément à contrôler avec "PATH_TO_TARGET", de donner le paramètre spécifié avec "PARAMETER" lorsque l'élément est trouvé et d'effectuer l'opération spécifiée avec ".OPERATION". La méthode de réglage de "PARAMETER" et ".OPERATION" est expliquée ci-dessous.

Spécification de PATH_TO_TARGET

Afin de contrôler un élément à l'écran, il est nécessaire de spécifier "où l'élément contrôlé est (position)" d'une manière ou d'une autre. La méthode de spécification des "coordonnées (x, y)" sur l'écran peut vous venir à l'esprit en premier, mais si vous utilisez des coordonnées, la position sera différente en fonction de la taille de l'affichage ou de la fenêtre, elle échouera donc à l'exécution. On craint qu'il y ait plus de cas (faible précision d'exécution). Par conséquent, Selenium vous permet de spécifier des éléments de manière précise et indépendante des coordonnées.



Par exemple, le champ de saisie du mot de recherche de Yahoo commence par la balise et se termine par la balise , comme indiqué dans l'image ci-dessus. Le chemin entre et est appelé xpath. Le xpath de l'élément d'entrée est le suivant.

/html/body/div[1]/div[1]/div[3]/form/fieldset/div[1]/p/label/input

Désignation de l'OPÉRATION

Maintenant que vous savez identifier un élément, vous devez spécifier l'action à entreprendre sur cet élément (partie .OPRERATION). Les principaux sont les clics et la saisie de chaîne, comme mentionné ci-dessus.

opération OPERATION
Cliquez sur click
Saisie de la chaîne de caractères sendkeys

Voici un exemple de clic sur un lien hypertexte.

driver.findElement(By.xpath("PATH_TO_TARGET")).click();

Voici un exemple de saisie d'une chaîne de caractères dans l'élément d'entrée.

driver.findElement(By.xpath("PATH_TO_TARGET")).sendkeys("PARAMETER");

Utilisation spécifique

Quiconque a touché à n'importe quel langage de programmation peut le faire. J'ai présenté plus tôt

driver.findElement(By.xpath("PATH_TO_TARGET")).OPERATION("PARAMETER");

C'est très simple car il suffit de l'appliquer et d'organiser les processus automatisés. Il est nécessaire de modifier légèrement le style d'écriture en fonction du contrôle sur l'écran que vous souhaitez contrôler, mais fondamentalement, si vous vous souvenez des deux types introduits précédemment et de la méthode de contrôle de la zone de liste déroulante (celle-ci a également une norme), 7 ~ Il semble que 80% du traitement puisse être couvert.

Moyens de comparaison avec les valeurs attendues

Comme pour le test manuel (frappe sur une touche), il est fondamentalement nécessaire de faire un jugement (réussite / échec) du résultat pour l'entrée donnée. Il est facile de créer un cas de test à l'aide d'un cadre de test tel que JUnit et de porter un jugement. Nous allons introduire deux types de méthodes de jugement.

Comparer avec la chaîne de valeur attendue pour l'entrée

C'est la méthode standard. Le résultat obtenu pour l'entrée est extrait de l'écran et comparé à la valeur préparée à l'avance par assert. Dans le cas de JUnit, vous pouvez voir en un coup d'œil le scénario de test qui a échoué car le résultat du jugement était faux.

Comparer avec l'image de la valeur attendue pour l'entrée

Selenium a également une fonction pour prendre une capture d'écran, qui est utilisée pour obtenir l'image souhaitée et la comparer avec l'image de valeur attendue. Cela demande beaucoup de travail par rapport au cas des chaînes de caractères, mais c'est un moyen efficace pour les tests de régression lors de la mise à jour de la version du serveur d'applications Web et de la version du navigateur utilisé. Je vais omettre l'introduction détaillée, mais vous pouvez facilement et à peu de frais automatiser la comparaison d'images en utilisant un logiciel tel que ImageMagic.

Créer un exemple de code. https://github.com/knsquai/BrowserAutoTest

Nous recherchons des amis pour travailler avec nous pour promouvoir l'automatisation des tests. https://www.nittsu-infosys.com/recruit/2019/index.html

Recommended Posts

Automatisation des tests d'applications Web
J'ai étudié l'automatisation des tests
Tester l'API Web avec junit
[Spring Boot] Création d'applications Web
Application Web construite avec docker (1)
Serveur Web et serveur d'applications Rails
tester
tester
Créer une application Web avec Javalin
tester
Je souhaite développer une application web!
Essayez d'utiliser le framework Java Nablarch [Application Web]
Créez une application Web simple avec Dropwizard
Démarrez le développement d'applications Web avec Spring Boot
Production d'applications personnelles 2 Introduction de la police WEB
Rôle de JSP dans les applications Web [Java]
Exécutez l'application WEB avec Spring Boot + Thymeleaf
Créer un serveur d'applications Web (Java) sur VPS