Maison > Article > développement back-end > Comment utiliser Selenium, l'outil de test automatisé Python
Les tests automatisés font référence à l'automatisation des tests de logiciels, à l'exécution d'applications ou de systèmes dans des conditions prédéfinies, y compris des conditions normales et anormales, et enfin à l'évaluation des résultats d'exécution. Processus de conversion du comportement de test piloté par l'homme en exécution machine.
Les tests automatisés incluent l'automatisation de l'interface utilisateur, l'automatisation de l'interface et l'automatisation des tests unitaires. La planification des tests automatisés selon ce modèle pyramidal peut produire le meilleur rapport sortie/entrée (ROI) des tests automatisés et obtenir de bons avantages avec moins d'investissement.
Le plus gros investissement devrait être dans les tests unitaires, et les tests unitaires devraient être exécutés plus fréquemment.
Le framework de tests unitaires de Java est Junit.
Les tests d'interface sont des tests d'API Par rapport à l'automatisation de l'interface utilisateur, l'automatisation des API est plus facile à mettre en œuvre et plus stable dans son exécution.
L'automatisation de l'interface présente les caractéristiques suivantes :
Peut intervenir dès le début du produit, une fois l'interface terminée
La quantité de maintenance du cas d'utilisation est faible
Convient aux projets avec une petite interface changements et changements fréquents d'interface
Common Les outils de test automatisés de l'interface incluent RobotFramework, JMeter, SoapUI, TestNG+HttpClient, Postman, etc.
Bien que la pyramide de tests nous dise de faire autant de tests automatisés de Si possible la couche API, les tests automatisés de la couche UI sont plus proches des exigences des utilisateurs et de l'activité réelle des systèmes logiciels. Et parfois, nous devons effectuer des tests de couche d'interface utilisateur.
Caractéristiques de l'automatisation de l'interface utilisateur :
Une grande quantité de maintenance des cas d'utilisation
La page est très pertinente et doit être intervenue une fois le développement de la page du projet terminé
Les tests d'interface utilisateur conviennent aux projets avec de petits changements d'interface
Il existe de nombreux frameworks de test pour la couche UI, tels que AutoIT pour les tests client Windows, Selenium pour les tests Web, TestPlant, eggPlant, Robot framework, QTP, etc.
Réduisez l'investissement en main-d'œuvre dans les tests de régression provoqués par des changements ou le développement en plusieurs phases de grands systèmes. Cela peut être la tâche la plus importante des tests automatisés, en particulier lorsque les modifications du programme sont fréquentes. L'effet est très évident. Les tests automatisés nécessitent plus de main-d'œuvre au début, mais après être entré dans la période de maintenance, beaucoup de main-d'œuvre peut être économisée. Cependant, dans la phase ultérieure des tests manuels, beaucoup de main-d'œuvre est nécessaire pour les tests de régression
.Réduisez le temps des tests répétés et réalisez des tests de régression rapides
Créez un processus de test efficace et fiable, réduisez les erreurs humaines
Peut exécuter des tests de plus en plus fastidieux
Peut effectuer certains tests difficiles ou impossible de tester manuellement
Meilleure utilisation des ressources
Réutilisabilité des scripts de test
Prérequis pour la mise en œuvre des tests automatisés : les changements de demande sont peu fréquents, le cycle du projet est suffisamment long et le script de test automatisé est reproductible.
Convient aux projets d'automatisation :
Projets de type produit. Pour les projets de type produit, la nouvelle version constitue une amélioration par rapport à l'ancienne version et les fonctionnalités du projet n'ont pas beaucoup changé. Cependant, les nouvelles et anciennes fonctions du projet doivent être testées à plusieurs reprises pour vérifier la régression. L'avantage des tests automatisés réside dans les tests de régression, qui peuvent vérifier efficacement si de nouveaux défauts ont été introduits et si d'anciens défauts ont été corrigés. Dans une certaine mesure, les outils de tests automatisés peuvent être appelés outils de tests de régression.
Tests mécaniques et fréquents. Dans un projet à long terme, les mêmes grandes quantités de données doivent être saisies encore et encore. Comme les tests de compatibilité.
Les projets suivants ne conviennent pas aux tests automatisés :
Projets avec des changements fréquents de demande, les scripts automatisés ne peuvent pas être réutilisés, les coûts de maintenance sont trop élevés et les performances en termes de coûts sont faibles
Le cycle du projet est court , une fois le script d'automatisation compilé Utilisation peu fréquente, performances à faible coût
Projets à forte nature interactive, projets nécessitant une intervention manuelle, l'automatisation ne peut pas être mise en œuvre
Analyse : comprendre globalement le logique du système, analyser l’architecture de base du système.
Conception : Concevoir des cas de test. Les cas de test doivent être suffisamment clairs et clairs, avec une couverture large et précise.
Mise en œuvre : Pour implémenter le script, il y a deux exigences : l'une est une assertion et l'autre. utilisation raisonnable du paramétrage.
Exécution : L'exécution du script est loin d'être aussi simple qu'on l'imaginait. Les anomalies lors de l'exécution du script nécessitent une analyse minutieuse des causes.
Résumé : L'analyse des résultats des tests et le résumé du processus de test sont les clés des tests automatisés.
Maintenance : La maintenance des scripts de tests automatisés est un problème difficile à résoudre mais qui doit être résolu.
Analyse : Analyse approfondie des risques de couverture des cas d'utilisation automatisés et du coût de maintenance des scripts pendant le processus de test automatisé.
Selenium est un cadre de test automatisé basé sur l'interface utilisateur pour les applications Web, prenant en charge plusieurs plates-formes, plusieurs navigateurs et plusieurs langues.
Le premier Selenium RC a été remplacé par l'actuel webDriver. Il peut être simplement compris comme selenium1.0 + webdriver, et l'actuel Selenium2.0. Généralement, nous utilisons le terme « Sélénium » pour désigner Sélénium 2.0. Selenium comprend trois composants : Selenium IDE, Webdriver et Selenium Grid.
Présentons chacun d'entre eux :
Selenium IDE
Selenium IDE est un environnement de développement intégré complet pour les tests Selenium. Il peut enregistrer directement les opérations de l'utilisateur dans le navigateur et lire, modifier et déboguer les scripts de test. Pendant le débogage, vous pouvez parcourir l'exécution ou ajuster la vitesse d'exécution, et afficher le journal en bas pour obtenir des informations sur les erreurs. Les scripts de test enregistrés peuvent être exportés dans plusieurs langages, tels que Java, C#, Python, Ruby, etc., ce qui facilite le fonctionnement des testeurs maîtrisant différents langages. Webdriver
Selenium RC Lors de l'exécution d'applications JavaScript dans un navigateur, il y aura des problèmes de bac à sable environnemental, mais WebDriver peut sortir du bac à sable JavaScript et créer des scripts de test automatisés multiplateformes plus robustes, distribués pour différents navigateurs. Basé sur des liaisons de langage spécifiques (Java, C#, Python, Ruby, Perl, JavaScript, etc.) pour conduire le navigateur à exploiter et valider les éléments Web.
Comment fonctionne le pilote Web :
Après le démarrage du navigateur, Selenium-webdriver liera le navigateur cible à un port spécifique et le navigateur démarré servira de serveur distant du pilote Web.
Le client (c'est-à-dire le script de test) utilise ComandExecutor pour envoyer une requête HTTP au serveur (protocole de communication : The WebDriver Wire Protocol. Dans le corps de la requête HTTP, ce sera une chaîne au format JSON spécifié par le protocole WebDriver Wire. Indiquez à Selenium ce que nous voulons que le navigateur fasse ensuite).
Le côté serveur doit s'appuyer sur des composants natifs du navigateur pour convertir les commandes du service Web en appels natifs du navigateur afin de terminer l'opération.
selenium Grid
selenium Grid est un serveur qui fournit une liste de serveurs accessibles par les instances de navigateur et gère les informations d'enregistrement et d'état de chaque nœud. Différents scripts de test peuvent être exécutés simultanément sur différents serveurs.
Ouvrez Edge-Plug-in-select Selenium IDE :
Créez un nouveau projet à ce moment-là, il y aura un scénario de test sans titre dans la fenêtre de scénario de test sur la gauche. et renommez-le en "test"
Cliquez sur le bouton d'enregistrement (petit point rouge) en haut à droite de l'IDE pour démarrer l'enregistrement manuel
Entrez l'URL à tester telle que http://www.baidu. com dans la barre d’adresse, recherchez des mots-clés et vous pourrez voir que l’opération d’enregistrement IDE a été effectuée.
Cliquez avec le bouton droit sur la page pour ajouter des points de contrôle.
Une fois l'enregistrement terminé, cliquez sur le bouton d'enregistrement (petit point rouge) pour mettre fin à cet enregistrement manuel. Dans Selenium IDE, sélectionnez un scénario de test, cliquez avec le bouton droit et sélectionnez "Exporter en tant que fichier test.py.
Exécutez le script en python et déboguez-le.
# Generated by Selenium IDE import pytest import time import json from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.support import expected_conditions from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.desired_capabilities import DesiredCapabilities class TestTest(): def setup_method(self, method): self.driver = webdriver.Chrome() self.vars = {} def teardown_method(self, method): self.driver.quit() def test_test(self): self.driver.get("https://www.baidu.com/") self.driver.set_window_size(809, 864) self.driver.find_element(By.ID, "kw").click() self.driver.execute_script("window.scrollTo(0,0)") self.driver.find_element(By.ID, "kw").send_keys("四月是你的谎言") self.driver.find_element(By.ID, "su").click()
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!