TestMace: un potente IDE para traballar con API

Ola a todos! Hoxe queremos presentar ao público de TI o noso produto: un IDE para traballar con API TestMace. Quizais algúns de vós xa coñezades de nós artigos anteriores. Non obstante, non se realizou unha revisión exhaustiva da ferramenta, polo que abordamos esta desafortunada deficiencia.

TestMace: un potente IDE para traballar con API

Motivación

Gustaríame comezar por como, de feito, chegamos a esta vida e decidimos crear a nosa propia ferramenta para o traballo avanzado coa API. Comecemos cunha lista de funcionalidades que debería ter un produto, sobre as que, na nosa opinión, podemos dicir que é un “IDE para traballar con API”:

  • Creación e execución de consultas e scripts (secuencias de consultas)
  • Redacción de varios tipos de probas
  • Xeración de probas
  • Traballar con descricións de API, incluída a importación de formatos como Swagger, OpenAPI, WADL, etc.
  • Solicitudes de burla
  • Bo soporte para un ou máis idiomas para escribir scripts, incluída a integración con bibliotecas populares
  • etc

A lista pódese ampliar segundo o teu gusto. Ademais, é importante crear non só o propio IDE, senón tamén unha determinada infraestrutura, como sincronización na nube, ferramentas de liña de comandos, servizo de monitorización en liña, etc. Ao final, as tendencias dos últimos anos dítannos non só a poderosa funcionalidade da aplicación, senón tamén a súa agradable interface.

Quen precisa tal ferramenta? Obviamente, todos aqueles que polo menos dalgún xeito están conectados co desenvolvemento e probas de API son desenvolvedores e probadores =). Ademais, se para os primeiros adoita ser suficiente para executar consultas individuais e scripts sinxelos, entón para os probadores esta é unha das principais ferramentas, que, entre outras cousas, debería incluír un poderoso mecanismo para escribir probas coa capacidade de executalas en CI.

Entón, seguindo estas pautas, comezamos a crear o noso produto. A ver o que conseguimos nesta etapa.

Inicio rápido

Comecemos cun primeiro coñecemento da aplicación. Podes descargalo na nosa páxina web. Polo momento, as 3 plataformas principais son compatibles: Windows, Linux e MacOS. Descargar, instalar, lanzar. Cando o inicies por primeira vez, podes ver a seguinte xanela:

TestMace: un potente IDE para traballar con API

Fai clic no signo máis na parte superior da área de contido para crear a túa primeira solicitude. A pestana de consulta ten o seguinte aspecto:

TestMace: un potente IDE para traballar con API

Vexámolo con máis detalle. A interface de solicitude é moi semellante á interface dos clientes de resto populares, o que facilita a migración desde ferramentas similares. Imos facer a primeira solicitude ao URL https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace: un potente IDE para traballar con API

En xeral, a primeira vista, o panel de resposta tampouco arroxa ningunha sorpresa. Non obstante, gustaríame chamar a súa atención sobre algúns puntos:

  1. O corpo da resposta represéntase en forma de árbore, que en primeiro lugar engade contido de información e, en segundo lugar, permítelle engadir algunhas características interesantes sobre as que se indican a continuación
  2. Hai unha pestana Asercións, que mostra unha lista de probas para unha determinada solicitude

Como podes ver, a nosa ferramenta pódese usar como un cómodo cliente de descanso. Non obstante, non estaríamos aquí se as súas capacidades se limitasen só a enviar solicitudes. A continuación, describirei os conceptos básicos e a funcionalidade de TestMace.

Conceptos e características básicas

A funcionalidade de TestMace divídese en diferentes tipos de nós. No exemplo anterior, demostramos o funcionamento do nodo RequestStep. Non obstante, agora tamén están dispoñibles na aplicación os seguintes tipos de nós:

  • Paso de solicitude. Este é o nodo a través do cal podes crear unha solicitude. Só pode ter un nodo Assertion como elemento fillo.
  • Afirmación. O nodo úsase para escribir probas. Só pode ser un nodo fillo do nodo RequestStep.
  • Cartafol. Permítelle agrupar os nodos Folder e RequestStep dentro de si mesmos.
  • Proxecto. Este é o nodo raíz, creado automaticamente cando se crea o proxecto. En caso contrario, repite a funcionalidade do nodo Cartafol.
  • Ligazón. Ligazón ao nodo Folder ou RequestStep. Permítelle reutilizar consultas e scripts.
  • etc

Os nodos están situados en scratchs (o panel da parte inferior esquerda, usado para crear rapidamente consultas "únicas") e en proxectos (o panel da parte superior esquerda), nos que nos detendremos máis en detalle.

Proxecto

Cando inicias a aplicación, podes notar unha liña de proxecto solitaria na esquina superior esquerda. Esta é a raíz da árbore do proxecto. Cando inicias un proxecto, créase un proxecto temporal, cuxo camiño depende do teu sistema operativo. En calquera momento podes mover o proxecto a un lugar conveniente para ti.

O obxectivo principal do proxecto é a posibilidade de gardar desenvolvementos no sistema de ficheiros e sincronizalos aínda máis mediante sistemas de control de versións, executar scripts en CI, revisar cambios, etc.

Variables

As variables son un dos mecanismos fundamentais dunha aplicación. Os que traballades con ferramentas como TestMace pode que xa teñades unha idea do que estamos a falar. Así, as variables son unha forma de almacenar datos comúns e comunicarse entre nós. Un análogo, por exemplo, son as variables de ambiente en Postman ou Insomnia. Non obstante, fomos máis aló e desenvolvemos o tema. En TestMace, as variables pódense establecer a nivel de nodo. Calquera. Tamén hai un mecanismo para herdar as variables dos antepasados ​​e as variables superpostas nos descendentes. Ademais, hai unha serie de variables integradas, comezan os nomes das variables integradas $. Aquí tes algúns deles:

  • $prevStep — ligazón a variables do nodo anterior
  • $nextStep — ligazón ás variables do seguinte nodo
  • $parent - o mesmo, pero só para o antepasado
  • $response - resposta do servidor
  • $env - Variables de ambiente actuais
  • $dynamicVar - variables dinámicas creadas durante a execución de script ou consulta

$env - Estas son esencialmente variables ordinarias de nivel de nodo do proxecto, non obstante, o conxunto de variables de ambiente cambia dependendo do ambiente seleccionado.

Accédese á variable a través de ${variable_name}
O valor dunha variable pode ser outra variable, ou incluso unha expresión enteira. Por exemplo, a variable url pode ser unha expresión como
http://${host}:${port}/${endpoint}.

Por separado, cabe destacar a posibilidade de asignar variables durante a execución do script. Por exemplo, moitas veces hai que gardar os datos de autorización (un token ou a cabeceira completa) que proviñan do servidor despois dun inicio de sesión exitoso. TestMace permítelle gardar tales datos en variables dinámicas dun dos antepasados. Para evitar colisións con variables "estáticas" xa existentes, as variables dinámicas colócanse nun obxecto separado. $dynamicVar.

Escenarios

Usando todas as funcións anteriores, pode executar scripts de consulta completos. Por exemplo, creando unha entidade -> consultando unha entidade -> eliminando unha entidade. Neste caso, por exemplo, pode usar o nodo Cartafol para agrupar varios nodos RequestStep.

Autocompletar e resaltar expresións

Para un traballo cómodo con variables (e non só) é necesario o autocompletado. E por suposto, destacando o valor dunha expresión para que sexa máis doado e cómodo aclarar a que é igual unha determinada variable. Este é exactamente o caso cando é mellor ver unha vez que escoitar cen veces:

TestMace: un potente IDE para traballar con API

Paga a pena notar que o autocompletado está implementado non só para as variables, senón tamén, por exemplo, para as cabeceiras, os valores de determinadas cabeceiras (por exemplo, o autocompletado para a cabeceira Content-Type), protocolos e moito máis. A lista actualízase constantemente a medida que a aplicación crece.

Desfacer/refacer

Desfacer/refacer cambios é algo moi cómodo, pero por algún motivo non se implementa en todas partes (e as ferramentas para traballar con API non son unha excepción). Pero non somos un deses!) Implementamos desfacer/refacer ao longo de todo o proxecto, o que permite desfacer non só a edición dun nodo específico, senón tamén a súa creación, eliminación, movemento, etc. As operacións máis críticas requiren confirmación.

Creación de probas

O nodo Assertion é o responsable de crear probas. Unha das principais características é a posibilidade de crear probas sen programar, utilizando editores incorporados.

Un nodo de asercións consiste nun conxunto de asercións. Cada afirmación ten o seu propio tipo; de momento hai varios tipos de afirmacións

  1. Comparar valores: simplemente compara 2 valores. Existen varios operadores de comparación: igual, non igual, maior que, maior que ou igual a, menor que, menor que ou igual a.

  2. Contén valor: comproba a aparición dunha subcadea nunha cadea.

  3. XPath: comproba que o selector en XML contén un determinado valor.

  4. A afirmación de JavaScript é un script Javascript arbitrario que devolve verdadeiro en caso de éxito e falso en caso de falla.

Observo que só o último require habilidades de programación por parte do usuario, as outras 3 afirmacións créanse mediante unha interface gráfica. Aquí, por exemplo, é o aspecto do diálogo para crear unha aserción de valores de comparación:

TestMace: un potente IDE para traballar con API

A guinda do bolo é a creación rápida de afirmacións a partir das respostas, basta con miralo!

TestMace: un potente IDE para traballar con API

Non obstante, tales afirmacións teñen limitacións obvias, que pode querer usar unha afirmación de javascript para superar. E aquí TestMace tamén ofrece un ambiente cómodo con autocompletado, resaltado de sintaxe e mesmo un analizador estático.

Descrición da API

TestMace permítelle non só usar a API, senón tamén documentala. Ademais, a propia descrición tamén ten unha estrutura xerárquica e encaixa orgánicamente no resto do proxecto. Ademais, actualmente é posible importar descricións de API dos formatos Swagger 2.0 / OpenAPI 3.0. A descrición en si non só ten un peso morto, senón que está intimamente integrada co resto do proxecto, en particular, está dispoñible o autocompletado de URL, cabeceiras HTTP, parámetros de consulta, etc., e no futuro pensamos engadir probas. para o cumprimento da resposta coa descrición da API.

Nodo de compartición

Caso: quere compartir unha solicitude problemática ou mesmo un script completo cun colega ou simplemente anexalo a un erro. TestMace tamén cobre este caso: a aplicación permítelle serializar calquera nodo e mesmo unha subárbore nun URL. Copia e pega e podes transferir facilmente a solicitude a outra máquina ou proxecto.

Formato de almacenamento de proxectos lexible por humanos

Polo momento, cada nodo gárdase nun ficheiro separado coa extensión yml (como é o caso do nodo Assertion), ou nun cartafol co nome do nodo e o ficheiro index.yml nel.
Por exemplo, este é o aspecto do ficheiro de solicitude que fixemos na revisión anterior:

índice.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

Como vedes, todo está moi claro. Se o desexa, este formato pódese editar facilmente manualmente.

A xerarquía de cartafoles do sistema de ficheiros repite completamente a xerarquía de nodos do proxecto. Por exemplo, un script como:

TestMace: un potente IDE para traballar con API

Asigne o sistema de ficheiros á seguinte estrutura (só se mostra a xerarquía de cartafoles, pero a esencia é clara)

TestMace: un potente IDE para traballar con API

Isto facilita o proceso de revisión do proxecto.

Importar desde Postman

Despois de ler todo o anterior, algúns usuarios quererán probar (non?) un produto novo ou (que diaños non é broma!) utilizalo completamente no seu proxecto. Non obstante, a migración pode ser detida por un gran número de desenvolvementos no mesmo carteiro. Para tales casos, TestMace admite a importación de coleccións desde Postman. Polo momento, admítense as importacións sen probas, pero non descartamos apoialas no futuro.

Plans

Espero que a moitos dos que leron ata este momento lles gustara o noso produto. Non obstante, iso non é todo! O traballo no produto está en pleno apoxeo e aquí tes algunhas funcións que pensamos engadir en breve.

Sincronización na nube

Unha das características máis solicitadas. Polo momento propoñemos utilizar sistemas de control de versións para a sincronización, para o que estamos facendo máis amigable o formato para este tipo de almacenamento. Non obstante, este fluxo de traballo non é apto para todos, polo que pensamos engadir un mecanismo de sincronización familiar para moitos a través dos nosos servidores.

CLI

Como se mencionou anteriormente, os produtos de nivel IDE non poden prescindir de todo tipo de integracións con aplicacións ou fluxos de traballo existentes. A CLI é exactamente o que se necesita para integrar as probas escritas en TestMace no proceso de integración continua. O traballo na CLI está en pleno apoxeo; as primeiras versións lanzarán o proxecto cun simple informe de consola. No futuro planeamos engadir a saída do informe en formato JUnit.

Sistema de complementos

A pesar de todo o poder da nosa ferramenta, o conxunto de casos que requiren solucións é ilimitado. Despois de todo, hai tarefas específicas para un proxecto en particular. É por iso que no futuro pensamos engadir un SDK para desenvolver complementos e cada desenvolvedor poderá engadir funcionalidades ao seu gusto.

Ampliación da gama de tipos de nodos

Este conxunto de nodos non cobre todos os casos requiridos polo usuario. Nodos que está previsto engadir:

  • Nodo de script: converte e coloca datos usando js e a API correspondente. Usando este tipo de nodos, podes facer cousas como scripts de solicitude previa e posterior en Postman.
  • Nodo GraphQL - soporte graphql
  • Nodo de aserción personalizado: permitirache ampliar o conxunto de asercións existentes no proxecto
    Por suposto, esta non é unha lista definitiva; actualizarase constantemente debido, entre outras cousas, aos teus comentarios.

FAQ

En que te diferencias de Postman?

  1. O concepto de nodos, que permite escalar case infinitamente a funcionalidade do proxecto
  2. Formato de proxecto lexible por humanos con gardalo nun sistema de ficheiros, o que simplifica o traballo mediante sistemas de control de versións
  3. Capacidade de crear probas sen programación e soporte js máis avanzado no editor de probas (completado automático, analizador estático)
  4. Autocompletado avanzado e resaltado do valor actual das variables

É este un produto de código aberto?

Non, de momento as fontes están pechadas, pero nun futuro barallamos a posibilidade de abrir as fontes

De que vives?)

Xunto coa versión gratuíta, pensamos lanzar unha versión de pago do produto. Incluirá principalmente cousas que requiren un lado do servidor, por exemplo, a sincronización.

Conclusión

O noso proxecto avanza a pasos agigantados cara a un lanzamento estable. Non obstante, o produto xa se pode usar, e os comentarios positivos dos nosos primeiros usuarios son unha proba diso. Recollemos comentarios activamente, porque sen unha estreita cooperación coa comunidade é imposible construír unha boa ferramenta. Podes atoparnos aquí:

Sitio web oficial

Telegrama

Neglixente

Facebook

Rastreador de problemas

Agardamos os vosos desexos e suxestións!

Fonte: www.habr.com

Engadir un comentario