{"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\/en\/blog\/news\/chem-testmace-luchshe-postman","title":{"rendered":"What Makes TestMace Better than Postman","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"What Makes TestMace Better than Postman\" src=\"\/wp-content\/uploads\/2019\/12\/4b61986c287c32a4cefeb2f805fc228f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hello everyone, this is <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace.com\/\">TestMace<\/a><\/noindex>! Many might know us from <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458372\/\">our<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/462585\/\">previous<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458964\/\">articles<\/a><\/noindex>For those who have just joined: we are developing an IDE for working with the TestMace API. The most common question when comparing TestMace with competing products is, \"How do you differ from Postman?\" We decided it was time to provide a comprehensive answer to this question. Below, we have outlined our advantages over <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\">Node separation<\/h2>\n<p><\/p>\n<p>If you work with Postman, you know that the request interface contains all the necessary functionality. It has scripts, tests, and, of course, the requests themselves. While this simplifies work for beginners, this approach is not flexible for larger scenarios. What if you want to create several requests and aggregate them? What if you want to execute a script without making a request or chain several logically separate scripts together? Ultimately, it would be nice to separate tests from regular utility scripts. Additionally, the approach of 'adding all functionality into one node' is not scalable\u2014the interface quickly becomes overloaded.<\/p>\n<p><\/p>\n<p>TestMace initially divides all functionality into different types of nodes. Want to make a request? Here\u2019s your <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/requeststep\">request step<\/a><\/noindex> node. Want to write a script? Here\u2019s your <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/script\">script<\/a><\/noindex> node. Need tests? Here you go \u2013 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\">Assertion<\/a><\/noindex> node. Oh, and you can wrap all of this in a <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/folder\">folder<\/a><\/noindex> node. And everything easily combines with each other. This approach is not only very flexible but also, in accordance with the principle of single responsibility, allows you to use only what you really need at the moment. Why do I need scripts and tests if I just want to make a request?<\/p>\n<p><\/p>\n<h2 id=\"chelovekochitaemyy-format-proekta\">Human-readable project format<\/h2>\n<p><\/p>\n<p>There is a conceptual difference in storage between TestMace and Postman. In Postman, all requests are stored somewhere in local storage. If there is a need to share requests among several users, one must use the built-in synchronization feature. In fact, this is a common approach, but not without its drawbacks. What about data security? After all, some companies' policies may not allow storing data with third parties. However, we believe that TestMace can offer something better! And that improvement is called 'human-readable project format.'<\/p>\n<p><\/p>\n<p>First of all, TestMace has the concept of a 'project'. The application was originally developed with the intent of storing projects in version control systems: the project tree is almost perfectly mirrored in the file structure, it uses YAML as the storage format (without unnecessary brackets and commas), and the file representation of each node is detailed in the documentation with comments. However, in most cases, you won\u2019t need to look there \u2014 all field names have logical titles. <\/p>\n<p><\/p>\n<p>What does this offer the user? It allows for very flexible workflow changes for the team, utilizing familiar approaches. For example, developers can store the project in the same repository as the backend. In branches, in addition to modifying the codebase itself, the developer can also update existing request scenarios and tests. After committing changes to the repository (git, svn, mercurial \u2014 whatever you prefer), the CI (your favorite, non-imposed one) runs our command-line utility <noindex><a rel=\"nofollow\" href=\"https:\/\/www.npmjs.com\/package\/@testmace\/cli\">testmace-cli<\/a><\/noindex>, and the report generated after execution (for example, in the JUnit format, which is also supported in testmace-cli) is sent to the corresponding system. Moreover, the aforementioned security question is no longer a problem.<\/p>\n<p><\/p>\n<p>As you can see, TestMace does not impose its ecosystem and paradigm. Instead, it easily integrates into already established processes.<\/p>\n<p><\/p>\n<h2 id=\"dinamicheskie-peremennye\">Dynamic Variables<\/h2>\n<p><\/p>\n<p>TestMace adheres to the no-code concept: if a problem can be solved without using code, we strive to provide that option. Working with variables is one of those functionalities where in most cases programming can be avoided.<\/p>\n<p><\/p>\n<p>Example: we received a response from the server and we want to save part of the response in a variable. In Postman, we would write something like this in the test script (which is itself strange):<\/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>However, in our opinion, writing a script for such a simple and frequently used scenario seems excessive. Therefore, in TestMace, you can assign a piece of the response to a variable using the graphical interface. Take a look at how simple it is:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"What Makes TestMace Better than Postman\" src=\"\/wp-content\/uploads\/2019\/12\/2ce8ce2f9aa2964cb5bd1d5eacead423.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Now, with each request, this dynamic variable will be updated. However, you might argue that the Postman approach is more flexible, allowing not only assignments but also some preprocessing. Here's how you can modify the previous example:<\/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>Well, for this, TestMace offers <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/script\">script<\/a><\/noindex> a node that covers this scenario. To replicate the previous case but in TestMace, you need to create a script node after the request and use the following code as the 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>As you can see, the composition of nodes has served well here too. And for such a simple case as described above, you can simply assign the expression <code>${crypto.MD5($response.data)}<\/code> to the variable created through the graphical interface!<\/p>\n<p><\/p>\n<h2 id=\"sozdanie-testov-cherez-gui\">Creating tests via GUI<\/h2>\n<p><\/p>\n<p>Postman allows creating tests by writing scripts (in the case of Postman, this is JavaScript). This approach has numerous advantages \u2014 almost unlimited flexibility, availability of ready-made solutions, etc.<\/p>\n<p><\/p>\n<p>However, the reality is often such (it's not us, it's life) that testers do not have programming skills, yet would like to contribute to the team right now. For such cases, following the no-code concept, TestMace allows for creating simple tests via a graphical interface without resorting to scripting. Here's what the process of creating a test that compares values for equality looks like:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"What Makes TestMace Better than Postman\" src=\"\/wp-content\/uploads\/2019\/12\/c0a8ce4cbe264dd76e3b5d90594eeff5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>However, creating tests in the graphical editor does not eliminate the ability <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\/script\">to write tests in code<\/a><\/noindex>. Here, the same libraries apply as in the script node, and <noindex><a rel=\"nofollow\" href=\"https:\/\/www.chaijs.com\/\">chai<\/a><\/noindex> for writing tests.<\/p>\n<p><\/p>\n<h2 id=\"vozmozhnost-zapustit-uzhe-suschestvuyuschiy-scenariy-po-ssylke-link-uzel\">The ability to run an existing scenario via a link (Link node)<\/h2>\n<p><\/p>\n<p>Often, there are situations where a certain request or even an entire scenario needs to be executed multiple times in different parts of the project. Examples of such requests may include custom multi-stage authorization, setting the environment to the desired state, etc. In programming terms, it would be desirable to have functions that can be reused in different parts of the application. In TestMace, this function is performed by <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/link\">link<\/a><\/noindex> The node is very easy to use:<br \/>\n1) Create a request or script<br \/>\n2) Create a node of type Link<br \/>\n3) In the parameters, specify the link to the script created in the first step<\/p>\n<p><\/p>\n<p>In a more advanced version, you can specify which dynamic variables from the script to pass to the parent node relative to the link. Sounds confusing? Let's say we created a Folder named <strong>create-post<\/strong>, inside which a dynamic variable is assigned to this node <code>postId<\/code>. Now in the Link node <strong>create-post-link<\/strong> you can explicitly specify that the variable <code>postId<\/code> is assigned to the ancestor <strong>create-post-link<\/strong>This mechanism (once again, speaking in programming terms) can be used to return results from a 'function.' Overall, it's great, DRY in full swing, and not a single line of code has suffered.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"What Makes TestMace Better than Postman\" src=\"\/wp-content\/uploads\/2019\/12\/5235473a43e5bc2e05aeb2779846245f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>As for Postman, the feature request for reusing requests <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1535\">has been hanging since 2015<\/a><\/noindex>, and there are even <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1535#issuecomment-280305898\">some hints<\/a><\/noindex>, suggesting that this problem is being worked on. In its current form, Postman does have the capability to change the flow of execution, which theoretically might allow for such behavior, but this is more of a dirty hack than a truly working approach. <\/p>\n<p><\/p>\n<h2 id=\"prochie-otlichiya\">Other differences<\/h2>\n<p><\/p>\n<ul>\n<li>Greater control over variable visibility. The smallest scope within which you can define a variable in Postman is the collection. TestMace allows you to define variables for any request or folder. In Postman, sharing a collection only allows for exporting collections, while in TestMace sharing works for any node.<\/li>\n<li>TestMace supports <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/other\/default-http-headers\">inherited headers<\/a><\/noindex>, which can be automatically applied to child requests. In Postman, there is <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1947\">task<\/a><\/noindex>, and it is even closed, but the proposed solution is... <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1947#issuecomment-292741840\">to use scripts<\/a><\/noindex>. In TestMace, everything is configured through the GUI, and there is an option to disable inherited headers in specific descendants.<\/li>\n<li>Undo\/Redo. Works not only when editing nodes but also when moving, deleting, renaming, and performing other operations that change the project structure.<\/li>\n<li>Files attached to requests become part of the project and are stored together with it, perfectly synchronized, unlike in Postman. (Yes, no longer needing to manually select files each time or send them to colleagues in archives.)<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"fichi-kotorye-uzhe-na-podhode\">Features that are already on the way<\/h2>\n<p><\/p>\n<p>We couldn't resist the temptation to unveil a bit of mystery about the upcoming releases, especially when the features are enticing and already undergoing pre-release refinement. So, let's welcome them.<\/p>\n<p><\/p>\n<h3 id=\"funkcii\">Features<\/h3>\n<p><\/p>\n<p>As is known, dynamic variables are used to generate values in Postman. <noindex><a rel=\"nofollow\" href=\"https:\/\/learning.getpostman.com\/docs\/postman\/variables-and-environments\/variables-list\/\">The list is impressive<\/a><\/noindex> and the overwhelming majority of functions serve to generate fake values. For instance, to generate a random email, you need to write:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">{{ $randomEmail }}<\/code><\/pre>\n<p><\/p>\n<p>However, since these are variables (even if dynamic), they can't be used as functions: they are not parameterizable, so you can't get a hash from a string.<\/p>\n<p><\/p>\n<p>In TestMace, we plan to add 'honest' functions. Right inside ${}, you will be able not just to refer to a variable, but also to call a function. So, if you need to generate that infamous fake email, we will simply write<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">${faker.internet.email()}<\/code><\/pre>\n<p><\/p>\n<p>In addition to being a function, you can notice that there is an option to call object methods. Instead of a large flat list of dynamic variables, we have a set of logically grouped objects.<\/p>\n<p><\/p>\n<p>And what if we want to calculate a hash from a string? Easy!<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">${crypto.MD5($dynamicVar.data)}<\/code><\/pre>\n<p><\/p>\n<p>It can be noted that you can even pass variables as parameters! At this point, the curious reader might suspect something is amiss... <\/p>\n<p><\/p>\n<h3 id=\"ispolzovanie-javascript-v-vyrazheniyah\">Using JavaScript in Expressions<\/h3>\n<p><\/p>\n<p>... and rightly so! When the requirements for the functions were being formulated, we suddenly realized that valid JavaScript needed to be allowed in expressions. Therefore, you are now free to write expressions like:<\/p>\n<p><\/p>\n<pre><code class=\"javascript\">${1 + '' + crypto.MD5('asdf')}<\/code><\/pre>\n<p><\/p>\n<p>And all this without scripts directly in the input fields!<\/p>\n<p><\/p>\n<p>As for Postman, you can only use variables here, and when trying to write any expression, the validator complains and refuses to evaluate it.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"What Makes TestMace Better than Postman\" src=\"\/wp-content\/uploads\/2019\/12\/b301760640ff15ea682e9dfb1462116b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3 id=\"prodvinutoe-avtodopolnenie\">Advanced Autocomplete<\/h3>\n<p><\/p>\n<p>Currently, TestMace features standard autocomplete that looks like this:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"What Makes TestMace Better than Postman\" src=\"\/wp-content\/uploads\/2019\/12\/1f5ec38a6a6da29e8308882d271b6b14.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Here, in addition to the autocompleting string, the context of the string is indicated. This mechanism only works in expressions enclosed in the ${} brackets.<\/p>\n<p><\/p>\n<p>As you might notice, visual markers have been added to indicate the type of variable (for example, string, number, array, etc.). You can also change autocompletion modes (for instance, you can choose autocompletion for variables or headers). But even this is not the most important thing!<\/p>\n<p><\/p>\n<p>First of all, autocompletion works even in expressions (where possible). Here's what it looks like:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"What Makes TestMace Better than Postman\" src=\"\/wp-content\/uploads\/2019\/12\/676721c8d12f6c43970ed335deb238f7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>And secondly, autocompletion is now available in scripts as well. Check out how this works!<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"What Makes TestMace Better than Postman\" src=\"\/wp-content\/uploads\/2019\/12\/3b6b4335447c0cbed7044d98831001dc.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>There's no point in comparing this functionality with Postman \u2014 there, autocompletion is limited only to static lists of variables, headers, and their values (correct me if I forgot something). Scripts are not autocompleted \ud83d\ude41<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Conclusion<\/h1>\n<p><\/p>\n<p>In October, a year has passed since we started developing our product. During this time, we've managed to accomplish a lot and have caught up with our competitors in some aspects. Nevertheless, our goal is to create a truly convenient tool for working with APIs. We have a lot of work ahead, and here's a rough development plan for our project for the upcoming year: <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace.com\/roadmap\/\">https:\/\/testmace.com\/roadmap<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Your feedback will help us better navigate the abundance of features, and your support gives us strength and confidence that we are doing the right thing. It so happens that today is an important day for our project \u2014 the day of TestMace's launch on <noindex><a rel=\"nofollow\" href=\"https:\/\/www.producthunt.com\/posts\/testmace\">ProductHunt<\/a><\/noindex>. Please support our project; it is very important to us. Especially since there\u2019s an enticing offer on our PH page today, and it\u2019s limited.<\/p>\n<p>Source: <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\/en\/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=\"en_US\" \/>\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\/en\/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 Why TestMace is better than Postman | ProHoster","description":"Hello everyone, this is","canonical_url":"https:\/\/prohoster.info\/en\/blog\/news\/chem-testmace-luchshe-postman","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","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\/en\/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\/en\/wp-json\/wp\/v2\/posts\/54188","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=54188"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/54188\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=54188"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=54188"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=54188"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}