接口测试 2. 掀起接口测试的盖头-HTTP 初窥 (一)

solo · 2017年07月12日 · 最后由 君河 回复于 2017年07月18日 · 3010 次阅读

上篇文章大概介绍了一下接口和接口测试,今天咱们聊聊 HTTP。为什么聊她?因为大部分的接口是基于 HTTP 协议的,不对她有个基本的理解,怎么把她娶进门?特别提醒,已经娶进门的童鞋,请不要二婚。


what-什么是协议

协议是一种沟通双方都能听得懂的编解码方式。比如,你是河南人,我是广东人,我们都说各自的方言,我们怎么沟通?很简单,我们使用普通话沟通。所以,普通话可以认为是一种协议。

文件格式也可以认为是一种协议,你使用 A 软件创建了一个 JPG 文件,在电脑中实际上用的是一坨 01 串存起来,然后你使用 B 软件打开这个 JPG 文件,B 软件之所以能打开,是因为 JPG 这种格式代表了一种特殊的编解码方式,B 软件按照对应的解码方式,把这一坨 01 串还原为图像。


what-什么是超文本

超文本是相对文本而言的,文本就是普通字符串,超文本指的是包含超链接的字符串,可以链接到其他的内容。咱们来体会一下百度百科的定义:超文本是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本。 下图就是一个超文本在浏览器的显示,里面包含了很多到其他空间的链接。

image

目前最常用的超文本是用超文本标记语言写的,即 HTML。


what-什么是 HTTP

HTTP 协议-HyperText Transfer Protocol,超文本传输协议,是用于从 WWW 服务器传输超文本到本地浏览器的传送协议。
理解一个东西,从其名字和定义上去理解就能有直观的、不错的理解。 HTTP 名字里有三个关键词:超文本、传输、协议,说简单一点,这是一种用于传输超文本的协议。

HTTP 协议的设计初衷是为了传输 HTML 文本,而后来又加了很多东西,就不仅限于传输 HTML 文本了,可以用来传图片、PPT、视频等各种文档,还可以用来传一些特定格式的字符串,比如 json、XML。目前有三个版本:http/0.9;http/1.0;/http/1.1。目前 http/1.0 和 1.1 被广泛应用。

  • http/0.9:仅用于传输 HTML 文档;
  • http/1.0:支持多媒体数据的处理;支持 keep-live(持久连接);有缓存功能;
  • http/1.1:支持更多的请求方法和更精细的缓存控制;持久连接。

另外,注意,HTTP 协议是应用层的协议,虽然带有 “传输” 二字。她不是传输层协议,传输层协议是管理传输过程的,比如大小、速率、校验、丢失重传等。我会找一写一篇文章介绍 TCP/IP 协议栈。这里不展开,如果你有强迫症或者学习欲望强烈,你可以自己去找相关文章阅读。


how-HTTP 协议工作流程

image

HTTP 采用请求响应模型来处理 HTTP 事务, HTTP 事务有一条请求命令一个响应结果组成,它们通过 HTTP 报文进行数据传输。

HTTP 报文

还用之前举过的例子,我提供加法计算的接口,你要给我传递 2 个数(a 和 b),我给你返回一个结果。

请求报文可能是:

POST http://192.168.98.178:8081/add HTTP/1.1

Host: 192.168.98.178:8081
Connection: keep-alive
Host: 192.168.98.178:8081
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Accept-Encoding: gzip,deflate

a=1&b=2

响应报文可能是:

HTTP/1.1 200 OK

Server: Apache-Coyote/1.1
Cache-Control: no-cache
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked

{"sum":2}


这里不对 HTTP 报文的组成结构展开讲解,后续再讲。


How-如何执行 HTTP 接口测试

至此,如何执行 HTTP 接口测试,答案就变得很简单:

  1. 构造一条符合要求的 HTTP 请求消息;
  2. 发给我,我给你回响应;
  3. 你读取 HTTP 响应,检查响应内容是否正确。

至于如何构造一条符合要求的 HTTP 消息,且听下回分解。


总结

  • 本文讲了什么是协议、什么是超文本、什么是 HTTP、HTTP 最基本的工作流程,以及如何执行 HTTP 接口测试。
  • 本文也提到了一种理解一个概念的方法:从名字本身去理解

如果你没 get 到今天的内容,不是你的问题,是我的锅,我没有讲得通俗易懂,请尽情拍板砖。

共收到 9 条回复 时间 点赞

很通俗易懂啊,给你点赞~

solo #7 · 2017年07月13日 Author
Karen 回复

谢谢捧场。

上 QQ 群总让人觉得目的不纯。。。

只求连载说书快点更新。

http 2.0 也出来了。。。

@solochen84 请不要加 qq 群和 qq 推广。

用户永远不会替你传播,他们只会替自己传播,给他一个标签,让他借你的作品表达自己。”

在社区里成为专家,我们会替你背书的~

感觉内容少了,看得不爽

写的很好,持续关注

写的很好玩哈哈哈

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册