{"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\/pt\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api","title":{"rendered":"TestMace \u2014 uma poderosa IDE para trabalhar com API","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ol\u00e1 a todos! Hoje queremos apresentar \u00e0 comunidade de TI nosso produto \u2014 uma IDE para trabalhar com APIs <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">em a\u00e7\u00e3o e voc\u00ea poder\u00e1 avaliar algumas funcionalidades do nosso aplicativo. Para uma imers\u00e3o mais completa, recomendamos consultar nossa documenta\u00e7\u00e3o dispon\u00edvel em<\/a><\/noindex>. Talvez alguns de voc\u00eas j\u00e1 saibam sobre n\u00f3s a partir de <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace.com\/blog\/\">artigos anteriores<\/a><\/noindex>. No entanto, n\u00e3o houve uma vis\u00e3o abrangente da ferramenta, ent\u00e3o estamos corrigindo essa lacuna.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 uma poderosa IDE para trabalhar com 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\">Motiva\u00e7\u00e3o<\/h1>\n<p><\/p>\n<p>Gostar\u00edamos de come\u00e7ar explicando como chegamos a essa situa\u00e7\u00e3o e decidimos desenvolver nossa ferramenta para trabalhar avan\u00e7adamente com APIs. Vamos come\u00e7ar com a lista de funcionalidades que o produto deve ter, que, na nossa opini\u00e3o, pode ser descrito como um &#171;IDE para trabalhar com APIs&#187;:<\/p>\n<p><\/p>\n<ul>\n<li>Cria\u00e7\u00e3o e execu\u00e7\u00e3o de solicita\u00e7\u00f5es e scripts (sequ\u00eancias de solicita\u00e7\u00f5es)<\/li>\n<li>Escrita de diversos tipos de testes<\/li>\n<li>Gera\u00e7\u00e3o de testes<\/li>\n<li>Trabalho com a descri\u00e7\u00e3o da API, incluindo importa\u00e7\u00e3o de formatos como Swagger, OpenAPI, WADL, etc.<\/li>\n<li>Mocking de solicita\u00e7\u00f5es<\/li>\n<li>Boa suporte a uma ou mais linguagens de programa\u00e7\u00e3o para escrita de scripts, incluindo integra\u00e7\u00e3o com bibliotecas populares<\/li>\n<li>etc.<\/li>\n<\/ul>\n<p><\/p>\n<p>A lista pode ser expandida conforme desejado. E \u00e9 importante criar n\u00e3o apenas a pr\u00f3pria IDE, mas tamb\u00e9m uma infraestrutura espec\u00edfica, como sincroniza\u00e7\u00e3o em nuvem, ferramentas de linha de comando, servi\u00e7o de monitoramento online, etc. Afinal, as tend\u00eancias dos \u00faltimos anos nos imp\u00f5em n\u00e3o apenas um poderoso funcionalidade do aplicativo, mas tamb\u00e9m uma interface agrad\u00e1vel.<\/p>\n<p><\/p>\n<p>Para quem \u00e9 essa ferramenta? Obviamente, todos aqueles que est\u00e3o de alguma forma envolvidos no desenvolvimento e teste de APIs \u2014 desenvolvedores e testadores =). E se para os primeiros muitas vezes \u00e9 suficiente executar solicita\u00e7\u00f5es isoladas e cen\u00e1rios simples, para os testadores isso \u00e9 uma das principais ferramentas, que deve incluir um poderoso mecanismo para escrever testes com a possibilidade de execu\u00e7\u00e3o em CI.<\/p>\n<p><\/p>\n<p>Assim, seguindo essas diretrizes, come\u00e7amos a criar nosso produto. Vamos ver o que conseguimos at\u00e9 este momento.<\/p>\n<p><\/p>\n<h1 id=\"bystryy-start\">In\u00edcio R\u00e1pido<\/h1>\n<p><\/p>\n<p>Vamos come\u00e7ar com um primeiro contato com o aplicativo. Voc\u00ea pode baix\u00e1-lo <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\/\">no nosso site<\/a><\/noindex>. Neste momento, todas as 3 principais plataformas s\u00e3o suportadas \u2014 Windows, Linux, MacOS. Baixamos, instalamos, iniciamos. Na primeira execu\u00e7\u00e3o, voc\u00ea poder\u00e1 visualizar a seguinte janela:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 uma poderosa IDE para trabalhar com API\" src=\"\/wp-content\/uploads\/2019\/12\/dbbd26d8656488cd11716f7dbede9ec7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Clique no sinal de mais na parte superior da \u00e1rea de conte\u00fado para criar sua primeira solicita\u00e7\u00e3o. A aba de solicita\u00e7\u00f5es se parece com o seguinte modo:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 uma poderosa IDE para trabalhar com API\" src=\"\/wp-content\/uploads\/2019\/12\/d76205f43ec821018642a3d354532e7e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Vamos nos aprofundar um pouco mais. A interface de requisi\u00e7\u00e3o \u00e9 muito semelhante \u00e0 interface de clientes REST populares, o que facilita a migra\u00e7\u00e3o a partir de ferramentas desse tipo. Vamos executar a primeira requisi\u00e7\u00e3o para o 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 uma poderosa IDE para trabalhar com API\" src=\"\/wp-content\/uploads\/2019\/12\/19e639baa1e0d51f1a40b76ae9144d6c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Em geral, \u00e0 primeira vista, o painel de resposta tamb\u00e9m n\u00e3o traz grandes surpresas. No entanto, quero chamar sua aten\u00e7\u00e3o para alguns pontos:<\/p>\n<p><\/p>\n<ol>\n<li>O corpo da resposta apresenta-se em forma de \u00e1rvore, o que, por um lado, adiciona informa\u00e7\u00f5es e, por outro, permite adicionar algumas funcionalidades interessantes que discutiremos a seguir<\/li>\n<li>H\u00e1 uma aba de Assertions, onde \u00e9 exibida uma lista de testes para essa requisi\u00e7\u00e3o<\/li>\n<\/ol>\n<p><\/p>\n<p>Como podemos notar, nossa ferramenta pode ser usada como um cliente REST pr\u00e1tico. No entanto, n\u00e3o estar\u00edamos aqui se suas capacidades se limitassem apenas ao envio de requisi\u00e7\u00f5es. A seguir, apresentarei os principais conceitos e funcionalidades do TestMace.<\/p>\n<p><\/p>\n<h1 id=\"osnovnye-ponyatiya-i-vozmozhnosti\">Principais conceitos e funcionalidades<\/h1>\n<p><\/p>\n<h2 id=\"uzel\">N\u00f3<\/h2>\n<p><\/p>\n<p>A funcionalidade do TestMace est\u00e1 dividida em diferentes tipos de n\u00f3s. No exemplo acima, demonstramos o funcionamento do n\u00f3 RequestStep. Entretanto, atualmente o aplicativo tamb\u00e9m oferece os seguintes tipos de n\u00f3s:<\/p>\n<p><\/p>\n<ul>\n<li>RequestStep. Este \u00e9 um n\u00f3 que permite criar uma requisi\u00e7\u00e3o. Como elemento filho, ele pode ter apenas um n\u00f3 Assertion.<\/li>\n<li>Assertion. O n\u00f3 \u00e9 usado para escrever testes. Pode ser um n\u00f3 filho apenas do n\u00f3 RequestStep.<\/li>\n<li>Folder. Permite agrupar n\u00f3s Folder e RequestStep dentro dele.<\/li>\n<li>Project. Este \u00e9 o n\u00f3 raiz, criado automaticamente ao criar um projeto. De resto, repete as funcionalidades do n\u00f3 Folder.<\/li>\n<li>Link. Um link para um n\u00f3 Folder ou RequestStep. Permite reutilizar requisi\u00e7\u00f5es e cen\u00e1rios.<\/li>\n<li>etc.<\/li>\n<\/ul>\n<p><\/p>\n<p>Os n\u00f3s est\u00e3o dispostos em scratches (painel \u00e0 esquerda na parte inferior, que serve para a cria\u00e7\u00e3o r\u00e1pida de solicita\u00e7\u00f5es &#171;tempor\u00e1rias&#187;) e em project (painel \u00e0 esquerda na parte superior), onde iremos nos aprofundar.<\/p>\n<p><\/p>\n<h2 id=\"proekt\">Projeto<\/h2>\n<p><\/p>\n<p>Ao iniciar o aplicativo, voc\u00ea pode ter notado uma linha solit\u00e1ria chamada Project no canto superior esquerdo. Este \u00e9 a raiz da \u00e1rvore do projeto. Ao iniciar um projeto, um projeto tempor\u00e1rio \u00e9 criado, e o caminho at\u00e9 ele depende do seu sistema operacional. A qualquer momento, voc\u00ea pode mover o projeto para um local que seja mais conveniente para voc\u00ea.<\/p>\n<p><\/p>\n<p>A principal finalidade do projeto \u00e9 a capacidade de salvar o trabalho no sistema de arquivos e sincroniz\u00e1-lo posteriormente por meio de sistemas de controle de vers\u00e3o, execu\u00e7\u00e3o de cen\u00e1rios em CI, revis\u00e3o de altera\u00e7\u00f5es, etc.<\/p>\n<p><\/p>\n<h2 id=\"peremennye\">Vari\u00e1veis<\/h2>\n<p><\/p>\n<p>Vari\u00e1veis s\u00e3o um dos mecanismos fundamentais do aplicativo. Aqueles de voc\u00eas que trabalham com ferramentas como o TestMace provavelmente j\u00e1 entenderam do que se trata. Ent\u00e3o, vari\u00e1veis s\u00e3o uma forma de armazenar dados comuns e comunica\u00e7\u00e3o entre os n\u00f3s. Um exemplo s\u00e3o as vari\u00e1veis de ambiente no Postman ou Insomnia. No entanto, n\u00f3s fomos al\u00e9m e desenvolvemos o assunto. No TestMace, as vari\u00e1veis podem ser definidas no n\u00edvel de qualquer n\u00f3. Al\u00e9m disso, existe um mecanismo de heran\u00e7a de vari\u00e1veis de ancestrais e sobreposi\u00e7\u00e3o de vari\u00e1veis em descendentes. Al\u00e9m disso, existem uma s\u00e9rie de vari\u00e1veis integradas, cujos nomes come\u00e7am com <code>$<\/code>. Aqui est\u00e3o algumas delas:<\/p>\n<p><\/p>\n<ul>\n<li><code>$prevStep<\/code> \u2014 refer\u00eancia \u00e0s vari\u00e1veis do n\u00f3 anterior<\/li>\n<li><code>$nextStep<\/code> \u2014 refer\u00eancia \u00e0s vari\u00e1veis do pr\u00f3ximo n\u00f3<\/li>\n<li><code>$parent<\/code> \u2014 o mesmo que acima, mas para o antecessor<\/li>\n<li><code>$response<\/code> \u2014 resposta do servidor<\/li>\n<li><code>$env<\/code> \u2014 vari\u00e1veis de ambiente atuais<\/li>\n<li><code>$dynamicVar<\/code> \u2014 vari\u00e1veis din\u00e2micas criadas durante a execu\u00e7\u00e3o do script ou requisi\u00e7\u00e3o<\/li>\n<\/ul>\n<p><\/p>\n<p><code>$env<\/code> \u2014 s\u00e3o essencialmente vari\u00e1veis comuns no n\u00edvel do n\u00f3 do Projeto, no entanto, o conjunto de vari\u00e1veis de ambiente mudam dependendo do ambiente escolhido. <\/p>\n<p><\/p>\n<p>O acesso \u00e0 vari\u00e1vel \u00e9 feito atrav\u00e9s de <code>${variable_name}<\/code><br \/>\nComo valor de uma vari\u00e1vel, pode haver outra vari\u00e1vel ou at\u00e9 mesmo uma express\u00e3o inteira. Por exemplo, como vari\u00e1vel de url, pode haver uma express\u00e3o do tipo<br \/>\n<code>http:\/\/${host}:${port}\/${endpoint}<\/code>.<\/p>\n<p><\/p>\n<p>Vale a pena destacar a possibilidade de atribuir vari\u00e1veis durante a execu\u00e7\u00e3o do script. Por exemplo, muitas vezes surge a necessidade de armazenar dados de autentica\u00e7\u00e3o (token ou todo o cabe\u00e7alho) que vieram do servidor ap\u00f3s um login bem-sucedido. O TestMace permite armazenar esses dados em vari\u00e1veis din\u00e2micas de um dos ancestrais. Para evitar colis\u00f5es com as j\u00e1 existentes &#171;vari\u00e1veis est\u00e1ticas&#187;, as vari\u00e1veis din\u00e2micas foram colocadas em um objeto separado. <code>$dynamicVar<\/code>. <\/p>\n<p><\/p>\n<h2 id=\"scenarii\">Cen\u00e1rios<\/h2>\n<p><\/p>\n<p>Utilizando todas as funcionalidades mencionadas acima, voc\u00ea pode executar cen\u00e1rios completos de requisi\u00e7\u00f5es. Por exemplo, cria\u00e7\u00e3o de entidade -&gt; requisi\u00e7\u00e3o de entidade -&gt; exclus\u00e3o de entidade. Neste caso, voc\u00ea pode usar um n\u00f3 Folder para agrupar v\u00e1rios n\u00f3s RequestStep.<\/p>\n<p><\/p>\n<h2 id=\"avtodopolnenie-i-podsvetka-znacheniya-vyrazheniya\">Autocompletar e real\u00e7ar o valor da express\u00e3o<\/h2>\n<p><\/p>\n<p>Para um trabalho conveniente com vari\u00e1veis (e n\u00e3o s\u00f3), \u00e9 necess\u00e1rio o autocomplemento. E, claro, a realce dos valores das express\u00f5es, para que seja mais f\u00e1cil e conveniente verificar a que determinada vari\u00e1vel equivale. Aqui, como se diz, \u00e9 melhor ver uma vez do que ouvir cem vezes:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 uma poderosa IDE para trabalhar com API\" src=\"\/wp-content\/uploads\/2019\/12\/cf9d30c9623b18575825d4282b8fe3e3.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Vale ressaltar que o autocomplemento n\u00e3o \u00e9 implementado apenas para vari\u00e1veis, mas tamb\u00e9m, por exemplo, para cabe\u00e7alhos, valores de determinados cabe\u00e7alhos (como o autocomplemento para o cabe\u00e7alho Content-Type), protocolos e muito mais. A lista est\u00e1 em constante expans\u00e3o conforme o aplicativo cresce.<\/p>\n<p><\/p>\n<h2 id=\"undoredo\">Desfazer\/refazer<\/h2>\n<p><\/p>\n<p>Desfazer\/refazer altera\u00e7\u00f5es \u00e9 algo muito conveniente, por\u00e9m, por algum motivo, n\u00e3o \u00e9 implementado em muitos lugares (e as ferramentas para trabalhar com API n\u00e3o s\u00e3o uma exce\u00e7\u00e3o). Mas n\u00e3o estamos entre esses!) O desfazer\/refazer est\u00e1 implementado em todo o projeto, permitindo cancelar n\u00e3o apenas a edi\u00e7\u00e3o de um determinado n\u00f3, mas tamb\u00e9m sua cria\u00e7\u00e3o, exclus\u00e3o, movimenta\u00e7\u00e3o, etc. As opera\u00e7\u00f5es mais cr\u00edticas exigem confirma\u00e7\u00e3o.<\/p>\n<p><\/p>\n<h2 id=\"sozdanie-testov\">Cria\u00e7\u00e3o de testes<\/h2>\n<p><\/p>\n<p>O n\u00f3 de Assertion \u00e9 respons\u00e1vel pela cria\u00e7\u00e3o de testes. Uma das principais caracter\u00edsticas \u00e9 a possibilidade de criar testes sem programa\u00e7\u00e3o, utilizando editores embutidos. <\/p>\n<p><\/p>\n<p>O n\u00f3 de Assertion consiste em um conjunto de afirma\u00e7\u00f5es (assertions). Cada assertion tem seu tipo, atualmente existem v\u00e1rios tipos de assertions.<\/p>\n<p><\/p>\n<ol>\n<li>\n<p>Compare values \u2014 simplesmente compara 2 valores. Existem v\u00e1rios operadores de compara\u00e7\u00e3o &#171;igual&#187;, &#171;diferente&#187;, &#171;maior&#187;, &#171;maior ou igual&#187;, &#171;menor&#187;, &#171;menor ou igual&#187;.<\/p>\n<p>\n<\/li>\n<li>\n<p>Cont\u00e9m valor \u2014 verifica a inclus\u00e3o de uma substring em uma string.<\/p>\n<p>\n<\/li>\n<li>\n<p>XPath \u2014 verifica se um determinado valor est\u00e1 presente no XML segundo o seletor.<\/p>\n<p>\n<\/li>\n<li>\n<p>Assertion JavaScript \u2014 script arbitr\u00e1rio em JavaScript que retorna true em caso de sucesso e false em caso de falha.<\/p>\n<p>\n<\/li>\n<\/ol>\n<p><\/p>\n<p>Note que apenas o \u00faltimo requer habilidades de programa\u00e7\u00e3o do usu\u00e1rio, os outros 3 assertions s\u00e3o criados atrav\u00e9s de uma interface gr\u00e1fica. Veja, por exemplo, como \u00e9 o di\u00e1logo de cria\u00e7\u00e3o do assertion de comparar valores:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 uma poderosa IDE para trabalhar com API\" src=\"\/wp-content\/uploads\/2019\/12\/e71e11fb0fb664d1d9751a71fbdcc850.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A cereja do bolo \u00e9 a cria\u00e7\u00e3o r\u00e1pida de assertions a partir da resposta, veja como \u00e9 f\u00e1cil!<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 uma poderosa IDE para trabalhar com API\" src=\"\/wp-content\/uploads\/2019\/12\/3b86084419339a7a05a3548df5c12d6a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>No entanto, essas assertions possuem limita\u00e7\u00f5es \u00f3bvias, e, ao deparar-se com elas, voc\u00ea pode utilizar o assertion JavaScript. Aqui, o TestMace tamb\u00e9m oferece um ambiente confort\u00e1vel com autocomplemento, destaque de sintaxe e at\u00e9 um analisador est\u00e1tico.<\/p>\n<p><\/p>\n<h2 id=\"opisanie-api\">Descri\u00e7\u00e3o da API<\/h2>\n<p><\/p>\n<p>O TestMace permite n\u00e3o s\u00f3 o uso da API, mas tamb\u00e9m a sua documenta\u00e7\u00e3o. A descri\u00e7\u00e3o possui uma estrutura hier\u00e1rquica e se integra organicamente ao restante do projeto. Al\u00e9m disso, atualmente h\u00e1 a possibilidade de importar a descri\u00e7\u00e3o da API nos formatos Swagger 2.0 \/ OpenAPI 3.0. A descri\u00e7\u00e3o n\u00e3o \u00e9 apenas um peso morto, mas se integra intimamente com o restante do projeto, particularmente com o recurso de autocompletar URLs, cabe\u00e7alhos HTTP, par\u00e2metros de consulta e mais; no futuro, planejamos adicionar testes para verificar se as respostas correspondem \u00e0 descri\u00e7\u00e3o da API.<\/p>\n<p><\/p>\n<h2 id=\"sharing-nod\">Compartilhamento de n\u00f3s<\/h2>\n<p><\/p>\n<p>Exemplo: voc\u00ea gostaria de compartilhar uma requisi\u00e7\u00e3o problem\u00e1tica ou mesmo um cen\u00e1rio completo com um colega ou simplesmente anex\u00e1-la a um bug. O TestMace cobre esse caso: o aplicativo permite serializar qualquer n\u00f3 e at\u00e9 mesmo uma sub\u00e1rvore em uma URL. Um simples copiar e colar e voc\u00ea j\u00e1 transferiu a requisi\u00e7\u00e3o para outra m\u00e1quina ou projeto com facilidade.<\/p>\n<p><\/p>\n<h2 id=\"chelovekochitaemyy-format-hraneniya-proekta\">Formato leg\u00edvel por humanos para armazenamento de projeto<\/h2>\n<p><\/p>\n<p>Atualmente, cada n\u00f3 \u00e9 armazenado em um arquivo separado com a extens\u00e3o yml (como no caso do n\u00f3 de Assertion), ou em uma pasta com o nome do n\u00f3 e um arquivo index.yml dentro dela.<br \/>\nVeja como por exemplo o arquivo de requisi\u00e7\u00e3o que fizemos na revis\u00e3o acima:<\/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>Como voc\u00ea pode ver, tudo \u00e9 bastante claro. Se desejado, esse formato pode ser editado manualmente de maneira bastante confort\u00e1vel.<\/p>\n<p><\/p>\n<p>A hierarquia de pastas no sistema de arquivos repete completamente a hierarquia dos n\u00f3s no projeto. Por exemplo, um cen\u00e1rio como:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 uma poderosa IDE para trabalhar com API\" src=\"\/wp-content\/uploads\/2019\/12\/8f08d934a977e4fdacd269f4ea0c34b5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mapeia-se no sistema de arquivos para a seguinte estrutura (apenas a hierarquia de pastas \u00e9 mostrada, mas a ess\u00eancia \u00e9 clara)<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 uma poderosa IDE para trabalhar com API\" src=\"\/wp-content\/uploads\/2019\/12\/60a54704979f5a77ee05735fd8ebe824.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>O que facilita o processo de revis\u00e3o do projeto.<\/p>\n<p><\/p>\n<h2 id=\"import-iz-postman\">Importa\u00e7\u00e3o do Postman<\/h2>\n<p><\/p>\n<p>Depois de ler tudo o que foi exposto, alguns usu\u00e1rios podem querer experimentar (n\u00e3o \u00e9 mesmo?) o novo produto ou (quem sabe!) utiliz\u00e1-lo amplamente em seu projeto. No entanto, a migra\u00e7\u00e3o pode ser impedida por uma grande quantidade de trabalho j\u00e1 realizada no mesmo Postman. Para esses casos, o TestMace suporta a importa\u00e7\u00e3o de cole\u00e7\u00f5es do Postman. Atualmente, a importa\u00e7\u00e3o sem testes \u00e9 suportada, mas no futuro n\u00e3o exclu\u00edmos a possibilidade de tamb\u00e9m suport\u00e1-los.<\/p>\n<p><\/p>\n<h1 id=\"plany\">Planos<\/h1>\n<p><\/p>\n<p>Espero que muitos dos que chegaram at\u00e9 aqui tenham gostado do nosso produto. Mas isso ainda n\u00e3o \u00e9 tudo! O trabalho no produto est\u00e1 a todo vapor e aqui est\u00e3o algumas funcionalidades que planejamos adicionar em breve.<\/p>\n<p><\/p>\n<h2 id=\"oblachnaya-sinhronizaciya\">Sincroniza\u00e7\u00e3o em nuvem<\/h2>\n<p><\/p>\n<p>Uma das funcionalidades mais solicitadas. No momento, oferecemos como sincroniza\u00e7\u00e3o o uso de sistemas de controle de vers\u00e3o, para os quais estamos tornando o formato mais amig\u00e1vel para esse tipo de armazenamento. No entanto, nem todos acham esse fluxo de trabalho adequado, portanto, est\u00e1 planejado adicionar um mecanismo de sincroniza\u00e7\u00e3o mais familiar para muitos atrav\u00e9s de nossos servidores. <\/p>\n<p><\/p>\n<h2 id=\"cli\">CLI<\/h2>\n<p><\/p>\n<p>Como mencionado acima, produtos de n\u00edvel IDE n\u00e3o ficam sem v\u00e1rias integra\u00e7\u00f5es com aplicativos ou fluxos de trabalho j\u00e1 existentes. A CLI \u00e9 precisamente necess\u00e1ria para integrar testes escritos no TestMace ao processo de integra\u00e7\u00e3o cont\u00ednua. O trabalho na CLI est\u00e1 a todo vapor, nas vers\u00f5es iniciais haver\u00e1 o lan\u00e7amento do projeto com um simples relat\u00f3rio no console. No futuro, planejamos adicionar a sa\u00edda do relat\u00f3rio no formato JUnit.<\/p>\n<p><\/p>\n<h2 id=\"plaginnaya-sistema\">Sistema de plugins<\/h2>\n<p><\/p>\n<p>Apesar de toda a pot\u00eancia da nossa ferramenta, o conjunto de casos que requerem solu\u00e7\u00e3o \u00e9 infinito. Afinal, existem tarefas espec\u00edficas para projetos concretos. \u00c9 por isso que, no futuro, planejamos adicionar um SDK para desenvolvimento de plugins, permitindo que cada desenvolvedor acrescente funcionalidades conforme desejado.<\/p>\n<p><\/p>\n<h2 id=\"rasshirenie-assortimenta-tipov-uzlov\">Amplia\u00e7\u00e3o da variedade de tipos de n\u00f3s<\/h2>\n<p><\/p>\n<p>Este conjunto de n\u00f3s n\u00e3o cobre todos os casos necess\u00e1rios para o usu\u00e1rio. N\u00f3s que est\u00e3o planejados para serem adicionados:<\/p>\n<p><\/p>\n<ul>\n<li>N\u00f3 Script \u2014 transforma e coloca dados, utilizando js e a API correspondente. Usando esse tipo de n\u00f3, podem ser feitas coisas como scripts de pre-request e post-request no Postman.<\/li>\n<li>N\u00f3 GraphQL \u2014 suporte a graphql<\/li>\n<li>N\u00f3 de asser\u00e7\u00e3o personalizada \u2014 permitir\u00e1 expandir o conjunto de asser\u00e7\u00f5es existentes no projeto<br \/>\nNaturalmente, esta n\u00e3o \u00e9 uma lista final, ela continuar\u00e1 a ser constantemente ampliada, inclusive com seu feedback.<\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"faq\">FAQ<\/h1>\n<p><\/p>\n<p><strong>O que diferencia voc\u00ea do Postman?<\/strong><\/p>\n<p><\/p>\n<ol>\n<li>Conceito de n\u00f3s que permite escalar praticamente infinitamente a funcionalidade do projeto<\/li>\n<li>Formato leg\u00edvel de projeto com armazenamento no sistema de arquivos, facilitando o trabalho com sistemas de controle de vers\u00e3o<\/li>\n<li>Capacidade de criar testes sem programa\u00e7\u00e3o e suporte mais avan\u00e7ado a js no editor de testes (completar automaticamente, analisador est\u00e1tico)<\/li>\n<li>Autocompleta\u00e7\u00e3o avan\u00e7ada e destaque do valor atual das vari\u00e1veis<\/li>\n<\/ol>\n<p><\/p>\n<p><strong>Este \u00e9 um produto de c\u00f3digo aberto?<\/strong><\/p>\n<p><\/p>\n<p>N\u00e3o, no momento o c\u00f3digo-fonte est\u00e1 fechado, mas no futuro consideramos a possibilidade de abrir os fontes<\/p>\n<p><\/p>\n<p><strong>De onde vem a sua fonte de renda?)<\/strong><\/p>\n<p><\/p>\n<p>Al\u00e9m da vers\u00e3o gratuita, planejamos lan\u00e7ar uma vers\u00e3o paga do produto. Ela incluir\u00e1, em primeiro lugar, recursos que exigem uma parte do servidor, como a sincroniza\u00e7\u00e3o.<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Conclus\u00e3o<\/h1>\n<p><\/p>\n<p>Nosso projeto avan\u00e7a a passos largos em dire\u00e7\u00e3o a um lan\u00e7amento est\u00e1vel. No entanto, o produto j\u00e1 pode ser utilizado, e os feedbacks positivos de nossos primeiros usu\u00e1rios comprovam isso. Estamos coletando ativamente as opini\u00f5es, pois sem a colabora\u00e7\u00e3o pr\u00f3xima com a comunidade, n\u00e3o \u00e9 poss\u00edvel construir uma boa ferramenta. Voc\u00ea pode nos encontrar aqui:<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">Site oficial<\/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\">Rastreador de problemas<\/a><\/noindex><\/p>\n<p><\/p>\n<p>Estamos ansiosos por seus desejos e sugest\u00f5es!<\/p>\n<p>Fonte: <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.3 - 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\/pt\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\/pt\/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 \u2014 IDE poderosa para trabalhar com APIs | ProHoster","description":"Ol\u00e1 a todos! Hoje queremos apresentar ao p\u00fablico de TI nosso produto \u2014 IDE para trabalhar com a API TestMace.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/54187","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=54187"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/54187\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=54187"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=54187"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=54187"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}