TestMace. Départ rapide

TestMace. Départ rapide

Salut tout le monde. Nous sortons lentement de l'ombre et poursuivons la série d'articles sur notre produit. Après précédent article de revue, nous avons reçu beaucoup de commentaires (pour la plupart positifs), de suggestions et de rapports de bogues. Aujourd'hui, nous allons montrer Masse d'essai en action et vous pourrez apprécier certaines fonctionnalités de notre application. Pour une immersion plus complète, je vous conseille de vous référer à notre documentation sur http://docs-ru.testmace.com. Alors allons-y!

Installation

Commençons par la banalité. L'application est disponible et actuellement testée sur trois plateformes : Linux, Windows, MacOS. Vous pouvez télécharger le programme d'installation du système d'exploitation qui vous intéresse à partir de notre site. Pour les utilisateurs Linux, il est possible d'installer paquet instantané. On espère vraiment que le Microsoft Store et l'App Store s'en empareront bientôt (Est-ce nécessaire ? Qu'en pensez-vous ?).

Scénario expérimental

Nous avons choisi le scénario standard suivant comme sujet de test :

  • Connexion : utilisateur - administrateur, mot de passe - mot de passe
  • ajouter une nouvelle entrée
  • Vérifions que l'enregistrement a été ajouté correctement

Nous allons tester sur https://testmace-quick-start.herokuapp.com/. C'est normal serveur json, parfait pour tester de telles applications. Nous venons d'ajouter l'autorisation par token à toutes les routes du serveur json et avons créé une méthode de connexion pour recevoir ce token. Nous avancerons progressivement, améliorant progressivement notre projet.

Créer un projet et tenter de créer une entité sans autorisation

Tout d’abord, créons un nouveau projet (Déposez votre dernière attestation ->Nouveau projet). Si vous lancez l'application pour la première fois, un nouveau projet s'ouvrira automatiquement. Tout d'abord, essayons de faire une demande de création d'un nouvel enregistrement (au cas où la création d'enregistrements serait disponible sans autorisation). Sélectionnez des éléments dans le menu contextuel du nœud Projet Ajouter un nœud -> Étape de demande. Définissez le nom du nœud sur créer une publication. En conséquence, un nouveau nœud sera créé dans l'arborescence et un onglet pour ce nœud s'ouvrira. Définissons les paramètres de requête suivants :

TestMace. Départ rapide

Cependant, si nous essayons de répondre à la demande, le serveur renverra un code 401 et sans autorisation nous n'obtiendrons rien sur ce serveur. Eh bien, dans l'ensemble, comme prévu).

Ajouter une demande d'autorisation

Comme déjà dit, nous avons un point de terminaison POST /login, qui prend json comme corps de requête du formulaire : {"username": "<username>", "password": "<password>"}username и password (encore une fois, d'après le paragraphe d'introduction ci-dessus) ont des significations admin и password respectivement. En réponse, ce point de terminaison renvoie json comme {"token": "<token>"}. Nous l'utiliserons pour l'autorisation. Créons Étape de demande nœud avec nom vous connecter, fera office d'ancêtre Projet nœud Par glisser-déposer, déplacer un nœud donné dans l'arborescence plus haut que le nœud créer une publication. Définissons les paramètres suivants pour la requête nouvellement créée :

Exécutons la requête et recevons le deux centième code avec le jeton dans la réponse. Quelque chose comme ça:

TestMace. Départ rapide

Refactoring : supprimer la duplication de domaine

Jusqu'à présent, les requêtes ne sont pas liées dans un seul script. Mais ce n’est pas le seul inconvénient. Si vous regardez attentivement, vous remarquerez qu'au moins le domaine est dupliqué dans les deux requêtes. Pas bon. Il est temps de refactoriser cette partie du futur script, et les variables nous y aideront.

En première approximation, les variables jouent le même rôle que dans d'autres outils et langages de programmation similaires : éliminer la duplication, augmenter la lisibilité, etc. Vous pouvez en savoir plus sur les variables dans notre documentation. Dans ce cas, nous aurons besoin de variables utilisateur.

Définissons une variable au niveau du nœud Projet domain avec un sens https://testmace-quick-start.herokuapp.com. Pour cela vous avez besoin

  • Ouvrez l'onglet avec ce nœud et cliquez sur l'icône de la calculatrice en haut à droite
  • Clique sur le + AJOUTER UNE VARIABLE
  • Entrez le nom et la valeur de la variable
    Dans notre cas, la boîte de dialogue avec la variable ajoutée ressemblera à ceci :

TestMace. Départ rapide

D'ACCORD. Désormais, grâce à l'héritage, nous pouvons utiliser cette variable dans les descendants de n'importe quel niveau d'imbrication. Dans notre cas ce sont des nœuds vous connecter и créer une publication. Pour utiliser une variable dans un champ de texte, vous devez écrire ${<variable_name>}. Par exemple, l'URL de connexion est convertie en ${domain}/login, respectivement pour créer une publication l'URL du nœud ressemblera à ${domain}/posts.

Ainsi, guidés par le principe DRY, nous avons légèrement amélioré le scénario.

Enregistrez le jeton dans une variable

Puisque nous parlons de variables, développons un peu ce sujet. Pour le moment, en cas de connexion réussie, nous recevons du serveur un jeton d'autorisation, dont nous aurons besoin lors des demandes ultérieures. Sauvons ce jeton dans une variable. Parce que la valeur de la variable sera déterminée lors de l'exécution du script, nous utilisons un mécanisme spécial pour cela - variables dynamiques.

Commençons par effectuer une demande de connexion. Dans l'onglet Analysé répondez, déplacez le curseur sur le jeton et dans le menu contextuel (qui s'appelle soit avec le bouton droit de la souris, soit en cliquant sur le bouton ...) sélectionnez l'élément Attribuer à une variable. Une boîte de dialogue apparaîtra avec les champs suivants :

  • Chemin — quelle partie de la réponse est prise (dans notre cas c'est body.token)
  • Valeur actuelle — quelle valeur se trouve le long du chemin (dans notre cas, il s'agit de la valeur du jeton)
  • Nom de variable — nom de la variable où Valeur actuelle sera préservé. Dans notre cas, ce sera token
  • Nœud — dans lequel des ancêtres la variable sera créée Nom de variable. Sélectionnons Projet

La boîte de dialogue terminée ressemble à ceci :

TestMace. Départ rapide

Désormais, chaque fois que le nœud est exécuté vous connecter variable dynamique token sera mis à jour avec la nouvelle valeur de la réponse. Et cette variable sera stockée dans Projet nœud et, grâce à l'héritage, sera disponible pour les descendants.

Pour accéder aux variables dynamiques, vous devez utiliser variable intégrée $dynamicVar. Par exemple, pour accéder à un token stocké, vous devez appeler ${$dynamicVar.token}.

Nous transmettons le jeton d'autorisation dans les requêtes

Dans les étapes précédentes, nous avons reçu le jeton d'autorisation et tout ce que nous devons faire est d'ajouter un en-tête Authorization avec du sens Bearer <tokenValue> dans toutes les demandes nécessitant une autorisation, y compris créer une publication. Il y a plusieurs moyens de le faire:

  1. Copiez manuellement le jeton et ajoutez un en-tête d'autorisation aux demandes qui vous intéressent. La méthode fonctionne, mais son utilisation se limite aux seules requêtes de type « faites et jetées ». Ne convient pas à l'exécution répétée de scripts
  2. Utiliser la fonctionnalité autorisation.
  3. À utiliser en-têtes par défaut

Utiliser la deuxième méthode semble évident, mais dans le cadre de cet article, cette approche est... inintéressante. Eh bien, vraiment : le mécanisme d'autorisation plus moins vous est familier grâce à d'autres outils (même si nous avons des choses comme héritage d'autorisation) et il est peu probable qu'elle soulève des questions.

Une autre chose, ce sont les en-têtes par défaut ! En un mot, les en-têtes par défaut sont des en-têtes HTTP hérités qui sont ajoutés à la requête par défaut, sauf s'ils sont explicitement désactivés. Grâce à cette fonctionnalité, vous pouvez, par exemple, mettre en œuvre une autorisation personnalisée ou simplement vous débarrasser de la duplication dans les scripts. Utilisons cette fonctionnalité pour passer un jeton dans les en-têtes.

Auparavant, nous enregistrions prudemment le jeton dans une variable dynamique $dynamicVar.token au niveau du nœud du projet. Il ne reste plus qu'à faire ce qui suit :

  1. Définir le titre par défaut Authorization avec un sens Bearer ${$dynamicVar.token} au niveau du nœud du projet. Pour ce faire, dans l'interface Projet du nœud, vous devez ouvrir une boîte de dialogue avec les en-têtes par défaut (bouton En-têtes dans le coin supérieur droit) et ajoutez un titre correspondant. La boîte de dialogue avec les valeurs renseignées ressemblera à ceci :
    TestMace. Départ rapide
  2. Désactivez cet en-tête à partir de la demande de connexion. Cela se comprend : au moment de la connexion, nous n'avons pas encore de token et nous allons l'installer avec cette requête. Par conséquent, dans l'interface de connexion de la demande dans l'onglet En-têtes dans la région de Hérité décochez l’en-tête Autorisation.

C'est tout. Désormais, l'en-tête d'autorisation sera ajouté à toutes les demandes qui sont des enfants du nœud Projet, à l'exception du nœud de connexion. Il s'avère qu'à ce stade, nous avons déjà un script prêt et il ne nous reste plus qu'à le lancer. Vous pouvez exécuter le script en sélectionnant Courir dans le menu contextuel du nœud Projet.

Vérifier l'exactitude de la création du message

A ce stade, notre script peut se connecter et, à l'aide d'un jeton d'autorisation, créer une publication. Cependant, nous devons nous assurer que le message nouvellement créé porte le nom correct. Autrement dit, il ne reste plus qu'à procéder comme suit :

  • Envoyer une demande pour recevoir un message par identifiant,
  • Vérifiez que le nom reçu du serveur correspond au nom envoyé lors de la création de la publication

Regardons la première étape. Puisque la valeur de l'identifiant est déterminée lors de l'exécution du script, vous devez créer une variable dynamique (appelons-la postId) à partir du nœud créer une publication au niveau du nœud du projet. Nous savons déjà comment faire, il suffit de vous référer à la section Enregistrez le jeton dans une variable. Il ne reste plus qu'à créer une demande pour recevoir une publication en utilisant cet identifiant. Pour ce faire, créons un RequestStep obtenir-poster avec les paramètres suivants:

  • Type de demande : OBTENIR
  • URL : ${domain}/posts/${$dynamicVar.postId}

Pour mettre en œuvre la deuxième étape, nous devons nous familiariser avec Affirmation noeud. Un nœud Assertion est un nœud qui vous permet d'écrire des contrôles pour des demandes spécifiques. Chaque nœud Assertion peut contenir plusieurs assertions (vérifications). Vous pouvez en savoir plus sur tous les types d'affirmations sur notre documentation. Nous utiliserons Compare assertion avec l'opérateur equal. Il existe plusieurs manières de créer des assertions :

  1. Long. Créez manuellement un nœud Assertion à partir du menu contextuel du nœud RequestStep. Dans le nœud Assertion créé, ajoutez la déclaration d'intérêt et remplissez les champs.
  2. Rapide. Créez un nœud Assertion avec une assertion à partir de la réponse du nœud RequestStep à l'aide du menu contextuel.

Utilisons la deuxième méthode. Voilà à quoi cela ressemblera pour notre cas.

TestMace. Départ rapide

Pour ceux qui ne comprennent pas, voici ce qui se passe :

  1. Faire une requête dans le nœud obtenir-poster
  2. Dans l'onglet Analysé répondre, appelez le menu contextuel et sélectionnez Créer une assertion -> Comparer -> Égal

Félicitations, nous avons créé notre premier test ! Simple, n'est-ce pas ? Vous pouvez maintenant exécuter complètement le script et profiter du résultat. Il ne reste plus qu'à le refactoriser un peu et à le supprimer title dans une variable distincte. Mais nous vous laissons cela comme devoir)

Conclusion

Dans ce guide, nous avons créé un scénario à part entière et en même temps examiné certaines fonctionnalités de notre produit. Bien entendu, nous n'avons pas utilisé toutes les fonctionnalités et dans les articles suivants, nous donnerons un aperçu détaillé des capacités de TestMace. Restez à l'écoute!

PS Pour ceux qui ont la flemme de reproduire toutes les étapes, nous avons gentiment enregistré dépôt avec le projet de l'article. Vous pouvez l'ouvrir avec Déposez votre dernière attestation -> Projet ouvert et sélectionnez le dossier Projet.

Source: habr.com

Ajouter un commentaire