Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

第 42 卷 第 1 期 数字技术与应用 Vol.42 No.

1
2024 年 1 月 Digital Technology &Application Jan 2024

中图分类号:TP311 文献标识码:A 文章编号:1007-9416(2024)01-0010-04


DOI:10.19695/j.cnki.cn12-1369.2024.01.03

API 接口测试方法总结与综述
中国电子科技集团公司第三十研究所 马振芸

本文旨在论述 API 接口测试方法和经验总结,并分析 存在的一些潜在故障和风险,并提高应用程序的质量和


当前在软件开发领域中广泛应用的 API 接口测试方法。通 可靠性。
过对现有文献的参考,归纳总结不同类型的 API 接口测 1 API 接口测试基础知识
试方法,分析它们的优势和局限性,为软件测试从业人 1.1 API 接口定义
员提供一个综合性的 API 接口测试方法和测试实践的参 API 接 口(Application Programming Interface) 是
考指南,以促进测试效率和质量的提升。 一种定义了软件组件之间通信和交互规范的接口,它允
随着互联网和移动应用的普及,软件系统之间的集 许不同的应用程序、系统或服务之间依照事先定义好的
成变得越来越常见。许多应用程序和服务依赖于外部 协议进行数据和功能的交换。
API 接口来获取数据,进行操作或者实现一些特定功能。 1.2 API 接口类型
因此,确保 API 接口的正确性和稳定性对于应用程序的 API 接口种类多种多样,包括但不限于以下几种 :
正常运行至关重要。 (1)Web API :Web API 是通过 Web 协议(通常是
在整个软件生命周期中,API 接口测试是软件项目 HTTP)进行通信的接口,允许应用程序通过发送 HTTP
开发过程中的一项重要环节。在需求分析和设计阶段, 请求来调用远程服务器上的功能和获取数据。Web API
API 接口测试可以帮助开发团队确定系统的 API 设计和 通常以 JSON 或 XML 格式返回响应。
规范,通过与业务需求对齐,并定义清晰的 API 接口和 (2)REST API :REST(Representational State
功能,可以确保在后续的开发和测试过程中得到正确的实 Transfer)是一种基于 HTTP 协议的软件架构风格,常
现 ;在开发阶段,API 接口测试可以与开发过程同步进行, 用于构建 Web 服务。REST API 使用 HTTP 方法(如 GET、
帮助项目开发团队及时发现和修复 API 接口存在的问题。 POST、PUT、DELETE)来执行操作,并通过 URL 路径
通过编写和执行测试用例,可以验证 API 的功能、数据 和查询参数传递数据。
一致性和错误处理等方面,确保开发的 API 接口符合预 (3)Library API :Library API 是一组函数或方法
期并具备正确的行为 ;在集成测试阶段,API 接口测试 的集合,旨在为开发人员提供特定功能的代码库。开发
起到关键作用,确保各个组件和模块之间的正确集成和 人员可以通过调用这些 API 方法来使用和操作库中提供
通信。通过验证 API 接口的集成,可以确保数据的传递 的功能。
和交互的正确性,同时发现和修复可能存在的兼容性和 1.3 API 接口特点
一致性问题 ;在系统测试阶段,API 接口测试可以验证 (1)隔离性 :API 接口通过提供特定的协议和接口
整个系统的功能和性能。通过对 API 接口进行全面的功 来实现系统之间的通信和交互。这种隔离性使得系统可
能验证、错误处理、性能测试,可以确保 API 在真实场 以独立开发、部署和维护,而不需要关注底层实现细节。
[1]
景下的正确运行,并满足系统的可靠性和性能要求 。 (2)可重用性 :API 接口提供了一组定义好的功能
实施 API 接口测试用于确保应用程序或者系统能够 和数据交互规范,可以在不同的应用程序或系统中被重
正确、稳定的运行,给用户提供良好的体验。通过进行 复使用。通过使用相同的 API 接口,开发人员可以在不同
综合而全面的 API 接口测试,可以有效地减少应用程序 的项目中实现功能复用,提高开发效率和代码可维护性。

收稿日期 :2023-08-25
作者简介 :马振芸(1988—)
,女,甘肃庆阳人,本科,助理工程师,研究方向 :软件测试。

10
马振芸:API 接口测试方法总结与综述 2024 年 第 1 期

(3)松耦合性 :API 接口通过定义明确的输入和输 通过遵循以上这些基本原则,API 接口测试可以确


出规范,使得不同的系统可以彼此独立演化和改变。这 保接口功能的正确性、完整性和可靠性,提升系统的稳
种松耦合性允许系统进行独立的升级和改进,而无需影 定性和质量,同时也为开发人员提供反馈和改进的机会,
响到其他系统,从而提高了系统的可扩展性和灵活性。 并优化和维护接口。
(4)统一性 :API 接口定义了标准的数据格式、协 1.5 常见 API 接口测试方法
议和操作方式,使得不同的系统能够按照相同的规范进 基于需求和规格的 API 接口测试方法包括等价类划
行通信和交互。这种统一性简化了系统间的集成和互操 分法和边界值分析法。基于代码和逻辑的 API 接口测试
作,提供了一致的开发和使用体验。 方法包括代码覆盖和路径覆盖法 [2]。
(5)可编程性 :API 接口允许开发人员使用编程语 (1)等价类划分法 :等价类划分是一种将输入值划
言来调用和操作接口,从而实现对系统的控制和自动化。 分为等价类的方法。可以将输入参数划分为不同的等价
综上所述,API 接口具有隔离性、可重用性、松耦 类,每个等价类代表一组具有相同行为的输入。然后,
合性、统一性、可编程性等特点。这些特点使得 API 接 从每个等价类中选择一个代表性的测试数据进行测试。
口成为不同系统之间实现通信、交互和功能集成的重要 等价类划分法的优势能够减少测试用例数量,提高测试
方式。 效率,劣势就是对输入数据进行合理的等价类划分,可
1.4 API 接口测试的基本原则 能需要一定的领域知识和经验。
API 接口在软件开发中起着重要的作用,它定义了 (2)边界值分析法 :对输入或者输出的边界值进行
系统或组件之间的交互规范,促进了系统的集成、数据 测试的一种黑盒测试方法。通常边界值分析法是作为对
交换、服务提供和应用开发等方面的需求。API 接口测 等价类划方法的补充,边界值通常是导致错误和异常的
试遵循的基本原则包括以下几个方面 : 潜在区域。在 API 接口测试中,通过确定输入参数的边
(1)完整性 :确保对 API 接口的所有功能和操作进 界值和边界情况,设计测试用例以覆盖这些边界条件。
行全面的测试覆盖。测试用例应该覆盖接口的各种输入、 这包括测试参数的最小值、最大值、刚好在边界上的值
边界条件和异常情况,以验证接口在不同情况下的行为 以及边界前后的值。该方法的优势能够对边界值进行测
和响应。 试识别出潜在的错误和缺陷,覆盖关键点测试 ;劣势就
(2)准确性 :验证 API 接口返回的数据和执行的操 是只关注边界无法覆盖其他非边界值的情况,可能会遗
作是否符合预期。测试应该比较实际结果与预期结果, 漏一些潜在的缺陷。
确保接口返回正确的数据。 例如,接受输入参数为应用系统名称的接口,接口
(3)可靠性 :测试 API 接口的稳定性和可靠性,确 规范文档中规定应用系统名称长度为 8 ~ 32 个字符,可
保它在不同负载、并发和压力条件下的表现。测试应该 以将应用系统名称输入参数划分为 3 个等价类、2 个无效
模拟实际的使用场景,并检查接口的性能和可靠性。 等价类和 1 个有效等价类,2 个无效等价类分别为小于 8
(4)安全性 :测试 API 接口的安全性,验证接口是 和大于 32,一个有效等价类为大于 8 且小于 32,然后从
否有足够的身份验证和授权机制,以防止未经授权的访 每个等价类中选择一个数据进行测试。边界值分析法是
问和攻击。测试应该包括对输入验证、访问控制和数据 对等价类方法的补充,边界值分析法选取边界值分别为 :
保护等方面的测试。 7、8、9、31、32、33 作为输入数据。注意选取边界值包
(5)可维护性 :测试 API 接口的可维护性,即接口 括上、下边界值和刚好在边界上的数据。有时候测试人
的易于理解、修改和扩展的程度。测试用例应该覆盖接 员容易遗漏边界后面的值(比如 :9、31)

口的各种功能和代码路径,以确保后续的维护和改进能 (3)代码覆盖率 :代码覆盖率是衡量测试用例对源
够顺利进行。 代码的覆盖程度的指标。它表示在测试过程中被执行的
(6)文档和报告 :编写清晰、详尽的 API 接口测试 代码占总代码的比例。常见的代码覆盖率指标包括语句
文档,并形成测试报告以记录测试结果和问题。文档和 覆盖率、分支覆盖率和条件覆盖率等。通过使用代码覆
报告应包括测试范围、测试用例、执行结果和问题跟踪, 盖率工具,测试人员可以分析测试用例的执行情况,并
以便于团队成员进行参考以及完成后续的改进工作。 确定未执行或不充分覆盖的代码部分。这样可以帮助发

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

You might also like