敏捷测试价值观、方法和实践读书笔记(8)

简介: 本文介绍了API的基础知识,区分了Web Service和Web API的概念,详细阐述了Web Service中的SOAP服务和REST服务的特点及区别。同时,文章还探讨了如何在项目中进行API测试,包括API测试的类型和实施阶段,强调了API在现代软件开发中的重要性和优势。

API测试

API基础介绍

1Web Service

Web Service通常使安全用XML(可扩展标记语言),这意味着其比json更

Web Service是 WebAPI的子集,其仅包含 SOAP、REST和XML-REC

Web Service需要使用网络才能操作。

2. Web API

WebAPI通常使用 JSON(JavaScript Objeet Notation)格式传输数据。

Web API是 Web Services 的超集。除了前面提到的三种类型,如JSON-RPC。

Web APL不一定需要网络操作。

介绍Web Services

客户端、Web 服务端和执行操作的网络。

操作是指客户端-Web 服务端体系结构中的请求和响应。

客户端是请求 WebServices 的所有应用程序或软件系统的集合,是服务消费者;

Web 服务端是提供 WetServices 的所有应用程序或软件系统的集合,是服务提供者。

Web Services 的重要元素

(1)SOAP

Web Services 使用简单对象访问协议(Simple Object Access Protocol,SOAP),该协议使用 XML 作为报文格式。SOAP 是有状态的协议,所有请求和响应都是通过 XML 同时进行的,没有像 REST 服务那样显式地提供 GET、PUT、POST 或 DELETE 等方法。

(2)WSDL

SOAP 请求会使用 Web Services 描述语言( Web Service DescriptionLanguage, WSDL)。WSDL 是 Web Services 的一个非常重要的元素。它定义了特定请求选择所使用的 WebServices 类型,并且使用 XML 格式的文件描述 Web Services 提供的功能。

UDDI(Universal Description Discovery and Integration)也是非常有用的元素,因为 Web服务端是提供 Web Services 的服务提供者,对于服务提供者来说,UDDI 可用来发现、描述和发布 Web Services。UDDI负责让客户端査找(UDDI为 WSDL 提供了一个存储库)WSDL 的 XML 文件位置,这个 XML 文件也是 Web Services 的定义和描述方式。

Web Services 主要包括2种类型:REST 服务和 SOAP 服务

(1)REST服务

REST(Representational State Transfer)是一种无状态服务。

  • GET:此方法用来检索使用 PUT 或 POST 等任何方法发送到 Web 服务端的信息。此方法没有请求主体,执行成功后会得到响应状态码 200。
  • POST:此方法用于请求主体、指定 URL、文档键、上下文键等创建文档或记录到 Web 服务端,使用 GET 方法来检索 POST 到 Web 服务端的内容,执行成功后会得到响应状态码 201。
  • PUT:此方法用于更新已存在于 Web 服务端的文档或记录,执行成功后会得到响应状态码 200 或 201。
  • DELETE: 此方法用于删除在 Web 服务端的任何记录,执行成功后将会得到响应状态码 204(没有内容)。

(2)SOAP服务

SOAP 服务是指简单对象访问协议,其是使用 XML 语言的有状态服务。SOAP:

  • SOAP头和正文
  • 用来发送 SOAP消息的协议

  • 服务提供者(Publish()):提供 Web 服务的所有软件系统或应用程序。
  • 服务消费者(Find()):请求 Web 服务的所有软件系统或应用程序。
  • 服务注册(Bind()):由服务提供者提供有关 Web 服务的所有信息的注册表或存储库
  1. Publish(),服务提供者在服务注册中心或存储库中提供关于 Web 服务的所有细节;
  2. Find(),服务请求内容主要是客户端应用程序从存储库(有时是 WSDL、XML 文件)查找关于 Web 服务的详细信息: 第三个阶段是 Bind(),客户端应用程序或服务消费者与服务提供者同步,以达成 Web 服务的最终实现。

3.SOAP 服务与 REST 服务的不同之处

  1. SOAP 服务比 REST 服务慢。使用 XML 数据格式使 SOAP 服务在请求处理时花费了更多的时间,而 REST 服务使用轻量级的 JSON 格式,效率更高。
  2. 通常 SOAP 服务比 REST 服务更安全,虽然 SOAP 服务和 REST 服务都可以使用SSL 加密,但是除了 SSL,SOAP 服务还提供 WSS 加密。
  3. SOAP 服务没有任何内建方法,而 REST 服务有 GET、PUT、POST 和 DELETE
  4. SOAP 服务是有状态的,而 REST 服务是无状态的。
  5. 在 SOAP 服务中,请求和响应主体只支持 XM 数据格式;而在 REST 服务中,请求和响应主体支持许多数据格式,如JSON、XML、纯文本等。

在项目中如何进行API测试

基于 API 的应用程序在这几年流行的原因如下。

首先,与传统应用程序/软件相比,基于 AP1的应用程序具有更好的可伸缩性,代码开发速度更快,而相同的 API 不需要进行任何主要代码或基础设施重改就可以服务更多的请求。

其次,开发团队不需要在每次开发特性或应用程序时都从头开始编码。

再次,API支持的独立应用程序或基于 APL的软件产品都可以轻松与其他系统集成。

最后,通过 API 可以实现系统与系统,以及系统内部的解耦,降低系统的代码维护成本,正是基于 API 的优势。

2002 年,亚马逊创始人杰夫·贝索斯向员工下达了“API宣言”

  • 所有团队将通过服务接口公开他们的数据与功能。
  • 团队之间必须通过这些接口通信。
  • 其他形式的进程通信都是不被允许的,如不允许直接链接、不允许直接读取另一团队的数据储存、不允许共享内存模型、不允许设立任何“后门”。通过网络服务接口调用是唯一允许的通信方式。
  • 使用什么技术并不重要。无论是 HTTP、CORBA、PubSub,还是自定义协议,都不重要。
  • 所有服务接口,无一例外,都必须从头到尾地使用可外部化的设计,团队必须计划和设计能提供给外部开发人员使用的公开接口。任何违反指令的人都将被解雇。
  • 谢谢你,祝你有美好的一天!

API 测试类型

·功能

·性能

·安全

两个阶段

·工具选型

·收集需求和识别约束

·评估可用工具

·PoC

·具体实施

·启动准备

·正式启动

·CICD

后面内容,我认为使用价值不大,忽略

目录
相关文章
|
12天前
|
测试技术 API 项目管理
API测试方法
【10月更文挑战第18天】API测试方法
25 1
|
16天前
|
Java 测试技术 开发者
初学者入门:掌握单元测试的基础与实践
【10月更文挑战第14天】单元测试是一种软件测试方法,它验证软件中的最小可测试单元——通常是单独的函数或类——是否按预期工作。单元测试的目标是确保每个模块在其自身范围内正确无误地运行。这些测试应该独立于其他模块,并且应该能够反复执行而不受外部环境的影响。
41 2
|
10天前
|
测试技术 UED
软件测试中的“灰盒”方法:一种平衡透明度与效率的策略
在软件开发的复杂世界中,确保产品质量和用户体验至关重要。本文将探讨一种被称为“灰盒测试”的方法,它结合了白盒和黑盒测试的优点,旨在提高测试效率同时保持一定程度的透明度。我们将通过具体案例分析,展示灰盒测试如何在实际工作中发挥作用,并讨论其对现代软件开发流程的影响。
|
2天前
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
8 2
|
7天前
|
机器学习/深度学习 人工智能 自然语言处理
探索软件测试的边界:从基础到高级的实践之旅
【10月更文挑战第21天】 在当今数字化时代,软件已成为我们生活和工作中不可或缺的一部分。随着技术的快速发展,对软件质量的要求也日益提高。本文旨在通过深入浅出的方式,带领读者踏上一场从基础到高级的软件测试实践之旅。我们将探讨软件测试的基本概念、重要性以及如何有效地进行测试规划和执行。通过具体案例分析,揭示常见错误及其解决方案,同时展望未来软件测试领域的发展趋势。无论你是软件开发新手还是经验丰富的测试工程师,这篇文章都将为你提供宝贵的见解和启发。
24 8
|
6天前
|
监控 安全 jenkins
探索软件测试的奥秘:自动化测试框架的搭建与实践
【10月更文挑战第24天】在软件开发的海洋里,测试是确保航行安全的灯塔。本文将带领读者揭开软件测试的神秘面纱,深入探讨如何从零开始搭建一个自动化测试框架,并配以代码示例。我们将一起航行在自动化测试的浪潮之上,体验从理论到实践的转变,最终达到提高测试效率和质量的彼岸。
|
9天前
|
测试技术 C# 数据库
C# 一分钟浅谈:测试驱动开发 (TDD) 实践
【10月更文挑战第18天】测试驱动开发(TDD)是一种软件开发方法论,强调先编写测试代码再编写功能代码,以确保代码质量和可维护性。本文从 TDD 的基本概念入手,详细介绍了其核心步骤——编写测试、运行测试并失败、编写代码使测试通过,以及“红绿重构”循环。文章还探讨了 TDD 的优势,包括提高代码质量、促进设计思考、减少调试时间和文档化。此外,文中分析了常见问题及解决方案,如测试覆盖率不足、测试代码过于复杂、忽视重构和测试依赖过多,并通过一个简单的计算器类的代码案例,展示了 TDD 的实际应用过程。
21 1
|
16天前
|
机器学习/深度学习 人工智能 自然语言处理
探索AI在软件测试中的创新应用与实践###
本文旨在探讨人工智能(AI)技术如何革新软件测试领域,提升测试效率、质量与覆盖范围。通过深入分析AI驱动的自动化测试工具、智能化缺陷预测模型及持续集成/持续部署(CI/CD)流程优化等关键方面,本研究揭示了AI技术在解决传统软件测试痛点中的潜力与价值。文章首先概述了软件测试的重要性和当前面临的挑战,随后详细介绍了AI技术在测试用例生成、执行、结果分析及维护中的应用实例,并展望了未来AI与软件测试深度融合的趋势,强调了技术伦理与质量控制的重要性。本文为软件开发与测试团队提供了关于如何有效利用AI技术提升测试效能的实践指南。 ###
|
1天前
|
NoSQL 测试技术 Go
自动化测试在 Go 开源库中的应用与实践
本文介绍了 Go 语言的自动化测试及其在 `go mongox` 库中的实践。Go 语言通过 `testing` 库和 `go test` 命令提供了简洁高效的测试框架,支持单元测试、集成测试和基准测试。`go mongox` 库通过单元测试和集成测试确保与 MongoDB 交互的正确性和稳定性,使用 Docker Compose 快速搭建测试环境。文章还探讨了表驱动测试、覆盖率检查和 Mock 工具的使用,强调了自动化测试在开源库中的重要性。
|
6天前
|
测试技术 Python
软件测试的艺术:从理论到实践的探索
【10月更文挑战第23天】在软件开发的世界中,测试是确保产品质量的关键步骤。本文将深入探讨软件测试的核心理念、方法和实践,揭示如何通过精心设计和执行测试来提高软件质量。我们将一起探索测试的不同阶段,包括单元测试、集成测试、系统测试和验收测试,以及它们如何相互补充,共同构建起一个坚实的质量保证体系。文章旨在启发读者思考如何在自己的项目中实施有效的测试策略,从而提升软件的可靠性和性能。