{"id":54188,"date":"2019-12-20T00:00:00","date_gmt":"2019-12-19T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/chem-testmace-luchshe-postman"},"modified":"2020-02-18T14:02:10","modified_gmt":"2020-02-18T11:02:10","slug":"chem-testmace-luchshe-postman","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/news\/chem-testmace-luchshe-postman","title":{"rendered":"O que torna o TestMace melhor que o Postman","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"O que torna o TestMace melhor que o Postman\" src=\"\/wp-content\/uploads\/2019\/12\/4b61986c287c32a4cefeb2f805fc228f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ol\u00e1 a todos, aqui \u00e9 a equipe <noindex><a rel=\"nofollow\" href=\"https:\/\/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>! Possivelmente, muitos de voc\u00eas nos conhecem atrav\u00e9s <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458372\/\">de nossos<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/462585\/\">as not\u00edcias anteriores<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458964\/\">de artigos<\/a><\/noindex>. Para quem acaba de se conectar: estamos desenvolvendo uma IDE para trabalhar com a API TestMace. A pergunta mais comum ao comparar o TestMace com produtos concorrentes \u00e9: \"Como voc\u00eas se diferenciam do Postman?\". Decidimos que era hora de dar uma resposta completa a essa pergunta. Abaixo, listamos nossos benef\u00edcios em rela\u00e7\u00e3o a <noindex><a rel=\"nofollow\" href=\"https:\/\/www.getpostman.com\/\">Postman<\/a><\/noindex>.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2 id=\"razdelenie-na-uzly\">Divis\u00e3o em n\u00f3s<\/h2>\n<p><\/p>\n<p>Se voc\u00ea trabalha com o Postman, sabe que a interface de solicita\u00e7\u00e3o cont\u00e9m toda a funcionalidade necess\u00e1ria. H\u00e1 scripts, testes e, basicamente, as pr\u00f3prias solicita\u00e7\u00f5es. Isso facilita o trabalho para iniciantes, no entanto, em cen\u00e1rios maiores, essa abordagem n\u00e3o \u00e9 flex\u00edvel. E se voc\u00ea quiser criar v\u00e1rias solicita\u00e7\u00f5es e fazer uma agrega\u00e7\u00e3o com elas? E se voc\u00ea quiser executar um script sem uma solicita\u00e7\u00e3o ou v\u00e1rios scripts logicamente separados em sequ\u00eancia? Afinal, seria bom separar os testes dos scripts utilit\u00e1rios comuns. Al\u00e9m disso, a abordagem \"adicionamos toda a funcionalidade em um \u00fanico n\u00f3\" n\u00e3o \u00e9 escal\u00e1vel - a interface rapidamente se torna sobrecarregada.<\/p>\n<p><\/p>\n<p>O TestMace, desde o in\u00edcio, divide toda a funcionalidade em diferentes tipos de n\u00f3s. Quer fazer uma solicita\u00e7\u00e3o? Aqui est\u00e1 um <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/requeststep\">request step<\/a><\/noindex> n\u00f3. Quer escrever um script? Aqui est\u00e1 um <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/script\">script<\/a><\/noindex> n\u00f3. Precisando de testes? Por favor \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\">Assertiva<\/a><\/noindex> n\u00f3. Ah, e voc\u00ea ainda pode encapsular tudo isso em um <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/folder\">folder<\/a><\/noindex> n\u00f3. E tudo isso se combina facilmente. Essa abordagem \u00e9 n\u00e3o apenas muito flex\u00edvel, mas tamb\u00e9m, de acordo com o princ\u00edpio da responsabilidade \u00fanica, permite usar apenas o que voc\u00ea realmente precisa no momento. Por que eu precisaria de scripts e testes se quero apenas fazer uma solicita\u00e7\u00e3o?<\/p>\n<p><\/p>\n<h2 id=\"chelovekochitaemyy-format-proekta\">Formato leg\u00edvel por humanos do projeto<\/h2>\n<p><\/p>\n<p>Entre TestMace e Postman, h\u00e1 uma diferen\u00e7a conceitual na forma de armazenamento. No Postman, todas as solicita\u00e7\u00f5es s\u00e3o armazenadas em algum lugar no armazenamento local. Se houver necessidade de compartilhar solicita\u00e7\u00f5es entre v\u00e1rios usu\u00e1rios, \u00e9 necess\u00e1rio utilizar a sincroniza\u00e7\u00e3o embutida. Na verdade, essa \u00e9 uma abordagem comum, mas n\u00e3o isenta de desvantagens. E quanto \u00e0 seguran\u00e7a dos dados? Afinal, a pol\u00edtica de algumas empresas pode n\u00e3o permitir o armazenamento de dados em terceiros. No entanto, acreditamos que o TestMace pode oferecer algo melhor! E o nome dessa melhoria \u00e9 \"formato de projeto leg\u00edvel para humanos\".<\/p>\n<p><\/p>\n<p>Vamos come\u00e7ar pelo fato de que no TestMace existe a entidade \"projeto\". O aplicativo foi originalmente desenvolvido com foco no armazenamento de projetos em sistemas de controle de vers\u00e3o: a \u00e1rvore do projeto \u00e9 projetada praticamente id\u00eantica \u00e0 estrutura de arquivos, utilizando o formato YAML (sem par\u00eanteses ou v\u00edrgulas desnecess\u00e1rias), e a representa\u00e7\u00e3o em arquivos de cada n\u00f3 \u00e9 detalhadamente descrita na documenta\u00e7\u00e3o com coment\u00e1rios. Mas, na maioria dos casos, voc\u00ea n\u00e3o precisar\u00e1 olhar para isso \u2014 todos os nomes dos campos t\u00eam denomina\u00e7\u00f5es l\u00f3gicas. <\/p>\n<p><\/p>\n<p>O que isso oferece ao usu\u00e1rio? Isso permite uma mudan\u00e7a muito flex\u00edvel no fluxo de trabalho da equipe, utilizando abordagens familiares. Por exemplo, os desenvolvedores podem armazenar o projeto no mesmo reposit\u00f3rio que o backend. Nos branches, al\u00e9m de alterar diretamente a base de c\u00f3digo, o desenvolvedor pode corrigir os cen\u00e1rios de solicita\u00e7\u00e3o existentes e testes. Ap\u00f3s registrar as altera\u00e7\u00f5es no reposit\u00f3rio (git, svn, mercurial \u2014 o que voc\u00ea preferir), o CI (sua ferramenta favorita, n\u00e3o imposta por ningu\u00e9m) inicia nossa ferramenta de linha de comando <noindex><a rel=\"nofollow\" href=\"https:\/\/www.npmjs.com\/package\/@testmace\/cli\">testmace-cli<\/a><\/noindex>, e o relat\u00f3rio gerado ap\u00f3s a execu\u00e7\u00e3o (por exemplo, no formato junit, que tamb\u00e9m \u00e9 suportado no testmace-cli) \u00e9 enviado para o sistema correspondente. E a quest\u00e3o mencionada acima sobre seguran\u00e7a n\u00e3o \u00e9 mais um problema.<\/p>\n<p><\/p>\n<p>Como voc\u00ea pode ver, o TestMace n\u00e3o imp\u00f5e seu ecossistema ou paradigma. Em vez disso, ele se integra facilmente a processos j\u00e1 estabelecidos.<\/p>\n<p><\/p>\n<h2 id=\"dinamicheskie-peremennye\">Vari\u00e1veis din\u00e2micas<\/h2>\n<p><\/p>\n<p>O TestMace segue o conceito de no-code: se um problema pode ser resolvido sem o uso de c\u00f3digo, n\u00f3s tentamos dar essa oportunidade. Trabalhar com vari\u00e1veis \u00e9 exatamente uma funcionalidade onde, na maioria dos casos, pode-se evitar programa\u00e7\u00e3o.<\/p>\n<p><\/p>\n<p>Exemplo: recebemos uma resposta do servidor, e queremos salvar parte da resposta em uma vari\u00e1vel. No Postman, escrever\u00edamos algo como o seguinte no script de teste (o que por si s\u00f3 \u00e9 estranho):<\/p>\n<p><\/p>\n<pre><code class=\"javascript\">var jsonData = JSON.parse(responseBody);\npostman.setEnvironmentVariable(\"data\", jsonData.data);<\/code><\/pre>\n<p><\/p>\n<p>Mas, na nossa opini\u00e3o, escrever um script para um cen\u00e1rio t\u00e3o simples e frequentemente usado parece excessivo. Portanto, no TestMace h\u00e1 a op\u00e7\u00e3o de atribuir a vari\u00e1vel um peda\u00e7o da resposta, utilizando a interface gr\u00e1fica. Veja como \u00e9 simples:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"O que torna o TestMace melhor que o Postman\" src=\"\/wp-content\/uploads\/2019\/12\/2ce8ce2f9aa2964cb5bd1d5eacead423.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>E agora, a cada solicita\u00e7\u00e3o, essa vari\u00e1vel din\u00e2mica ser\u00e1 atualizada. Mas voc\u00ea pode argumentar que a abordagem do Postman \u00e9 mais flex\u00edvel e permite n\u00e3o apenas fazer uma atribui\u00e7\u00e3o, mas tamb\u00e9m realizar algum pr\u00e9-processamento. Veja como \u00e9 poss\u00edvel modificar o exemplo anterior:<\/p>\n<p><\/p>\n<pre><code class=\"javascript\">var jsonData = JSON.parse(responseBody);\npostman.setEnvironmentVariable(\"data\", CryptoJS.MD5(jsonData.data));<\/code><\/pre>\n<p><\/p>\n<p>Bem, para isso, o TestMace possui <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/script\">script<\/a><\/noindex> um n\u00f3 que cobre esse cen\u00e1rio. Para reproduzir o caso anterior, mas j\u00e1 na execu\u00e7\u00e3o do TestMace, \u00e9 necess\u00e1rio criar um n\u00f3 de script ap\u00f3s a solicita\u00e7\u00e3o e usar o seguinte c\u00f3digo como script:<\/p>\n<p><\/p>\n<pre><code class=\"javascript\">const data = tm.currentNode.prev.response.body.data;\ntm.currentNode.parent.setDynamicVar('data', crypto.MD5(data));<\/code><\/pre>\n<p><\/p>\n<p>Como voc\u00ea pode ver, a composi\u00e7\u00e3o dos n\u00f3s tamb\u00e9m foi muito \u00fatil aqui. E para um caso t\u00e3o simples como o descrito acima, voc\u00ea pode simplesmente atribuir a express\u00e3o <code>${crypto.MD5($response.data)}<\/code> a uma vari\u00e1vel criada atrav\u00e9s da interface gr\u00e1fica!<\/p>\n<p><\/p>\n<h2 id=\"sozdanie-testov-cherez-gui\">Cria\u00e7\u00e3o de testes atrav\u00e9s da GUI<\/h2>\n<p><\/p>\n<p>O Postman permite criar testes por meio da escrita de scripts (no caso do Postman, em JavaScript). Essa abordagem tem apenas benef\u00edcios \u2014 flexibilidade praticamente ilimitada, solu\u00e7\u00f5es prontas, etc.<\/p>\n<p><\/p>\n<p>No entanto, muitas vezes a realidade \u00e9 que o testador n\u00e3o possui habilidades de programa\u00e7\u00e3o, e gostar\u00edamos que a equipe j\u00e1 pudesse trazer benef\u00edcios. Para esses casos, seguindo o conceito no-code, o TestMace permite criar testes simples atrav\u00e9s da interface gr\u00e1fica, sem recorrer \u00e0 escrita de scripts. Veja, por exemplo, como \u00e9 o processo de cria\u00e7\u00e3o de um teste que compara valores para igualdade:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"O que torna o TestMace melhor que o Postman\" src=\"\/wp-content\/uploads\/2019\/12\/c0a8ce4cbe264dd76e3b5d90594eeff5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>No entanto, a cria\u00e7\u00e3o de testes no editor gr\u00e1fico n\u00e3o exclui a possibilidade <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\/script\">de escrever testes em c\u00f3digo<\/a><\/noindex>. Aqui est\u00e3o todas as mesmas bibliotecas que no n\u00f3 de script, e <noindex><a rel=\"nofollow\" href=\"https:\/\/www.chaijs.com\/\">chai<\/a><\/noindex> para escrever testes.<\/p>\n<p><\/p>\n<h2 id=\"vozmozhnost-zapustit-uzhe-suschestvuyuschiy-scenariy-po-ssylke-link-uzel\">A possibilidade de executar um cen\u00e1rio j\u00e1 existente por meio de um link (n\u00f3 Link)<\/h2>\n<p><\/p>\n<p>Muitas vezes surgem situa\u00e7\u00f5es em que uma determinada solicita\u00e7\u00e3o ou at\u00e9 mesmo um cen\u00e1rio inteiro precisa ser executado v\u00e1rias vezes em diferentes partes do projeto. Exemplos dessas solicita\u00e7\u00f5es incluem autentica\u00e7\u00e3o personalizada em v\u00e1rias etapas, ajuste do ambiente para o estado desejado, etc. Em geral, falando em termos de linguagens de programa\u00e7\u00e3o, gostar\u00edamos de ter fun\u00e7\u00f5es que possam ser reutilizadas em diferentes partes do aplicativo. No TestMace, essa fun\u00e7\u00e3o \u00e9 realizada <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/link\">link<\/a><\/noindex> n\u00f3. Us\u00e1-lo \u00e9 muito simples:<br \/>\n1) crie uma solicita\u00e7\u00e3o ou script<br \/>\n2) crie um n\u00f3 do tipo Link<br \/>\n3) nos par\u00e2metros, indique o link para o script criado no primeiro passo<\/p>\n<p><\/p>\n<p>Em uma vers\u00e3o mais avan\u00e7ada, voc\u00ea pode especificar quais vari\u00e1veis din\u00e2micas do script passar para o n\u00edvel acima em rela\u00e7\u00e3o ao link. Parece confuso? Digamos que criamos uma Pasta chamada <strong>. Assim, um novo n\u00f3 ser\u00e1 criado na \u00e1rvore e uma aba deste n\u00f3 ser\u00e1 aberta. Definiremos os seguintes par\u00e2metros da solicita\u00e7\u00e3o:<\/strong>, dentro da qual a vari\u00e1vel din\u00e2mica <code>postId<\/code>\u00e9 atribu\u00edda a este n\u00f3. Agora, no n\u00f3 Link <strong>create-post-link<\/strong> , voc\u00ea pode especificar claramente que a vari\u00e1vel <code>postId<\/code> deve ser atribu\u00edda ao ancestral. <strong>create-post-link<\/strong>. Esse mecanismo (novamente, falando como programador) pode ser usado para retornar resultados de uma \"fun\u00e7\u00e3o\". Em geral, \u00e9 \u00f3timo, DRY em pleno crescimento e novamente nenhuma linha de c\u00f3digo foi prejudicada.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"O que torna o TestMace melhor que o Postman\" src=\"\/wp-content\/uploads\/2019\/12\/5235473a43e5bc2e05aeb2779846245f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Quanto ao Postman, o pedido de recurso para reutiliza\u00e7\u00e3o de solicita\u00e7\u00f5es <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1535\">est\u00e1 pendente desde 2015<\/a><\/noindex>, e parece at\u00e9 que h\u00e1 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1535#issuecomment-280305898\">algumas dicas<\/a><\/noindex>, de que eles est\u00e3o trabalhando nessa quest\u00e3o. Na forma atual, o Postman tem, claro, a capacidade de mudar o fluxo de execu\u00e7\u00e3o, o que, em teoria, pode permitir implementar esse tipo de comportamento, mas isso \u00e9 mais uma solu\u00e7\u00e3o improvisada do que uma abordagem realmente funcional. <\/p>\n<p><\/p>\n<h2 id=\"prochie-otlichiya\">Outras diferen\u00e7as<\/h2>\n<p><\/p>\n<ul>\n<li>Maior controle sobre o escopo das vari\u00e1veis. O menor escopo dentro do qual se pode definir uma vari\u00e1vel no Postman \u00e9 a cole\u00e7\u00e3o. O TestMace permite definir vari\u00e1veis para qualquer solicita\u00e7\u00e3o ou pasta. No Postman, compartilhar cole\u00e7\u00e3o permite exportar apenas cole\u00e7\u00f5es, enquanto no TestMace o compartilhamento funciona para qualquer n\u00f3<\/li>\n<li>O TestMace suporta <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/other\/default-http-headers\">cabe\u00e7alhos herdados<\/a><\/noindex>, que por padr\u00e3o podem ser aplicados a solicita\u00e7\u00f5es filhas. Sobre isso, o Postman tem <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1947\">tarefa<\/a><\/noindex>, e isso est\u00e1 at\u00e9 fechado, mas como solu\u00e7\u00e3o \u00e9 sugerido\u2026 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1947#issuecomment-292741840\">usar scripts<\/a><\/noindex>. No TestMace, tudo isso \u00e9 configurado atrav\u00e9s da interface gr\u00e1fica e h\u00e1 a possibilidade de desativa\u00e7\u00e3o opcional de cabe\u00e7alhos herdados em descendentes espec\u00edficos.<\/li>\n<li>Desfazer\/Refazer. Funciona n\u00e3o apenas na edi\u00e7\u00e3o de n\u00f3s, mas tamb\u00e9m ao mover, deletar, renomear e em outras opera\u00e7\u00f5es que alteram a estrutura do projeto.<\/li>\n<li>Os arquivos anexados \u00e0s solicita\u00e7\u00f5es se tornam parte do projeto e s\u00e3o armazenados junto com ele, sincronizando perfeitamente, ao contr\u00e1rio do Postman. (Sim, n\u00e3o \u00e9 mais necess\u00e1rio escolher arquivos manualmente a cada vez que roda e envi\u00e1-los aos colegas em arquivos zip)<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"fichi-kotorye-uzhe-na-podhode\">Recursos que j\u00e1 est\u00e3o a caminho<\/h2>\n<p><\/p>\n<p>N\u00e3o conseguimos resistir \u00e0 tenta\u00e7\u00e3o de revelar um pouco sobre os pr\u00f3ximos lan\u00e7amentos, especialmente porque o funcionalismo \u00e9 muito atraente e j\u00e1 est\u00e1 passando por polimentos finais. Ent\u00e3o, vamos l\u00e1.<\/p>\n<p><\/p>\n<h3 id=\"funkcii\">Fun\u00e7\u00f5es<\/h3>\n<p><\/p>\n<p>Como \u00e9 conhecido, para gerar valores no Postman, usamos as chamadas vari\u00e1veis din\u00e2micas. <noindex><a rel=\"nofollow\" href=\"https:\/\/learning.getpostman.com\/docs\/postman\/variables-and-environments\/variables-list\/\">A lista delas \u00e9 impressionante<\/a><\/noindex> e a grande maioria das fun\u00e7\u00f5es serve para gerar valores fict\u00edcios. Por exemplo, para gerar um e-mail aleat\u00f3rio, \u00e9 necess\u00e1rio escrever:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">{{$randomEmail}}<\/code><\/pre>\n<p><\/p>\n<p>No entanto, como se trata de vari\u00e1veis (ainda que din\u00e2micas), n\u00e3o podem ser usadas como fun\u00e7\u00f5es: elas n\u00e3o s\u00e3o parametriz\u00e1veis, portanto, n\u00e3o \u00e9 poss\u00edvel obter um hash da string.<\/p>\n<p><\/p>\n<p>No TestMace, planejamos adicionar fun\u00e7\u00f5es \"honestas\". Dentro de ${} ser\u00e1 poss\u00edvel n\u00e3o apenas acessar uma vari\u00e1vel, mas tamb\u00e9m chamar uma fun\u00e7\u00e3o. Ou seja, se precisar gerar aquele famoso e-mail falso, n\u00f3s simplesmente escreveremos<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">${faker.internet.email()}<\/code><\/pre>\n<p><\/p>\n<p>Al\u00e9m de ser uma fun\u00e7\u00e3o, pode-se notar que h\u00e1 a possibilidade de chamar m\u00e9todos de objeto. E em vez de uma grande lista plana de vari\u00e1veis din\u00e2micas, temos um conjunto de objetos logicamente agrupados.<\/p>\n<p><\/p>\n<p>E se quisermos calcular o hash de uma string? F\u00e1cil!<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">${crypto.MD5($dynamicVar.data)}<\/code><\/pre>\n<p><\/p>\n<p>Pode-se notar que, como par\u00e2metros, \u00e9 at\u00e9 poss\u00edvel passar vari\u00e1veis! Neste ponto, o leitor curioso pode suspeitar de algo\u2026 <\/p>\n<p><\/p>\n<h3 id=\"ispolzovanie-javascript-v-vyrazheniyah\">Uso de JavaScript nas express\u00f5es<\/h3>\n<p><\/p>\n<p>\u2026 E n\u00e3o \u00e9 \u00e0 toa! Quando as exig\u00eancias para as fun\u00e7\u00f5es foram formuladas, de repente chegamos \u00e0 conclus\u00e3o de que nas express\u00f5es era necess\u00e1rio permitir a escrita de JavaScript v\u00e1lido. Portanto, agora voc\u00ea est\u00e1 livre para escrever express\u00f5es no estilo:<\/p>\n<p><\/p>\n<pre><code class=\"javascript\">${1 + '' + crypto.MD5('asdf')}<\/code><\/pre>\n<p><\/p>\n<p>E tudo isso sem scripts diretamente nos campos de entrada!<\/p>\n<p><\/p>\n<p>Quanto ao Postman, aqui s\u00f3 \u00e9 poss\u00edvel usar vari\u00e1veis, e, ao tentar escrever uma express\u00e3o mais elaborada, o validador reclama e se recusa a calcul\u00e1-la.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"O que torna o TestMace melhor que o Postman\" src=\"\/wp-content\/uploads\/2019\/12\/b301760640ff15ea682e9dfb1462116b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3 id=\"prodvinutoe-avtodopolnenie\">Autocompletar avan\u00e7ado<\/h3>\n<p><\/p>\n<p>Atualmente, a TestMace tem autocompletar padr\u00e3o, que se parece com o seguinte:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"O que torna o TestMace melhor que o Postman\" src=\"\/wp-content\/uploads\/2019\/12\/1f5ec38a6a6da29e8308882d271b6b14.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Aqui, al\u00e9m da string autocompletada, \u00e9 indicado a que pertence essa string. Este mecanismo funciona apenas em express\u00f5es envoltas em colchetes ${}.<\/p>\n<p><\/p>\n<p>Como voc\u00ea pode notar, foram adicionados marcadores visuais que indicam o tipo de vari\u00e1vel (por exemplo, string, n\u00famero, array, etc.). Tamb\u00e9m \u00e9 poss\u00edvel mudar os modos de autocompletar (por exemplo, voc\u00ea pode escolher autocompletar vari\u00e1veis ou cabe\u00e7alhos). Mas isso n\u00e3o \u00e9 o mais importante!<\/p>\n<p><\/p>\n<p>Em primeiro lugar, o autocompletar funciona at\u00e9 mesmo em express\u00f5es (onde isso \u00e9 poss\u00edvel). Veja como fica:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"O que torna o TestMace melhor que o Postman\" src=\"\/wp-content\/uploads\/2019\/12\/676721c8d12f6c43970ed335deb238f7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>E em segundo lugar, agora o autocompletar tamb\u00e9m est\u00e1 dispon\u00edvel em scripts. D\u00ea uma olhada em como isso funciona!<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"O que torna o TestMace melhor que o Postman\" src=\"\/wp-content\/uploads\/2019\/12\/3b6b4335447c0cbed7044d98831001dc.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00e3o faz sentido comparar essa funcionalidade com o Postman \u2014 l\u00e1, o autocompletar \u00e9 limitado apenas a listas est\u00e1ticas de vari\u00e1veis, cabe\u00e7alhos e seus valores (me corrija se eu esquecer de algo). Scripts n\u00e3o s\u00e3o autocompletados \ud83d\ude41<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Conclus\u00e3o<\/h1>\n<p><\/p>\n<p>Em outubro, completou um ano desde o in\u00edcio do desenvolvimento do nosso produto. Nesse tempo, conseguimos fazer muita coisa e em alguns par\u00e2metros alcan\u00e7amos nossos concorrentes. Mas, de qualquer forma, nosso objetivo \u00e9 criar uma ferramenta realmente pr\u00e1tica para trabalhar com APIs. Temos muito trabalho pela frente, aqui est\u00e1 um plano aproximado de desenvolvimento do nosso projeto para o pr\u00f3ximo ano: <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace.com\/roadmap\/\">https:\/\/testmace.com\/roadmap<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Seu feedback nos permitir\u00e1 se orientar melhor na abund\u00e2ncia de recursos, e seu apoio nos d\u00e1 for\u00e7a e confian\u00e7a de que estamos fazendo algo significativo. Acontece que hoje \u00e9 um dia importante para o nosso projeto \u2014 o dia da publica\u00e7\u00e3o do TestMace na <noindex><a rel=\"nofollow\" href=\"https:\/\/www.producthunt.com\/posts\/testmace\">ProductHunt<\/a><\/noindex>. Por favor, apoie nosso projeto, isso \u00e9 muito importante para n\u00f3s. Especialmente porque na nossa p\u00e1gina do PH hoje h\u00e1 uma oferta atraente, e ela \u00e9 limitada.<\/p>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/480734\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442, \u043d\u0430 \u0441\u0432\u044f\u0437\u0438 TestMace! \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043c\u043d\u043e\u0433\u0438\u0435 \u0437\u043d\u0430\u044e\u0442 \u043e \u043d\u0430\u0441 \u0438\u0437 \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439. \u0414\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b\u0441\u044f: \u043c\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API TestMace. \u0421\u0430\u043c\u044b\u0439 \u0447\u0430\u0441\u0442\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u043f\u0440\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 TestMace \u0441 \u043a\u043e\u043d\u043a\u0443\u0440\u0438\u0440\u0443\u044e\u0449\u0438\u043c\u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430\u043c\u0438 \u2014 &#171;\u0427\u0435\u043c \u0432\u044b \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0435\u0441\u044c \u043e\u0442 Postman?&#187;. \u041c\u044b \u0440\u0435\u0448\u0438\u043b\u0438, \u0447\u0442\u043e \u043f\u043e\u0440\u0430 \u0434\u0430\u0442\u044c \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441. \u041d\u0438\u0436\u0435 \u043c\u044b [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-54188","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442, \u043d\u0430 \u0441\u0432\u044f\u0437\u0438\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pt\/blog\/news\/chem-testmace-luchshe-postman\" \/>\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\udd47\u0427\u0435\u043c TestMace \u043b\u0443\u0447\u0448\u0435 Postman | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442, \u043d\u0430 \u0441\u0432\u044f\u0437\u0438\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/news\/chem-testmace-luchshe-postman\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-12-19T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:02:10+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Por que o TestMace \u00e9 melhor que o Postman | ProHoster","description":"Ol\u00e1 a todos, aqui \u00e9 a equipe","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/news\/chem-testmace-luchshe-postman","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\udd47\u0427\u0435\u043c TestMace \u043b\u0443\u0447\u0448\u0435 Postman | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442, \u043d\u0430 \u0441\u0432\u044f\u0437\u0438","og:url":"https:\/\/prohoster.info\/pt\/blog\/news\/chem-testmace-luchshe-postman","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-12-19T21:00:00+00:00","article:modified_time":"2020-02-18T11:02:10+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"54188","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 10:21:21","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:10:33","updated":"2026-01-24 10:21:21","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/54188","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=54188"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/54188\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=54188"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=54188"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=54188"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}