API Testing

开源 API 测试工具
授权协议 MIT
开发语言 Google Go
所属分类 开发工具、 性能测试和优化
软件类型 开源软件
地区 不详
投 递 者 严锐
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

API Testing 是一个基于 YAML 文件的开源接口测试工具,同时支持运行在本地、服务端。

在选择工具时,可以从很多方面进行考量、对比,以下几点是该工具的特色或者优点:

  • 开源与否,atest 采用 MIT 开源协议,是最流行的宽松开源协议之一。有些工具也许有非常丰富的功能、漂亮的界面,但相比于开源项目,免费的工具不定什么时候就有可能变为收费的;而且,你的使用感受几乎很难直接反馈到产品中,只能被动接受。
  • 质量、可靠性,作为一款用于测试场景的工具,atest 本身的单元测试覆盖率达 89%,单测代码与业务逻辑代码量平分秋色;另外,每次代码改动都需要通过代码扫描、单元测试等流水线。
  • 身材小巧,整个工具大小为 18M,支持 Windows、Linux、macOS 平台。
  • 只有简单的可执行二进制文件,不像部分工具会给你的操作系统安装莫名其妙的系统启动项目、系统服务等。
  • 基于 YAML 文件,提交到 Git 仓库后,天生支持团队协作,无需注册额外账号。
  • 同时提供简单、高级两种模式的返回值断言,还包括 JSON Schema 以及针对 Kubernetes 资源的校验判断。
  • 支持性能测试。
  • 直接在 VS Code 中直接触发执行单个或整个测试文件。

如何使用?

那么,这个工具长什么样子呢,下面是命令行 atest 的参数说明:


API testing tool

Usage:

atest [command]

Available Commands:

completion Generate the autocompletion script for the specified shell

help Help about any command

json Print the JSON schema of the test suites struct

run Run the test suite

sample Generate a sample test case YAML file

server Run as a server mode

service Install atest as a Linux service

Flags:

-h, --help help for atest

Use "atest [command] --help" for more information about a command.

本地模式

执行一个测试用例集文件:atest run -p sample/testsuite-gitlab.yaml,其中的参数 -p 支持模糊匹配多个文件。

如果希望对测试用例集执行性能测试的话,可以增加响应的参数:

atest run -p sample/testsuite-gitlab.yaml --duration 1m --thread 3 --report m

其中的参数 --report 可以指定性能测试输出报告,目前支持 Markdown 以及控制台输出。效果如下所示:

| API | Average | Max | Min | Count | Error |

|---|---|---|---|---|---|

| GET https://gitlab.com/api/v4/projects | 1.152777167s | 2.108680194s | 814.928496ms | 99 | 0 |

| GET https://gitlab.com/api/v4/projects/45088772 | 840.761064ms | 1.487285371s | 492.583066ms | 10 | 0 |

consume: 1m2.153686448s

服务端模式

除了本地执行外,atest 还提供了基于 gRPC 协议服务端,通过下面的命令即可启动:


atest server

对于 Linux 操作系统,用户还可以通过下面的命令安装后台服务:


atest service (install | start | stop | restart)

当然,如果你对容器、Kubernetes 比较熟悉的话,本项目也提供了对应的支持。

这种模式,对于想要集成的用户而言,可以通过调用 gRPC 来执行测试。也可以安装 VS Code 插件,在编码与接口测试之间无缝切换,您可以搜索 api-testing 找到该插件。

插件会识别所有第一行是 #!api-testing 的 YAML 文件,并提供快速的执行操作,请参考如下截图:

如图所示,会有四个快捷执行操作:

  • run suite 会执行整个文件
  • run suite with env 会加载 env.yaml 文件并执行整个文件
  • run 执行单个测试用例(包括所依赖的用例)
  • debug 执行单个测试用例,并输出接口返回值

当你安装了 VS Code 插件后,会自动下载并安装 atest 及其服务。当然,你也可以配置不同的远端服务地址。

文件格式

atest 定义的 YAML 格式,基本遵循 HTTP 的语义,熟悉 HTTP 协议的同学即可快速上手。下面是一个范例,更多例子请参考这里


#!api-testing

name: Kubernetes

api: https://192.168.123.121:6443

items:

- name: pods

request:

api: /api/v1/namespaces/kube-system/pods

header:

Authorization: Bearer token

expect:

verify:

- pod("kube-system", "kube-ovn-cni-55bz9").Exist()

- k8s("deployments", "kube-system", "coredns").Exist()

- k8s("deployments", "kube-system", "coredns").ExpectField(2, "spec", "replicas")

- k8s({"kind":"virtualmachines","group":"kubevirt.io"}, "vm-test", "vm-win10-dkkhl").Exist()

用户可以自定义请求的 Header、Payload 等,可以对响应体做全面的断言判断。

后续计划

如果您已经耐心阅读到这里的话,可以再顺便了解下这个项目后续的一些想法。

通过更多的实际场景来打磨、优化 atest 对接口测试的便利性、可扩展性,以不丢失易用性为前提增强功能。例如:

  • 优化错误提示、反馈
  • 提供与 CICD 集成的最佳实践
  • 增加 gRPC 等协议的支持
  • 增加测试记录信息的持久化
  • VS Code 插件支持测试用例编写的提示、格式校验
  • 提供插件机制,增加对数据库等数据源的格式校验

最后期待您的反馈 https://github.com/LinuxSuRen/api-testing/issues

  • API Testing 入门基础系列 之 API Testing 2 - API测试的重要性 我们来了解一下,为什么要API测试? 简单抽象地来说,一般应用由三部分组成: 后端(数据层):数据存储和数据获取的地方 前端(表示层):用户界面 中间层(逻辑层):连接前端和后端 就拿注册微信账号来说,用户打开微信注册页面,输入注册需要的必要信息,比如用户名,手机号等等。用户通过前端界面提交一些信息,信息

  • API Testing 入门基础系列 之 API Testing 1 - 什么是API 在理解API前,我们先来看一下日常熟悉的3个场景: 去餐馆就餐,通常是先找服务员下单,服务员将订单交到厨房,厨房完成订单,服务员将菜端上桌。就餐者关心的只是订单完成(菜上桌),并不关心做菜的过程及是谁做的菜。 登入微信,需要输入用户名和密码,如果输入正确,将看到该用户对应的相关信息展示,如果输入不正确,将会看到

  • 目录 什么是API? 什么是API测试 API测试的测试用例: API测试方法: 如何进行API测试 API测试的最佳做法: API测试检测到的错误类型 API测试工具 API测试的挑战 结论: 最后 什么是API? API(全称Application Programming Interface)是两个单独的软件系统之间的通信和数据交换。实现API的软件系统包含可以由另一个软件系统执行的功能/子例

  • API Testing 入门基础系列 之 API Testing 12 - API测试工具 市场上有很多API测试工具,有一些是免费的,一些是付费的。有些免费版本只提供一些基本功能,当然也有很多好的免费工具可以覆盖API测试需求,包括手动和自动化测试。工具的选择取决于公司或则项目的喜好,但如果掌握了API测试的根本,也就能很好的运用任何工具了。 下面列出一些通用的API测试工具。 Tool Nam

  • As with any code you write, you want to test your API to ensure that requests are processed as you expect, the responses sent are correct, and the operations performed on the database are correct and

  • 背景: 一次偶然的机会,看到Kick Start API Testing系列文章,觉得里面的文章写得非常好,对API Testing的基础知识介绍的通俗易懂,所以决定参考里面的内容,加上自己的一些理解,就 拷贝+翻译+加工 地搬过来了。我曾发过邮件给原作者,但是一直没得到回复,希望原作者如果看到我这些文章,请原谅我的盗版:), 我是觉得好东西大家分享,互相学习。 花了好几个周末,终于把API Te

  • API Testing 入门基础系列 之 API Testing 10 - SOAP简介 SOAP(Simple Object Access Protocol)简单对象访问协议。 Protocol协议就是为了达成某事遵循的一系列规则,或则是执行特定的事情需要遵循的规则。例如:申请护照,定义了一系列规则。每个人必须遵循这些规则才能得到护照。它提供的是一个标准。同样,在软件领域,为特定的行为定义了协议

  • API Testing 入门基础系列 之 API Testing 9 - REST和RESTFull API的区别 这两个概念容易混淆,可能会在面试过程中被问到,所以单独拿出来了解一下。 REST是REpresentational State Transfer的缩写,表述性状态转移。它是一种架构风格,定义一系列约束用来创建Web service或则是API。REST定义了6项原则,如果一个API的

 相关资料
  • 1.概述 Selenium是非常非常有用的,对JavaScript支持良好的Web层功能测试,集成测试工具。 Selenium分为Core与RC(Remote Controll)两个部分,其中Core是基础的,直接在HTML Table里编写测试代码的模块,而Remote Controll则支持用Java等语言编写测试用例,并自动调用FireFox1.5来运行。 具体的语法见http://www.

  • 测试司机工具 模拟司机接单工具,用于测试不同的用车流程。 签名验证工具 对于所有API的调用中用到的签名都可以用此工具测试,如用于验证接口报19999签名验证失败。 订单状态回调工具 自助回调工具,如果订单某个状态的回调没有接收到,可以使用该工具再次回调(注:但是一天以内,如果回调过则不会再回调) 返回值解析工具 如返回值进行了Unicode编码{"errno":51102,"errmsg":"\

  •  什么是 Selenium?   Selenium 是 ThoughtWorks 专门为 Web 应用程序编写的一个验收测试工具。据 Selenium 主页所说,与其他测试工具相比,使用 Selenium 的最大好处是:   “Selenium 测试直接在浏览器中运行,就像真实用户所做的一样。Selenium 测试可以在Windows、Linux 和 MacintoshAnd 上的 Interne

  • 本文向大家介绍Android和iOS 测试五个最好的开源自动化工具,包括了Android和iOS 测试五个最好的开源自动化工具的使用技巧和注意事项,需要的朋友参考一下        自动化测试在产品测试上有着非常重要的作用。实现测试自动化有多种积极的方式,包括最大限度地减少测试执行时间;在关键的发布阶段,用更少的时间确保更大的覆盖范围;在产品开发阶段,可靠又重复性地运行以确保没有引进回归问题。最大

  • API(Application Programming Interface)测试的自动化是软件测试最基本的一种类型。从本质上来说,API 测试是用来验证组成软件的那些单个方法的正确性,而不是测试整个系统本身。API 测试也称为单元测试(Unit Testing)、模块测试(Module Testing)、组件测试(Component Testing)以及元件测试(Element Testing)。

  • 问题内容: 是否有针对Java的开源telnet API /库(类似于python telnetlib)?我需要使用telnet连接到服务器,并从Java程序中执行一些命令。 问题答案: 我的首选是使用Apache Commons- Net库。http://commons.apache.org/net/ 它支持许多客户端协议,包括Telnet。 我过去曾经使用过它,并且效果很好。

  • Jasmine Phantom-js Sinon 是在Angular界最流行的测试框架。这是我们将编写我们的单元测试的核心框架。 为了测试我们的Angular 2应用程序,我们必须创造一个运行它环境,我们可以使用Chrome或Firefox浏览器来实现(Karma支持浏览器测试),或者我们可以使用无浏览器的环境中测试我们的应用程序,它可以为我们提供了自动化某些任务和管理我们的测试流程的控制。提供的

  • 刚下考场,趁热乎劲记录一下 题型: 25单选(计算机基础知识,覆盖面广,都是简单题) 5问答:其中,3道测试用例题(有具体场景包含游戏内购物等,主要是功能测试)2道生活题(如难忘的一件事,大学目标等) 3编程:题目比较偏智力题(如交叉洗牌),有几个小问,每道题都有一个小问写测试用例(如某个函数) 总体感觉:笔试体验不佳,答题平台是自己的系统,IDE比较拉,题目质量一般,大题有很多描述不清楚的地方,