TestMace-用于API的强大IDE

大家好! 今天,我们想向IT社区介绍我们的产品,即与TestMace API配合使用的IDE。 也许有些人已经从以前的文章中了解到我们。 但是,没有对该工具进行全面的审查,因此我们消除了这一烦人的缺点。



动机


实际上,我想从如何开始这样的生活开始,决定将我们的工具归档以进行API的高级工作。 让我们从产品应具有的功能列表开始,在我们看来,可以说这是“使用API​​的IDE”:


  • 创建和执行查询和脚本(查询序列)
  • 编写各种测试
  • 测试生成
  • 使用API​​描述,包括从Swagger,OpenAPI,WADL等格式导入。
  • 要求模拟
  • 对一种或多种脚本语言的良好支持,包括与流行库的集成

该清单可以补充口味。 此外,重要的是不仅要创建IDE本身,而且还要创建某些基础结构,例如云同步,命令行工具,在线监视服务等。 最后,近年来的趋势不仅向我们指示了该应用程序的强大功能,而且还指示了其漂亮的界面。


谁需要类似的工具? 显然,与API的开发和测试至少有某种联系的所有人员都是开发人员和测试人员=)。 此外,如果对于前者而言,通常足以完成单个查询和简单脚本,那么对于测试人员而言,这是主要工具之一,其中,除其他事项外,它还应包括一种强大的机制,用于编写可以在CI中运行测试的测试。


因此,遵循这些准则,我们开始创建自己的产品。 让我们看看在这个阶段我们得到了什么。


快速上手


让我们从第一次熟悉该应用程序开始。 您可以在我们的网站上下载它。 目前,所有3种主要平台均受支持-Windows,Linux,MacOS。 下载,安装,运行。 第一次开始时,您会看到以下窗口:



单击内容区域顶部的加号以创建第一个请求。 请求标签如下:



让我们更详细地讨论它。 请求接口与流行的其余客户端的接口非常相似,这有助于从此类工具进行迁移。 让我们发出第一个网址请求https://next.json-generator.com/api/json/get/NJv-NT-U8



通常,乍一看,响应面板也不会有任何意外。 但是,我将提醒您注意以下几点:


  1. 响应主体具有树形视图,该视图首先添加信息,其次允许您添加一些有趣的技巧,以了解下面的内容
  2. 有一个断言选项卡,显示此请求的测试列表。

如您所见,我们的工具可以用作方便的rest-client。 但是,如果它的功能仅限于发送请求,我们将不会在这里聚集。 接下来,我将概述TestMace的基本概念和功能。


关键概念和功能



功能TestMace分为不同类型的节点。 在上面的示例中,我们演示了RequestStep节点的操作。 但是,现在在应用程序中还可以使用以下节点类型:


  • RequestStep。 这是您可以用来创建查询的节点。 作为一个孩子,它只能有一个Assertion节点。
  • 断言。 该节点用于编写测试。 它只能是RequestStep节点的子节点。
  • 资料夹 允许您将自己的Folder和RequestStep节点分组。
  • 专案 这是创建项目时自动创建的根节点。 其余的重复“文件夹”节点的功能。
  • 友情链接 链接到Folder或RequestStep节点。 允许重用查询和脚本。

节点位于暂存区(左下角的面板,用于快速创建“一次性”请求)和项目中(位于左上角的面板),我们将在下面详细介绍。


专案


启动应用程序时,您可能会在左上角看到一个单独的Project行。 这是项目树的根。 启动项目时,将创建一个临时项目,该项目的路径取决于您的操作系统。 您可以随时将项目转移到您方便的地方。


该项目的主要目的是能够节省文件系统中的操作时间并通过版本控制系统进一步同步,在CI中运行脚本,查看更改等。


变数


变量是应用程序的关键机制之一。 那些使用诸如TestMace之类的工具的人可能已经了解了这的含义。 因此,变量是保留节点之间共享数据和通信的一种方式。 例如,Postman或Insomnia中的环境变量是类似的。 但是,我们走得更远并开发了该主题。 在TestMace中,可以在节点级别设置变量。 任何 还有一种机制可以继承祖先的变量和后代中的重叠变量。 除此之外,还有许多内置变量,内置变量的名称以$开头。 以下是其中一些:


  • $prevStep引用上一个节点的变量
  • $nextStep引用下一个节点的变量
  • $parent是相同的,但仅适用于祖先
  • $response服务器的响应
  • $env当前环境变量
  • $dynamicVar在执行脚本或请求期间创建的动态变量

$env本质上是节点项目级别的普通变量,但是,环境变量集会根据您选择的环境而变化。


通过${variable_name}访问${variable_name}
变量的值可以是另一个变量,甚至可以是整数表达式。 例如,URL变量可以是以下形式的表达式
http://${host}:${port}/${endpoint}


另外,值得注意的是在脚本执行期间分配变量的可能性。 例如,通常需要保存成功登录后来自服务器的授权数据(令牌或整个标头)。 TestMace允许您将此类数据保存到祖先之一的动态变量中。 为了避免与现有的“静态”变量发生冲突,将动态变量移至单独的$dynamicVar对象。


情境


使用上述所有功能,您可以执行整个查询脚本。 例如,创建实体->查询实体->删除实体。 例如,在这种情况下,您可以使用“文件夹”节点对多个RequestStep节点进行分组。


自动完成并突出显示表达式值


为了方便使用变量(不仅是变量),必须完成自动补全。 当然,突出显示表达式的值,以便更容易,更方便地阐明此变量或该变量等于什么。 在这种情况下,看一次比听一百次更好:



值得注意的是,不仅为变量实现自动完成,而且还为标头,某些标头的值(例如,Content-Type标头的自动完成),协议等实现自动完成。 该列表会随着应用程序的增长而不断更新。


撤消/重做


撤消/重做更改是一件非常方便的事情,但是由于某种原因,它远未在任何地方实现(并且使用API​​的工具也不例外)。 但是我们不是其中的一个!)撤消/重做是在整个项目的框架内实现的,它使您不仅可以取消编辑特定的节点,还可以取消其创建,删除,移动等操作。 最关键的操作需要确认。


测试创建


断言节点负责创建测试。 主要功能之一是使用内置编辑器无需编程即可创建测试的功能。


断言节点由一组断言(语句)组成。 每个断言都有自己的类型,目前有几种断言


  1. 比较值-仅比较2个值。 对于等于,不等于,大于,大于或等于,小于,小于或等于,有多个比较运算符。


  2. 包含值-检查子字符串是否在字符串中。


  3. XPath-验证XML中的选择器中是否存在某个值。


  4. JavaScript断言是一个任意的JavaScript脚本,如果成功,则返回true;如果失败,则返回false。



我注意到,只有后者需要用户的编程技能,其余3个断言是使用图形界面创建的。 例如,此处看起来像用于创建比较值声明的对话框:



蛋糕上的樱桃是根据响应快速创建断言的方法,请看一下!



但是,此类断言具有明显的局限性,您可以使用javascript断言进行冲突。 在这里,TestMace还提供了一个自动完成,语法高亮甚至带有静态分析器的舒适环境。


API说明


TestMace不仅允许您使用API​​,而且可以对其进行记录。 此外,描述本身也具有层次结构,有机地适合于项目的其余部分。 此外,目前,可以从Swagger 2.0 / OpenAPI 3.0格式导入API描述。 该说明本身不仅仅是一个固定的负担,它还与项目的其余部分紧密集成,尤其是可以自动完成url,HTTP标头,查询参数等功能,并且将来我们计划添加测试以使答案与API描述相匹配。


共享节点


案例:您想与同事共享有问题的请求,甚至是整个脚本,还是将其附加到错误中。 TestMace也涵盖了这种情况:该应用程序允许您序列化URL中的任何节点甚至子树。 复制粘贴后,您可以轻松地将请求转移到另一台机器或项目。


人类可读的项目存储格式


目前,每个节点都存储在带有yml扩展名的单独文件中(与Assertion节点一样),或者存储在具有节点名称和index.yml文件的文件夹中。
这是我们在上面的评论中提出的请求的示例文件的外观:


index.yml
 children: [] variables: {} type: RequestStep assignVariables: [] requestData: request: method: GET url: 'https://next.json-generator.com/api/json/get/NJv-NT-U8' headers: [] disabledInheritedHeaders: [] params: [] body: type: Json jsonBody: '' xmlBody: '' textBody: '' formData: [] file: '' formURLEncoded: [] strictSSL: Inherit authData: type: inherit name: Scratch 1 

如您所见,一切都非常清楚。 如果需要,可以手动编辑这种格式。


文件系统中的文件夹层次结构完全重复项目中节点的层次结构。 例如,以下形式的场景:



它映射到文件系统中的以下结构(仅显示文件夹层次结构,但本质很清楚)



这有助于项目审查过程。


从邮递员进口


阅读以上所有内容后,一些用户将想要尝试(对吗?)新产品或(到底是不是在开玩笑!)以充分参与他们的项目。 但是,同一邮递员的大量开发活动可以阻止迁移。 在这种情况下,TestMace支持从Postman导入馆藏。 目前,支持不进行测试的导入,但是将来我们不排除它们的支持。


计划


我希望到目前为止已经读过的很多人都喜欢我们的产品。 但是,这还不是全部! 该产品的开发如火如荼,下面是我们计划很快添加的一些功能。


云端同步


最需要的功能之一。 目前,我们建议使用版本控制系统作为同步,为此我们正在使这种存储格式更友好。 但是,此工作流程并不适合所有人,因此计划通过我们的服务器添加许多人都熟悉的同步机制。


命令行界面


如上所述,IDE级别的产品离不开与现有应用程序或工作流程的各种集成。 CLI正是将TestMace编写的测试集成到持续集成过程中所需要的。 CLI的工作如火如荼,在早期版本中,将使用简单的控制台报告启动项目。 将来,计划以JUnit格式添加报告的输出。


插件系统


尽管我们拥有工具的全部功能,但需要解决的案件数量是无限的。 最后,还有特定于特定项目的任务。 这就是为什么我们计划在将来为插件开发添加一个SDK,并且每个开发人员都将能够添加功能来体验。


扩展节点类型的种类


这组节点未涵盖用户要求的所有情况。 要添加的节点:


  • 脚本节点-使用js和相应的API转换和放置数据。 使用这种类型的节点,您可以在Postman中执行诸如请求前脚本和请求后脚本之类的操作。
  • GraphQL节点-graphql支持
  • 自定义断言节点-允许您扩展项目中的可用断言集
    当然,这不是最终列表,除其他因素外,您的反馈会不断对其进行更新。

常见问题


您与邮递员有何不同?


  1. 节点的概念,它使您几乎可以无限扩展项目功能
  2. 易于阅读的项目格式,并将其保存在文件系统中,从而简化了使用版本控制系统的工作
  3. 无需编程即可创建测试的功能,并且在测试编辑器(自动完成,静态分析器)中提供了更高级的js支持
  4. 高级自动补全并突出显示变量的当前值

这是开源产品吗?


不,目前关闭了货源,但将来我们正在考虑打开货源的可能性


你是为了什么?


除了免费版本,我们还计划发布该产品的付费版本。 它将主要包括需要服务器端的部分,例如同步。


结论


我们的项目正在飞跃发展,并稳定发布。 但是,现在可以使用该产品,而我们早期用户的积极反馈就是证明。 我们正在积极收集反馈,因为如果没有与社区的紧密合作,就不可能构建一个好的工具。 您可以在这里找到我们:


官方网站


电报


松弛


脸书


问题追踪器


我们期待您的希望和建议!

Source: https://habr.com/ru/post/zh-CN458372/


All Articles