Prise en main de l'API Automation: Partie 1 - Présentation

Traduction de Shashi Kumar Raja


Donc, disons que vous voulez faire de l'automatisation API, mais chaque fois que vous tapez le meilleur outil d'automatisation api dans la barre de recherche Google, vous voyez tellement de liens vers les 10 meilleurs outils que vous vous trompez et décidez que vous le ferez certainement demain




Commençons par comprendre ce dont nous avons besoin si nous voulons mettre en place (espérons-le demain) une plate-forme d'automatisation d'API . Tenez cette pensée pendant une seconde ... J'ai dit, arrêtez de penser ... Je sais que votre patron n'attribue pas un centime pour les outils payés . Ecoute, je lis dans ton esprit, ne pense pas à haute voix



Les outils payants doivent être suspendus, pas exécutés :)


1. où diable dois-je commencer à écrire des tests?

Vous aurez besoin de quelque chose qui vous fournira des ensembles de règles et de directives pour la rédaction des tests, et vous permettra également de le faire en vous donnant accès à plusieurs outils et techniques. J'entends une cloche sonner, non !!! Eh bien, je sais ce que fera une cloche.


Avez-vous déjà entendu parler de TESTNG , JUNIT , MOCHA , PYTEST , ROBOT !? Oui, ce sont tous des environnements d'automatisation de test.


Vous devez trouver le bon environnement de test en fonction de vos besoins: quelle pile technologique existante votre entreprise utilise-t-elle? Quelle automatisation voulez-vous faire? Quelle langue vous convient le mieux, etc. Vous trouverez un environnement d'automatisation dans les langages les plus populaires qui vous permettra d'écrire des tests unitaires, fonctionnels et autres types de tests d'API.


Pour en savoir plus sur l'environnement de test, reportez-vous à la partie 2 de la série, où j'ai présenté Mocha et Pytest en détail .


2. Comment vais-je faire des appels d'API dans un environnement de test?

La plupart de ces plates-formes prennent en charge les appels d'API, y compris la bibliothèque de requêtes HTTP , car les API REST utilisent le protocole HTTP pour la communication.


Certains frameworks, tels que mocha , vous donnent la liberté d'utiliser la bibliothèque de requêtes HTTP de votre choix, comme superagent .


  <code class = "lang-JS"> demande
   .post ('/ api / pet')
   .send ({nom: 'Manny', espèce: 'cat'}) // envoie un corps de message JSON
   .set ('X-API-Key', 'foobar')
   .set ('accepter', 'json')
   .end ((err, res) => {
     // L'appel de la fonction de fin enverra la requête
   });
 </code> 

Ils vous offrent un support facile pour GET, PUT, POST, DELETE et toutes les autres méthodes. Vous pouvez passer les en-têtes, le cache, les paramètres de requête, vous l'avez appelé - vous l'avez compris


3. Cool, mais certaines de mes API donnent JSON et d'autres donnent XML en réponse, comment puis-je gérer cela?

La plupart de ces bibliothèques de requêtes HTTP vous permettent d'envoyer et de recevoir des données au format JSON, XML, CSV, texte, image, données de formulaire, données codées avec plusieurs normes d'autorisation prises en charge.


Ils vous permettent également de traiter le code d'état de réponse HTTP et de vérifier si nous avons reçu le code d'état de réponse requis ou non.


  • Codes de réponse informationnelle (1xx)
    100 - Continuer
    101 - Changer de protocole
    102 - Traitement

  • Codes de réponse de réussite (2xx)
    200 - OK 206 - Contenu partiel
    201 - Créé 207 - Multi-statuts
    202 - Accepté 208 - Déjà signalé
    203 - Info sans autorité 226 - IM utilisé
    204 - Pas de contenu 250 - Espace de stockage faible
    205 - Réinitialiser le contenu

  • Codes de réponse de redirection (3xx)
    300 - Choix multiples 304 - Non modifié
    301 - Déplacé de façon permanente 305 - Utiliser un proxy
    302 - trouvé 307 - Redirection temporaire
    303 - Voir autres 308 - Redirection permanente

  • Codes de réponse d'erreur client (4xx)
    400 - Choix multiples 410 - Non modifié
    401 - Déplacé en permanence 411 - Utiliser un proxy
    402 - trouvé 412 - redirection temporaire
    403 - Voir autre 413 - Redirection permanente
    404 - Choix multiples 414 - Non modifié
    405 - Déplacé définitivement 415 - Utiliser un proxy
    406 - trouvé 416 - Redirection temporaire
    407 - Voir autre 417 - Redirection permanente
    408 - trouvé 418 - Redirection temporaire
    409 - Voir les autres

  • Codes de réponse aux erreurs du serveur (5xx)
    500 - Erreur de serveur interne 508 - Boucle détectée
    501 - Non implémenté 509 - Bande passante limitée
    502 - Bad Gateway 510 - Non étendu
    503 - Service non disponible 511 - Autorisation réseau requise
    504 - Délai d'expiration de la passerelle 550 - Autorisation refusée
    505 - HTTP Ver non pris en charge 551 - Option non prise en charge
    506 - La variante négocie également 598 - Erreur de délai d'attente de lecture à New York
    507 - Stockage insuffisant 599 - Erreur de délai de connexion réseau

4. Bien, mais comment vais-je traiter les données de test?

Cela dépend d'où vous obtenez les données de test. Ces frameworks de test vous permettront d'utiliser toutes les fonctionnalités du langage dans lequel ils sont basés -


a. Base de données: vous pouvez facilement créer des connexions à la base de données pour lire les données.


b. Fichier externe: vous pouvez lire du texte externe, JSON, CSV ou tout autre fichier.


c. Données aléatoires: vous pouvez utiliser des bibliothèques comme faker pour générer des données de test aléatoires à la volée.


  <code> var faker = require ('faker');

 var randomName = faker.name.findName ();  // Rowan Nikolaus
 var randomEmail = faker.internet.email ();  // Kassandra.Haley@erich.biz
 var randomCard = faker.helpers.createCard ();  // carte de contact aléatoire contenant de nombreuses propriétés
 </code> 

d. Données de la réponse de l'API: Plusieurs fois pendant le test, vous devrez transmettre la réponse d'une API en tant que données de demande à une autre. Vous pouvez le faire en utilisant des hooks . Vous obtiendrez des fonctions comme Avant, Avant chaque, Après, Après chaque , qui, comme son nom l'indique, sont exécutées avant / après tout ou partie des tests. Appelez API1 avant API2 et transmettez sa réponse à API2. Parfait! ️


5. Le traitement des données de test et les appels d'API semblent simples, mais comment vais-je vérifier les réponses d'API?

Pour vérifier les réponses, vous aurez besoin d'une bibliothèque appelée bibliothèque d'assertions . De nombreux environnements de test sont fournis avec des bibliothèques d'assertions, ce qui vous permet d'écrire des assertions en anglais simple, comme la syntaxe. Ils vous permettent également de vérifier le schéma JSON de votre réponse.


Dans mocha, vous pouvez utiliser n'importe quelle bibliothèque d'assertions, par exemple, chai .


  <code> response.status.should.equal (200)
 foo.should.be.a ('chaîne');
 foo.devrait.avoir.longueurOf (3);
 tea.should.have.property ('flavors')
   .avec.longueurOf (3);
 </code> 

6. Incroyable !!! Il restait un peu, après tous ces tests, de montrer à mon patron ce que j'ai fait et où j'ai trouvé des problèmes?

La plupart de ces frameworks vous fourniront un rapport de base de test HTML que vous pourrez télécharger et partager. Si vous avez besoin de rapports plus beaux avec des graphiques et des tableaux, vous pouvez utiliser plusieurs outils de rapport open source tels que allure ou mochawesome .



7. Seulement si je pouvais obtenir une sorte de modèle avec ces choses pour démarrer l'automatisation de l'API maintenant

Qu'est-ce que je t'ai dit, tu l'as appelé, tu as


Il s'agit du modèle que j'ai créé pour automatiser l'API à l'aide de mocha dans node.js.


Il comprend-


  • Cadre de test (mocha),
  • Bibliothèque de requêtes HTTP (supertest),
  • Bibliothèque d'assertions (chai),
  • Journaliste (allure),
  • enregistreur (winston),
  • Générateur de données aléatoires (faker),
  • Support Eslint et
  • validation de chaîne coquine intégrée . Tout ce que vous avez à faire est de le cloner / le télécharger et vous êtes prêt à partir.

Si vous avez besoin d'un modèle dans une autre langue, je peux le préparer pour demain.


Si vous avez aimé cet article, vous pouvez applaudir , cela me fera probablement écrire plus

Source: https://habr.com/ru/post/fr433726/


All Articles