Professional Documents
Culture Documents
API接口测试方法总结与综述 马振芸
API接口测试方法总结与综述 马振芸
1
2024 年 1 月 Digital Technology &Application Jan 2024
API 接口测试方法总结与综述
中国电子科技集团公司第三十研究所 马振芸
收稿日期 :2023-08-25
作者简介 :马振芸(1988—)
,女,甘肃庆阳人,本科,助理工程师,研究方向 :软件测试。
10
马振芸:API 接口测试方法总结与综述 2024 年 第 1 期
11
第 42 卷 数字技术与应用 www.szjsyyy.com
现潜在的代码逻辑错误和遗漏的测试情况 别未执行的代码,指导测试用例设计以及评估测试的质
(4)路径覆盖 :路径覆盖是一种测试目标,要求覆 量,而且还有助于提高软件质量,减少出错的概率。代
盖系统中所有可能的路径。在 API 接口测试中,路径是 码覆盖和路径覆盖也同样存在劣势,可能无法全面反馈
指通过接口的不同代码路径,包括条件分支、循环和异 接口的功能和性能,无法覆盖所有可能的输入和边界情
常处理等。此处我们通过一个简单的示例来说明代码覆 况,还需要其他测试方法结合。
盖和路径覆盖,假设我们有一个简单的函数 Sum(),它 2 API 接口测试常用工具
接收两个整数作为输入,并返回它们的和。以下是函数 合理的运用 API 接口测试工具可以帮助测试人员提
的代码实现 : 高测试效率、缩短测试周期和进行可重复性测试。API
def Sum(a,b): 接口测试工具种类繁多,这里主要介绍几种常用的工具
if a>0 and b>0: 包括 Postman、SoupUI、JMeter,这几种工具类型具有
result =a+b 各自的特点和使用场景,选择适合自己需求的工具取决
else: 于项目的技术栈和测试需求。以下是这几种工具的特点
result=0 和使用场景。
return result (1)Postman :Postman 是 一 款 广 泛 使 用 的 API 测
1)语句覆盖 :设计 2 个测试用例来覆盖 2 个不同代 试工具,具有直观的界面和丰富的功能。它支持创建和
码语句。 执行 HTTP 请求,验证响应,断言测试结果,并生成测
测试用例 1 :输入 a=2,b=4。这个测试用例覆盖了 试报告。Postman 一般比较适用于 Web 类应用程序或者
if a>0 and b>0 条件为真的情况,执行了第一个代码语 移动类应用程序。
句 result=a+b。 (2)SoupUI :SoapUI 是一款开源工具,也是一款
测试用例 2 :输入 a=-1,b=7。这个测试用例覆盖 专门用于测试 Web 服务和 API 的工具。它支持 REST 和
了 if a>0 and b>0 条件为假的情况,执行了第二个代 SOAP 协议,提供强大的测试功能,包括请求和响应验
码语句 result=0。 证、性能测试等。SoapUI 工具主要适用于测试 Web 服
2)分支覆盖 :我们设计两个测试用例来覆盖两个不 务的项目,特别是那些使用 SOAP 协议和 RESTful 风格
同的分支路径。 的接口。
测试用例 3 :输入 a=4,b=5。这个测试用例覆盖了 (3)JMeter 是一款功能强大的性能测试工具,也可用
if a>0 and b>0 条件为真的分支路径。 于 API 接口测试。它支持多种协议,包括 HTTP、REST、
测试用例 4 :输入 a=-1,b=-1。这个测试用例覆盖 SOAP 等,可以模拟大量并发请求,评估 API 的性能和稳
了 if a>0 and b>0 条件为假的分支路径。 定性。同样适用于 Web 应用类程序、移动类应用程序和
3)条件覆盖 :我们设计两个测试用例来覆盖不同的 数据库系统等。
条件情况。 3 API 接口测试实施
测试用例 5 :输入 a=0,b=5。这个测试用例覆盖了 3.1 API 测试的基本流程概述
a>0 条件为假的情况。 (1)明确测试目标和需求,包括 API 接口、功能和
测试用例 6 :输入 a=3,b=0。这个测试用例覆盖了 性能等 ;
b>0 条件为假的情况。 (2)制定测试计划,包括测试范围、测试资源、测
4)路径覆盖 :共有 2 条路径可执行。 试环境设置、测试数据准备等 ;
测试用例 7 :输入 a=1,b=2。进入 if 路径并执行 (3)测试用例设计,测试用例应覆盖不同的输入情
result=a+b。 况、边界条件和异常情况等 ;
测试用例 8 :输入 a=-2,b=-2, 进入 else 路径并执 (4)准备测试环境,测试设备准备、网络环境配置、
行 result=0。 测试工具和监控服务器准备等 ;
代码覆盖和路径覆盖在 API 接口测试中发挥着重要 (5)执行测试用例,给接口传入不同组合参数,验
的作用,能够发现潜在的错误,提高测试的完整性,识 证返回值与预期值是否一致,包括功能测试用例,性能
12
马振芸:API 接口测试方法总结与综述 2024 年 第 1 期
测试用例、稳定性测试用例等 ; 用场景,尽量模拟真实的使用场景,这样更容易提早发
(6)记录和分析接口测试结果,包括成功和失败信 现问题。
息,对测试结果进行分析,查找失败的问题 ; (4)稳定性测试用例设计,需要结合实际业务和该
(7)缺陷跟踪和修复,将测试过程中发现的问题和 接口的前后关联关系设计,并长时间调用接口运行,检
缺陷进行记录和跟踪,确保问题得到及时修复 ; 查是否能达到预期结果。
(8)回归测试,验证开发人员发现的接口问题是否 (5)安全性测试,在接口调用过程中检查记录的日
彻底修复,需要再次执行测试用例,确保所有接口都测 志信息中是否打印敏感信息,特别是涉及到用户的安全
试通过 ; 隐私等信息。
(9)测试报告编写,包括整理测试结果和分析,撰 (6) 平 台 兼 容 性 测 试, 有 些 项 目 需 要 同 时 支 持
写测试报告。接口测试报告的内容包括测试目标、测试 Windows 平台和 Linux 平台,那么就需要覆盖测试所支
方法、测试内容、接口测试覆盖率、已解决缺陷和未解 持的平台。
决缺陷、最终的测试结果、问题和建议等。 3.3 API 接口测试常见问题
3.2 API 接口测试用例设计 API 接口测试过程中会遇到各种各样的问题,有如
API 接口测试用例设计是确保对 API 接口全面覆盖 下几点 :
(1)接口需求定义不清晰,导致设计用例无从下
和有效测试的关键环节。我们以一个示例来说明 API 接 手,这个时候需要找接口文档规范编写者进行讨论确认 ;
口测试用例设计需要考虑哪些因素,接口文档中定义接 (2)传入参数问题,传入的参数数据与类型不匹配,需
口如表 1 所示。 要测试人员仔细确认传入数据是否与参数类型匹配 ;
(3)
表 1 接口函数定义表 工具问题,使用自研的定制化工具时会遇到工具奔溃或
Tab.1 Interface function definition table 者内存泄露问题,这时需要找工具开发者定位,以上是
UINT32 OpenApp (HDEV handle,uLONG appType, 在实施 API 接口测试过程中常见的一些问题,当然还包
LPSTR appNmae,HAPPLICATION *appHandle)
函数名称
括其他一些可能存在的问题,在进行测试时,应该仔细
实现打开一个应用的功能 , 调用该函数之前必须先
函数功能
调用 Connect 接口 检查接口文档,了解接口的预期结果,只有这样才能测
[IN] handle 设备句柄 试结果的正确性。
[IN] appType 应用类型
函数参数
[IN] appName 应用名称,长度不能超过 64 个字符 4 测试经验总结
[OUT] 应用系统句柄
通过对 API 接口测试,可以发现接口在不同输入数
返回值 OK
据情况下的逻辑错误,也可以发现接口在并发情况下运
(1)当传入参数 handle,appType,appHandle 传入 null,
接口返回值为无效的句柄,对应错误码为 0x00005 ; 行的性能问题,还可以发现接口在一定负载下长时间运
当传入其他数值时为无效的参数,对应错误码为
行的稳定性和可靠性问题。进行 API 接口测试,能够提
其他信息 0x00006
(2)appName 传入超过 64 个字符时,返回应用名称 早发现问题和修复问题,提高接口的正确性和可靠性,
长度超过 64 个字符,对应的错误码为 0x000024
(3)接口调用成功,对应的返回值为 0x00000 并且能够保证接口的正常工作,提供可靠的服务给用户。
备注 调用该接口不需要验证权限 API 接口在现代软件开发中扮演着重要的角色,它
(1)读懂接口文档,从接口定义中,可以获取明确 们定义了不同软件之间的通信规范和数据交换方式,随
的信息 :函数名称、函数功能、函数参数(包括输入、 着数字化转型的加速和云计算虚拟化的普及,API 接口
输出参数)
、返回值、其他信息以及备注信息,另外还需 的需求将继续增长,同时对接口测试人员来,也将会面
要注意一些接口的依赖关系。 临着需要不断地探索新的接口测试方法。
(2)参数定义分析,根据参数的定义规则,可以使 引用
用边界值或者等价类方法进行分析设计(参考第 1.5 节 [1] 董之光,冯梅,柏东明.常用API接口安全防护研究[J].网络安全
中常见的 API 接口测试方法)
。 技术与应用,2023(4):52-54.
(3)业务功能测试,需要覆盖正常场景和异常场景, [2] 崔喜萌,陈明.软件开发开放API接口的安全处理[J].网络安全
场景覆盖需要结合实际项目,该接口在项目中的实际使 技术与应用,2020(4):80-81.
13