生成式AI及其对API和软件开发的影响
面试必备:REST API测试专家的30个关键问答
应用程序接口测试是一种软件测试,重点是验证应用程序接口(API)的功能、可靠性、性能和安全性。 应用程序接口(API)基本上是一套允许不同应用程序相互通信的协议和工具。API就像一个翻译,它允许不同的软件程序通过一种共同的语言来交换数据。例如,当你在天气应用中查看天气预报时,该应用通过API与天气服务进行通信,获取最新的天气数据。
API 测试被认为是软件测试的未来,这得益于它在核心功能测试能力、时间效率、语言独立性和图形用户界面集成方面的优势。 它已成为软件测试项目确保产品质量的必备条件。
近年来,许多测试人员在申请 QA 工作时肯定需要面对面试问题。下面的 Web API 测试面试问题是从测试专家那里收集来的,可以帮助你为新职位做好准备。不仅仅是 API 面试,这份内容清单还将使希望获得 Web API 测试一般和高级知识的应届生和资深测试人员受益匪浅。
API的定义和功能(常见网络API测试面试问题)
- 什么是应用程序接口?
应用程序接口(API)是一种软件中介,能让两个应用程序相互通信。 它由许多子程序定义、日志和工具组成,用于创建应用软件。 在 API 测试面试中,你可能会被要求举出一些 API 例子,以下是一些众所周知的例子:谷歌地图 API、亚马逊广告 API、Twitter API、YouTube API 等。
API 和网络服务的主要区别是什么?
- 所有网络服务都是应用程序接口,但并非所有应用程序接口都是网络服务。
- 网络服务可能不包含所有规范,也不能执行应用程序接口所能执行的所有任务。
- 网络服务只有三种使用方式: SOAP、REST 和 XML-RPC 可用于通信,而 API 则可以多种方式公开。
- 网络服务总是需要网络才能运行,而应用程序接口不需要网络就能运行。
举个简单的例子来说明一下:可以把API比作一把钥匙,它允许你访问特定的数据或功能,而网络服务就像一个房间,里面可能包含多个这样的钥匙。
API 的使用限制是什么?
许多应用程序接口都由提供商设置了一定的限制。因此,请尽量估算您的使用量,并了解这将如何影响产品的总体成本。 这是否会成为一个问题,在很大程度上取决于如何利用数据。 如果因为预算限制而被配额限制并被有效切断,那么这项服务(以及依赖于这项服务的任何系统或流程)就会形同虚设。例如,某些API可能有调用次数限制,比如一个地图API每天只能被调用1000次。超出这个限制可能会导致额外费用或服务中断。
创建API(常见网络API测试面试问题)
创建 Web API 有哪些架构风格?
这是 Web API 面试的基本问题之一。 Bellows 是四种常见的 Web API 架构风格:
- 用于客户端与服务器通信的 HTTP
- 将 XML/JSON 作为格式化语言
- 简单 URI 作为服务地址
- 无状态通信
谁可以使用网络 API?
任何支持 HTTP 动词(如 GET、PUT、DELETE 和 POST)的客户端都可以使用 Web API。 由于 Web API 服务无需配置,因此任何客户端都能轻松使用。 事实上,即使是移动设备等便携式设备也能轻松使用 Web API,这无疑是这项技术的最大优势。
测试 API – 热门 Web API 测试面试问题与答案
什么是 API 测试?
应用程序接口测试是一种软件测试,用于确定所开发的应用程序接口是否符合有关应用程序功能、可靠性、性能和安全性的预期。测试API时,首先要验证API是否能够正确接收和处理请求,然后检查返回的数据是否符合预期,最后确保API在高负载下仍然稳定。
API 测试有哪些优势?
- 测试核心功能: 应用程序接口测试可在没有用户界面的情况下访问应用程序。 在图形用户界面测试之前,将对应用程序的核心功能和代码级功能进行测试和评估。 这将有助于发现在图形用户界面测试期间可能会变得更大的小问题。
- 省时: 应用程序接口测试通常比图形用户界面功能测试更省时省力。 图形用户界面测试中的网络元素必须进行轮询,这使得测试过程更慢。 特别是,应用程序接口测试自动化需要的代码较少,因此与图形用户界面测试自动化相比,它能提供更好、更快的测试覆盖率。 这些都将为测试项目节省成本。
- 与语言无关: 在 API 测试中,数据交换使用 XML 或 JSON。 这些传输模式与语言完全无关,因此用户在为项目采用自动化测试服务时,可以选择任何编码语言。
应用程序接口测试中常用的一些协议?
现在有许多协议可用于 API 测试,如 JMS、REST、HTTP、UDDI 和 SOAP。
API 的测试环境是什么?
建立 API 的测试环境并不是一件容易的事,因此,如果你的 API 测试面试即将开始,你应该准备好答案。 API 的测试环境比较完整,需要根据软件要求配置数据库和服务器。 这种测试形式不提供图形用户界面(GUI)。
安装过程完成后,将验证 API 是否正常运行。 在整个过程中,从原始环境调用的 API 会设置不同的参数,以研究测试结果。
API 测试设计的原则是什么?
API 测试设计最重要的五项原则是:
- 设置: 创建对象、启动服务、初始化数据等
- 执行: 应用应用程序接口或场景的步骤,包括日志记录
- 验证: 评估执行结果的规则
- 报告: 通过、未通过或受阻
- 清理: 测试前状态
例如:提供一个API 测试设计中的场景,当测试一个电子商务网站的购物车API时,测试设计应该包括添加、删除商品以及计算总价的场景。
常见的 API 测试类型有哪些?
当然,也有一些特殊的测试,在这个领域没有任何一份清单可以要求做到全面,但大多数测试大致可分为以下九类,在参加 API 测试面试之前,你应该记住这九类测试。
- 验证测试
- 功能测试
- UI测试
- 下载测试
- 运行时/错误检测
- 安全测试
- 渗透测试
- 模糊测试
- 互操作性和 WS 合规性测试
- 进行 API 测试的程序是什么?
- 选择要添加 API 测试用例的套件
- 选择测试开发模式
- 要求为所需的应用程序接口方法开发测试用例
- 配置应用程序的控制参数,然后测试条件
- 配置方法验证
- 执行应用程序接口测试
- 检查测试报告并过滤 API 测试用例
- 安排所有 API 测试用例
- 进行 API 测试时必须检查什么?
在 API 测试过程中,会使用已知数据向 API 发出请求。 这样,您就可以分析验证响应。 在测试应用程序接口时,您应该考虑:
- 数据的准确性
- 计划验证
- HTTP 状态代码
- 数据类型、验证、顺序和完整性
- 授权检查
- 实施响应超时
- API 返回时的错误代码,以及
- 性能和安全测试等非功能测试
- 进行应用程序接口测试的最佳方法是什么?
进行 API 测试时应考虑以下因素:
- 定义正确的输入参数
- 验证两个或多个附加值参数的混合调用
- 确定应用程序接口程序的基本功能和范围
- 编写适当的应用程序接口测试用例,并利用等价类、边界值等测试技术检查可操作性
- 测试用例的执行
- 将测试结果与预期结果进行比较
- 验证 API 在连接文件等条件下的行为。
- 有哪些工具可用于 API 测试?
有无数不同的 API 测试工具可供选择。 常见的工具有 Katalon Studio、Postman、SoapUi Pro、Apigee 等。 在进行单元测试和 API 测试时,目标都是源代码。 如果 API 方法使用基于 .NET 的代码,那么另一个支持工具必须具有 .NET。
API 测试和单元测试有什么区别?
API测试 | Unit测试 |
由质量保证小组进行 | 由开发团队进行 |
主要是黑盒测试 | 白盒测试 |
旨在评估最终用户(将使用您的应用程序接口的外部开发人员)将使用的系统的全部功能 | 用于验证每个独立单元的性能是否符合预期 |
通常在构建完成后运行,作者无法访问源代码 | 在开发人员构建之前,必须确保每个代码模块都能通过单元测试 |
API 测试和用户界面测试有什么区别?
应用程序接口(API)可实现两个独立软件系统之间的通信。 实施 API 的软件系统包含可由另一个软件系统执行的函数或子程序。
另一方面,UI(用户界面)测试是指测试图形界面,如用户如何与应用程序交互,以及测试应用程序元素,如字体、图像、布局等。 用户界面测试基本上侧重于应用程序的外观和感觉。
应用程序接口测试面临哪些主要挑战?
如果你能克服 API 测试中的挑战,你也能在 API 测试面试中充满信心。 它们是:
- 参数选择
- 参数组合
- 呼叫排序
- 输出验证和确认
- 另一个重要挑战是提供输入值,这一点非常困难,因为在这种情况下无法使用图形用户界面。
- API 测试包括哪些测试方法?
最常见的 Web API 测试面试问题之一是关于测试方法的。 它们是:
- 单元测试和功能测试
- 负载测试,测试负载下的性能
- 发现测试,列出、创建和删除 API 中记录的调用次数
- 进行可用性和可靠性测试,以获得一致的结果
- 安全和渗透测试,以验证所有类型的身份验证
- 创建和运行需要定期调用 API 的脚本的自动化测试
- 端到端集成和网络用户界面测试
- API 文档测试,以确定其效率和有效性
- 为什么 API 测试被认为是最适合自动化测试的形式?
现在,应用程序接口测试比图形用户界面测试更受青睐,而且被认为是最合适的,因为:
- 它能非常有效地验证被测系统的所有功能路径。
- 它提供了最稳定的界面。
- 它更易于维护,并能提供快速反馈。
事实上,根据《2024 年质量状况报告》,API 服务是继网络应用程序之后自动化程度第二高的 AUT。
- 常见的 API 错误有哪些?
不仅是 API 基本问题,面试官还会通过询问 Web API 测试面试中的 API 错误来判断你的知识和经验。 因此,最常见的问题有:
- 模块缺失错误
- 文件错误
- 参数验证错误
- 而一些标准的错误预期,如结果不是预测的那样,则可以看到错误的发生,同样的警告也会以消息的形式指定。 单个模块内可以有一个或多个警告。
- API 测试经常会发现哪些错误?
- 功能缺失或重复
- 未能优雅地处理错误条件
- 健壮性
- 可靠性
- 安全
- 未使用的标识
- 未执行错误
- 错误处理不一致
- 性能
- 多线程问题
- 不当错误
记录API(常见网络API测试面试问题)
- 什么是 API 文档?
应用程序接口(API)文档是一份完整、准确的技术文档,说明如何有效使用和集成应用程序接口(API)。 它是一本小巧的参考手册,包含使用 API 所需的所有信息,并通过函数、类、返回类型、参数以及示例和教程等详细信息,帮助您回答所有 API 测试问题。
- 常用的 API 文档模板有哪些?
有几种可用的 API 文档模板有助于使整个过程简单明了,您可以在 API 测试面试中回答这些问题,例如:
- Swagger
- Miredot
- Slate
- FlatDoc
- APIblueprint
- RestDoc
- WebserviceAPIspecification
- 编写应用程序接口文件时,必须考虑哪些因素?
- 内容来源
- 文件计划或草图
- 交货布局
- 文件中每项功能所需的信息
- 自动文档创建程序
- 应用程序接口多久更改一次,更重要的是,多久废弃一次?
应用程序接口(API),尤其是现代的 RESTful API,是一种很好的创造,它无疑可以简化和加快集成工作,使您更有可能从中受益。 但是,API 可能也确实会因各种原因发生变化,有时甚至是突然变化,因此 REST API 在这方面与传统集成方法并无不同。 如果 API 调用过时或消失,您的程序就会中断,因此了解您所依赖的 API 变化或废弃的频率非常重要。
- REST(常见网络 API 测试面试问题)
REST(表征状态传输)是一种开发网络服务的架构风格,它利用了 HTTP 协议的普遍性,并使用 HTTP 方法来定义操作。 它以资源为中心,每个组件都是资源,可通过共享接口使用标准 HTTP 方法进行访问。
在 REST 架构中,REST 服务器提供对资源的访问,REST 客户端访问并提供这些资源。 在这里,每个资源都由 URI 或全局 ID 标识,REST 使用多种方式表示资源,如文本、JSON 和 XML。 XML 和 JSON 是时下最流行的资源表示法。
- 什么是 RESTFul 网络服务?
在下一次 API 测试面试中,有两种网络服务值得注意:
- SOAP(简单对象访问协议)–一种基于 XML 的网络服务公开方法。
- 以 REST 风格开发的网络服务被称为 RESTful 网络服务。 这些网络服务使用 HTTP 方法来实现 REST 架构的概念。 RESTful 网络服务通常定义一个 URI(服务的统一资源标识符),并提供 JSON 等资源表示法和一套 HTTP 方法。
- 什么是 REST 中的 “资源”?
REST 架构将任何内容都视为资源,可以是文本文件、HTML 页面、图像、视频或动态业务信息。REST 服务器允许访问资源并对其进行修改,其中每个资源都由 URI/全局 ID 标识。
- REST 中最常用的资源表示方法是什么?
REST 使用不同的表示法来定义资源,如文本、JSON 和 XML。XML 和 JSON 是最常用的资源表示法。
- RESTful 网络服务使用哪种协议?
RESTful 网络服务使用 HTTP 协议作为客户端和服务器之间的通信媒介。
- REST 有哪些主要特点?
在 Web API 测试面试中,很可能会问到 REST 的关键特性。 因此,请在脑海中准备好这两个问题的答案:
REST 是无状态的,因此服务器没有状态(或会话数据)。 如果 REST API 应用得当,服务器可以在两次调用之间重新启动,因为所有数据都会传输到服务器上
网络服务主要使用 POST 方法执行操作,而 REST 则使用 GET 访问资源。
- 什么是 RESTful 网络服务中的消息传递?
RESTful 网络服务使用 HTTP 协议作为客户端与服务器之间的通信工具。 当客户端以 HTTP 请求的形式发送消息时,服务器会发回 HTTP 回复,这种技术被称为消息传递。 这些消息包括消息数据和元数据,即消息本身的信息。
- HTTP 请求的核心组件是什么?
HTTP 请求包含五个关键要素:
- 显示 GET、PUT、POST 和 DELETE 等 HTTP 方法的操作。
- 统一资源标识符(URI),即服务器上资源的标识符。
- HTTP 版本,表示 HTTP 版本,例如-HTTP v1.1。
- 请求头(Request Header),它包含 HTTP 请求消息的元数据(键值对)。 元数据可以是客户端(或浏览器)类型、客户端支持的格式、信息体格式、缓存设置等。
- 请求正文,表示信息内容或资源表示。
- REST 支持哪些最常用的 HTTP 方法?
- GET 仅用于请求指定资源中的数据。 Get 请求可以缓存和加入书签。 它会保留在浏览器历史记录中,并有长度限制。 在处理敏感数据时,绝对不能使用 GET 请求。
- POST 用于向服务器发送数据,以创建/更新资源。 POST 请求不会被缓存或加入书签,也不会保留在浏览器历史记录中。
- PUT 会用请求有效载荷替换目标资源的所有当前表示。
- DELETE 删除指定的资源。
- OPTIONS 用于描述目标资源的通信选项。
- HEAD 要求的响应与 GET 请求相同,但不包含响应体。
- 能否使用 GET 请求而不是 PUT 来创建资源?
应使用 PUT 或 POST 方法创建资源。 GET 仅用于请求指定资源中的数据。
- PUT 和 POST 操作有什么区别吗?
PUT 和 POST 操作非常相似,只是它们生成的结果不同。
PUT 操作是empotent的,因此可以缓存响应,而 POST 操作的响应是不可缓存的,如果重试请求 N 次,最终会在服务器上创建N个不同 、URI的N个资源。
在网络应用程序接口测试面试中,你应该举一个 PUT 和 POST 操作的具体例子,让面试官一目了然。 下面就是一个例子:
场景 假设我们正在设计一个网络应用程序。 让我们列出几个 URI 及其用途,以便了解何时使用 POST 操作,何时使用 PUT 操作。
常见问题解答
Q1: 什么是API测试?
A1: API测试是一种软件测试,主要用来验证应用程序接口的功能、可靠性、性能和安全性。它确保API能够正确处理请求、返回正确的响应,并且在各种条件下都能稳定运行。
Q2: API测试与单元测试有什么区别?
A2: 单元测试通常关注单个代码组件(如函数或方法)的功能,而API测试则关注整个应用程序接口的端到端功能。API测试通常涉及多个组件和系统之间的交互。
Q3: 如何设计有效的API测试用例?
A3: 设计有效的API测试用例需要考虑多种因素,包括正常和异常的输入条件、安全测试、性能测试和兼容性测试。测试用例应该覆盖所有API端点,并验证API的行为是否符合预期。
Q4: 在API测试中,什么是最重要的测试类型?
A4: 功能测试、性能测试和安全测试是API测试中最重要的类型。功能测试确保API按预期工作,性能测试检查API在高负载下的表现,而安全测试则确保API能够抵御各种安全威胁。
Q5: 如何处理API测试中的依赖问题?
A5: 可以使用模拟(Mocking)和桩(Stubs)技术来模拟外部服务或组件的行为,从而在不依赖实际服务的情况下测试API。
Q6: 如何确保API的性能?
A6: 通过性能测试来确保API的性能,包括响应时间、吞吐量和并发用户数。可以使用工具如JMeter或LoadRunner来模拟高负载条件并评估API的表现。
Q7: 在API测试中,什么是互操作性测试?
A7: 互操作性测试是指验证API能否与其他系统或服务成功交互的测试。这包括检查数据格式、协议兼容性和错误处理。
Q8: 如何处理API版本控制问题?
A8: 应该在API设计中明确版本控制策略,例如通过URI、请求头或参数来区分不同版本的API。在测试过程中,确保测试覆盖所有支持的版本。
Q9: 在API测试中,什么是端到端测试?
A9: 端到端测试是指从用户请求开始到最终响应结束的整个流程的测试。这种测试确保整个系统的工作流程能够正确执行,并且所有组件都能协同工作。
Q10: 如何自动化API测试?
A10: 可以使用专门的API测试工具和框架(如Postman, Swagger, SoapUI)来自动化API测试。这些工具支持创建测试脚本、执行测试用例和生成测试报告。
这些FAQ可以帮助面试者更好地理解API测试的关键概念和实践,为面试做好充分的准备。
最后
上述 API 测试面试问题在软件质量保证工程师和测试人员职位的面试中非常常见。 为了更好地准备即将到来的面试,请务必仔细阅读这些问题,并试着理解问题背后的推理和知识,而不是简单地死记硬背。
本文翻译源自:https://katalon.com/resources-center/blog/web-api-testing-interview-questions