{"id":54187,"date":"2019-12-20T00:00:00","date_gmt":"2019-12-19T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/testmace-moshhnaya-ide-dlya-raboty-s-api"},"modified":"2020-02-18T14:02:10","modified_gmt":"2020-02-18T11:02:10","slug":"testmace-moshhnaya-ide-dlya-raboty-s-api","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api","title":{"rendered":"TestMace \u2014 un puissant IDE pour travailler avec des API.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Bonjour \u00e0 tous ! Aujourd'hui, nous souhaitons pr\u00e9senter \u00e0 la communaut\u00e9 IT notre produit \u2014 un IDE pour travailler avec des API <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">TestMace<\/a><\/noindex>. Certains d'entre vous nous connaissent peut-\u00eatre d\u00e9j\u00e0 gr\u00e2ce \u00e0 <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace.com\/blog\/\">des articles pr\u00e9c\u00e9dents<\/a><\/noindex>. Cependant, il n'y a pas eu de revue compl\u00e8te de l'outil, donc nous allons corriger ce regrettable oubli.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 un puissant IDE pour travailler avec des API.\" src=\"\/wp-content\/uploads\/2019\/12\/798c0783510a07e7fd162bdf14151c29.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"motivaciya\">Motivation<\/h1>\n<p><\/p>\n<p>Nous aimerions commencer par expliquer comment nous en sommes arriv\u00e9s l\u00e0 et avons d\u00e9cid\u00e9 de cr\u00e9er notre outil pour un travail avanc\u00e9 avec l'API. Commen\u00e7ons par une liste des fonctionnalit\u00e9s que le produit, selon nous, doit avoir pour \u00eatre qualifi\u00e9 de \u00abIDE pour travailler avec l'API\u00bb :<\/p>\n<p><\/p>\n<ul>\n<li>Cr\u00e9ation et ex\u00e9cution de requ\u00eates et de scripts (s\u00e9quences de requ\u00eates)<\/li>\n<li>R\u00e9daction de divers tests<\/li>\n<li>G\u00e9n\u00e9ration de tests<\/li>\n<li>Travail avec la documentation des API, y compris l'importation de formats tels que Swagger, OpenAPI, WADL, etc.<\/li>\n<li>Mocking des requ\u00eates<\/li>\n<li>Bonne prise en charge d'un ou plusieurs langages de programmation pour l'\u00e9criture de scripts, y compris l'int\u00e9gration avec des biblioth\u00e8ques populaires<\/li>\n<li>etc.<\/li>\n<\/ul>\n<p><\/p>\n<p>La liste peut \u00eatre compl\u00e9t\u00e9e selon les pr\u00e9f\u00e9rences. Il est \u00e9galement important de cr\u00e9er non seulement l'IDE lui-m\u00eame, mais aussi une infrastructure particuli\u00e8re, comme la synchronisation dans le cloud, des outils en ligne de commande, un service de surveillance en ligne, etc. Finalement, les tendances des derni\u00e8res ann\u00e9es nous dictent non seulement une fonctionnalit\u00e9 puissante pour l'application, mais aussi une interface agr\u00e9able.<\/p>\n<p><\/p>\n<p>Pour qui cet outil est-il utile ? \u00c9videmment, pour tous ceux qui sont d'une mani\u00e8re ou d'une autre li\u00e9s au d\u00e9veloppement et aux tests d'API \u2014 d\u00e9veloppeurs et testeurs =). En effet, pour les premiers, il suffit souvent d'ex\u00e9cuter des requ\u00eates isol\u00e9es et des sc\u00e9narios simples, tandis que pour les testeurs, c'est l'un des principaux outils qui, en plus, doit inclure un puissant m\u00e9canisme d'\u00e9criture de tests avec la possibilit\u00e9 de les ex\u00e9cuter en CI.<\/p>\n<p><\/p>\n<p>Ainsi, en suivant ces rep\u00e8res, nous avons commenc\u00e9 \u00e0 cr\u00e9er notre produit. Voyons ce que nous avons r\u00e9ussi \u00e0 r\u00e9aliser \u00e0 ce stade.<\/p>\n<p><\/p>\n<h1 id=\"bystryy-start\">D\u00e9marrage rapide<\/h1>\n<p><\/p>\n<p>Commen\u00e7ons par une premi\u00e8re d\u00e9couverte de l'application. Vous pouvez la t\u00e9l\u00e9charger <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\/\">sur notre site<\/a><\/noindex>. Actuellement, toutes les 3 principales plateformes sont support\u00e9es \u2014 Windows, Linux, MacOS. T\u00e9l\u00e9chargez, installez et lancez. Lors du premier lancement, vous pouvez voir la fen\u00eatre suivante :<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 un puissant IDE pour travailler avec des API.\" src=\"\/wp-content\/uploads\/2019\/12\/dbbd26d8656488cd11716f7dbede9ec7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Cliquez sur le plus en haut de la zone de contenu pour cr\u00e9er votre premi\u00e8re requ\u00eate. L'onglet de requ\u00eate ressemble \u00e0 ceci :<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 un puissant IDE pour travailler avec des API.\" src=\"\/wp-content\/uploads\/2019\/12\/d76205f43ec821018642a3d354532e7e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Examinons-le plus en d\u00e9tail. L'interface de requ\u00eate ressemble beaucoup \u00e0 celle des clients REST populaires, ce qui facilite la migration depuis ces outils. Effectuons la premi\u00e8re requ\u00eate sur l'url. <noindex><a rel=\"nofollow\" href=\"https:\/\/next.json-generator.com\/api\/json\/get\/NJv-NT-U8\">https:\/\/next.json-generator.com\/api\/json\/get\/NJv-NT-U8<\/a><\/noindex><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 un puissant IDE pour travailler avec des API.\" src=\"\/wp-content\/uploads\/2019\/12\/19e639baa1e0d51f1a40b76ae9144d6c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c0 premi\u00e8re vue, le panneau de r\u00e9ponse ne semble pas non plus pr\u00e9senter de surprises. Cependant, je voudrais attirer votre attention sur certains points :<\/p>\n<p><\/p>\n<ol>\n<li>Le corps de la r\u00e9ponse a une repr\u00e9sentation en arbre, ce qui, d'une part, ajoute de l'information et, d'autre part, permet d'ajouter certaines fonctionnalit\u00e9s int\u00e9ressantes que je d\u00e9crirai ci-dessous.<\/li>\n<li>Il y a un onglet Assertions, qui affiche la liste des tests pour cette requ\u00eate.<\/li>\n<\/ol>\n<p><\/p>\n<p>Comme vous pouvez le constater, notre outil peut \u00eatre utilis\u00e9 comme un client REST pratique. Cependant, nous ne serions pas ici si ses capacit\u00e9s se limitaient uniquement \u00e0 l'envoi de requ\u00eates. Je vais maintenant exposer les concepts de base et les fonctionnalit\u00e9s de TestMace.<\/p>\n<p><\/p>\n<h1 id=\"osnovnye-ponyatiya-i-vozmozhnosti\">Concepts de base et fonctionnalit\u00e9s<\/h1>\n<p><\/p>\n<h2 id=\"uzel\">Noeud<\/h2>\n<p><\/p>\n<p>Les fonctionnalit\u00e9s de TestMace sont r\u00e9parties en diff\u00e9rents types de n\u0153uds. Dans l'exemple ci-dessus, nous avons d\u00e9montr\u00e9 le fonctionnement du n\u0153ud RequestStep. Cependant, l'application propose \u00e9galement actuellement les types de n\u0153uds suivants :<\/p>\n<p><\/p>\n<ul>\n<li>RequestStep. C'est un n\u0153ud qui permet de cr\u00e9er une requ\u00eate. En tant qu'\u00e9l\u00e9ment enfant, il peut n'avoir qu'un seul n\u0153ud Assertion.<\/li>\n<li>Assertion. Ce n\u0153ud est utilis\u00e9 pour \u00e9crire des tests. Il ne peut \u00eatre un n\u0153ud enfant que pour le n\u0153ud RequestStep.<\/li>\n<li>Folder. Permet de regrouper des n\u0153uds Folder et RequestStep \u00e0 l'int\u00e9rieur.<\/li>\n<li>Project. C'est le n\u0153ud racine, cr\u00e9\u00e9 automatiquement lors de la cr\u00e9ation d'un projet. Par ailleurs, il reprend les fonctionnalit\u00e9s du n\u0153ud Folder.<\/li>\n<li>Link. Lien vers un n\u0153ud Folder ou RequestStep. Permet de r\u00e9utiliser des requ\u00eates et des sc\u00e9narios.<\/li>\n<li>etc.<\/li>\n<\/ul>\n<p><\/p>\n<p>Les n\u0153uds se trouvent dans les scratches (le panneau en bas \u00e0 gauche, utilis\u00e9 pour cr\u00e9er rapidement des requ\u00eates \u00ab jetables \u00bb) et dans le projet (le panneau en haut \u00e0 gauche), sur lequel nous allons nous attarder plus en d\u00e9tail.<\/p>\n<p><\/p>\n<h2 id=\"proekt\">Projet<\/h2>\n<p><\/p>\n<p>Au lancement de l'application, vous avez pu remarquer une seule ligne Project en haut \u00e0 gauche. C'est la racine de l'arbre du projet. Lorsqu'un projet est lanc\u00e9, un projet temporaire est cr\u00e9\u00e9, dont le chemin d\u00e9pend de votre syst\u00e8me d'exploitation. \u00c0 tout moment, vous pouvez d\u00e9placer le projet \u00e0 un emplacement qui vous convient.<\/p>\n<p><\/p>\n<p>La principale fonction du projet est de permettre de sauvegarder les d\u00e9veloppements dans le syst\u00e8me de fichiers et de synchroniser ensuite via des syst\u00e8mes de contr\u00f4le de versions, d'ex\u00e9cuter des sc\u00e9narios dans CI, de r\u00e9viser les modifications, etc.<\/p>\n<p><\/p>\n<h2 id=\"peremennye\">Variables<\/h2>\n<p><\/p>\n<p>Les variables sont l'un des m\u00e9canismes cl\u00e9s de l'application. Ceux d'entre vous qui travaillent avec des outils comme TestMace auront peut-\u00eatre d\u00e9j\u00e0 compris de quoi il s'agit. Ainsi, les variables sont un moyen de conserver des donn\u00e9es communes et de communiquer entre les n\u0153uds. Par exemple, elles sont similaires aux variables d'environnement dans Postman ou Insomnia. Cependant, nous avons approfondi le sujet. Dans TestMace, les variables peuvent \u00eatre d\u00e9finies au niveau du n\u0153ud. N'importe quel n\u0153ud. Il existe \u00e9galement un m\u00e9canisme d'h\u00e9ritage des variables des anc\u00eatres et de substitution des variables dans les descendants. De plus, il y a un certain nombre de variables int\u00e9gr\u00e9es, dont les noms commencent par <code>$<\/code>. Voici quelques-unes d'entre elles :<\/p>\n<p><\/p>\n<ul>\n<li><code>$prevStep<\/code> \u2014 r\u00e9f\u00e9rence aux variables du n\u0153ud pr\u00e9c\u00e9dent<\/li>\n<li><code>$nextStep<\/code> \u2014 r\u00e9f\u00e9rence aux variables du n\u0153ud suivant<\/li>\n<li><code>$parent<\/code> \u2014 idem, mais pour un anc\u00eatre<\/li>\n<li><code>$response<\/code> \u2014 r\u00e9ponse du serveur<\/li>\n<li><code>$env<\/code> \u2014 variables d'environnement actuelles<\/li>\n<li><code>$dynamicVar<\/code> \u2014 variables dynamiques, cr\u00e9\u00e9es lors de l'ex\u00e9cution du sc\u00e9nario ou de la requ\u00eate<\/li>\n<\/ul>\n<p><\/p>\n<p><code>$env<\/code> \u2014 ce sont en fait des variables ordinaires au niveau du projet, mais l'ensemble des variables d'environnement change en fonction de l'environnement s\u00e9lectionn\u00e9. <\/p>\n<p><\/p>\n<p>L'acc\u00e8s \u00e0 une variable se fait via <code>${variable_name}<\/code><br \/>\nEn tant que valeur d'une variable, il peut s'agir d'une autre variable, ou m\u00eame d'une expression compl\u00e8te. Par exemple, en tant que variable url, on peut avoir une expression du type<br \/>\n<code>http:\/\/${host}:${port}\/${endpoint}<\/code>.<\/p>\n<p><\/p>\n<p>Il convient de souligner la possibilit\u00e9 d'attribuer des variables pendant l'ex\u00e9cution du script. Par exemple, il est souvent n\u00e9cessaire de conserver des donn\u00e9es d'authentification (jeton ou tout l'en-t\u00eate) qui ont \u00e9t\u00e9 re\u00e7ues du serveur apr\u00e8s une connexion r\u00e9ussie. TestMace permet de stocker ces donn\u00e9es dans des variables dynamiques d'un des anc\u00eatres. Afin d'\u00e9viter les collisions avec les variables \u00ab statiques \u00bb existantes, les variables dynamiques sont plac\u00e9es dans un objet s\u00e9par\u00e9. <code>$dynamicVar<\/code>. <\/p>\n<p><\/p>\n<h2 id=\"scenarii\">Sc\u00e9narios<\/h2>\n<p><\/p>\n<p>En utilisant toutes les possibilit\u00e9s mentionn\u00e9es ci-dessus, vous pouvez r\u00e9aliser des sc\u00e9narios de requ\u00eates entiers. Par exemple, cr\u00e9ation d'une entit\u00e9 -&gt; requ\u00eate d'entit\u00e9 -&gt; suppression d'entit\u00e9. Dans ce cas, vous pouvez utiliser un n\u0153ud Folder pour regrouper plusieurs n\u0153uds RequestStep.<\/p>\n<p><\/p>\n<h2 id=\"avtodopolnenie-i-podsvetka-znacheniya-vyrazheniya\">Autocompl\u00e9tion et surlignage de la valeur de l'expression<\/h2>\n<p><\/p>\n<p>Pour travailler efficacement avec des variables (et pas seulement), l'autocompl\u00e9tion est essentielle. Bien s\u00fbr, il est \u00e9galement important de mettre en surbrillance la valeur de l'expression, afin de voir plus facilement \u00e0 quoi correspond chaque variable. C'est le genre de situation o\u00f9 il est souvent pr\u00e9f\u00e9rable de voir une fois que d'entendre cent fois.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 un puissant IDE pour travailler avec des API.\" src=\"\/wp-content\/uploads\/2019\/12\/cf9d30c9623b18575825d4282b8fe3e3.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Il convient de noter que l'autocompl\u00e9tion est mise en \u0153uvre non seulement pour les variables, mais aussi, par exemple, pour les en-t\u00eates, les valeurs de certains en-t\u00eates (comme l'autocompl\u00e9tion pour l'en-t\u00eate Content-Type), les protocoles et bien d'autres choses encore. La liste est constamment enrichie \u00e0 mesure que l'application se d\u00e9veloppe.<\/p>\n<p><\/p>\n<h2 id=\"undoredo\">Annuler\/R\u00e9tablir<\/h2>\n<p><\/p>\n<p>L'annulation\/r\u00e9tablissement des modifications est une fonctionnalit\u00e9 tr\u00e8s pratique, mais elle n'est pas toujours disponible (et les outils de travail avec l'API ne font pas exception). Cependant, nous ne faisons pas partie de ceux-l\u00e0 !) L'annulation\/r\u00e9tablissement est mise en \u0153uvre dans l'ensemble du projet, ce qui permet d'annuler non seulement l'\u00e9dition d'un n\u0153ud sp\u00e9cifique, mais aussi sa cr\u00e9ation, sa suppression, son d\u00e9placement, etc. Les op\u00e9rations les plus critiques n\u00e9cessitent une confirmation.<\/p>\n<p><\/p>\n<h2 id=\"sozdanie-testov\">Cr\u00e9ation de tests<\/h2>\n<p><\/p>\n<p>La cr\u00e9ation de tests est assur\u00e9e par le n\u0153ud Assertion. L'une des principales caract\u00e9ristiques est la possibilit\u00e9 de cr\u00e9er des tests sans programmation, en utilisant des \u00e9diteurs int\u00e9gr\u00e9s. <\/p>\n<p><\/p>\n<p>Le n\u0153ud Assertion se compose d'un ensemble d'assertions. Chaque assertion a son propre type, et \u00e0 l'heure actuelle, plusieurs types d'assertions existent.<\/p>\n<p><\/p>\n<ol>\n<li>\n<p>Comparez les valeurs \u2014 cela compare simplement 2 valeurs. Il existe plusieurs op\u00e9rateurs de comparaison : \u00ab \u00e9gal \u00bb, \u00ab diff\u00e9rent \u00bb, \u00ab plus grand \u00bb, \u00ab plus grand ou \u00e9gal \u00bb, \u00ab moins \u00bb, \u00ab moins ou \u00e9gal \u00bb.<\/p>\n<p>\n<\/li>\n<li>\n<p>Contient la valeur \u2014 v\u00e9rifie si une sous-cha\u00eene est pr\u00e9sente dans une cha\u00eene.<\/p>\n<p>\n<\/li>\n<li>\n<p>XPath \u2014 v\u00e9rifie qu'une valeur sp\u00e9cifique se trouve par s\u00e9lecteur dans le XML.<\/p>\n<p>\n<\/li>\n<li>\n<p>Assertion JavaScript \u2014 un script arbitraire en JavaScript qui renvoie true en cas de succ\u00e8s et false en cas d'\u00e9chec.<\/p>\n<p>\n<\/li>\n<\/ol>\n<p><\/p>\n<p>Je tiens \u00e0 souligner que seul le dernier demande des comp\u00e9tences en programmation, les 3 autres assertions \u00e9tant cr\u00e9\u00e9es \u00e0 l'aide de l'interface graphique. Voici \u00e0 quoi ressemble le dialogue de cr\u00e9ation d'une assertion de comparaison de valeurs :<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 un puissant IDE pour travailler avec des API.\" src=\"\/wp-content\/uploads\/2019\/12\/e71e11fb0fb664d1d9751a71fbdcc850.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>La cerise sur le g\u00e2teau est la cr\u00e9ation rapide d'assertions \u00e0 partir de la r\u00e9ponse, regardez juste \u00e7a !<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 un puissant IDE pour travailler avec des API.\" src=\"\/wp-content\/uploads\/2019\/12\/3b86084419339a7a05a3548df5c12d6a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Cependant, de telles assertions pr\u00e9sentent des limites \u00e9videntes, face auxquelles vous pouvez utiliser des assertions JavaScript. Et ici, TestMace offre \u00e9galement un environnement confortable avec autocompl\u00e9tion, mise en surbrillance de la syntaxe et m\u00eame un analyseur statique.<\/p>\n<p><\/p>\n<h2 id=\"opisanie-api\">Description de l'API<\/h2>\n<p><\/p>\n<p>TestMace permet non seulement d'utiliser l'API, mais aussi de le documenter. La description elle-m\u00eame a une structure hi\u00e9rarchique et s'int\u00e8gre harmonieusement dans le reste du projet. De plus, il est actuellement possible d'importer la description de l'API \u00e0 partir des formats Swagger 2.0 \/ OpenAPI 3.0. La description ne reste pas simplement dans un \u00e9tat inerte, mais s'int\u00e8gre \u00e9troitement avec le reste du projet, notamment gr\u00e2ce \u00e0 l'autocompl\u00e9tion des URLs, des en-t\u00eates HTTP, des param\u00e8tres de requ\u00eate et d'autres \u00e9l\u00e9ments, et \u00e0 l'avenir, nous pr\u00e9voyons d'ajouter des tests de conformit\u00e9 des r\u00e9ponses \u00e0 la description de l'API.<\/p>\n<p><\/p>\n<h2 id=\"sharing-nod\">Partage de n\u0153uds<\/h2>\n<p><\/p>\n<p>Cas d'utilisation : vous voudriez partager une requ\u00eate probl\u00e9matique ou m\u00eame un sc\u00e9nario entier avec un coll\u00e8gue ou simplement l'attacher \u00e0 un bug. TestMace couvre \u00e9galement ce cas : l'application permet de s\u00e9rialiser n'importe quel n\u0153ud et m\u00eame un sous-arbre dans une URL. Un simple copier-coller et vous avez d\u00e9j\u00e0 transf\u00e9r\u00e9 la requ\u00eate vers un autre ordinateur ou projet avec facilit\u00e9.<\/p>\n<p><\/p>\n<h2 id=\"chelovekochitaemyy-format-hraneniya-proekta\">Format de stockage lisible par l'homme du projet<\/h2>\n<p><\/p>\n<p>\u00c0 l'heure actuelle, chaque n\u0153ud est stock\u00e9 dans un fichier s\u00e9par\u00e9 avec l'extension yml (comme dans le cas du n\u0153ud Assertion), ou dans un dossier nomm\u00e9 d'apr\u00e8s le n\u0153ud avec un fichier index.yml \u00e0 l'int\u00e9rieur.<br \/>\nVoici \u00e0 quoi ressemble par exemple le fichier de la requ\u00eate que nous avons cr\u00e9\u00e9 dans l'examen ci-dessus :<\/p>\n<p>\n<b class=\"spoiler_title\">index.yml<\/b><\/p>\n<pre><code class=\"ruby\">children: []\nvariables: {}\ntype: RequestStep\nassignVariables: []\nrequestData:\n  request:\n    method: GET\n    url: 'https:\/\/next.json-generator.com\/api\/json\/get\/NJv-NT-U8'\n  headers: []\n  disabledInheritedHeaders: []\n  params: []\n  body:\n    type: Json\n    jsonBody: ''\n    xmlBody: ''\n    textBody: ''\n    formData: []\n    file: ''\n    formURLEncoded: []\n  strictSSL: Inherit\nauthData:\n  type: inherit\nname: Scratch 1<\/code><\/pre>\n<p><\/p>\n<p>Comme vous pouvez le voir, tout est tr\u00e8s clair. Si vous le souhaitez, ce format est tout \u00e0 fait confortable \u00e0 \u00e9diter manuellement.<\/p>\n<p><\/p>\n<p>La hi\u00e9rarchie des dossiers dans le syst\u00e8me de fichiers refl\u00e8te exactement la hi\u00e9rarchie des n\u0153uds dans le projet. Par exemple, un sc\u00e9nario comme :<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 un puissant IDE pour travailler avec des API.\" src=\"\/wp-content\/uploads\/2019\/12\/8f08d934a977e4fdacd269f4ea0c34b5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Se mappent dans le syst\u00e8me de fichiers selon la structure suivante (seule la hi\u00e9rarchie des dossiers est montr\u00e9e, mais le principe est clair)<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 un puissant IDE pour travailler avec des API.\" src=\"\/wp-content\/uploads\/2019\/12\/60a54704979f5a77ee05735fd8ebe824.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ce qui facilite le processus de r\u00e9vision du projet.<\/p>\n<p><\/p>\n<h2 id=\"import-iz-postman\">Importation depuis Postman<\/h2>\n<p><\/p>\n<p>Apr\u00e8s avoir lu tout ce qui pr\u00e9c\u00e8de, certains utilisateurs voudront peut-\u00eatre essayer (n'est-ce pas ?) le nouveau produit ou (qui sait ?) l'utiliser pleinement dans leur projet. Cependant, la migration peut \u00eatre entrav\u00e9e par un grand nombre de d\u00e9veloppements d\u00e9j\u00e0 r\u00e9alis\u00e9s dans Postman. Pour de tels cas, TestMace prend en charge l'importation de collections depuis Postman. Actuellement, l'importation sans tests est prise en charge, mais nous ne rejetons pas leur prise en charge \u00e0 l'avenir.<\/p>\n<p><\/p>\n<h1 id=\"plany\">Plans<\/h1>\n<p><\/p>\n<p>J'esp\u00e8re que de nombreux lecteurs, jusqu'\u00e0 ce stade, ont appr\u00e9ci\u00e9 notre produit. Cependant, ce n'est pas tout ! Le d\u00e9veloppement du produit est en plein essor et voici quelques fonctionnalit\u00e9s que nous pr\u00e9voyons d'ajouter prochainement.<\/p>\n<p><\/p>\n<h2 id=\"oblachnaya-sinhronizaciya\">Synchronisation Cloud<\/h2>\n<p><\/p>\n<p>L'une des fonctionnalit\u00e9s les plus demand\u00e9es. \u00c0 l'heure actuelle, nous proposons d'utiliser des syst\u00e8mes de contr\u00f4le de version pour la synchronisation, ce qui rend le format plus adapt\u00e9 \u00e0 ce type de stockage. Cependant, ce flux de travail ne convient pas \u00e0 tout le monde, c'est pourquoi nous pr\u00e9voyons d'ajouter un m\u00e9canisme de synchronisation familier pour beaucoup \u00e0 travers nos serveurs. <\/p>\n<p><\/p>\n<h2 id=\"cli\">CLI<\/h2>\n<p><\/p>\n<p>Comme mentionn\u00e9 pr\u00e9c\u00e9demment, les produits de niveau IDE ne se passent pas des diverses int\u00e9grations avec les applications ou flux de travail existants. Le CLI est en effet n\u00e9cessaire pour int\u00e9grer les tests \u00e9crits dans TestMace dans le processus d'int\u00e9gration continue. Le d\u00e9veloppement du CLI est en plein cours, les premi\u00e8res versions permettront de lancer le projet avec un simple rapport en console. Par la suite, nous pr\u00e9voyons d'ajouter une sortie de rapport au format JUnit.<\/p>\n<p><\/p>\n<h2 id=\"plaginnaya-sistema\">Syst\u00e8me de plugins<\/h2>\n<p><\/p>\n<p>Malgr\u00e9 toute la puissance de notre outil, le nombre de cas \u00e0 r\u00e9soudre est illimit\u00e9. Apr\u00e8s tout, il existe des t\u00e2ches sp\u00e9cifiques \u00e0 chaque projet. Pour cette raison, nous pr\u00e9voyons d'ajouter un SDK pour le d\u00e9veloppement de plugins, permettant \u00e0 chaque d\u00e9veloppeur d'ajouter des fonctionnalit\u00e9s \u00e0 sa convenance.<\/p>\n<p><\/p>\n<h2 id=\"rasshirenie-assortimenta-tipov-uzlov\">\u00c9largissement de la gamme de types de n\u0153uds<\/h2>\n<p><\/p>\n<p>Cet ensemble de n\u0153uds ne couvre pas tous les cas n\u00e9cessaires pour l'utilisateur. Les n\u0153uds qui sont pr\u00e9vus d'\u00eatre ajout\u00e9s :<\/p>\n<p><\/p>\n<ul>\n<li>N\u0153ud Script \u2014 transforme et place des donn\u00e9es en utilisant js et l'API appropri\u00e9e. En utilisant ce type de n\u0153ud, il est possible de cr\u00e9er des choses comme des scripts pr\u00e9-requ\u00eate et post-requ\u00eate dans Postman.<\/li>\n<li>N\u0153ud GraphQL \u2014 support de graphql<\/li>\n<li>N\u0153ud d'assertion personnalis\u00e9e \u2014 permettra d'\u00e9largir l'ensemble des assertions disponibles dans le projet<br \/>\nNaturellement, ce n'est pas une liste d\u00e9finitive, elle sera constamment mise \u00e0 jour gr\u00e2ce \u00e0 votre feedback, entre autres.<\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"faq\">FAQ<\/h1>\n<p><\/p>\n<p><strong>Qu'est-ce qui vous distingue de Postman ?<\/strong><\/p>\n<p><\/p>\n<ol>\n<li>Concept de n\u0153uds permettant d'\u00e9voluer presque ind\u00e9finiment les fonctionnalit\u00e9s du projet<\/li>\n<li>Format lisible par l'homme pour le projet, conserv\u00e9 dans le syst\u00e8me de fichiers, ce qui facilite le travail avec les syst\u00e8mes de contr\u00f4le de version<\/li>\n<li>Possibilit\u00e9 de cr\u00e9er des tests sans programmation et prise en charge avanc\u00e9e de js dans l'\u00e9diteur de tests (auto-compl\u00e9tion, analyseur statique)<\/li>\n<li>Compl\u00e9tion automatique avanc\u00e9e et surlignage de la valeur actuelle des variables<\/li>\n<\/ol>\n<p><\/p>\n<p><strong>Est-ce un produit open-source?<\/strong><\/p>\n<p><\/p>\n<p>Non, actuellement les sources sont ferm\u00e9es, mais nous envisageons de les rendre ouvertes \u00e0 l'avenir.<\/p>\n<p><\/p>\n<p><strong>Comment vivez-vous ?<\/strong><\/p>\n<p><\/p>\n<p>Avec la version gratuite, nous pr\u00e9voyons de lancer une version payante du produit. Celle-ci inclura principalement des fonctionnalit\u00e9s n\u00e9cessitant une partie serveur, comme la synchronisation.<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Conclusion<\/h1>\n<p><\/p>\n<p>Notre projet progresse \u00e0 grands pas vers une version stable. Cependant, le produit est d\u00e9j\u00e0 utilisable et les retours positifs de nos premiers utilisateurs en t\u00e9moignent. Nous collectons activement des retours, car sans une collaboration \u00e9troite avec la communaut\u00e9, il est impossible de cr\u00e9er un bon outil. Vous pouvez nous trouver ici :<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">Site officiel<\/a><\/noindex><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/testmace\">Telegram<\/a><\/noindex><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/testmaceslackin.herokuapp.com\">Slack<\/a><\/noindex><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/www.facebook.com\/testmace\">Facebook<\/a><\/noindex><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/TestMace\/TestMace-issues\">Suivi des probl\u00e8mes<\/a><\/noindex><\/p>\n<p><\/p>\n<p>Nous attendons avec impatience vos souhaits et suggestions !<\/p>\n<p>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458372\/\">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! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0441\u0443\u0434 IT-\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0448 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u2014 IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API TestMace. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u0432\u0430\u0441 \u0443\u0436\u0435 \u0437\u043d\u0430\u044e\u0442 \u043e \u043d\u0430\u0441 \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439. \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u0441\u0435\u043e\u0431\u044a\u0435\u043c\u043b\u044e\u0449\u0435\u0433\u043e \u043e\u0431\u0437\u043e\u0440\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u043d\u0435 \u0431\u044b\u043b\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u043c \u044d\u0442\u043e\u0442 \u0434\u043e\u0441\u0430\u0434\u043d\u044b\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a. \u041c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u044f \u0425\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u0442\u043e\u0433\u043e \u043a\u0430\u043a, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043c\u044b \u043f\u0440\u0438\u0448\u043b\u0438 \u043a \u0442\u0430\u043a\u043e\u0439 \u0436\u0438\u0437\u043d\u0438 \u0438 \u0440\u0435\u0448\u0438\u043b\u0438 [&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-54187","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! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0441\u0443\u0434 IT-\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0448 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u2014 IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API TestMace.\" \/>\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\/testmace-moshhnaya-ide-dlya-raboty-s-api\" \/>\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\udd47TestMace \u2014 \u043c\u043e\u0449\u043d\u0430\u044f IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0441\u0443\u0434 IT-\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0448 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u2014 IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API TestMace.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api\" \/>\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\udd47TestMace - IDE puissante pour travailler avec l'API | ProHoster","description":"Bonjour \u00e0 tous ! Aujourd'hui, nous aimerions pr\u00e9senter \u00e0 la communaut\u00e9 IT notre produit - une IDE pour travailler avec l'API TestMace.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api","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\udd47TestMace \u2014 \u043c\u043e\u0449\u043d\u0430\u044f IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0441\u0443\u0434 IT-\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0448 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u2014 IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API TestMace.","og:url":"https:\/\/prohoster.info\/fr\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api","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":"54187","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\/54187","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=54187"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/54187\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=54187"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=54187"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=54187"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}