L'utilisation de SoapUI au Selenium pour les tests de services Web

⚡ Résumé intelligent

SoapUI au Selenium permet à une suite logicielle de vérifier un service web et le navigateur qui le consomme. Groovy est le pont, parce que SoapUI fonctionne Groovy nativement et Groovy atteint chaque Java bibliothèque math Selenium navires.

  • (I.e. Deux outils, deux couches : SoapUI exerce le point de terminaison SOAP ou REST, tandis que Selenium WebDriver pilote le navigateur qui l'appelle.
  • ☑️ Groovy est la colle : SoapUI supports Groovy de manière approfondie, et Groovy porte le tout Java ensemble de bibliothèque, donc Selenium Le code s'exécute sans modification.
  • ✅ Classe de coureur : SoapUITestCaseRunner ouvre un fichier de projet, sélectionne une suite de tests et un cas de test, puis l'exécute. Java.
  • 🧪 Données dynamiques : La fonction setProjectProperties() transmet des valeurs telles que la ville et le code postal au moment de l'exécution plutôt qu'à partir d'un fichier de propriétés statique.
  • ️ Pré-requis : Le Groovy SDK, un JDK, Selenium et SoapUI Tous ces éléments doivent être installés avant la première exécution.
  • (I.e. Piste de preuves : Chaque action est consignée dans le fichier soapui.log situé dans le dossier bin du répertoire d'installation.

L'utilisation de SoapUI au Selenium pour les tests de services Web via Groovy

SoapUI est la source ouverte la plus populaire test fonctionel outil pour Test d'API. Il fournit complet Couverture de test et prend en charge tous les protocoles et technologies standard.

Qu'est-ce que le SAVON ?

SOAP Il s'agit d'un protocole simple basé sur XML. Il permet aux applications d'échanger des informations via HTTP. Il utilise les services Web. DescriptLe langage WSDL (Width, WebSocket Language) permet la communication, et d'autres applications peuvent interagir avec services Web via cette interface WSDL.

Services Web SOAP vs REST SoapUI

SoapUI Conçu initialement comme client SOAP, et son nom l'indique toujours, il teste également les points de terminaison REST. Le style de test choisi détermine sa conception.

Aspect SOAP REST
Contrat Un fichier WSDL décrit chaque opération, donc SoapUI peut générer des requêtes automatiquement. Généralement, une définition OpenAPI ou Swagger, ou aucune configuration formelle.tracpas du tout.
Format du message Enveloppe XML uniquement. Le format JSON est le plus courant, mais XML et d'autres formats sont également autorisés.
Transports Le plus souvent HTTP, mais SOAP est indépendant du protocole de transport. HTTP, avec la méthode et URL porteur de l'intention.
Assertions dans SoapUI XPath et XQuery correspondent à l'enveloppe de la réponse. Les assertions JSONPath et de script correspondent à la charge utile.
Utilisation typique Banque, télécommunications et autres secteurs contracIntégrations d'entreprise complexes. Services publics et mobiles où la charge utile reste légère.

La procédure détaillée ci-dessous utilise un service météo SOAP, mais la même classe d'exécution gère un cas de test REST sans aucune modification. Java code.

Qu’est-ce que SOAPUI ?

SOAPUI SOAPUI est un outil de test de services web multiplateforme et open source. L'édition SOAPUI-Pro offre des fonctionnalités supplémentaires pour les entreprises gérant des services web critiques. Les services web jouent un rôle essentiel dans les applications internet.

⚠️ Note sur le nom du produit : SmartBear a cessé ses activités. SoapUI Pro en tant que produit autonome et l'a fusionné, avec LoadUI Pro et ServiceV Pro, dans ReadyAPIL'édition gratuite conserve le SoapUI nom et est toujours activement publié. Les étapes ci-dessous fonctionnent dans les deux cas, et existant SoapUI projets ouverts dans ReadyAPI.

Qu'est-ce que le Selenium?

Selenium Il ne s'agit pas d'un programme unique, mais d'une famille d'outils permettant de piloter un navigateur comme le ferait un humain. Deux éléments sont particulièrement importants ici :

  • Selenium — un outil de test qui automatise les navigateurs sur de nombreuses plateformes.
  • Selenium pilote web — il effectue des appels directs aux navigateurs, en utilisant la prise en charge native de l'automatisation propre à chaque navigateur.

Pourquoi combiner SoapUI et Selenium en un seul test

La vérification du service et celle de l'écran sont généralement deux tâches distinctes, gérées par deux suites logicielles différentes. C'est pourquoi un défaut à l'interface entre elles a tendance à affecter les deux. Les exécuter simultanément permet de combler cet écart.

  • Prouvez le trajet aller-retour. Une réservation effectuée via le navigateur doit apparaître dans la réponse du service. Seul un test combiné permet de vérifier les deux aspects.
  • Configurer rapidement l'état. Créer un client via l'API prend une seconde ; remplir un formulaire à travers douze champs prend une minute et échoue plus souvent.
  • Localiser une panne. Lorsque l'interface utilisateur affiche un total incorrect, l'assertion de l'API lors de la même exécution vous indique immédiatement si le problème vient du service ou de la page.
  • Réutiliser un seul ensemble de données. Les paires code postal/ville de l'exemple ci-dessous alimentent l'appel de service et pourraient tout aussi bien alimenter les assertions du navigateur.
  • Supprimer les doublons. Les règles de validation déjà éprouvées au niveau du service ne nécessitent pas systématiquement un test lent dans un navigateur.

En contrepartie, les tests sont plus exigeants : deux outils, deux ensembles de dépendances et une durée d’exécution plus longue. Il convient de réserver les tests combinés aux rares cas où les deux scénarios se situent réellement à la frontière entre les deux, et de laisser les autres en tests séparés. API ou de simples vérifications du navigateur.

Selenium au SoapUI

La manière la plus simple et la plus facile d'intégrer Selenium au SoapUI consiste à utiliser Groovy, Qui SoapUI soutient largement.

Groovy est un langage de script orienté objet qui inclut tous les Java bibliothèques, donc chaque Java Les mots-clés et les fonctions peuvent être utilisés dans un Groovy script directement. Il s'exécute sur la JVM (Java Machine virtuelle), ce qui permet une Groovy entrer SoapUI , l’aspect économique Java Selenium test pour partager les mêmes classes.

Conditions préalables à l'utilisation Selenium au SoapUI

Installez les éléments suivants avant d'écrire du code :

⚠️ Note de version : Groovy La version 5.0 est la version stable actuelle et nécessite JDK 11 ou une version ultérieure. Installez donc d'abord le JDK et laissez le système s'installer. Groovy la version suit. Selenium est ajouté à un Java projet en tant que Maven ou Gradle dépendance plutôt que sous forme de dossier téléchargé, et le SoapUI Le fichier jar doit se trouver dans le même classpath que votre test — c'est à ce point précis que la plupart des premières tentatives échouent.

Appeler le SoapUI Exécuteur de cas de test dans Selenium

Le code ci-dessous appelle une fonction SoapUI Cas de test. Il définit les propriétés d'une ville et de son code postal correspondant, puis, lors de son exécution, récupère la valeur de chaque ville et code postal, et affiche le nombre d'erreurs pour chaque paire ne correspondant pas. Ce code s'exécute dans Selenium.

À noter: L'option `usePropertyFileFlag=true` est utilisée ici au lieu d'un fichier de propriétés statique pour stocker le code postal et la ville. Ces informations sont transmises dynamiquement à l'exécution par la méthode `setProjectProperties()`.

Instructions pour exécuter le code :

  1. Commencez SoapUI.
  2. Démarrer un nouveau cas de test.
  3. Ajouter un nouveau Groovy étape.
  4. Copiez et collez l'exemple de code dans l'étape.
  5. Cliquez sur Jouer.
  6. Vous pouvez voir Firefox démarrage et navigation vers GoogleEnsuite, vous pourrez voir le SoapUI Entrées du journal.
  7. Le code s'exécute en utilisant JUnit.

Code Exemple

@when("<I use the weather service to get the weather information")						
    public void i_use_the_weather_service_to_get_the_information() {
        Set<Entry<String, string>> set = zipAndCities.entrySet();
        while (iterator,hasNext)) {
            Entry<String, String> entry = iterator.next();
            String zipCode = entry.getkey();
            String city = entry.getValue();
            String[] prop = {"usePropertyFileFlag=true","zipCode=" +zipCode, "city=" +city};									
            
            try{
                SoapUITestCaseRunner soapUITestCaseRunner = new	SoapUITestCaseRunner();
                soapUITestCaseRunner.setProjectFile("src/test/resources/WeatherSoapTest-soapui-project.xml");					
                soapUITestCaseRunner.setProjectProperties(prop);
                soapUITestCaseRunner.setTestSuite("TestSuite1");
                soapUITestCaseRunner.setTestCase("TestCase1");
                soapUITestCaseRunner.run();
                
            } catch (Exception e) {
                System.err.println("checking" + zipCode + " failed!");
                failureCount++;
                zipCodes.append(zipCode + " [" + city +"] ");
                e.printStackTrace();
            }finally{					
                totalCount++;
            }
}
}
}

⚠️ Code Notes: Ce fragment de code est reproduit tel que publié et ne constitue pas une classe compilable. Avant de pouvoir le compiler, vous devez déclarer l'itérateur obtenu à partir de ensemble.itérateur(), correct tant que (itérateur, aSuivant)) à tant que (iterator.hasNext()) et entrée.getkey() à entrée.getKey(), mettez en majuscule l'annotation comme @Quand, supprimez le caractère parasite au début du texte de l'étape et utilisez Chaîne plutôt que des string dans la déclaration Set. Le texte original est conservé afin que l'exemple publié reste intact.

La vue console vous permet de jeter un coup d'œil à tout. cas de tests exécuté. Vous trouverez une liste des codes postaux et des villes récupérés et transmis à SoapUI Cas de test 1.

Consultation SoapUI Fichier journal

Les fichiers journaux enregistrent chaque action qui se produit dans un système d'exploitation ou une application logicielle. Pour consulter les journaux, SoapUI Pour accéder au fichier journal, rendez-vous dans le répertoire principal où vous trouverez un fichier nommé soapui.log.

SoapUI Liste du répertoire d'installation avec le fichier soapui.log visible

In SoapUILe fichier journal se trouve dans le dossier bin du répertoire d'installation, par exemple C:\Program Files\SmartBear\soapUI-Pro-4.0.1\bin. Lors d'une installation récente, le dossier de version peut varier. ReadyAPI L'installation écrit dans son propre dossier bin.

dossier bin du SoapUI répertoire d'installation où est stocké le fichier journal

Lorsque vous ouvrez ce fichier journal en cliquant dessus, il ressemblera à la capture d'écran ci-dessous.

Contenu du fichier soapui.log affichant les entrées d'exécution de test enregistrées

Destination SoapUI et Selenium L'intégration se brise fréquemment

À ce stade, la quasi-totalité des pannes est due à un problème de câblage plutôt qu'à un problème de test. Ce sont donc les éléments à vérifier en premier.

Symptôme Cause probable Que vérifier
Erreur NoClassDefFoundError ou ClassNotFoundException sur SoapUITestCaseRunner Le SoapUI Le fichier jar ne figure pas dans le classpath de test. Ajoutez le SoapUI dépendance au fichier de construction, ou pointer le classpath vers le fichier jar dans le SoapUI Dossier lib. Un fichier jar manquant apparaît comme un problème ordinaire. Selenium exception dans la console.
Le fichier projet est introuvable. La fonction setProjectFile() résout un chemin relatif par rapport au répertoire de travail, qui diffère entre un IDE et un outil de construction. Exécutez-le depuis la racine du projet ou indiquez un chemin absolu.
Suite de tests ou cas de test introuvable Les noms dans setTestSuite() et setTestCase() doivent correspondre exactement au projet. Copiez les noms directement depuis le SoapUI Arborescence du projet ; elles sont sensibles à la casse.
La propriété n'atteint jamais la demande La fonction setProjectProperties() s'est exécutée après run(), ou la requête ne fait pas référence à la propriété. Définissez chaque propriété avant run() et utilisez la syntaxe des espaces réservés aux propriétés à l'intérieur de la requête.
Le navigateur ne démarre pas. Le pilote et le navigateur installé sont des versions majeures différentes. Laisser nous Selenium Le gestionnaire résout le problème du pilote ou associe le pilote à la version du navigateur.
Une fonctionnalité fonctionne dans l'IDE mais pas depuis l'exécuteur. Cette étape repose sur une fonctionnalité réservée aux professionnels, telle qu'une source de données. Vérifiez la licence ou reconstruisez l'étape avec des équivalents open source.

Une fois que le processus s'arrête correctement et que soapui.log affiche les entrées attendues, l'intégration est fonctionnelle et peut être intégrée à un système plus large. tests d'automatisation suite.

FAQ

L'édition open-source fonctionne Groovy Il décrit les étapes et expose l'exécuteur de cas de test, de sorte que l'intégration elle-même ne nécessite aucune licence. Pro ou ReadyAPI Des fonctionnalités telles que les sources de données et l'assistant basé sur les données sont les éléments qui ne fonctionneront pas sans lui.

Oui, et c'est l'image miroir de cette procédure pas à pas. Groovy Cette étape peut instancier directement un WebDriver, à condition que Selenium Les bocaux sont placés dans le SoapUI Le dossier lib permet au script de les résoudre.

SoapUI exécute Groovy nativement dans une étape de script, sans cycle de compilation, et Groovy atteint chaque Java classe déjà présente dans le classpath. Plain Java nécessite une étape de construction, c'est pourquoi Groovy Victoires pour un code d'intégration court.

Enveloppez-le comme un JUnit or TestNG tester et laisser Maven ou Gradle invoquez-le, exactement comme dans l'exemple. Sur l'agent, le navigateur doit s'exécuter en mode sans interface graphique, et le SoapUI Le fichier projet doit être validé en même temps que le code de test.

Les assistants sont utiles pour étendre la couverture d'un petit ensemble de paires ville/code postal et pour repérer les champs de réponse non pris en compte par les assertions. Les valeurs générées nécessitent toujours une vérification, car un code postal plausible n'est pas forcément valide.

Oui, dans certaines limites. Copilot gère Groovy syntaxe et commune Java Il passe bien les appels, mais il a peu de connaissances sur SoapUI Les objets de script tels que testRunner, context et log nécessitent donc un examen approfondi de ces suggestions.

Stockez-les comme variables d'environnement ou dans un gestionnaire de secrets et lisez-les dans les propriétés du projet à l'exécution, selon le même mécanisme que celui utilisé ici par `setProjectProperties()`. Un fichier de projet validé contenant un mot de passe en clair représente une faille de sécurité potentielle.

Conservez les vérifications au niveau du protocole (état, schéma, XPath sur l'enveloppe) à l'intérieur. SoapUI, où l'outillage est conçu pour eux. Affirmez dans le Selenium Tester uniquement ce que le navigateur lui-même doit afficher, de sorte qu'une défaillance signale un problème à une seule couche.

Résumez cet article avec :