Pourquoi TestMace est meilleur que Postman

Pourquoi TestMace est meilleur que Postman

Bonjour à tous, voilà Masse d'essai! Peut-être que beaucoup de gens nous connaissent grâce à de notre précédent articles. Pour ceux qui viennent de nous rejoindre : nous développons un IDE pour fonctionner avec l'API TestMace. La question la plus fréquemment posée lorsque l'on compare TestMace aux produits concurrents est « En quoi êtes-vous différent de Postman ? » Nous avons décidé qu'il était temps de donner une réponse détaillée à cette question. Ci-dessous, nous avons décrit nos avantages par rapport à Facteur.

Division en nœuds

Si vous travaillez avec Postman, vous savez que l'interface de requête contient toutes les fonctionnalités nécessaires. Il existe des scripts, des tests et, en fait, les requêtes elles-mêmes. Cela rend la tâche plus facile pour les débutants, mais dans les grands scénarios, cette approche n'est pas flexible. Que faire si vous souhaitez créer plusieurs requêtes et effectuer une agrégation sur celles-ci ? Que se passe-t-il si vous souhaitez exécuter un script sans requête ou plusieurs scripts logiquement séparés à la suite ? Après tout, c'est une bonne idée de séparer les tests des scripts utilitaires classiques. De plus, l'approche « ajouter toutes les fonctionnalités dans un seul nœud » n'est pas évolutive : l'interface devient rapidement surchargée.

TestMace divise initialement toutes les fonctionnalités en différents types de nœuds. Vous souhaitez faire une demande ? C'est pour toi étape de la demande nœud Voulez-vous écrire un scénario? C'est pour toi scénario nœud Besoin de tests ? S'il te plaît - Affirmation nœud Oh oui, tu peux toujours envelopper tout ça dans dossier nœud Et tout cela peut être facilement combiné les uns avec les autres. Cette approche est non seulement très flexible, mais aussi, conformément au principe de responsabilité unique, vous permet d'utiliser uniquement ce dont vous avez réellement besoin pour le moment. Pourquoi ai-je besoin de scripts et de tests si je souhaite simplement faire une demande ?

Format de projet lisible par l'homme

Il existe une différence conceptuelle entre TestMace et Postman dans la manière dont ils sont stockés. Dans Postman, toutes les demandes sont stockées quelque part dans le stockage local. S'il est nécessaire de partager des demandes entre plusieurs utilisateurs, vous devez alors utiliser la synchronisation intégrée. En fait, il s’agit d’une approche généralement acceptée, mais non sans inconvénients. Qu’en est-il de la sécurité des données ? Après tout, la politique de certaines entreprises peut ne pas autoriser le stockage de données auprès de tiers. Cependant, nous pensons que TestMace a quelque chose de mieux à offrir ! Et le nom de cette amélioration est « format de projet lisible par l’homme ».

Commençons par le fait que dans TestMace, en principe, il existe une entité « projet ». Et l'application a été initialement développée dans le but de stocker des projets dans des systèmes de contrôle de version : l'arborescence du projet est presque projetée en tête-à-tête sur la structure de fichiers, yaml est utilisé comme format de stockage (sans crochets ni virgules supplémentaires), et le la représentation fichier de chaque nœud est décrite en détail dans la documentation avec commentaires . Mais dans la plupart des cas, vous n’y chercherez pas : tous les noms de champs ont des noms logiques.

Qu'est-ce que cela apporte à l'utilisateur ? Cela vous permet de modifier le flux de travail de l’équipe de manière très flexible, en utilisant des approches familières. Par exemple, les développeurs peuvent stocker un projet dans le même référentiel que le backend. Dans les succursales, en plus de modifier la base de code elle-même, le développeur peut corriger les scripts de requêtes et les tests existants. Après avoir validé les modifications dans le référentiel (git, svn, mercurial - ce que vous préférez), CI (votre favori, non imposé par personne) lance notre utilitaire de console testmace-cli, et le rapport reçu après l'exécution (par exemple, au format junit, qui est également pris en charge dans testmace-cli) est envoyé au système approprié. Et le problème de sécurité mentionné ci-dessus n’est plus un problème.

Comme vous pouvez le constater, TestMace n'impose pas son écosystème et son paradigme. Au lieu de cela, il s’intègre facilement dans les processus établis.

Variables dynamiques

TestMace suit le concept sans code : si un problème peut être résolu sans utiliser de code, nous essayons de fournir cette opportunité. Travailler avec des variables est exactement le genre de fonctionnalité pour laquelle, dans la plupart des cas, vous pouvez vous passer de programmation.

Exemple : nous avons reçu une réponse du serveur et nous souhaitons enregistrer une partie de la réponse dans une variable. Dans Postman, dans un script de test (ce qui est étrange en soi), nous écrivions quelque chose comme :

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", jsonData.data);

Mais à notre avis, écrire un script pour un scénario aussi simple et fréquemment utilisé semble redondant. Par conséquent, dans TestMace, il est possible d'attribuer une partie de la réponse à une variable à l'aide de l'interface graphique. Regardez comme c'est simple :

Pourquoi TestMace est meilleur que Postman

Et maintenant, à chaque demande, cette variable dynamique sera mise à jour. Mais vous pouvez objecter, arguant que l'approche Postman est plus flexible et vous permet non seulement d'effectuer une mission, mais également d'effectuer un prétraitement. Voici comment modifier l'exemple précédent :

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", CryptoJS.MD5(jsonData.data));

Eh bien, dans ce but, TestMace a scénario nœud, qui couvre ce scénario. Afin de reproduire le cas précédent, mais déjà exécuté par TestMace, il faut créer un nœud de script suite à la requête et utiliser le code suivant comme script :

const data = tm.currentNode.prev.response.body.data;
tm.currentNode.parent.setDynamicVar('data', crypto.MD5(data));

Comme vous pouvez le constater, la composition des nœuds a également été utile ici. Et pour un cas aussi simple que celui décrit ci-dessus, vous pouvez simplement attribuer l'expression ${crypto.MD5($response.data)} variable créée via l'interface graphique !

Création de tests via l'interface graphique

Postman vous permet de créer des tests en écrivant des scripts (dans le cas de Postman, il s'agit de JavaScript). Cette approche présente de nombreux avantages : flexibilité quasi illimitée, disponibilité de solutions toutes faites, etc.

Cependant, la réalité est souvent telle (nous ne sommes pas comme ça, la vie est comme ça) qu'un testeur n'a pas de compétences en programmation, mais il aimerait dès maintenant apporter du bénéfice à l'équipe. Pour de tels cas, suivant le concept sans code, TestMace vous permet de créer des tests simples via une interface graphique sans recourir à l'écriture de scripts. Voici, par exemple, à quoi ressemble le processus de création d'un test qui compare les valeurs d'égalité :

Pourquoi TestMace est meilleur que Postman

Cependant, créer des tests dans un éditeur graphique n'élimine pas la possibilité écrire des tests en code. Toutes les mêmes bibliothèques sont ici que dans le nœud de script, et chai pour les tests d'écriture.

Des situations surviennent souvent lorsqu'une certaine requête ou même un script entier doit être exécuté plusieurs fois dans différentes parties du projet. Un exemple de telles demandes pourrait être une autorisation personnalisée en plusieurs étapes, amenant l'environnement à l'état souhaité, etc. De manière générale, en termes de langages de programmation, nous aimerions avoir des fonctions qui puissent être réutilisées dans différentes parties de l'application. Dans TestMace, cette fonction est exécutée par lien nœud C'est très simple à utiliser :
1) créer une requête ou un script
2) créer un nœud de type Link
3) dans les paramètres, précisez un lien vers le script créé dans la première étape

Dans une version plus avancée, vous pouvez spécifier quelles variables dynamiques du script sont transmises à un niveau supérieur par rapport au lien. Cela semble déroutant ? Disons que nous avons créé un dossier avec le nom créer une publication, au sein duquel une variable dynamique est affectée à ce nœud postId. Maintenant dans le nœud Lien créer-post-lien vous pouvez spécifier explicitement que la variable postId attribué à un ancêtre créer-post-lien. Ce mécanisme (encore une fois, en langage de programmation) peut être utilisé pour renvoyer le résultat d'une « fonction ». En général, c'est cool, DRY bat son plein et encore une fois, aucune ligne de code n'a été endommagée.

Pourquoi TestMace est meilleur que Postman

Quant à Postman, il existe une demande de fonctionnalité permettant de réutiliser les requêtes suspendu depuis 2015, et il semble qu'il y ait même quelques conseilsqu'ils travaillent sur ce problème. Dans sa forme actuelle, Postman a bien sûr la capacité de changer le fil d'exécution, ce qui en théorie permet probablement de mettre en œuvre un comportement similaire, mais il s'agit plus d'un sale hack que d'une approche véritablement efficace.

Autres différences

  • Un meilleur contrôle sur la portée des variables. La plus petite portée dans laquelle une variable peut être définie dans Postman est la collection. TestMace vous permet de définir des variables pour n'importe quelle requête ou dossier. Dans Postman Share, la collection vous permet d'exporter uniquement des collections, tandis que dans TestMace, le partage fonctionne pour n'importe quel nœud.
  • TestMace prend en charge en-têtes héritables, qui peut être remplacé par défaut dans les requêtes enfants. Le facteur a quelque chose à ce sujet : défi, et c'est même fermé, mais c'est proposé comme solution... utiliser des scripts. Dans TestMace, tout cela est configuré via l'interface graphique et il existe une option permettant éventuellement de désactiver les en-têtes hérités dans des descendants spécifiques.
  • Défaire refaire. Fonctionne non seulement lors de l'édition de nœuds, mais également lors du déplacement, de la suppression, du renommage et d'autres opérations qui modifient la structure du projet
  • Les fichiers joints aux requêtes font partie du projet et sont stockés avec celui-ci, tout en étant parfaitement synchronisés, contrairement à Postman. (Oui, vous n'avez plus besoin de sélectionner manuellement les fichiers à chaque démarrage et de les transférer à des collègues dans les archives)

Des fonctionnalités déjà en route

Nous n’avons pas pu résister à la tentation de lever le voile du secret sur les prochaines versions, surtout lorsque la fonctionnalité est très savoureuse et est déjà en cours de peaufinage avant la sortie. Alors, rencontrons-nous.

fonctions

Comme vous le savez, Postman utilise des variables dites dynamiques pour générer des valeurs. Leur liste est impressionnante et la grande majorité des fonctions sont utilisées pour générer de fausses valeurs. Par exemple, pour générer un email aléatoire, vous devez écrire :

{{$randomEmail}}

Cependant, comme ce sont des variables (quoique dynamiques), elles ne peuvent pas être utilisées comme fonctions : elles ne sont pas paramétrables, il ne sera donc pas possible de prélever un hachage sur une chaîne.

Nous prévoyons d'ajouter des fonctions « honnêtes » à TestMace. Juste à l’intérieur de ${}, il sera possible non seulement d’accéder à une variable, mais aussi d’appeler une fonction. Ceux. si vous avez besoin de générer le fameux faux email, nous vous écrirons simplement

${faker.internet.email()}

Outre le fait qu’il s’agit d’une fonction, vous remarquerez qu’il est possible d’appeler une méthode sur un objet. Et au lieu d’une grande liste plate de variables dynamiques, nous avons un ensemble d’objets regroupés logiquement.

Et si nous voulons calculer le hachage d’une chaîne ? Facilement!

${crypto.MD5($dynamicVar.data)}

Vous remarquerez que vous pouvez même passer des variables en paramètres ! À ce stade, un lecteur curieux peut soupçonner que quelque chose ne va pas…

Utiliser JavaScript dans les expressions

... Et pour une bonne raison! Lorsque les exigences relatives aux fonctions ont été définies, nous sommes soudainement arrivés à la conclusion qu'un javascript valide devait être écrit dans des expressions. Alors maintenant, vous êtes libre d’écrire des expressions telles que :

${1 + '' + crypto.MD5('asdf')}

Et tout cela sans scripts, directement dans les champs de saisie !

Quant à Postman, ici vous ne pouvez utiliser que des variables, et lorsque vous essayez d'écrire la moindre expression, le validateur maudit et refuse de la calculer.

Pourquoi TestMace est meilleur que Postman

Saisie semi-automatique avancée

Actuellement, TestMace a une saisie semi-automatique standard qui ressemble à ceci :

Pourquoi TestMace est meilleur que Postman

Ici, en plus de la ligne de saisie semi-automatique, il est indiqué à quoi appartient cette ligne. Ce mécanisme ne fonctionne que dans les expressions entourées de crochets ${}.

Comme vous pouvez le constater, des marqueurs visuels ont été ajoutés pour indiquer le type de variable (par exemple, chaîne, nombre, tableau, etc.). Vous pouvez également modifier les modes d'auto-complétion (par exemple, vous pouvez sélectionner l'auto-complétion avec des variables ou des en-têtes). Mais même ce n’est pas le plus important !

Premièrement, la saisie semi-automatique fonctionne même dans les expressions (si possible). Voici à quoi cela ressemble :

Pourquoi TestMace est meilleur que Postman

Et deuxièmement, la saisie semi-automatique est désormais disponible dans les scripts. Jetez un œil à comment cela fonctionne !

Pourquoi TestMace est meilleur que Postman

Cela n'a aucun sens de comparer cette fonctionnalité avec Postman - l'auto-complétion y est limitée uniquement aux listes statiques de variables, d'en-têtes et de leurs valeurs (corrigez-moi si j'ai oublié quelque chose). Les scripts ne sont pas complétés automatiquement :)

Conclusion

Octobre a marqué le premier anniversaire du début du développement de nos produits. Pendant ce temps, nous avons réussi à faire beaucoup de choses et, à certains égards, à rattraper nos concurrents. Quoi qu'il en soit, notre objectif est de créer un outil vraiment pratique pour travailler avec les API. Il nous reste encore beaucoup de travail à faire, voici un plan approximatif de développement de notre projet pour l'année à venir : https://testmace.com/roadmap.

Vos commentaires nous permettront de mieux naviguer dans l’abondance de fonctionnalités, et votre soutien nous donne la force et la confiance que nous faisons la bonne chose. Il se trouve qu'aujourd'hui est un jour important pour notre projet : le jour où TestMace a été publié le ProductHunt. S'il vous plaît, soutenez notre projet, c'est très important pour nous. De plus, il y a aujourd'hui une offre alléchante sur notre page PH, et elle est limitée.

Source: habr.com

Ajouter un commentaire