为什么TestMace比Postman更好
节点
项目的人类可读格式
动态变量
通过 GUI 创建测试
通过链接运行现有场景(链接节点)
其他差异
正在开发的功能
结论
大家好,我是Testmace !您可能已经从我们 之前的 文章中了解我们。对于新加入的朋友:我们正在开发 Testmace——一个用于 API 设计的 IDE。你们和Postman有什么不同?这是在比较 TestMace 和其他同类产品时最常被问到的问题。感觉是时候我们来详细解答一下了。您可以在下方看到我们产品的所有优势。
节点
如果您使用 Postman,您必须知道请求界面包含所有必要的功能。您可以在那里看到脚本、测试和请求。这让新用户更容易上手,但在更复杂的场景中,这种方法不够灵活。如果您需要创建一些请求并将它们聚合起来怎么办?如果您想在不创建请求或多个逻辑上独立的脚本的情况下运行脚本怎么办?至少您肯定希望将测试与基本的实用程序脚本分开。此外,单节点集成所有功能的方法不可扩展,因为界面很快就会变得过于繁重。
TestMace 最初将功能划分到不同类型的节点中。您想发送请求?这里有一个请求步骤节点。您想编写脚本?可以使用脚本节点。需要测试?这里有一个断言节点。顺便说一句,您也可以将所有内容包装在一个文件夹节点中,或者轻松地组合多个节点。这种方法不仅更加灵活,而且根据单一职责原则,它允许仅使用特定任务所需的功能。显然,您不需要脚本和测试来发送请求。
项目的人类可读格式
TestMace 和 Postman 在数据存储格式方面存在一个重要的概念区别。Postman 将请求存储在本地存储的某个位置。如果您想与其他用户共享请求,则必须使用内置同步功能。事实上,这是一种相当常见的方法,但它也有其自身的缺点。那么数据安全性又如何呢?一些公司的隐私政策可能不允许与第三方共享个人数据。我们相信,TestMace 可以在这方面提供更好的解决方案,它被称为“人类可读的项目格式”。
首先,TestMace 有一个叫“项目”的实体。该应用程序本身的开发就考虑到了将项目存储在版本控制系统中:项目树几乎完全反映了文件结构,我们使用 YAML 格式(没有多余的括号和逗号)来存储文件,并且每个节点的文件表示都在文档中详细给出。不过,在大多数情况下,由于字段名称的逻辑性,您不需要参考它。
您能从中受益吗?您可以使用所有常用方法,非常灵活地调整团队工作流程。例如,开发人员可以将项目文件保存在与后端相同的代码库中。对于分支,除了更改代码库之外,开发人员还可以修改现有的请求场景和测试。在您的代码库(git、svn、mercurial,无论您更喜欢哪种)中提交更改后,您常用的持续集成 (CI) 会运行我们的控制台实用程序testmace-cli,并将收到的报告(例如,可能是 junit 格式,testmace-cli 也支持该格式)发送到相应的系统。这样,上述数据安全问题就不再是问题了。
如您所见,TestMace 不会将其生态系统和范式强加于人。相反,它可以轻松地适应现有的工作流程。
动态变量
TectMace 秉承“无代码”理念:如果问题无需编码即可解决,我们就会尽力为您提供这个机会。使用变量通常不需要您编写代码。
例如,我们收到了服务器的响应,并希望将其中的一部分存储到一个变量中。在 Postman 中,我们会在测试脚本中编写类似这样的代码(这有点奇怪):
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", jsonData.data);
我们认为,为这种简单且常用的场景编写脚本似乎有些过分。使用 TestMace,您可以通过图形用户界面将响应部分赋值给变量。看看它有多简单:
这个动态变量现在将在每次新请求后更新。当然,你可能会认为 Postman 的方法更灵活,不仅可以进行赋值,还可以进行数据预处理。让我们修改一下前面的例子:
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", CryptoJS.MD5(jsonData.data));
TestMace 为这个场景提供了一个脚本节点。要在 TestMace 中执行相同操作,我们需要发送请求并创建一个脚本节点,脚本代码如下:
const data = tm.currentNode.prev.response.body.data;
tm.currentNode.parent.setDynamicVar('data', crypto.MD5(data));
如您所见,节点组合在这种情况下效果很好。对于这种简单的场景,您只需将${crypto.MD5($response.data)}
表达式赋值给您使用图形用户界面创建的变量即可。
通过 GUI 创建测试
Postman 允许通过编写脚本(JavaScript)来创建测试。这种方法似乎没有任何缺点:几乎无限的灵活性、现成的解决方案等等。
但生活就是生活,现实中,QA 工程师通常没有任何编程技能,但他们希望能提供帮助。在这种情况下,TestMace 建议您遵循无代码理念,通过 GUI 创建简单的测试,而无需编写任何脚本。让我们创建一个测试来验证某些值是否相等。它在 TestMace 中的样子如下:
不过,你仍然可以选择自己编写测试。这里有与脚本节点和Chai相同的库,用于编写测试。
通过链接运行现有场景(链接节点)
很多时候,您可能需要在项目的不同部分多次运行某个请求,甚至同一个请求场景。例如,自定义多步骤授权、设置环境等等。就编程语言而言,我们需要一些可以在应用程序不同部分复用的函数。TestMace 中有一个link节点类型,它就是为此而设计的。使用起来非常简单:
- 创建请求或场景;
- 创建一个链接节点;
- 设置指向步骤 1 中创建的请求或场景的链接。
在更复杂的情况下,您可以指定应将哪些动态变量传递到链接以上级别。听起来令人困惑?想象一下,您创建了一个名为create-post的 Folder 节点并将其分配给postId
变量。现在,在create-post-link节点中,您可以明确将create-post-link的父级分配给postId
。此机制(再次,就编程而言)可用于从函数返回结果。太好了!DRY 已在实施,代码未作任何更改。 至于 Postman,从 2015 年起就存在关于重用请求的功能请求,似乎有一些暗示,他们正在努力实现它。现在您可以更改 Postman 中的执行流程,理论上可以实现这种行为,但这是一种肮脏的黑客行为,而不是一种有效的方法。
其他差异
-
更好地控制变量范围。在 Postman 中,可以定义变量的最小范围是集合范围。TestMace 允许为任何请求或文件夹定义变量。Postman 的共享集合功能仅允许导出集合,而 TestMace 的共享功能适用于任何节点。
-
TestMace 支持可继承的标头,默认情况下可以插入到子请求中。Postman 在这方面存在问题,目前已解决,但解决方案是……使用脚本。在 TestMace 中,所有配置都通过 GUI 进行,并且有一个选项可以禁用某些子请求的标头继承。
-
撤消/重做。这不仅适用于编辑节点,也适用于移动、删除、重命名和其他更改项目结构的操作。
-
您附加到请求的文件是项目的一部分,并与其他项目文件一起存储并同步良好(与 Postman 相比),因此您不必每次都手动选择所有必要的文件并与同事共享它们的档案
正在开发的功能
我们忍不住想透露一下我们接下来的版本,尤其是这些目前正在测试的强大新功能。所以,现在就来揭晓吧。
功能
众所周知,Postman 为值生成提供了所谓的动态变量。这些变量的列表非常长,并且绝大多数函数都用于生成虚假值。例如,要生成随机电子邮件,您应该这样写:
{{$randomEmail}}
由于这些是变量(即使它们是动态的),它们不能用作函数 - 它们不可参数化,因此您无法获取字符串的哈希值。
我们计划在 TestMace 中添加“真实”函数。您将能够访问变量并调用其中的函数${}
。要生成虚假电子邮件,您只需编写以下内容:
${faker.internet.email()}
这是一个函数,你可能会注意到现在可以调用对象的方法了。我们不再使用一长串扁平的动态变量列表,而是使用一组逻辑分组的对象。
那么如何计算字符串的哈希值呢?很简单!
${crypto.MD5($dynamicVar.data)}
瞧,你甚至可以将变量作为参数传递!这时,你可能会怀疑哪里出了问题……
在表达式中使用 JavaScript
... 没错!我们在思考函数需求的时候,突然意识到应该允许用户在表达式中使用有效的 JavaScript。所以现在你可以这样写:
${1 + '' + crypto.MD5('asdf')}
在编辑字段中正确执行,无需脚本!
至于 Postman,您只能使用变量,如果您尝试编写某种表达式,验证器会发出警告并拒绝执行它。
高级自动完成
目前,TestMace 配备了标准的自动完成功能:
如您所见,存在一条可能的行以及它所引用的内容。此机制仅适用于${}
括号中的表达式。
请注意变量类型(例如字符串、数字、数组等)的视觉标记。您还可以在几种自动完成模式之间切换(例如,您可以选择变量或标题自动完成)。但这还不是重点!首先,自动完成功能甚至适用于表达式(只要可能)。它看起来如下:
其次,它现在也支持脚本了。快来看看吧!
没必要跟 Postman 比。Postman 只支持静态变量列表、header 及其值的自动补全。我可能忘了什么。它对脚本不起作用 :(
结论
十月份,我们庆祝了产品研发一周年。我们做了很多事情,并在某种程度上赶超了竞争对手。总之,我们的目标是打造一款真正强大的 API 开发工具。未来还有很多工作要做。以下是我们明年的大致计划:https://testmace.com/roadmap/。
您的反馈将促使我们更加努力地开发新功能,您的支持也让我们更加强大,并让我们相信自己正在提供帮助。今天对我们的项目来说非常重要。今天我们在ProductHunt上发布了 TestMace 。我们恳请您支持我们的产品,这对我们非常重要。对了,我们在 PH 页面上为您准备了一个诱人的限时优惠!
TestMace 团队还为我们的关注者提供了很棒的优惠:
访问我们的网站testmace.com了解更多信息
鏂囩珷鏉ユ簮锛�https://dev.to/dimansny/why-testmace-is-better-than-postman-2412