【接口测试快速入门】网络应用程序架构

单体与微服务

单体应用是快速开发的一个例子,开发团队希望在快速的周转时间内开发产品。他们把所有的东西都写在一个单一的包里,然后交付给客户。它在几个月或一两年内运行良好,然后客户提出要求,需要改变设计或架构。


为了处理复杂性,同时支持更快交付的想法,我们软件行业的优秀工程师们提出了新的架构。它为每个业务组件定义特定的属性,并有专门的服务。一个单独的业务组件或单一的责任服务被称为一个微服务。在大的软件应用程序中,多个服务共同完成一个单一的目标。

REST

典型的REST应用架构如图


REST是REpresentational State Transfer的缩写。符合RESTful约束的REST服务称为RESTful服务。

网络经过一段时间的发展,从Web 1.0到2.0,3.0,再到4.03。Web 1.0是用于文件共享。Web 2.0是以人为中心的,支持互联网作为平台。网络3.0是可执行的网络,支持数据共享。Web 4.0是智能的、智慧的网络,在这个网络中,机器很聪明,可以为人类加载内容。

在为万维网开发网络应用时,架构应满足不断增长的需求,必须包括以下非功能要求。

  • 效率
  • 性能和可扩展性
  • 可靠性
  • 可重用性
  • 可移植性
  • 模块化
  • 其他

符合RESTful4架构约束的REST服务被称为RESTful服务。这些约束条件如下。

  • 客户端-服务器架构
  • 无状态性
  • 缓存
  • 分层系统的使用
  • 统一的接口
  • 支持按需编码

客户端-服务器架构支持责任的分离。客户端是独立于服务器的。客户端或用户界面可以独立开发,而不知道服务器的内部细节及其功能。

无状态性有助于提高服务器的整体性能。服务器不需要知道或维护请求的状态/会话。它的基本工作是提供响应,而不需要用会话来追踪来源。这是由HTTP协议实现

缓存有助于提高性能。如果同一个请求来自不同的用户,它可以被缓存起来。HTTP有一个功能,有助于缓存响应。这有助于提高服务器的效率。

扫描二维码关注公众号,回复: 16138766 查看本文章

使用分层系统有助于解决更多的问题,如认证和安全。拥有一个分层系统有利于快速调试根本原因。

统一接口是RESTful架构的基础。它确保了资源是基于URI来识别的,比如/api/v1/products。关于统一接口,把HATEOAS5过一遍就好了。

支持按需编码的例子比如Java小程序或客户端的JavaScripts。对于测试RESTful API来说,有了以上的理解就足够了。RESTful架构使用HTTP作为客户端和服务器之间通信的协议。由于HTTP是一个无状态协议,RESTful架构的目标是可扩展性和性能,而且由于HTTP内部调用TCP进行客户端和服务器之间的连接,它也是可靠的。让我们在下一节中详细讨论HTTP。

HTTP

超文本传输协议(HTTP Hypertext Transfer Protocol)用于典型网络应用中客户端和服务器之间的通信。

第一个基本版本是HTTP 0.9。后来经过几次更新,它被发布为HTTP 1.0。这个版本为每个请求利用一个单独的连接。

到目前为止,HTTP 1.1版本是最流行和最广泛使用的版本。这个版本解决了延迟的问题。头部元数据和信息都是文本格式的。HTTP 2.0通过使用加密对头元数据进行了性能优化;同时,消息在客户端和服务器之间被复用,以获得更好的性能。HTTP 3.0目前正在开发中;它使用UDP作为传输层。

本文中将一直使用HTTP 1.1。

HTTP是应用层6协议,通过TCP(http:// 默认端口80)或TLS(https:// 通过端口443)加密的TCP连接工作。TCP是最可靠的协议;它保证数据包的发送/接收100%没有任何损失。如果出现丢失,将向接收方发送错误信息。

HTTP协议根据请求从服务器上获取资源,例如从服务器上获取HTML内容或指定格式的数据。在HTTP从服务器获取数据之前,客户端必须与服务器建立连接,以便通过HTTP获取资源。这是由客户端和服务器之间通过TCP层的三方通信来完成的。客户端在给定的端口上向服务器发送连接请求。服务器确认收到该请求,然后客户端也确认收到该请求。这样,客户端和服务器之间就建立了连接。现在通过HTTP,客户端可以从服务器上获取所需的信息。一旦建立了连接,客户可以通过HTTP发送多个请求,服务器将对每个请求发送响应。

HTTP协议是简单的、可扩展的和无状态的。我们可以读取头信息和消息正文。如果头的用法或语义发生变化,它可以在客户端和服务器之间很容易地进行调整。服务器不记得请求的状态。它只是发送请求的数据,并为新的请求开放。

HTTP有缓存机制。客户端可以在请求头中发送信息,以便在规定的时间内将响应存储在缓存中,供以后使用以提高性能。HTTP还支持CORS;也就是说,如果请求体或HTML有一个不同的域,这将被提供给客户端。HTTP也在sessionId上工作。客户端发送了一个请求,服务器在响应中发送了sessionId。之后,这个sessionId可以用来验证请求。一个典型的服务器之间有一个代理,以隐藏服务器的IP,防止黑客攻击。HTTP支持实时模仿真实服务器的代理服务器。

客户端和网络服务器之间的HTTP连接的步骤:第1步,在客户端和服务器之间建立TCP连接。第2步通过HTTP从服务器上获取资源。通过一个TCP连接,客户端可以发送多个请求,服务器将通过HTTP响应所需信息。

在这里插入图片描述

Header

头信息是每个HTTP请求/响应的一部分,它们定义了客户端和服务器之间的信息流。头信息中最常见的字段是 Content Type, Content Length, Host, User-Agent,Accept, Accept Encoding, Accept Language, Connection, Cache Control,Age, Date, Expires和Keep-Alive。

头信息在逻辑上被分为三类:请求头信息、响应头信息和一般头信息。这可以在发送请求后在浏览器的网络标签中看到。

请求头主要有Authorization, Host, Accept, Accept-Language, Accept-Encoding, and Content-Type等字段。授权字段用于与服务器的认证。它指定请求来自授权的客户端。

响应头有Expires、Content-Length、Content-Type、Cache-Control、Date和Keep-Alive字段。Content-Type提供了响应类型的格式,例如,响应是JSON还是纯文本。Keep-Alive是以秒为单位的超时,是允许连接保持开放的时间。

一般头文件有关于请求URL、请求方法、状态代码、远程地址和连接的信息。

在这里插入图片描述
还有一类标头名为表示标头,包括内容类型、内容长度和其他与响应的表述有关的字段。

请求

客户端使用HTTP请求与服务器通信。该请求有请求方法、资源地址(在服务器上)URI、请求头和请求正文(body 可选)等。

  • 请求方法

请求方法是客户想要在服务器资源上执行的操作。在开发基于API的软件应用中最常用的方法是GET、POST、PUT和DELETE。其他还有TRACE、UPDATE、HEAD、CONNECT、OPTIONS、TRACE和PATCH。

GET方法是用来从服务器上获取信息的。POST方法用于向服务器资源添加一个新对象。PUT方法用于更新服务器资源上的现有对象。DELETE方法用于删除服务器资源上的对象。GET、PUT和DELETE是等价的方法;也就是说,如果你多次执行相同的调用,结果将是相同的。GET也是一个安全的方法,如果你多次执行该调用,不会有任何伤害。

  • 资源地址

资源地址是由URI定义的,其中URI代表统一资源标识符。它是服务器上资源的标识符,被称为服务的端点,如/api/v1/products。

  • 请求头

请求头包含一个认证字段,用于认证服务器上的请求,以及Content-Type,用于指定预期来自服务器资源的内容类型。

  • 请求主体(Request Body)

请求正文有一个需要遵循的格式,它被服务器资源或服务端点所理解。通常情况下,响应体是JSON或XML格式。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

响应

当请求到达服务器时,它会发送响应。这里使用的协议是HTTP。它有状态行、响应头和信息体。

  • 状态行

状态行列出了协议版本、返回状态代码和状态文本。状态代码通常被称为响应代码。

  • 响应头

响应头包含了由服务器发送的定义响应信息的信息,如Content-Length和Content-Type。

  • 响应主体(Response Body)

响应主体是服务器根据给定资源上的请求发送给客户端的响应消息。

在这里插入图片描述

响应代码

  • 信息:1XX-199
  • 成功:2XX-299
  • 重定向: 3XX-399
  • 来自客户端的错误:4XX-499
  • 来自服务器的错误:5XX-599

比如102状态代码表示已收到来自客户端的请求,服务器正在工作。

200状态代码标志着来自客户端的请求是成功的,并被服务器接受。

302状态代码表示该请求被重定向到另一个资源。

400状态代码标志着来自客户端的请求是错误的。

500状态代码标志着服务器无法到达或有一个服务器错误。

你只需要记住基于API的软件应用中常用的几个。知道响应代码对API测试很重要,因为API的消费者应该知道来自服务器的响应,如果出现错误,可以采取纠正措施。

总结

在这一章中,你了解了基于网络的应用架构类型,这些类型是业界普遍使用的。你还了解了客户端和服务器之间的通信方面以及这些属性。你了解了HTTP、HTTP头、HTTP请求、HTTP响应,以及典型的基于网络的应用中的各种响应代码。在下一章中,你将学习标准认证。


最后很多小伙伴都有学习的想法,这里在我在B站分享了测试的视频教程,小伙伴们可以自行观看:

自动化测试进阶学习:

如何逼自己1个月学完自动化测试,学完即就业,小白也能信手拈来,拿走不谢,允许白嫖…

零基础软件测试学习:

B站强推!2023公认最通俗易懂的【软件测试】教程,200集付费课程(附实战项目)

公众号粉丝福利

  • 软件测试全套资源免费领取

  • 软件测试面试刷题小程序免费使用

  • 专属于测试人的GPT免费使用

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_53918927/article/details/132216982