{"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\/es\/blog\/news\/chem-testmace-luchshe-postman","title":{"rendered":"\u00bfPor qu\u00e9 TestMace es mejor que Postman?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"\u00bfPor qu\u00e9 TestMace es mejor que Postman?\" src=\"\/wp-content\/uploads\/2019\/12\/4b61986c287c32a4cefeb2f805fc228f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hola a todos, somos <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace.com\/\">TestMace<\/a><\/noindex>! Es posible que muchos nos conozcan de <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458372\/\">nuestros<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/462585\/\">las noticias anteriores<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458964\/\">art\u00edculos<\/a><\/noindex>. Para quienes reci\u00e9n se conectan: estamos desarrollando un IDE para trabajar con la API de TestMace. La pregunta m\u00e1s com\u00fan al comparar TestMace con productos competidores es \u201c\u00bfEn qu\u00e9 te diferencias de Postman?\u201d. Hemos decidido que es hora de dar una respuesta detallada a esta pregunta. A continuaci\u00f3n, enumeramos nuestras ventajas sobre <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\">Divisi\u00f3n en nodos<\/h2>\n<p><\/p>\n<p>Si trabajas con Postman, sabes que la interfaz de solicitudes contiene toda la funcionalidad necesaria. Aqu\u00ed hay scripts, pruebas y, por supuesto, las propias solicitudes. Esto simplifica el trabajo para los principiantes, sin embargo, en escenarios grandes, este enfoque no es flexible. \u00bfQu\u00e9 pasa si quieres crear varias solicitudes y hacer una agregaci\u00f3n sobre ellas? \u00bfQu\u00e9 pasa si quieres ejecutar un script sin solicitud o varios scripts l\u00f3gicamente separados uno tras otro? Al final, ser\u00eda bueno separar las pruebas de los scripts utilitarios comunes. Adem\u00e1s, el enfoque de \u201cagregar toda la funcionalidad en un solo nodo\u201d no es escalable: la interfaz se carga r\u00e1pidamente.<\/p>\n<p><\/p>\n<p>TestMace divide inicialmente toda la funcionalidad en diferentes tipos de nodos. \u00bfQuieres hacer una solicitud? Aqu\u00ed tienes un <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/requeststep\">step de solicitud<\/a><\/noindex> nodo. \u00bfQuieres escribir un script? Aqu\u00ed tienes un <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/script\">script<\/a><\/noindex> nodo. \u00bfNecesitas pruebas? Aqu\u00ed tienes \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\">Assertion<\/a><\/noindex> nodo. Ah, y adem\u00e1s puedes envolver todo esto en un <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/folder\">folder<\/a><\/noindex> nodo. Y todo esto se puede combinar f\u00e1cilmente. Este enfoque no solo es muy flexible, sino que, de acuerdo con el principio de responsabilidad \u00fanica, permite utilizar solo lo que realmente necesitas en este momento. \u00bfPara qu\u00e9 necesito scripts y pruebas si solo quiero hacer una solicitud?<\/p>\n<p><\/p>\n<h2 id=\"chelovekochitaemyy-format-proekta\">Formato legible por humanos del proyecto<\/h2>\n<p><\/p>\n<p>Entre TestMace y Postman hay una diferencia conceptual en la forma de almacenamiento. En Postman, todas las solicitudes se almacenan en alg\u00fan lugar del almacenamiento local. Si es necesario compartir solicitudes entre varios usuarios, se debe utilizar la sincronizaci\u00f3n integrada. De hecho, este es un enfoque com\u00fan, no exento de desventajas. \u00bfQu\u00e9 hay sobre la seguridad de los datos? Porque la pol\u00edtica de algunas empresas puede no permitir almacenar datos en terceros. Sin embargo, creemos que TestMace puede ofrecer algo mejor. Y el nombre de esta mejora es \u201cformato de proyecto legible por humanos\u201d.<\/p>\n<p><\/p>\n<p>Empecemos por el hecho de que en TestMace existe la entidad \"proyecto\". Y la aplicaci\u00f3n se desarroll\u00f3 originalmente con el objetivo de almacenar proyectos en sistemas de control de versiones: el \u00e1rbol del proyecto se proyecta pr\u00e1cticamente uno a uno en la estructura de archivos, utilizando yaml como formato de almacenamiento (sin par\u00e9ntesis ni comas innecesarias), y la representaci\u00f3n de archivos de cada nodo est\u00e1 detalladamente descrita en la documentaci\u00f3n con comentarios. Pero en la mayor\u00eda de los casos, no necesitar\u00e1 mirar all\u00ed: todos los nombres de los campos tienen nombres l\u00f3gicos. <\/p>\n<p><\/p>\n<p>\u00bfQu\u00e9 le ofrece esto al usuario? Esto permite cambiar el flujo de trabajo del equipo de manera muy flexible, utilizando enfoques familiares. Por ejemplo, los desarrolladores pueden almacenar el proyecto en el mismo repositorio que el backend. En las ramas, adem\u00e1s de modificar la base de c\u00f3digo propiamente dicha, el desarrollador puede corregir los escenarios de solicitudes existentes y las pruebas. Despu\u00e9s de confirmar los cambios en el repositorio (git, svn, mercurial \u2014 lo que prefiera), CI (su preferido, no impuesto por nadie) ejecuta nuestra utilidad de consola <noindex><a rel=\"nofollow\" href=\"https:\/\/www.npmjs.com\/package\/@testmace\/cli\">testmace-cli<\/a><\/noindex>, y el informe obtenido tras la ejecuci\u00f3n (por ejemplo, en formato junit, que tambi\u00e9n es compatible con testmace-cli) se env\u00eda al sistema correspondiente. Y la cuesti\u00f3n de la seguridad mencionada anteriormente ya no es un problema.<\/p>\n<p><\/p>\n<p>Como puede ver, TestMace no impone su ecosistema y paradigma. En cambio, se integra f\u00e1cilmente en procesos ya establecidos.<\/p>\n<p><\/p>\n<h2 id=\"dinamicheskie-peremennye\">Variables din\u00e1micas<\/h2>\n<p><\/p>\n<p>TestMace sigue el concepto de no-code: si es posible resolver un problema sin usar c\u00f3digo, tratamos de ofrecer esa posibilidad. Trabajar con variables es precisamente la funcionalidad en la que, en la mayor\u00eda de los casos, se puede prescindir de la programaci\u00f3n.<\/p>\n<p><\/p>\n<p>Ejemplo: recibimos una respuesta del servidor y queremos guardar parte de la respuesta en una variable. En Postman, escribir\u00edamos algo en el script de prueba (lo cual es extra\u00f1o en s\u00ed mismo) como:<\/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>Pero en nuestra opini\u00f3n, escribir un script para un escenario tan simple y frecuentemente utilizado parece excesivo. Por eso, en TestMace hay la opci\u00f3n de asignar un fragmento de la respuesta a una variable, utilizando una interfaz gr\u00e1fica. Observe qu\u00e9 tan simple es:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00bfPor qu\u00e9 TestMace es mejor que Postman?\" src=\"\/wp-content\/uploads\/2019\/12\/2ce8ce2f9aa2964cb5bd1d5eacead423.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Y ahora, con cada solicitud, esta variable din\u00e1mica se actualizar\u00e1. Pero usted podr\u00eda objetar, argumentando que el enfoque de Postman es m\u00e1s flexible y no solo permite hacer asignaciones, sino tambi\u00e9n realizar alg\u00fan pre procesamiento. As\u00ed es como se puede modificar el ejemplo 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>Bueno, para esto TestMace tiene <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/script\">script<\/a><\/noindex> un nodo que cubre este escenario. Para reproducir el caso anterior, pero ya en la ejecuci\u00f3n de TestMace, es necesario crear un nodo script tras la solicitud y utilizar el siguiente 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 pueden ver, la composici\u00f3n de nodos aqu\u00ed tambi\u00e9n ha sido \u00fatil. Y para un caso tan sencillo como el que se describe arriba, incluso puede simplemente asignar la expresi\u00f3n <code>${crypto.MD5($response.data)}<\/code> a una variable creada a trav\u00e9s de la interfaz gr\u00e1fica.<\/p>\n<p><\/p>\n<h2 id=\"sozdanie-testov-cherez-gui\">Creaci\u00f3n de pruebas a trav\u00e9s de la GUI<\/h2>\n<p><\/p>\n<p>Postman permite crear pruebas mediante la escritura de scripts (en el caso de Postman, esto es JavaScript). Este enfoque tiene muchas ventajas: flexibilidad pr\u00e1cticamente ilimitada, soluciones listas, etc.<\/p>\n<p><\/p>\n<p>Sin embargo, la realidad es que a menudo (no somos nosotros, es la vida) el tester no tiene habilidades de programaci\u00f3n, pero le gustar\u00eda contribuir al equipo desde ya. Para tales casos, siguiendo el concepto de no-code, TestMace permite crear pruebas simples a trav\u00e9s de la interfaz gr\u00e1fica sin necesidad de escribir scripts. Aqu\u00ed hay un ejemplo de c\u00f3mo se ve el proceso de creaci\u00f3n de una prueba que compara valores por igualdad:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00bfPor qu\u00e9 TestMace es mejor que Postman?\" src=\"\/wp-content\/uploads\/2019\/12\/c0a8ce4cbe264dd76e3b5d90594eeff5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Sin embargo, la creaci\u00f3n de pruebas en el editor gr\u00e1fico no elimina la posibilidad de <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\/script\">escribir pruebas en c\u00f3digo.<\/a><\/noindex>Aqu\u00ed est\u00e1n las mismas bibliotecas que en el nodo script y <noindex><a rel=\"nofollow\" href=\"https:\/\/www.chaijs.com\/\">chai<\/a><\/noindex> para escribir pruebas.<\/p>\n<p><\/p>\n<h2 id=\"vozmozhnost-zapustit-uzhe-suschestvuyuschiy-scenariy-po-ssylke-link-uzel\">La posibilidad de ejecutar un escenario existente a trav\u00e9s de un enlace (nodo Link)<\/h2>\n<p><\/p>\n<p>Frecuentemente surgen situaciones en las que es necesario ejecutar cierta solicitud, o incluso todo un escenario, varias veces en diferentes partes del proyecto. Ejemplos de tales solicitudes pueden incluir una autorizaci\u00f3n personalizada multi-etapa, llevar el entorno al estado necesario, etc. En t\u00e9rminos de lenguajes de programaci\u00f3n, ser\u00eda deseable tener funciones que se puedan reutilizar en diferentes partes de la aplicaci\u00f3n. En TestMace, esta funci\u00f3n est\u00e1 implementada. <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/link\">enlace<\/a><\/noindex> nodo. Usarlo es muy sencillo:<br \/>\n1) crea una solicitud o guion<br \/>\n2) crea un nodo del tipo Link<br \/>\n3) en los par\u00e1metros, especifica el enlace al guion creado en el primer paso<\/p>\n<p><\/p>\n<p>En una versi\u00f3n m\u00e1s avanzada, puedes indicar qu\u00e9 variables din\u00e1micas del guion pasar al nivel superior en relaci\u00f3n con el enlace. \u00bfSuena confuso? Supongamos que hemos creado una Carpeta llamada <strong>crear-publicaci\u00f3n<\/strong>, dentro de la cual se asigna al nodo una variable din\u00e1mica <code>postId<\/code>. Ahora, en el nodo Link <strong>create-post-link<\/strong> puedes especificar expl\u00edcitamente que la variable <code>postId<\/code> se asigne al ancestro <strong>create-post-link<\/strong>. Este mecanismo (de nuevo, hablando en el lenguaje de los programadores) se puede utilizar para devolver un resultado de \u201cfunci\u00f3n\u201d. En resumen, es genial, DRY en todo su esplendor y nuevamente no se ha perjudicado ni una l\u00ednea de c\u00f3digo.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00bfPor qu\u00e9 TestMace es mejor que Postman?\" src=\"\/wp-content\/uploads\/2019\/12\/5235473a43e5bc2e05aeb2779846245f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>En cuanto a Postman, la solicitud de funci\u00f3n para reutilizar solicitudes <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1535\">est\u00e1 pendiente desde 2015<\/a><\/noindex>, y parece que incluso hay <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1535#issuecomment-280305898\">algunas pistas<\/a><\/noindex>, de que est\u00e1n trabajando en este problema. En su forma actual, Postman ciertamente tiene la capacidad de cambiar el flujo de ejecuci\u00f3n, lo que te\u00f3ricamente podr\u00eda permitir implementar tal comportamiento, pero es m\u00e1s un hack sucio que un enfoque realmente efectivo. <\/p>\n<p><\/p>\n<h2 id=\"prochie-otlichiya\">Otras diferencias<\/h2>\n<p><\/p>\n<ul>\n<li>Mayor control sobre el \u00e1mbito de visibilidad de las variables. El \u00e1mbito m\u00e1s peque\u00f1o dentro del cual se puede definir una variable en Postman es la colecci\u00f3n. TestMace permite definir variables para cualquier solicitud o carpeta. En Postman, compartir colecci\u00f3n solo permite exportar colecciones, mientras que en TestMace el intercambio funciona para cualquier nodo.<\/li>\n<li>TestMace soporta <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/other\/default-http-headers\">encabezados heredados<\/a><\/noindex>, que se pueden insertar por defecto en solicitudes hijas. En Postman hay <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1947\">tarea<\/a><\/noindex>, y est\u00e1 incluso cerrada, pero como soluci\u00f3n se propone... <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1947#issuecomment-292741840\">usar scripts<\/a><\/noindex>. En TestMace todo esto se configura a trav\u00e9s de la interfaz gr\u00e1fica y hay posibilidad de desactivar opcionalmente los encabezados heredados en descendientes espec\u00edficos.<\/li>\n<li>Deshacer\/Rehacer. Funciona no solo al editar nodos, sino tambi\u00e9n al mover, eliminar, renombrar y otras operaciones que cambian la estructura del proyecto.<\/li>\n<li>Los archivos adjuntos a las solicitudes se convierten en parte del proyecto y se almacenan junto con \u00e9l, adem\u00e1s se sincronizan perfectamente, a diferencia de Postman. (S\u00ed, ya no es necesario seleccionar manualmente archivos cada vez que inicias y pasarlos a los compa\u00f1eros en archivos comprimidos).<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"fichi-kotorye-uzhe-na-podhode\">Funciones que ya est\u00e1n en camino.<\/h2>\n<p><\/p>\n<p>No pudimos resistir la tentaci\u00f3n de desvelar un poco del misterio sobre los pr\u00f3ximos lanzamientos, especialmente cuando las funcionalidades son muy atractivas y ya est\u00e1n en la fase de pulido previo al lanzamiento. As\u00ed que, \u00a1bienvenidos!<\/p>\n<p><\/p>\n<h3 id=\"funkcii\">Funciones<\/h3>\n<p><\/p>\n<p>Como es bien sabido, para generar valores en Postman se utilizan las llamadas variables din\u00e1micas. <noindex><a rel=\"nofollow\" href=\"https:\/\/learning.getpostman.com\/docs\/postman\/variables-and-environments\/variables-list\/\">La lista es impresionante<\/a><\/noindex> y la gran mayor\u00eda de las funciones sirven para generar valores ficticios. Por ejemplo, para generar un correo electr\u00f3nico aleatorio se necesita escribir:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">{{$randomEmail}}<\/code><\/pre>\n<p><\/p>\n<p>Sin embargo, dado que son variables (aunque sean din\u00e1micas), no se pueden usar como funciones: no son parametrizables, por lo tanto, no se puede obtener un hash de la cadena.<\/p>\n<p><\/p>\n<p>En TestMace planeamos agregar funciones \u201chonestas\u201d. Justo dentro de ${} se podr\u00e1 no solo acceder a una variable, sino tambi\u00e9n llamar a una funci\u00f3n. Es decir, si necesitamos generar el famoso email falso, simplemente escribiremos<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">${faker.internet.email()}<\/code><\/pre>\n<p><\/p>\n<p>Adem\u00e1s de ser una funci\u00f3n, se puede observar que hay posibilidad de invocar un m\u00e9todo de objeto. Y en lugar de una larga lista plana de variables din\u00e1micas, tenemos un conjunto de objetos l\u00f3gicamente agrupados.<\/p>\n<p><\/p>\n<p>\u00bfY si queremos calcular un hash de una cadena? \u00a1F\u00e1cil!<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">${crypto.MD5($dynamicVar.data)}<\/code><\/pre>\n<p><\/p>\n<p>Se puede notar que incluso se pueden pasar variables como par\u00e1metros. En este punto, el lector curioso puede sospechar que hay algo extra\u00f1o... <\/p>\n<p><\/p>\n<h3 id=\"ispolzovanie-javascript-v-vyrazheniyah\">Uso de JavaScript en expresiones<\/h3>\n<p><\/p>\n<p>... Y no es en vano. Al formular los requisitos para las funciones, de repente llegamos a la conclusi\u00f3n de que se debe permitir escribir JavaScript v\u00e1lido en las expresiones. Por lo tanto, ahora puedes escribir expresiones al estilo de:<\/p>\n<p><\/p>\n<pre><code class=\"javascript\">${1 + '' + crypto.MD5('asdf')}<\/code><\/pre>\n<p><\/p>\n<p>\u00a1Y todo esto sin scripts directamente en los campos de entrada!<\/p>\n<p><\/p>\n<p>En cuanto a Postman, aqu\u00ed solo se pueden usar variables y, al intentar escribir alguna expresi\u00f3n, el validador se queja y se niega a calcularla.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00bfPor qu\u00e9 TestMace es mejor que Postman?\" src=\"\/wp-content\/uploads\/2019\/12\/b301760640ff15ea682e9dfb1462116b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3 id=\"prodvinutoe-avtodopolnenie\">Autocompletado avanzado<\/h3>\n<p><\/p>\n<p>Actualmente, TestMace tiene un autocompletado est\u00e1ndar, que se ve de la siguiente manera:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00bfPor qu\u00e9 TestMace es mejor que Postman?\" src=\"\/wp-content\/uploads\/2019\/12\/1f5ec38a6a6da29e8308882d271b6b14.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Aqu\u00ed, adem\u00e1s de la cadena autocompletada, se indica a qu\u00e9 pertenece dicha cadena. Este mecanismo solo funciona en expresiones rodeadas por los corchetes ${}.<\/p>\n<p><\/p>\n<p>Como puedes notar, se han a\u00f1adido marcadores visuales que indican el tipo de variable (por ejemplo, cadena, n\u00famero, array, etc.). Tambi\u00e9n se pueden cambiar los modos de autocompletado (por ejemplo, se puede elegir autocompletado con variables o encabezados). Pero incluso esto no es lo m\u00e1s importante.<\/p>\n<p><\/p>\n<p>Primero, el autocompletado funciona incluso en expresiones (donde es posible). As\u00ed es como se ve:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00bfPor qu\u00e9 TestMace es mejor que Postman?\" src=\"\/wp-content\/uploads\/2019\/12\/676721c8d12f6c43970ed335deb238f7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Y en segundo lugar, ahora el autocompletado tambi\u00e9n est\u00e1 disponible en scripts. \u00a1Mira c\u00f3mo funciona!<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00bfPor qu\u00e9 TestMace es mejor que Postman?\" src=\"\/wp-content\/uploads\/2019\/12\/3b6b4335447c0cbed7044d98831001dc.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>No tiene sentido comparar esta funcionalidad con Postman \u2014 all\u00ed el autocompletado se limita solo a listas est\u00e1ticas de variables, encabezados y sus valores (corr\u00edgeme si he olvidado algo). Los scripts no se autocompletan \ud83d\ude41<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Conclusi\u00f3n<\/h1>\n<p><\/p>\n<p>En octubre se cumpli\u00f3 un a\u00f1o desde el inicio del desarrollo de nuestro producto. Durante este tiempo hemos logrado muchas cosas y en ciertos par\u00e1metros hemos alcanzado a nuestros competidores. Pero de cualquier manera, nuestro objetivo es crear una herramienta realmente conveniente para trabajar con API. Nos queda mucho trabajo por hacer, aqu\u00ed tienes un plan aproximado para el desarrollo de nuestro proyecto en el pr\u00f3ximo a\u00f1o: <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace.com\/roadmap\/\">https:\/\/testmace.com\/roadmap<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Tu feedback nos permitir\u00e1 orientarnos mejor en la abundancia de caracter\u00edsticas, y tu apoyo nos da fuerzas y confianza en que estamos haciendo lo correcto. Hoy es un d\u00eda importante para nuestro proyecto: el d\u00eda de la publicaci\u00f3n de TestMace en <noindex><a rel=\"nofollow\" href=\"https:\/\/www.producthunt.com\/posts\/testmace\">ProductHunt<\/a><\/noindex>. Por favor, apoya nuestro proyecto, es muy importante para nosotros. Adem\u00e1s, hoy tenemos una oferta tentadora en nuestra p\u00e1gina de PH, y es limitada<\/p>\n<p>Fuente: <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.2 - 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\/es\/blog\/news\/chem-testmace-luchshe-postman\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\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\/es\/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\udd47\u00bfPor qu\u00e9 TestMace es mejor que Postman | ProHoster","description":"Hola a todos, somos","canonical_url":"https:\/\/prohoster.info\/es\/blog\/news\/chem-testmace-luchshe-postman","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/54188","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=54188"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/54188\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=54188"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=54188"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=54188"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}