TestMace - un IDE puissant pour travailler avec des API

Salut tout le monde! Aujourd'hui, nous souhaitons prĂ©senter au public informatique notre produit - un IDE pour travailler avec des API Masse d'essai. Peut-ĂȘtre que certains d'entre vous nous connaissent dĂ©jĂ  grĂące Ă  articles prĂ©cĂ©dents. Cependant, il n’y a pas eu de rĂ©vision complĂšte de l’outil, c’est pourquoi nous comblons cette malheureuse lacune.

TestMace - un IDE puissant pour travailler avec des API

Motivation

Je voudrais commencer par comment, en fait, nous sommes arrivés à cette vie et avons décidé de créer notre propre outil pour un travail avancé avec l'API. Commençons par une liste de fonctionnalités qu'un produit devrait avoir, dont, à notre avis, nous pouvons dire qu'il s'agit d'un « IDE pour travailler avec des API » :

  • CrĂ©er et exĂ©cuter des requĂȘtes et des scripts (sĂ©quences de requĂȘtes)
  • RĂ©daction de diffĂ©rents types de tests
  • GĂ©nĂ©ration de tests
  • Travailler avec des descriptions d'API, y compris l'importation Ă  partir de formats tels que Swagger, OpenAPI, WADL, etc.
  • Demandes moqueuses
  • Bonne prise en charge d'un ou plusieurs langages pour l'Ă©criture de scripts, y compris l'intĂ©gration avec les bibliothĂšques populaires
  • etc.

La liste peut ĂȘtre Ă©largie selon vos goĂ»ts. De plus, il est important de crĂ©er non seulement l'IDE lui-mĂȘme, mais Ă©galement une certaine infrastructure, telle que la synchronisation cloud, les outils de ligne de commande, le service de surveillance en ligne, etc. Au final, les tendances de ces derniĂšres annĂ©es nous dictent non seulement les fonctionnalitĂ©s puissantes de l'application, mais aussi son interface agrĂ©able.

Qui a besoin d’un tel outil ? Évidemment, tous ceux qui sont au moins d'une maniĂšre ou d'une autre liĂ©s au dĂ©veloppement et aux tests d'API sont des dĂ©veloppeurs et des testeurs =). De plus, si pour les premiers il suffit souvent d'exĂ©cuter des requĂȘtes uniques et des scripts simples, alors pour les testeurs, il s'agit de l'un des principaux outils, qui, entre autres, devrait inclure un mĂ©canisme puissant pour Ă©crire des tests avec la possibilitĂ© de les exĂ©cuter dans CI.

Ainsi, en suivant ces directives, nous avons commencé à créer notre produit. Voyons ce que nous avons réalisé à ce stade.

Départ rapide

Commençons par une premiĂšre connaissance de l'application. Vous pouvez le tĂ©lĂ©charger sur notre site internetActuellement, les 3 principales plateformes sont prises en charge. Windows, LinuxSous macOS, tĂ©lĂ©chargez, installez et lancez le programme. Au premier lancement, la fenĂȘtre suivante peut s'afficher :

TestMace - un IDE puissant pour travailler avec des API

Cliquez sur le signe plus en haut de la zone de contenu pour crĂ©er votre premiĂšre demande. L'onglet RequĂȘte ressemble Ă  ceci :

TestMace - un IDE puissant pour travailler avec des API

Regardons cela plus en dĂ©tail. L'interface de requĂȘte est trĂšs similaire Ă  l'interface des clients de repos populaires, ce qui facilite la migration Ă  partir d'outils similaires. Faisons la premiĂšre requĂȘte Ă  l'url https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace - un IDE puissant pour travailler avec des API

En général, à premiÚre vue, le panneau de réponses ne réserve pas non plus de surprises. Cependant, je voudrais attirer votre attention sur certains points :

  1. Le corps de la réponse est représenté sous la forme d'un arbre, qui d'une part ajoute du contenu informatif et d'autre part permet d'ajouter quelques fonctionnalités intéressantes dont ci-dessous
  2. Il y a un onglet Assertions, qui affiche une liste de tests pour une requĂȘte donnĂ©e

Comme vous pouvez le constater, notre outil peut ĂȘtre utilisĂ© comme client de repos pratique. Cependant, nous n’en serions pas lĂ  si ses capacitĂ©s se limitaient uniquement Ă  l’envoi de requĂȘtes. Ensuite, je dĂ©crirai les concepts de base et les fonctionnalitĂ©s de TestMace.

Concepts et fonctionnalités de base

УзДл

La fonctionnalitĂ© TestMace est divisĂ©e en diffĂ©rents types de nƓuds. Dans l'exemple ci-dessus, nous avons dĂ©montrĂ© le fonctionnement du nƓud RequestStep. Cependant, les types de nƓuds suivants sont dĂ©sormais Ă©galement disponibles dans l'application :

  • Étape de demande. Il s'agit du nƓud via lequel vous pouvez crĂ©er une demande. Il ne peut avoir qu’un seul nƓud Assertion comme Ă©lĂ©ment enfant.
  • Affirmation. Le nƓud est utilisĂ© pour Ă©crire des tests. Ne peut ĂȘtre qu'un nƓud enfant du nƓud RequestStep.
  • Dossier. Vous permet de regrouper les nƓuds Folder et RequestStep en eux-mĂȘmes.
  • Projet. Il s'agit du nƓud racine, créé automatiquement lors de la crĂ©ation du projet. Sinon, il rĂ©pĂšte la fonctionnalitĂ© du nƓud Dossier.
  • Lien. Lien vers le nƓud Dossier ou RequestStep. Vous permet de rĂ©utiliser des requĂȘtes et des scripts.
  • etc.

Les nƓuds se situent dans les scratchs (le panneau en bas Ă  gauche, utilisĂ© pour crĂ©er rapidement des requĂȘtes « ponctuelles ») et dans les projets (le panneau en haut Ă  gauche), sur lesquels nous reviendrons plus en dĂ©tail.

Projet

Lorsque vous lancez l'application, vous remarquerez peut-ĂȘtre une seule ligne de projet dans le coin supĂ©rieur gauche. Il s'agit de la racine de l'arborescence du projet. Lorsque vous dĂ©marrez un projet, un projet temporaire est créé, dont le chemin d'accĂšs dĂ©pend de votre systĂšme d'exploitation. À tout moment, vous pouvez dĂ©placer le projet vers un endroit qui vous convient.

L'objectif principal du projet est la possibilité de sauvegarder les développements dans le systÚme de fichiers et de les synchroniser davantage via des systÚmes de contrÎle de version, d'exécuter des scripts dans CI, de réviser les modifications, etc.

Variables

Les variables sont l'un des mĂ©canismes clĂ©s d'une application. Ceux d'entre vous qui travaillent avec des outils comme TestMace ont peut-ĂȘtre dĂ©jĂ  une idĂ©e de ce dont nous parlons. Ainsi, les variables sont un moyen de stocker des donnĂ©es communes et de communiquer entre les nƓuds. Un analogue, par exemple, sont les variables d'environnement dans Postman ou Insomnia. Mais nous sommes allĂ©s plus loin et avons dĂ©veloppĂ© le sujet. Dans TestMace, les variables peuvent ĂȘtre dĂ©finies au niveau du nƓud. N'importe lequel. Il existe Ă©galement un mĂ©canisme permettant d'hĂ©riter des variables des ancĂȘtres et de chevaucher les variables des descendants. De plus, il existe un certain nombre de variables intĂ©grĂ©es, les noms des variables intĂ©grĂ©es commencent par $. En voici quelques unes:

  • $prevStep — lien vers les variables du nƓud prĂ©cĂ©dent
  • $nextStep — lien vers les variables du nƓud suivant
  • $parent - la mĂȘme chose, mais seulement pour l'ancĂȘtre
  • $response - rĂ©ponse du serveur
  • $env - variables d'environnement actuelles
  • $dynamicVar - variables dynamiques créées lors de l'exĂ©cution d'un script ou d'une requĂȘte

$env - il s'agit essentiellement de variables ordinaires au niveau du nƓud du projet, cependant, l'ensemble des variables d'environnement change en fonction de l'environnement sĂ©lectionnĂ©.

La variable est accessible via ${variable_name}
La valeur d'une variable peut ĂȘtre une autre variable, voire une expression entiĂšre. Par exemple, la variable url peut ĂȘtre une expression telle que
http://${host}:${port}/${endpoint}.

Par ailleurs, il convient de noter la possibilitĂ© d'attribuer des variables lors de l'exĂ©cution du script. Par exemple, il est souvent nĂ©cessaire de sauvegarder les donnĂ©es d'autorisation (un jeton ou l'intĂ©gralitĂ© de l'en-tĂȘte) provenant du serveur aprĂšs une connexion rĂ©ussie. TestMace vous permet de sauvegarder ces donnĂ©es dans des variables dynamiques de l'un des ancĂȘtres. Afin d'Ă©viter les collisions avec des variables « statiques » dĂ©jĂ  existantes, les variables dynamiques sont placĂ©es dans un objet sĂ©parĂ© $dynamicVar.

scénarios

En utilisant toutes les fonctionnalitĂ©s ci-dessus, vous pouvez exĂ©cuter des scripts de requĂȘte entiers. Par exemple, crĂ©er une entitĂ© -> interroger une entitĂ© -> supprimer une entitĂ©. Dans ce cas, vous pouvez par exemple utiliser le nƓud Folder pour regrouper plusieurs nƓuds RequestStep.

Auto-complétion et mise en évidence des expressions

Pour un travail pratique avec des variables (et pas seulement), la saisie semi-automatique est nĂ©cessaire. Et bien sĂ»r, mettre en Ă©vidence la valeur d’une expression pour qu’il soit plus facile et plus pratique de clarifier Ă  quoi correspond une variable particuliĂšre. C’est exactement le cas lorsqu’il vaut mieux voir une fois que d’entendre cent fois :

TestMace - un IDE puissant pour travailler avec des API

Il convient de noter que l'auto-complĂ©tion est implĂ©mentĂ©e non seulement pour les variables, mais aussi, par exemple, pour les en-tĂȘtes, les valeurs de certains en-tĂȘtes (par exemple, l'auto-complĂ©tion pour l'en-tĂȘte Content-Type), les protocoles et bien plus encore. La liste est constamment mise Ă  jour Ă  mesure que l'application se dĂ©veloppe.

Défaire refaire

Annuler/rĂ©tablir des modifications est une chose trĂšs pratique, mais pour une raison quelconque, elle n'est pas implĂ©mentĂ©e partout (et les outils permettant de travailler avec les API ne font pas exception). Mais nous n'en faisons pas partie !) Nous avons implĂ©mentĂ© l'annulation/la restauration tout au long du projet, ce qui vous permet d'annuler non seulement l'Ă©dition d'un nƓud spĂ©cifique, mais aussi sa crĂ©ation, sa suppression, son dĂ©placement, etc. Les opĂ©rations les plus critiques nĂ©cessitent une confirmation.

Création de tests

Le nƓud Assertion est responsable de la crĂ©ation des tests. L'une des principales fonctionnalitĂ©s est la possibilitĂ© de crĂ©er des tests sans programmation, Ă  l'aide d'Ă©diteurs intĂ©grĂ©s.

Un nƓud Assertion se compose d’un ensemble d’assertions. Chaque assertion a son propre type ; il existe actuellement plusieurs types d'assertions

  1. Comparer les valeurs - compare simplement 2 valeurs. Il existe plusieurs opérateurs de comparaison : égal, non égal, supérieur à, supérieur ou égal à, inférieur à, inférieur ou égal à.

  2. Contient une valeur : vĂ©rifie l'occurrence d'une sous-chaĂźne dans une chaĂźne.

  3. XPath - vérifie que le sélecteur en XML contient une certaine valeur.

  4. L'assertion JavaScript est un script javascript arbitraire qui renvoie vrai en cas de succÚs et faux en cas d'échec.

Je note que seule la derniĂšre nĂ©cessite des compĂ©tences en programmation de la part de l'utilisateur, les 3 autres assertions sont créées Ă  l'aide d'une interface graphique. Voici, par exemple, Ă  quoi ressemble la boĂźte de dialogue permettant de crĂ©er une assertion de comparaison de valeurs :

TestMace - un IDE puissant pour travailler avec des API

La cerise sur le gĂąteau est la crĂ©ation rapide d’assertions Ă  partir des rĂ©ponses, il suffit de regarder !

TestMace - un IDE puissant pour travailler avec des API

Cependant, de telles assertions ont des limites Ă©videntes, que vous souhaiterez peut-ĂȘtre utiliser une assertion javascript pour surmonter. Et ici, TestMace fournit Ă©galement un environnement confortable avec la saisie semi-automatique, la coloration syntaxique et mĂȘme un analyseur statique.

Description de l'API

TestMace vous permet non seulement d'utiliser l'API, mais aussi de la documenter. De plus, la description elle-mĂȘme a Ă©galement une structure hiĂ©rarchique et s'intĂšgre organiquement dans le reste du projet. De plus, il est actuellement possible d'importer des descriptions d'API depuis les formats Swagger 2.0 / OpenAPI 3.0. La description elle-mĂȘme n'est pas seulement un poids mort, mais est Ă©troitement intĂ©grĂ©e au reste du projet, en particulier, la saisie semi-automatique des URL, des en-tĂȘtes HTTP, des paramĂštres de requĂȘte, etc. est disponible, et Ă  l'avenir, nous prĂ©voyons d'ajouter des tests pour la conformitĂ© de la rĂ©ponse avec la description de l'API.

NƓud de partage

Cas : vous souhaiteriez partager une requĂȘte problĂ©matique voire un script entier avec un collĂšgue ou simplement le joindre Ă  un bug. TestMace couvre Ă©galement ce cas : l'application vous permet de sĂ©rialiser n'importe quel nƓud et mĂȘme un sous-arbre dans une URL. Copiez-collez et vous pourrez facilement transfĂ©rer la demande vers une autre machine ou un autre projet.

Format de stockage de projet lisible par l'homme

Pour le moment, chaque nƓud est stockĂ© dans un fichier sĂ©parĂ© avec l'extension yml (comme c'est le cas avec le nƓud Assertion), ou dans un dossier avec le nom du nƓud et le fichier index.yml qu'il contient.
Par exemple, voici Ă  quoi ressemble le fichier de requĂȘte que nous avons effectuĂ© dans la revue ci-dessus :

index.yml

children: []
variables: {}
type: RequestStep
assignVariables: []
requestData:
  request:
    method: GET
    url: 'https://next.json-generator.com/api/json/get/NJv-NT-U8'
  headers: []
  disabledInheritedHeaders: []
  params: []
  body:
    type: Json
    jsonBody: ''
    xmlBody: ''
    textBody: ''
    formData: []
    file: ''
    formURLEncoded: []
  strictSSL: Inherit
authData:
  type: inherit
name: Scratch 1

Comme vous pouvez le constater, tout est trĂšs clair. Si vous le souhaitez, ce format peut ĂȘtre facilement modifiĂ© manuellement.

La hiĂ©rarchie des dossiers dans le systĂšme de fichiers rĂ©pĂšte entiĂšrement la hiĂ©rarchie des nƓuds du projet. Par exemple, un script comme :

TestMace - un IDE puissant pour travailler avec des API

Mappe le systÚme de fichiers sur la structure suivante (seule la hiérarchie des dossiers est affichée, mais l'essence est claire)

TestMace - un IDE puissant pour travailler avec des API

Cela facilite le processus d’examen des projets.

Importer depuis Postman

AprĂšs avoir lu tout ce qui prĂ©cĂšde, certains utilisateurs voudront essayer (n'est-ce pas ?) un nouveau produit ou (qu'est-ce qui ne plaisante pas !) l'utiliser complĂštement dans leur projet. Cependant, la migration peut ĂȘtre stoppĂ©e par un grand nombre de dĂ©veloppements chez le mĂȘme facteur. Dans de tels cas, TestMace prend en charge l'importation de collections depuis Postman. Pour le moment, les importations sans tests sont prises en charge, mais nous n'excluons pas de les prendre en charge Ă  l'avenir.

Plans

J'espĂšre que beaucoup de ceux qui ont lu jusqu'Ă  prĂ©sent ont apprĂ©ciĂ© notre produit. Mais ce n’est pas tout ! Le travail sur le produit bat son plein et voici quelques fonctionnalitĂ©s que nous prĂ©voyons d'ajouter prochainement.

Synchronisation cloud

Une des fonctionnalités les plus demandées. Nous proposons actuellement d'utiliser des systÚmes de contrÎle de version pour la synchronisation, dont nous rendons le format plus convivial pour ce type de stockage. Cependant, ce flux de travail ne convient pas à tout le monde, nous prévoyons donc d'ajouter un mécanisme de synchronisation familier à beaucoup via nos serveurs.

CLI

Comme mentionnĂ© ci-dessus, les produits de niveau IDE ne peuvent pas se passer de toutes sortes d'intĂ©grations avec des applications ou des flux de travail existants. La CLI est exactement ce dont vous avez besoin pour intĂ©grer les tests Ă©crits dans TestMace dans le processus d'intĂ©gration continue. Les travaux sur la CLI battent leur plein ; les premiĂšres versions lanceront le projet avec un simple rapport de console. À l'avenir, nous prĂ©voyons d'ajouter une sortie de rapport au format JUnit.

SystĂšme de plugins

MalgrĂ© toute la puissance de notre outil, l’ensemble des cas nĂ©cessitant des solutions est illimitĂ©. AprĂšs tout, certaines tĂąches sont spĂ©cifiques Ă  un projet particulier. C'est pourquoi, Ă  l'avenir, nous prĂ©voyons d'ajouter un SDK pour dĂ©velopper des plugins et chaque dĂ©veloppeur pourra ajouter des fonctionnalitĂ©s Ă  sa guise.

Élargir la gamme de types de nƓuds

Cet ensemble de nƓuds ne couvre pas tous les cas requis par l'utilisateur. NƓuds dont l'ajout est prĂ©vu :

  • NƓud de script - convertit et place les donnĂ©es Ă  l'aide de js et de l'API correspondante. En utilisant ce type de nƓud, vous pouvez effectuer des tĂąches telles que des scripts de prĂ©-demande et de post-demande dans Postman.
  • NƓud GraphQL - prise en charge de graphql
  • NƓud d'assertion personnalisĂ© - vous permettra d'Ă©tendre l'ensemble des assertions existantes dans le projet
    Bien entendu, il ne s’agit pas d’une liste dĂ©finitive ; elle sera constamment mise Ă  jour grĂące, entre autres, Ă  vos commentaires.

QFP

En quoi ĂȘtes-vous diffĂ©rent de Postman ?

  1. Le concept de nƓuds, qui vous permet d'adapter presque Ă  l'infini les fonctionnalitĂ©s du projet
  2. Format de projet lisible par l'homme avec enregistrement dans un systĂšme de fichiers, ce qui simplifie le travail Ă  l'aide de systĂšmes de contrĂŽle de version
  3. Possibilité de créer des tests sans programmation et support js plus avancé dans l'éditeur de tests (autocomplétion, analyseur statique)
  4. Auto-complétion avancée et mise en évidence de la valeur actuelle des variables

Est-ce un produit open source ?

Non, pour le moment les sources sont fermées, mais à l'avenir nous envisageons la possibilité d'ouvrir les sources

De quoi vis-tu ?)

ParallÚlement à la version gratuite, nous prévoyons de publier une version payante du produit. Cela inclura principalement des éléments qui nécessitent un cÎté serveur, par exemple la synchronisation.

Conclusion

Notre projet avance à pas de géant vers une version stable. Cependant, le produit est déjà utilisable et les retours positifs de nos premiers utilisateurs en sont la preuve. Nous collectons activement les commentaires, car sans une coopération étroite avec la communauté, il est impossible de créer un bon outil. Vous pouvez nous trouver ici:

site officiel

Telegram

Slack

Facebook

Suivi des problĂšmes

Nous attendons avec impatience vos souhaits et suggestions !

Source: habr.com

Achetez un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Achetez un hĂ©bergement web fiable avec protection DDoS, serveurs VPS et VDS | ProHoster