{"id":54188,"date":"2019-12-20T00:00:00","date_gmt":"2019-12-19T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/chem-testmace-luchshe-postman"},"modified":"2020-02-18T14:02:10","modified_gmt":"2020-02-18T11:02:10","slug":"chem-testmace-luchshe-postman","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/news\/chem-testmace-luchshe-postman","title":{"rendered":"Pourquoi TestMace est meilleur que Postman.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Pourquoi TestMace est meilleur que Postman.\" src=\"\/wp-content\/uploads\/2019\/12\/4b61986c287c32a4cefeb2f805fc228f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Bonjour \u00e0 tous, ici <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace.com\/\">TestMace<\/a><\/noindex>! Il est possible que beaucoup d'entre vous nous connaissent gr\u00e2ce \u00e0 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458372\/\">nos<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/462585\/\">pr\u00e9c\u00e9dentes<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458964\/\">articles<\/a><\/noindex>. Pour ceux qui viennent de se connecter : nous d\u00e9veloppons un IDE pour travailler avec l'API TestMace. La question la plus fr\u00e9quemment pos\u00e9e lors de la comparaison de TestMace avec des produits concurrents est : \u00ab En quoi vous diff\u00e9renciez-vous de Postman ? \u00bb. Nous avons d\u00e9cid\u00e9 qu'il \u00e9tait temps de fournir une r\u00e9ponse d\u00e9taill\u00e9e \u00e0 cette question. Ci-dessous, nous avons \u00e9num\u00e9r\u00e9 nos avantages par rapport \u00e0 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.getpostman.com\/\">Postman<\/a><\/noindex>.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2 id=\"razdelenie-na-uzly\">Division en n\u0153uds<\/h2>\n<p><\/p>\n<p>Si vous travaillez avec Postman, vous savez que l'interface de requ\u00eate contient toutes les fonctionnalit\u00e9s n\u00e9cessaires. Il y a des scripts, des tests et, en fait, les requ\u00eates elles-m\u00eames. Cela simplifie le travail pour les d\u00e9butants, mais dans de grands sc\u00e9narios, cette approche manque de flexibilit\u00e9. Que se passe-t-il si vous souhaitez cr\u00e9er plusieurs requ\u00eates et en faire l'agr\u00e9gation ? Que faire si vous voulez ex\u00e9cuter un script sans requ\u00eate ou plusieurs scripts logiquement s\u00e9par\u00e9s cons\u00e9cutivement ? Enfin, il serait bien de s\u00e9parer les tests des scripts utilitaires ordinaires. De plus, l'approche \u00ab ajoutons toutes les fonctionnalit\u00e9s dans un seul n\u0153ud \u00bb n'est pas \u00e9volutive - l'interface devient rapidement encombr\u00e9e.<\/p>\n<p><\/p>\n<p>TestMace divise initialement toutes les fonctionnalit\u00e9s en diff\u00e9rents types de n\u0153uds. Vous voulez faire une requ\u00eate ? Voici un <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/requeststep\">n\u0153ud de requ\u00eate.<\/a><\/noindex> Vous voulez \u00e9crire un script ? Voici un <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/script\">script<\/a><\/noindex> n\u0153ud. Besoin de tests ? Pas de probl\u00e8me - <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\">Assertion<\/a><\/noindex> n\u0153ud. Ah oui, vous pouvez \u00e9galement envelopper tout cela dans un <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/folder\">dossier<\/a><\/noindex> n\u0153ud. Et tout cela s'assemble facilement ensemble. Cette approche est non seulement tr\u00e8s flexible, mais \u00e9galement conforme au principe de responsabilit\u00e9 unique, permettant d'utiliser seulement ce dont vous avez vraiment besoin \u00e0 l'instant. Pourquoi ai-je besoin de scripts et de tests si je veux simplement faire une requ\u00eate ?<\/p>\n<p><\/p>\n<h2 id=\"chelovekochitaemyy-format-proekta\">Format lisible par l'homme pour le projet<\/h2>\n<p><\/p>\n<p>Il existe une diff\u00e9rence conceptuelle entre TestMace et Postman en ce qui concerne le stockage. Dans Postman, toutes les requ\u00eates sont stock\u00e9es quelque part dans le stockage local. Si vous devez partager des requ\u00eates entre plusieurs utilisateurs, vous devez utiliser la synchronisation int\u00e9gr\u00e9e. En r\u00e9alit\u00e9, c'est une approche standard, mais elle n'est pas sans d\u00e9fauts. Qu'en est-il de la s\u00e9curit\u00e9 des donn\u00e9es ? En effet, la politique de certaines entreprises peut interdire le stockage de donn\u00e9es aupr\u00e8s de tiers. Cependant, nous pensons que TestMace peut offrir quelque chose de mieux ! Et ce mieux s'appelle : \u00ab format projet lisible par l'homme \u00bb.<\/p>\n<p><\/p>\n<p>Commen\u00e7ons par le fait qu'il existe en principe une entit\u00e9 \"projet\" dans TestMace. L'application a \u00e9t\u00e9 initialement con\u00e7ue pour stocker des projets dans des syst\u00e8mes de contr\u00f4le de version : l'arborescence du projet est pratiquement projet\u00e9e un \u00e0 un sur la structure de fichiers, le format de stockage utilis\u00e9 est le yaml (sans crochets ni virgules superflus), et la repr\u00e9sentation des fichiers de chaque n\u0153ud est d\u00e9taill\u00e9e dans la documentation avec des commentaires. Mais dans la plupart des cas, vous ne serez pas amen\u00e9 \u00e0 y jeter un \u0153il \u2014 tous les noms de champs ont des d\u00e9signations logiques. <\/p>\n<p><\/p>\n<p>Que cela apporte-t-il \u00e0 l'utilisateur ? Cela permet de modifier tr\u00e8s flexiblement le flux de travail de l'\u00e9quipe, en utilisant des approches famili\u00e8res. Par exemple, les d\u00e9veloppeurs peuvent stocker le projet dans le m\u00eame r\u00e9f\u00e9rentiel que le backend. Dans les branches, en plus de modifier directement la base de code, le d\u00e9veloppeur peut corriger les sc\u00e9narios de requ\u00eates existants et les tests. Apr\u00e8s avoir valid\u00e9 les modifications dans le r\u00e9f\u00e9rentiel (git, svn, mercurial \u2014 ce que vous pr\u00e9f\u00e9rez), CI (votre outil pr\u00e9f\u00e9r\u00e9, non impos\u00e9 par personne) lance notre utilitaire en ligne de commande <noindex><a rel=\"nofollow\" href=\"https:\/\/www.npmjs.com\/package\/@testmace\/cli\">testmace-cli<\/a><\/noindex>, et le rapport g\u00e9n\u00e9r\u00e9 apr\u00e8s ex\u00e9cution (par exemple, au format junit, qui est \u00e9galement pris en charge par testmace-cli) est envoy\u00e9 au syst\u00e8me correspondant. De plus, la question mentionn\u00e9e ci-dessus concernant la s\u00e9curit\u00e9 n'est plus un probl\u00e8me.<\/p>\n<p><\/p>\n<p>Comme vous pouvez le voir, TestMace n'impose pas son \u00e9cosyst\u00e8me et sa paradigme. Au lieu de cela, il s'int\u00e8gre facilement dans des processus d\u00e9j\u00e0 \u00e9tablis.<\/p>\n<p><\/p>\n<h2 id=\"dinamicheskie-peremennye\">Variables dynamiques<\/h2>\n<p><\/p>\n<p>TestMace suit le concept no-code : si un probl\u00e8me peut \u00eatre r\u00e9solu sans utiliser de code, nous essayons de donner cette possibilit\u00e9. Travailler avec des variables est exactement cette fonctionnalit\u00e9 o\u00f9, dans la plupart des cas, on peut se passer de programmation.<\/p>\n<p><\/p>\n<p>Exemple : nous avons re\u00e7u une r\u00e9ponse du serveur, et nous souhaitons sauvegarder une partie de la r\u00e9ponse dans une variable. Dans Postman, nous aurions \u00e9crit dans le script de test (ce qui est en soi \u00e9trange) quelque chose comme :<\/p>\n<p><\/p>\n<pre><code class=\"javascript\">var jsonData = JSON.parse(responseBody);\npostman.setEnvironmentVariable(\"data\", jsonData.data);<\/code><\/pre>\n<p><\/p>\n<p>Mais \u00e0 notre avis, \u00e9crire un script pour un sc\u00e9nario aussi simple et souvent utilis\u00e9 semble excessif. C'est pourquoi dans TestMace, il est possible d'assigner une partie de la r\u00e9ponse \u00e0 une variable en utilisant l'interface graphique. Regardez comme c'est simple :<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Pourquoi TestMace est meilleur que Postman.\" src=\"\/wp-content\/uploads\/2019\/12\/2ce8ce2f9aa2964cb5bd1d5eacead423.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Et maintenant, \u00e0 chaque requ\u00eate, cette variable dynamique sera mise \u00e0 jour. Mais vous pourriez contester cela en argumentant que l'approche de Postman est plus flexible et permet non seulement de faire une affectation, mais \u00e9galement d'ex\u00e9cuter un certain pr\u00e9traitement. Voici comment modifier l'exemple pr\u00e9c\u00e9dent :<\/p>\n<p><\/p>\n<pre><code class=\"javascript\">var jsonData = JSON.parse(responseBody);\npostman.setEnvironmentVariable(\"data\", CryptoJS.MD5(jsonData.data));<\/code><\/pre>\n<p><\/p>\n<p>Eh bien, pour cela, TestMace dispose d <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/script\">script<\/a><\/noindex> un n\u0153ud qui couvre ce sc\u00e9nario. Pour reproduire le cas pr\u00e9c\u00e9dent, mais d\u00e9j\u00e0 dans l'ex\u00e9cution de TestMace, il est n\u00e9cessaire de cr\u00e9er un n\u0153ud script apr\u00e8s la requ\u00eate et d'utiliser le code suivant comme script :<\/p>\n<p><\/p>\n<pre><code class=\"javascript\">const data = tm.currentNode.prev.response.body.data;\ntm.currentNode.parent.setDynamicVar('data', crypto.MD5(data));<\/code><\/pre>\n<p><\/p>\n<p>Comme vous pouvez le voir, la composition des n\u0153uds a encore \u00e9t\u00e9 utile ici. Et pour un cas aussi simple que celui d\u00e9crit ci-dessus, vous pouvez m\u00eame simplement affecter l'expression <code>${crypto.MD5($response.data)}<\/code> \u00e0 une variable cr\u00e9\u00e9e via l'interface graphique !<\/p>\n<p><\/p>\n<h2 id=\"sozdanie-testov-cherez-gui\">Cr\u00e9ation de tests via l'IU<\/h2>\n<p><\/p>\n<p>Postman permet de cr\u00e9er des tests en \u00e9crivant des scripts (dans le cas de Postman, c'est du JavaScript). Cette approche pr\u00e9sente de nombreux avantages : flexibilit\u00e9 presque illimit\u00e9e, disponibilit\u00e9 de solutions pr\u00eates \u00e0 l'emploi, etc.<\/p>\n<p><\/p>\n<p>Cependant, la r\u00e9alit\u00e9 est souvent telle (ce n'est pas nous, c'est la vie) que le testeur n'a pas de comp\u00e9tences en programmation, et l'\u00e9quipe aimerait apporter de la valeur imm\u00e9diatement. Pour de tels cas, dans le cadre du concept no-code, TestMace permet de cr\u00e9er des tests simples via l'interface graphique, sans avoir besoin d'\u00e9crire des scripts. Voici, par exemple, \u00e0 quoi ressemble le processus de cr\u00e9ation d'un test qui compare des valeurs pour l'\u00e9galit\u00e9 :<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Pourquoi TestMace est meilleur que Postman.\" src=\"\/wp-content\/uploads\/2019\/12\/c0a8ce4cbe264dd76e3b5d90594eeff5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Cependant, la cr\u00e9ation de tests dans l'\u00e9diteur graphique n'annule pas la possibilit\u00e9 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\/script\">d'\u00e9crire des tests en code<\/a><\/noindex>. Ici, toutes les m\u00eames biblioth\u00e8ques que dans le n\u0153ud script, et <noindex><a rel=\"nofollow\" href=\"https:\/\/www.chaijs.com\/\">chai<\/a><\/noindex> pour \u00e9crire des tests.<\/p>\n<p><\/p>\n<h2 id=\"vozmozhnost-zapustit-uzhe-suschestvuyuschiy-scenariy-po-ssylke-link-uzel\">Possibilit\u00e9 de lancer un sc\u00e9nario existant via un lien (n\u0153ud Link)<\/h2>\n<p><\/p>\n<p>Il se pr\u00e9sente souvent des situations o\u00f9 une certaine requ\u00eate ou m\u00eame un sc\u00e9nario entier doit \u00eatre ex\u00e9cut\u00e9 plusieurs fois dans diff\u00e9rentes parties du projet. Un exemple de telles requ\u00eates pourrait \u00eatre une authentification personnalis\u00e9e multi-\u00e9tapes, la mise en \u00e9tat de l'environnement sur l'\u00e9tat souhait\u00e9, etc. En gros, pour parler en termes de langages de programmation, nous aimerions avoir des fonctions r\u00e9utilisables dans diff\u00e9rentes parties de l'application. Dans TestMace, cette fonction est remplie par <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/link\">lien<\/a><\/noindex> N\u0153ud. Son utilisation est tr\u00e8s simple :<br \/>\n1) cr\u00e9ez une requ\u00eate ou un sc\u00e9nario<br \/>\n2) cr\u00e9ez un n\u0153ud de type Lien<br \/>\n3) dans les param\u00e8tres, indiquez le lien vers le sc\u00e9nario cr\u00e9\u00e9 \u00e0 l'\u00e9tape pr\u00e9c\u00e9dente<\/p>\n<p><\/p>\n<p>Dans une version plus avanc\u00e9e, vous pouvez sp\u00e9cifier quelles variables dynamiques du sc\u00e9nario doivent \u00eatre transmises au niveau sup\u00e9rieur par rapport au lien. Cela semble compliqu\u00e9 ? Supposons que nous ayons cr\u00e9\u00e9 un Dossier nomm\u00e9 <strong>create-post<\/strong>, \u00e0 l'int\u00e9rieur duquel une variable dynamique est assign\u00e9e \u00e0 ce n\u0153ud <code>postId<\/code>. Maintenant, dans le n\u0153ud Lien <strong>create-post-link<\/strong> , vous pouvez explicitement indiquer que la variable <code>postId<\/code> doit \u00eatre assign\u00e9e au parent <strong>create-post-link<\/strong>. Ce m\u00e9canisme (encore une fois, pour parler le langage des programmeurs) peut \u00eatre utilis\u00e9 pour renvoyer un r\u00e9sultat d'une \u00ab fonction \u00bb. En gros, c'est super, DRY \u00e0 son apog\u00e9e et encore une fois, pas une seule ligne de code n'a souffert.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Pourquoi TestMace est meilleur que Postman.\" src=\"\/wp-content\/uploads\/2019\/12\/5235473a43e5bc2e05aeb2779846245f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Concernant Postman, la demande d'ajout de la r\u00e9utilisation des requ\u00eates <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1535\">est en attente depuis 2015<\/a><\/noindex>, et il semble m\u00eame que <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1535#issuecomment-280305898\">certains indices<\/a><\/noindex>indiquent que ce probl\u00e8me est en cours de traitement. Dans sa forme actuelle, Postman a bien s\u00fbr la possibilit\u00e9 de changer le flux d'ex\u00e9cution, ce qui, en th\u00e9orie, permet de r\u00e9aliser un comportement similaire, mais c'est plut\u00f4t un hack sale qu'une v\u00e9ritable approche fonctionnelle. <\/p>\n<p><\/p>\n<h2 id=\"prochie-otlichiya\">Autres diff\u00e9rences<\/h2>\n<p><\/p>\n<ul>\n<li>Un contr\u00f4le accru sur la port\u00e9e des variables. La plus petite port\u00e9e dans laquelle une variable peut \u00eatre d\u00e9finie dans Postman est la collection. TestMace permet de d\u00e9finir des variables pour n'importe quelle requ\u00eate ou dossier. Dans Postman, le partage de collection permet d'exporter uniquement des collections, tandis que dans TestMace, le partage fonctionne pour n'importe quel n\u0153ud.<\/li>\n<li>TestMace prend en charge <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/other\/default-http-headers\">les en-t\u00eates h\u00e9rit\u00e9s<\/a><\/noindex>, qui peuvent par d\u00e9faut \u00eatre ajout\u00e9s aux requ\u00eates enfants. Postman a quelque chose \u00e0 ce sujet <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1947\">t\u00e2che<\/a><\/noindex>, et cela a m\u00eame \u00e9t\u00e9 ferm\u00e9, mais comme solution, il est propos\u00e9 de\u2026 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1947#issuecomment-292741840\">utiliser des scripts<\/a><\/noindex>. Dans TestMace, tout cela est configur\u00e9 via l'interface graphique et il est possible de d\u00e9sactiver les en-t\u00eates h\u00e9rit\u00e9s dans des descendants sp\u00e9cifiques.<\/li>\n<li>Annuler\/R\u00e9tablir. Cela fonctionne non seulement lors de l'\u00e9dition des n\u0153uds, mais \u00e9galement lors du d\u00e9placement, de la suppression, du renommage et d'autres op\u00e9rations modifiant la structure du projet.<\/li>\n<li>Les fichiers joints aux requ\u00eates deviennent une partie int\u00e9grante du projet et sont stock\u00e9s avec celui-ci, tout en se synchronisant parfaitement, contrairement \u00e0 Postman. (Oui, il n'est plus n\u00e9cessaire de s\u00e9lectionner manuellement les fichiers \u00e0 chaque ex\u00e9cution et de les transmettre aux coll\u00e8gues dans des archives.)<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"fichi-kotorye-uzhe-na-podhode\">Des fonctionnalit\u00e9s qui arrivent bient\u00f4t<\/h2>\n<p><\/p>\n<p>Nous n'avons pas pu r\u00e9sister \u00e0 la tentation de lever un coin du voile sur les prochaines sorties, surtout lorsque les fonctionnalit\u00e9s sont vraiment s\u00e9duisantes et d\u00e9j\u00e0 en cours de finition avant la sortie. Alors, accueillons-les.<\/p>\n<p><\/p>\n<h3 id=\"funkcii\">Fonctions<\/h3>\n<p><\/p>\n<p>Comme vous le savez, pour g\u00e9n\u00e9rer des valeurs dans Postman, on utilise ce qu'on appelle des variables dynamiques. <noindex><a rel=\"nofollow\" href=\"https:\/\/learning.getpostman.com\/docs\/postman\/variables-and-environments\/variables-list\/\">La liste est impressionnante<\/a><\/noindex> et la grande majorit\u00e9 des fonctions servent \u00e0 g\u00e9n\u00e9rer des valeurs fictives. Par exemple, pour g\u00e9n\u00e9rer un e-mail al\u00e9atoire, il faut \u00e9crire :<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">{{$randomEmail}}<\/code><\/pre>\n<p><\/p>\n<p>Cependant, \u00e9tant donn\u00e9 qu'il s'agit de variables (m\u00eame dynamiques), elles ne peuvent pas \u00eatre utilis\u00e9es comme des fonctions : elles ne sont pas param\u00e9trables, donc il est impossible de prendre le hachage d'une cha\u00eene.<\/p>\n<p><\/p>\n<p>Dans TestMace, nous pr\u00e9voyons d'ajouter des fonctions \u00ab honn\u00eates \u00bb. Directement \u00e0 l'int\u00e9rieur de ${}, vous pourrez non seulement acc\u00e9der \u00e0 une variable, mais aussi appeler une fonction. Autrement dit, si vous devez g\u00e9n\u00e9rer le fameux email fictif, il vous suffit d'\u00e9crire<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">${faker.internet.email()}<\/code><\/pre>\n<p><\/p>\n<p>En plus d'\u00eatre une fonction, il est int\u00e9ressant de noter qu'il est possible d'appeler une m\u00e9thode d'objet. Et au lieu d'une grande liste plate de variables dynamiques, nous avons un ensemble d'objets logiquement regroup\u00e9s.<\/p>\n<p><\/p>\n<p>Et que faire si nous voulons calculer le hachage d'une cha\u00eene ? C'est facile !<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">${crypto.MD5($dynamicVar.data)}<\/code><\/pre>\n<p><\/p>\n<p>On peut noter qu'il est m\u00eame possible de passer des variables en tant que param\u00e8tres ! \u00c0 ce stade, le lecteur curieux pourrait suspecter quelque chose d'\u00e9trange\u2026 <\/p>\n<p><\/p>\n<h3 id=\"ispolzovanie-javascript-v-vyrazheniyah\">Utilisation de JavaScript dans les expressions<\/h3>\n<p><\/p>\n<p>\u2026 Et avec raison ! Lorsque les exigences des fonctions ont \u00e9t\u00e9 formul\u00e9es, nous avons soudain r\u00e9alis\u00e9 qu'il \u00e9tait n\u00e9cessaire d'\u00e9crire un JavaScript valide dans les expressions. Donc maintenant, vous \u00eates libre d'\u00e9crire des expressions du genre :<\/p>\n<p><\/p>\n<pre><code class=\"javascript\">${1 + '' + crypto.MD5('asdf')}<\/code><\/pre>\n<p><\/p>\n<p>Et tout cela sans scripts, directement dans les champs d'entr\u00e9e !<\/p>\n<p><\/p>\n<p>En ce qui concerne Postman, il n'est possible d'utiliser que des variables, et lorsqu'on essaie d'\u00e9crire une expression correcte, le validateur se plaint et refuse de l'\u00e9valuer.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Pourquoi TestMace est meilleur que Postman.\" src=\"\/wp-content\/uploads\/2019\/12\/b301760640ff15ea682e9dfb1462116b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3 id=\"prodvinutoe-avtodopolnenie\">Autocompl\u00e9tion avanc\u00e9e<\/h3>\n<p><\/p>\n<p>\u00c0 l'heure actuelle, TestMace dispose d'une autocompl\u00e9tion standard qui ressemble \u00e0 ceci :<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Pourquoi TestMace est meilleur que Postman.\" src=\"\/wp-content\/uploads\/2019\/12\/1f5ec38a6a6da29e8308882d271b6b14.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ici, en plus de la cha\u00eene autocompl\u00e9t\u00e9e, il est indiqu\u00e9 \u00e0 quoi cette cha\u00eene appartient. Ce m\u00e9canisme ne fonctionne que dans les expressions entour\u00e9es d'accolades ${}.<\/p>\n<p><\/p>\n<p>Comme vous pouvez le constater, des marqueurs visuels ont \u00e9t\u00e9 ajout\u00e9s, indiquant le type de variable (par exemple, cha\u00eene, nombre, tableau, etc.). Il est \u00e9galement possible de modifier les modes de saisie automatique (par exemple, on peut choisir l'autocompl\u00e9tion avec des variables ou des en-t\u00eates). Mais m\u00eame cela n'est pas le point le plus important !<\/p>\n<p><\/p>\n<p>Tout d'abord, l'autocompl\u00e9tion fonctionne m\u00eame dans les expressions (l\u00e0 o\u00f9 c'est possible). Voil\u00e0 \u00e0 quoi cela ressemble :<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Pourquoi TestMace est meilleur que Postman.\" src=\"\/wp-content\/uploads\/2019\/12\/676721c8d12f6c43970ed335deb238f7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Et deuxi\u00e8mement, l'autocompl\u00e9tion est maintenant \u00e9galement disponible dans les scripts. Regardez comment cela fonctionne !<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Pourquoi TestMace est meilleur que Postman.\" src=\"\/wp-content\/uploads\/2019\/12\/3b6b4335447c0cbed7044d98831001dc.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Il est inutile de comparer cette fonctionnalit\u00e9 \u00e0 Postman \u2014 l\u00e0, l'autocompl\u00e9tion est limit\u00e9e \u00e0 des listes statiques de variables, d'en-t\u00eates et de leurs valeurs (corrigez-moi si j'ai oubli\u00e9 quelque chose). Les scripts ne sont pas autocompl\u00e9t\u00e9s \ud83d\ude41<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Conclusion<\/h1>\n<p><\/p>\n<p>Octobre marque un an depuis le d\u00e9but du d\u00e9veloppement de notre produit. Pendant ce temps, nous avons pu r\u00e9aliser beaucoup de choses et, sur certains param\u00e8tres, nous avons rattrap\u00e9 nos concurrents. Quoi qu'il en soit, notre objectif est de cr\u00e9er un outil v\u00e9ritablement pratique pour travailler avec les API. Il nous reste encore beaucoup de travail \u00e0 faire, voici un plan approximatif pour le d\u00e9veloppement de notre projet dans l'ann\u00e9e \u00e0 venir : <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace.com\/roadmap\/\">https:\/\/testmace.com\/roadmap<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Votre retour nous permettra de mieux nous orienter dans l'abondance de fonctionnalit\u00e9s, et votre soutien nous donne la force et la confiance que nous faisons quelque chose d'utile. Aujourd'hui est un jour important pour notre projet \u2014 le jour de la publication de TestMace sur <noindex><a rel=\"nofollow\" href=\"https:\/\/www.producthunt.com\/posts\/testmace\">ProductHunt<\/a><\/noindex>. S'il vous pla\u00eet, soutenez notre projet, cela compte beaucoup pour nous. D'autant plus que sur notre page PH aujourd'hui, il y a une offre all\u00e9chante, et elle est limit\u00e9e<\/p>\n<p>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/480734\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442, \u043d\u0430 \u0441\u0432\u044f\u0437\u0438 TestMace! \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043c\u043d\u043e\u0433\u0438\u0435 \u0437\u043d\u0430\u044e\u0442 \u043e \u043d\u0430\u0441 \u0438\u0437 \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439. \u0414\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b\u0441\u044f: \u043c\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API TestMace. \u0421\u0430\u043c\u044b\u0439 \u0447\u0430\u0441\u0442\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u043f\u0440\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 TestMace \u0441 \u043a\u043e\u043d\u043a\u0443\u0440\u0438\u0440\u0443\u044e\u0449\u0438\u043c\u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430\u043c\u0438 \u2014 &#171;\u0427\u0435\u043c \u0432\u044b \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0435\u0441\u044c \u043e\u0442 Postman?&#187;. \u041c\u044b \u0440\u0435\u0448\u0438\u043b\u0438, \u0447\u0442\u043e \u043f\u043e\u0440\u0430 \u0434\u0430\u0442\u044c \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441. \u041d\u0438\u0436\u0435 \u043c\u044b [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-54188","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442, \u043d\u0430 \u0441\u0432\u044f\u0437\u0438\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/fr\/blog\/news\/chem-testmace-luchshe-postman\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0427\u0435\u043c TestMace \u043b\u0443\u0447\u0448\u0435 Postman | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442, \u043d\u0430 \u0441\u0432\u044f\u0437\u0438\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/news\/chem-testmace-luchshe-postman\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-12-19T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:02:10+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47En quoi TestMace est-il meilleur que Postman | ProHoster","description":"Bonjour \u00e0 tous, ici","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/news\/chem-testmace-luchshe-postman","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0427\u0435\u043c TestMace \u043b\u0443\u0447\u0448\u0435 Postman | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442, \u043d\u0430 \u0441\u0432\u044f\u0437\u0438","og:url":"https:\/\/prohoster.info\/fr\/blog\/news\/chem-testmace-luchshe-postman","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-12-19T21:00:00+00:00","article:modified_time":"2020-02-18T11:02:10+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"54188","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 10:21:21","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:10:33","updated":"2026-01-24 10:21:21","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/54188","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=54188"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/54188\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=54188"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=54188"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=54188"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}