HTTP 异步接口自动化测试方案

背景:

随着互联网应用技术复杂性不断提高,高效的测试技术和工具逐渐成为高质量应用的必要保证。

HTTP 接口即基于 HTTP 协议、可远程访问的接口,是分布式应用系统的一种技术实现。

HTTP 协议则是互联网上客户端浏览器或其他程序与 Web 服务器之间的应用层通信协议。

接口是预先定义的函数,旨在提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力。接口内部实现对特定业务处理逻辑的封装,接口调用方只需按接口调用规则进行访问即可完成特定业务的处理,无需关注内部实现细节。

方案设计:

根据接口内部业务处理模式不同,HTTP 接口可分为同步接口和异步接口。

同步接口是指请求方以HTTP 请求方式访问服务端 HTTP 接口,接口收到请求并完成全部业务处理后将结果以 HTTP 响应方式直接返回给请求方。

异步接口是指请求方以 HTTP 请求方式访问服务端 HTTP 异步接口,请求参数中需包含一个用于接收异步处理结果的 HTTP 回调接口地址,接口收到请求并在完成部分业务处理后以 HTTP 响应方式将处理结果返回给请求方(即同步返回),或者不做任何业务处理直接以 HTTP 响应方式返回一定数据以告知请求已收到,之后 HTTP 接口内部再启动新线程处理后续业务并访问请求方提供的回调接口将结果发给请求方(即异步返回)。

我们使用 Eolink 软件测试工具中的 open API 功能把开放出去的接口集成到 Jenkins 中,实现自动化测试。调用 open API 可以参考帮助文档。对外开放的接口如下图。

Jenkins [3]是 Apache 组织开发的基于 Java 的自动化测试工具,以其开源、小巧以及功能强大等优势而备受青睐。它可用于对服务器、网络或对象模拟巨大的负载,在不同自动化类别下测试它们的强度及分析整体自动化。

Jenkins 支持对 Web 服务 HTTP 接口的自动化压测,但其在 HTTP 异步接口的自动化压测方面存在一定的局限性。

Jenkins 对 HTTP 接口的压测只能覆盖到同步接口和异步接口的同步处理逻辑,无法覆盖到异步接口内部的异步处理逻辑。

单独使用 Jenkins 对 HT-TP 异步接口进行的自动化压测不能覆盖接口内部完整业务处理逻辑,因此 Jenkins 的压测结果不能反映出接口自身的真实自动化情况。

本文根据 HTTP 异步接口内部业务实现特性,结合 Jenkins 支持纯 Java 脚本编写的特点,设计了一套集Jenkins 工具、MySQL 数据库表设计、模拟接口测试桩设计以及自定义 Java 脚本设计等为一体的自动化测试方案。

该方案能够覆盖 HTTP 异步接口完整业务处理逻辑,且通过在真实产品中进行自动化压测实践,证明了该方案的可行性与实效性,把open api结成到Jenkins实现自动化测试。可以在Jenkins中直接下载插件进行集成,具体集成方式可以参考帮助文档

本文简述了使用 Eolink 进行异步接口性能测试的方案,更多功能可自行探索:www.eolink.com使用!

你可能感兴趣的:(HTTP 异步接口自动化测试方案)