目录
前言:
如何使用?
本地模式
服务端模式
文件格式
后续计划
前言:
API Testing 是一个基于 YAML 文件的开源接口测试工具,它可以帮助开发者快速地进行接口测试。
在选择工具时,可以从很多方面进行考量、对比,以下几点是该工具的特色或者优点:
- 开源与否,atest 采用 MIT 开源协议,是最流行的宽松开源协议之一。有些工具也许有非常丰富的功能、漂亮的界面,但相比于开源项目,免费的工具不定什么时候就有可能变为收费的;而且,你的使用感受几乎很难直接反馈到产品中,只能被动接受。
- 质量、可靠性,作为一款用于测试场景的工具,atest 本身的单元测试覆盖率达 89%,单测代码与业务逻辑代码量平分秋色;另外,每次代码改动都需要通过代码扫描、单元测试等流水线。
- 身材小巧,整个工具大小为 18M,支持 Windows、Linux、macOS 平台。
- 只有简单的可执行二进制文件,不像部分工具会给你的操作系统安装莫名其妙的系统启动项目、系统服务等。
- 基于 YAML 文件,提交到 Git 仓库后,天生支持团队协作,无需注册额外账号。
- 同时提供简单、高级两种模式的返回值断言,还包括 JSON Schema 以及针对 Kubernetes 资源的校验判断。
- 支持性能测试。
- 直接在 VS Code 中直接触发执行单个或整个测试文件。
如何使用?
那么,这个工具长什么样子呢,下面是命令行 atest
的参数说明:
API testing toolUsage:atest [command]Available Commands:completion Generate the autocompletion script for the specified shellhelp Help about any commandjson Print the JSON schema of the test suites structrun Run the test suitesample Generate a sample test case YAML fileserver Run as a server modeservice Install atest as a Linux serviceFlags:-h, --help help for atestUse "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: podsrequest:api: /api/v1/namespaces/kube-system/podsheader:Authorization: Bearer tokenexpect: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 插件支持测试用例编写的提示、格式校验
- 提供插件机制,增加对数据库等数据源的格式校验
作为一位过来人也是希望大家少走一些弯路
在这里我给大家分享一些自动化测试前进之路的必须品,希望能对你带来帮助。
(软件测试相关资料,自动化测试相关资料,技术问题答疑等等)
相信能使你更好的进步!
点击下方小卡片