{"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\/es\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api","title":{"rendered":"TestMace \u2014 una potente IDE para trabajar con API","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>\u00a1Hola a todos! Hoy queremos presentar al p\u00fablico de TI nuestro producto: un IDE para trabajar con APIs. <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">TestMace<\/a><\/noindex>Es posible que algunos de ustedes ya nos conozcan a trav\u00e9s de <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace.com\/blog\/\">art\u00edculos anteriores.<\/a><\/noindex>Sin embargo, no hab\u00eda un an\u00e1lisis exhaustivo de la herramienta, as\u00ed que estamos corrigiendo esta molesta omisi\u00f3n.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 una potente IDE para trabajar con 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\">Motivaci\u00f3n<\/h1>\n<p><\/p>\n<p>Nos gustar\u00eda comenzar por c\u00f3mo llegamos a esta situaci\u00f3n y decidimos crear nuestra propia herramienta para trabajar de manera avanzada con APIs. Comencemos con la lista de funcionalidades que nuestro producto deber\u00eda tener, el cual, en nuestra opini\u00f3n, se puede describir como un 'IDE para trabajar con APIs':<\/p>\n<p><\/p>\n<ul>\n<li>Creaci\u00f3n y ejecuci\u00f3n de solicitudes y secuencias de comandos (secuencias de solicitudes).<\/li>\n<li>Escritura de diversos tipos de pruebas.<\/li>\n<li>Generaci\u00f3n de pruebas.<\/li>\n<li>Trabajo con la descripci\u00f3n de la API, incluyendo la importaci\u00f3n de formatos como Swagger, OpenAPI, WADL, etc.<\/li>\n<li>Simulaci\u00f3n de solicitudes.<\/li>\n<li>Buena compatibilidad con uno o varios lenguajes de programaci\u00f3n para escribir scripts, incluyendo integraci\u00f3n con bibliotecas populares.<\/li>\n<li>etc.<\/li>\n<\/ul>\n<p><\/p>\n<p>Esta lista se puede ampliar seg\u00fan se desee. Adem\u00e1s, es importante crear no solo el IDE en s\u00ed, sino tambi\u00e9n una infraestructura adecuada, como la sincronizaci\u00f3n en la nube, herramientas de l\u00ednea de comandos, servicios de monitoreo en l\u00ednea, etc. Despu\u00e9s de todo, las tendencias de los \u00faltimos a\u00f1os nos dictan no solo un potente funcionalidad de la aplicaci\u00f3n, sino tambi\u00e9n su interfaz amigable.<\/p>\n<p><\/p>\n<p>\u00bfPara qui\u00e9n es \u00fatil esta herramienta? Obviamente, para todos aquellos que est\u00e1n relacionados con el desarrollo y prueba de APIs: desarrolladores y testers =). Y aunque para los primeros a menudo es suficiente realizar solicitudes individuales y escenarios simples, para los testers esta es una de las herramientas principales, que adem\u00e1s debe incluir un potente mecanismo para escribir pruebas con la capacidad de ejecutarlas en CI.<\/p>\n<p><\/p>\n<p>As\u00ed que, siguiendo estas pautas, comenzamos a crear nuestro producto. Veamos qu\u00e9 hemos logrado hasta ahora.<\/p>\n<p><\/p>\n<h1 id=\"bystryy-start\">Inicio r\u00e1pido<\/h1>\n<p><\/p>\n<p>Comencemos con el primer encuentro con la aplicaci\u00f3n. Puedes descargarla <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\/\">en nuestro sitio web<\/a><\/noindex>. Actualmente, se admiten las 3 principales plataformas: Windows, Linux, MacOS. Desc\u00e1rgala, inst\u00e1lala y ejec\u00fatala. Al iniciar por primera vez, ver\u00e1s la siguiente ventana:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 una potente IDE para trabajar con API\" src=\"\/wp-content\/uploads\/2019\/12\/dbbd26d8656488cd11716f7dbede9ec7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Haz clic en el s\u00edmbolo de m\u00e1s en la parte superior del \u00e1rea de contenido para crear tu primera solicitud. La pesta\u00f1a de la solicitud se ver\u00e1 de la siguiente manera:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 una potente IDE para trabajar con API\" src=\"\/wp-content\/uploads\/2019\/12\/d76205f43ec821018642a3d354532e7e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hablemos de esto m\u00e1s en detalle. La interfaz de solicitud se asemeja mucho a la interfaz de populares clientes REST, lo que facilita la migraci\u00f3n desde herramientas similares. Realicemos la primera solicitud en la 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 una potente IDE para trabajar con API\" src=\"\/wp-content\/uploads\/2019\/12\/19e639baa1e0d51f1a40b76ae9144d6c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A primera vista, el panel de respuesta tampoco presenta ninguna sorpresa inesperada. Sin embargo, quiero llamar su atenci\u00f3n sobre algunos puntos:<\/p>\n<p><\/p>\n<ol>\n<li>El cuerpo de la respuesta tiene una representaci\u00f3n en forma de \u00e1rbol, lo que, en primer lugar, a\u00f1ade informaci\u00f3n y, en segundo lugar, permite agregar algunas funciones interesantes que se describen a continuaci\u00f3n<\/li>\n<li>Hay una pesta\u00f1a de Assertions, donde se muestra una lista de pruebas para esta solicitud<\/li>\n<\/ol>\n<p><\/p>\n<p>Como se puede notar, nuestra herramienta se puede utilizar como un c\u00f3modo cliente REST. Sin embargo, no estar\u00edamos aqu\u00ed si sus capacidades se limitaran solo al env\u00edo de solicitudes. A continuaci\u00f3n, describir\u00e9 los conceptos principales y las funcionalidades de TestMace.<\/p>\n<p><\/p>\n<h1 id=\"osnovnye-ponyatiya-i-vozmozhnosti\">Conceptos y funcionalidades principales<\/h1>\n<p><\/p>\n<h2 id=\"uzel\">nodo<\/h2>\n<p><\/p>\n<p>La funcionalidad de TestMace se divide en diferentes tipos de nodos. En el ejemplo anterior, demostramos el funcionamiento del nodo RequestStep. Sin embargo, en la aplicaci\u00f3n tambi\u00e9n est\u00e1n disponibles los siguientes tipos de nodos:<\/p>\n<p><\/p>\n<ul>\n<li>RequestStep. Es el nodo a trav\u00e9s del cual se puede crear una solicitud. Como elemento hijo, solo puede tener un nodo Assertion.<\/li>\n<li>Assertion. Este nodo se utiliza para escribir pruebas. Puede ser un nodo hijo solo del nodo RequestStep.<\/li>\n<li>Folder. Permite agrupar nodos Folder y RequestStep dentro de \u00e9l.<\/li>\n<li>Project. Este es el nodo ra\u00edz, creado autom\u00e1ticamente al crear un proyecto. En otros aspectos, repite las funcionalidades del nodo Folder.<\/li>\n<li>Link. Un enlace a un nodo Folder o RequestStep. Permite reutilizar solicitudes y guiones.<\/li>\n<li>etc.<\/li>\n<\/ul>\n<p><\/p>\n<p>Los nodos se encuentran en scratches (el panel en la parte inferior izquierda, que sirve para crear 'solicitudes desechables' r\u00e1pidamente) y en project (el panel en la parte superior izquierda), sobre el que nos detendremos m\u00e1s a fondo.<\/p>\n<p><\/p>\n<h2 id=\"proekt\">Proyecto<\/h2>\n<p><\/p>\n<p>Al iniciar la aplicaci\u00f3n, pudo haber notado una \u00fanica l\u00ednea Project en la esquina superior izquierda. Esta es la ra\u00edz del \u00e1rbol del proyecto. Al iniciar el proyecto, se crea un proyecto temporal, cuya ruta depende de su sistema operativo. En cualquier momento, puede mover el proyecto a un lugar conveniente para usted.<\/p>\n<p><\/p>\n<p>El prop\u00f3sito principal del proyecto es la posibilidad de guardar los desarrollos en el sistema de archivos y sincronizarlos posteriormente a trav\u00e9s de sistemas de control de versiones, ejecutar guiones en CI, revisar cambios, etc.<\/p>\n<p><\/p>\n<h2 id=\"peremennye\">Variables<\/h2>\n<p><\/p>\n<p>Las variables son uno de los mecanismos clave de la aplicaci\u00f3n. Aquellos de ustedes que trabajan con herramientas como TestMace, quiz\u00e1s ya hayan comprendido de qu\u00e9 se trata. As\u00ed que, las variables son una forma de almacenar datos comunes y de comunicarse entre nodos. Un an\u00e1logo, por ejemplo, son las variables de entorno en Postman o Insomnia. Sin embargo, hemos ido m\u00e1s all\u00e1 y hemos desarrollado el tema. En TestMace, las variables se pueden establecer a nivel de nodo. Cualquiera. Tambi\u00e9n existe un mecanismo de herencia de variables de los antepasados y la sobrescritura de variables en los descendientes. Adem\u00e1s, hay un conjunto de variables internas, cuyos nombres comienzan con <code>$<\/code>. Aqu\u00ed hay algunas de ellas:<\/p>\n<p><\/p>\n<ul>\n<li><code>$prevStep<\/code> \u2014 hace referencia a las variables del nodo anterior<\/li>\n<li><code>$nextStep<\/code> \u2014 hace referencia a las variables del siguiente nodo<\/li>\n<li><code>$parent<\/code> \u2014 lo mismo, pero para el antepasado<\/li>\n<li><code>$response<\/code> \u2014 respuesta del servidor<\/li>\n<li><code>$env<\/code> \u2014 variables de entorno actuales<\/li>\n<li><code>$dynamicVar<\/code> \u2014 variables din\u00e1micas creadas durante la ejecuci\u00f3n del guion o solicitud<\/li>\n<\/ul>\n<p><\/p>\n<p><code>$env<\/code> \u2014 son, en esencia, variables comunes a nivel de nodo del Proyecto, sin embargo, el conjunto de variables de entorno var\u00eda seg\u00fan el entorno elegido. <\/p>\n<p><\/p>\n<p>El acceso a la variable se realiza a trav\u00e9s de <code>${variable_name}<\/code><br \/>\nComo valor de la variable puede haber otra variable, o incluso toda una expresi\u00f3n. Por ejemplo, como variable url puede haber una expresi\u00f3n del tipo<br \/>\n<code>http:\/\/${host}:${port}\/${endpoint}<\/code>.<\/p>\n<p><\/p>\n<p>Cabe destacar la posibilidad de asignar variables durante la ejecuci\u00f3n del script. Por ejemplo, a menudo es necesario guardar datos de autenticaci\u00f3n (token o todo el encabezado) que provienen del servidor despu\u00e9s de un inicio de sesi\u00f3n exitoso. TestMace permite guardar estos datos en variables din\u00e1micas de uno de los ancestros. Para evitar conflictos con las variables 'est\u00e1ticas' ya existentes, las variables din\u00e1micas se han colocado en un objeto separado. <code>$dynamicVar<\/code>. <\/p>\n<p><\/p>\n<h2 id=\"scenarii\">Escenarios<\/h2>\n<p><\/p>\n<p>Utilizando todas las posibilidades mencionadas anteriormente, se pueden ejecutar escenarios completos de solicitudes. Por ejemplo, crear entidad -&gt; solicitar entidad -&gt; eliminar entidad. En este caso, por ejemplo, se puede utilizar el nodo Folder para agrupar varios nodos RequestStep.<\/p>\n<p><\/p>\n<h2 id=\"avtodopolnenie-i-podsvetka-znacheniya-vyrazheniya\">Autocompletado y resaltado del valor de la expresi\u00f3n<\/h2>\n<p><\/p>\n<p>Para un trabajo c\u00f3modo con variables (y no solo eso) es necesario el autocompletado. Y, por supuesto, la resaltaci\u00f3n del valor de la expresi\u00f3n, para que sea m\u00e1s f\u00e1cil y c\u00f3modo aclarar a qu\u00e9 equivale cada variable. Este es precisamente el caso en el que es mejor ver una vez que escuchar cien veces:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 una potente IDE para trabajar con API\" src=\"\/wp-content\/uploads\/2019\/12\/cf9d30c9623b18575825d4282b8fe3e3.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Cabe destacar que el autocompletado no solo se implementa para variables, sino tambi\u00e9n, por ejemplo, para encabezados, valores de ciertos encabezados (por ejemplo, autocompletado para el encabezado Content-Type), protocolos y mucho m\u00e1s. La lista se actualiza constantemente con el crecimiento de la aplicaci\u00f3n.<\/p>\n<p><\/p>\n<h2 id=\"undoredo\">Deshacer\/rehacer<\/h2>\n<p><\/p>\n<p>Deshacer\/repetir cambios es muy conveniente, sin embargo, por alguna raz\u00f3n no se implementa en todas partes (y las herramientas para trabajar con API no son una excepci\u00f3n). Pero nosotros no somos de esos.) El deshacer\/rehacer est\u00e1 implementado en todo el proyecto, lo que permite cancelar no solo la edici\u00f3n de un nodo espec\u00edfico, sino tambi\u00e9n su creaci\u00f3n, eliminaci\u00f3n, movimiento, etc. Las operaciones m\u00e1s cr\u00edticas requieren confirmaci\u00f3n.<\/p>\n<p><\/p>\n<h2 id=\"sozdanie-testov\">Creaci\u00f3n de pruebas<\/h2>\n<p><\/p>\n<p>La creaci\u00f3n de pruebas es responsabilidad del nodo Assertion. Una de las caracter\u00edsticas principales es la posibilidad de crear pruebas sin programaci\u00f3n, utilizando editores integrados. <\/p>\n<p><\/p>\n<p>El nodo Assertion consiste en un conjunto de assertions. Cada assertion tiene su propio tipo, en este momento existen varios tipos de assertions.<\/p>\n<p><\/p>\n<ol>\n<li>\n<p>Compare values \u2014 simplemente compara 2 valores. Hay varios operadores de comparaci\u00f3n: 'igual', 'no igual', 'mayor', 'mayor o igual', 'menor', 'menor o igual'.<\/p>\n<p>\n<\/li>\n<li>\n<p>Contiene valor: verifica la inclusi\u00f3n de una subcadena en una cadena.<\/p>\n<p>\n<\/li>\n<li>\n<p>XPath: verifica que hay un valor espec\u00edfico en XML mediante el selector.<\/p>\n<p>\n<\/li>\n<li>\n<p>Assertion de JavaScript: script arbitrario en lenguaje javascript que devuelve true en caso de \u00e9xito y false en caso de fallo.<\/p>\n<p>\n<\/li>\n<\/ol>\n<p><\/p>\n<p>Nota que solo el \u00faltimo requiere habilidades de programaci\u00f3n del usuario; los otros 3 assertions se crean a trav\u00e9s de la interfaz gr\u00e1fica. Aqu\u00ed tienes, por ejemplo, c\u00f3mo luce el di\u00e1logo para crear un assertion de comparar valores:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 una potente IDE para trabajar con API\" src=\"\/wp-content\/uploads\/2019\/12\/e71e11fb0fb664d1d9751a71fbdcc850.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>La guinda del pastel es la creaci\u00f3n r\u00e1pida de assertions a partir de la respuesta, \u00a1mira esto!<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 una potente IDE para trabajar con API\" src=\"\/wp-content\/uploads\/2019\/12\/3b86084419339a7a05a3548df5c12d6a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Sin embargo, tales assertions tienen restricciones evidentes, y cuando te encuentres con ellas, puedes utilizar assertions de javascript. En este caso, TestMace tambi\u00e9n proporciona un entorno c\u00f3modo con autocompletado, resaltado de sintaxis y hasta un analizador est\u00e1tico.<\/p>\n<p><\/p>\n<h2 id=\"opisanie-api\">Descripci\u00f3n de API<\/h2>\n<p><\/p>\n<p>TestMace no solo permite utilizar API, sino tambi\u00e9n documentarlo. Adem\u00e1s, la descripci\u00f3n tiene una estructura jer\u00e1rquica y se integra perfectamente en el resto del proyecto. Actualmente, tambi\u00e9n existe la posibilidad de importar descripciones de API desde formatos Swagger 2.0 \/ OpenAPI 3.0. La descripci\u00f3n no es solo un peso muerto, sino que se integra estrechamente con el resto del proyecto, permitiendo, por ejemplo, autocompletar URLs, encabezados HTTP, par\u00e1metros de consulta, entre otros, y en el futuro planeamos a\u00f1adir pruebas para verificar si la respuesta coincide con la descripci\u00f3n del API.<\/p>\n<p><\/p>\n<h2 id=\"sharing-nod\">Compartir nodos<\/h2>\n<p><\/p>\n<p>Caso: quisieras compartir una solicitud problem\u00e1tica o incluso un escenario completo con un colega o simplemente adjuntarlo a un error. TestMace cubre tambi\u00e9n este caso: la aplicaci\u00f3n permite serializar cualquier nodo e incluso un sub\u00e1rbol en una URL. Copia-pega y ya habr\u00e1s trasladado f\u00e1cilmente la solicitud a otra m\u00e1quina o proyecto.<\/p>\n<p><\/p>\n<h2 id=\"chelovekochitaemyy-format-hraneniya-proekta\">Formato legible para el almacenamiento del proyecto<\/h2>\n<p><\/p>\n<p>En este momento, cada nodo se almacena en un archivo separado con la extensi\u00f3n yml (como en el caso del nodo Assertion), o en una carpeta con el nombre del nodo y un archivo index.yml dentro.<br \/>\nAs\u00ed es c\u00f3mo se ve, por ejemplo, el archivo de solicitud que hicimos en la revisi\u00f3n anterior:<\/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 puedes ver, todo es bastante claro. Si lo deseas, este formato se puede editar de forma bastante c\u00f3moda incluso manualmente.<\/p>\n<p><\/p>\n<p>La jerarqu\u00eda de carpetas en el sistema de archivos refleja completamente la jerarqu\u00eda de nodos en el proyecto. Por ejemplo, un escenario del tipo:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 una potente IDE para trabajar con API\" src=\"\/wp-content\/uploads\/2019\/12\/8f08d934a977e4fdacd269f4ea0c34b5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Se mapea en el sistema de archivos a la siguiente estructura (solo se muestra la jerarqu\u00eda de carpetas, pero la esencia est\u00e1 clara)<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 una potente IDE para trabajar con API\" src=\"\/wp-content\/uploads\/2019\/12\/60a54704979f5a77ee05735fd8ebe824.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Lo que facilita el proceso de revisi\u00f3n del proyecto.<\/p>\n<p><\/p>\n<h2 id=\"import-iz-postman\">Importar desde Postman<\/h2>\n<p><\/p>\n<p>Despu\u00e9s de leer todo lo anterior, algunos usuarios querr\u00e1n probar (\u00bfverdad?) el nuevo producto o (\u00a1qui\u00e9n sabe!) implementarlo por completo en su proyecto. Sin embargo, la migraci\u00f3n puede verse obstaculizada por la gran cantidad de trabajos ya realizados en el mismo Postman. Para tales casos, TestMace soporta la importaci\u00f3n de colecciones desde Postman. Actualmente, se admite la importaci\u00f3n sin pruebas, pero en el futuro no descartamos su soporte.<\/p>\n<p><\/p>\n<h1 id=\"plany\">Planes<\/h1>\n<p><\/p>\n<p>Espero que a muchos de los que han llegado hasta aqu\u00ed les haya gustado nuestro producto. Sin embargo, \u00a1eso no es todo! El trabajo en el producto est\u00e1 en pleno desarrollo y aqu\u00ed hay algunas caracter\u00edsticas que planeamos agregar en breve.<\/p>\n<p><\/p>\n<h2 id=\"oblachnaya-sinhronizaciya\">Sincronizaci\u00f3n en la nube<\/h2>\n<p><\/p>\n<p>Una de las caracter\u00edsticas m\u00e1s solicitadas. En este momento, ofrecemos usar sistemas de control de versiones como m\u00e9todo de sincronizaci\u00f3n, lo que hace que nuestro formato sea m\u00e1s amigable para este tipo de almacenamiento. Sin embargo, no a todos les conviene este flujo de trabajo, por lo que se planea agregar un mecanismo de sincronizaci\u00f3n m\u00e1s habitual a trav\u00e9s de nuestros servidores. <\/p>\n<p><\/p>\n<h2 id=\"cli\">en cli-runtime y kubectl<\/h2>\n<p><\/p>\n<p>Como se mencion\u00f3 anteriormente, los productos a nivel de IDE no pueden prescindir de diversas integraciones con aplicaciones o flujos de trabajo existentes. La CLI es precisamente necesaria para integrar las pruebas escritas en TestMace en el proceso de integraci\u00f3n continua. El trabajo en la CLI est\u00e1 en pleno desarrollo, en versiones iniciales se lanzar\u00e1 el proyecto con un informe de consola simple. Posteriormente, se planea agregar la salida del informe en formato JUnit.<\/p>\n<p><\/p>\n<h2 id=\"plaginnaya-sistema\">Sistema de complementos<\/h2>\n<p><\/p>\n<p>A pesar de la potencia de nuestra herramienta, el conjunto de casos que requieren soluci\u00f3n es infinito. Despu\u00e9s de todo, hay tareas espec\u00edficas para proyectos concretos. Por esta raz\u00f3n, planeamos agregar un SDK para el desarrollo de complementos, y cada desarrollador podr\u00e1 agregar funcionalidades a su gusto.<\/p>\n<p><\/p>\n<h2 id=\"rasshirenie-assortimenta-tipov-uzlov\">Ampliaci\u00f3n de la variedad de tipos de nodos<\/h2>\n<p><\/p>\n<p>Este conjunto de nodos no cubre todos los casos necesarios para el usuario. Los nodos que se planea agregar son:<\/p>\n<p><\/p>\n<ul>\n<li>Nodo Script \u2014 transforma y coloca datos usando js y la API correspondiente. Usando este tipo de nodo, se pueden crear cosas como scripts de pre-solicitud y post-solicitud en Postman.<\/li>\n<li>Nodo GraphQL \u2014 soporte para GraphQL<\/li>\n<li>Nodo de aserci\u00f3n personalizada \u2014 permitir\u00e1 ampliar el conjunto de aserciones existentes en el proyecto<br \/>\nNaturalmente, esta no es una lista definitiva, se ir\u00e1 ampliando constantemente gracias, entre otros, a sus comentarios.<\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"faq\">Preguntas Frecuentes<\/h1>\n<p><\/p>\n<p><strong>\u00bfEn qu\u00e9 se diferencia de Postman?<\/strong><\/p>\n<p><\/p>\n<ol>\n<li>La conceptuaci\u00f3n de nodos que permite escalar pr\u00e1cticamente indefinidamente la funcionalidad del proyecto<\/li>\n<li>Formato legible por humanos del proyecto con su almacenamiento en el sistema de archivos, lo que facilita el trabajo con sistemas de control de versiones<\/li>\n<li>Posibilidad de crear pruebas sin programaci\u00f3n y un soporte m\u00e1s avanzado para js en el editor de pruebas (autocompletado, analizador est\u00e1tico)<\/li>\n<li>Autocompletado avanzado y resaltado del valor actual de las variables<\/li>\n<\/ol>\n<p><\/p>\n<p><strong>\u00bfEs este un producto de c\u00f3digo abierto?<\/strong><\/p>\n<p><\/p>\n<p>No, actualmente el c\u00f3digo fuente est\u00e1 cerrado, sin embargo, en el futuro consideramos la posibilidad de abrirlo<\/p>\n<p><\/p>\n<p><strong>\u00bfDe qu\u00e9 vives?)<\/strong><\/p>\n<p><\/p>\n<p>Junto con la versi\u00f3n gratuita, planeamos lanzar una versi\u00f3n paga del producto. Esta incluir\u00e1 principalmente caracter\u00edsticas que requieren una parte del servidor, como la sincronizaci\u00f3n.<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Conclusi\u00f3n<\/h1>\n<p><\/p>\n<p>Nuestro proyecto avanza a pasos agigantados hacia un lanzamiento estable. Sin embargo, el producto ya se puede utilizar y las opiniones positivas de nuestros primeros usuarios son una prueba de ello. Estamos recolectando activamente comentarios, porque sin una estrecha colaboraci\u00f3n con la comunidad es imposible construir una buena herramienta. Puedes encontrarnos aqu\u00ed:<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">Sitio 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\">Tracker de problemas<\/a><\/noindex><\/p>\n<p><\/p>\n<p>\u00a1Esperamos con ansias tus deseos y sugerencias!<\/p>\n<p>Fuente: <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.2 - 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\/es\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api\" \/>\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\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\/es\/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 una poderosa IDE para trabajar con API | ProHoster","description":"\u00a1Hola a todos! Hoy queremos presentar al p\u00fablico de TI nuestro producto: un IDE para trabajar con API TestMace.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api","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\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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/54187","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=54187"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/54187\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=54187"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=54187"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=54187"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}