API Testing 一个基于 YAML 文件的开源接口测试工具

目录

前言:

如何使用?

本地模式

服务端模式

文件格式

后续计划


前言:

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 插件支持测试用例编写的提示、格式校验
  • 提供插件机制,增加对数据库等数据源的格式校验

作为一位过来人也是希望大家少走一些弯路

在这里我给大家分享一些自动化测试前进之路的必须品,希望能对你带来帮助。

(软件测试相关资料,自动化测试相关资料,技术问题答疑等等)

相信能使你更好的进步!

点击下方小卡片

相关推荐
十叶知秋32 分钟前
【jmeter】jmeter的线程组功能的详细介绍
数据库·jmeter·性能测试
yx9o42 分钟前
Kafka 源码 KRaft 模式本地运行
分布式·kafka
小白学大数据1 小时前
正则表达式在Kotlin中的应用:提取图片链接
开发语言·python·selenium·正则表达式·kotlin
Gemini19951 小时前
分布式和微服务的区别
分布式·微服务·架构
G丶AEOM1 小时前
分布式——BASE理论
java·分布式·八股
瓜牛_gn2 小时前
mysql特性
数据库·mysql
奶糖趣多多3 小时前
Redis知识点
数据库·redis·缓存
CoderIsArt4 小时前
Redis的三种模式:主从模式,哨兵与集群模式
数据库·redis·缓存
热爱跑步的恒川5 小时前
【论文复现】基于图卷积网络的轻量化推荐模型
网络·人工智能·开源·aigc·ai编程
师太,答应老衲吧6 小时前
SQL实战训练之,力扣:2020. 无流量的帐户数(递归)
数据库·sql·leetcode