HTTP
一、HTTP
1. HTTP的简介
HTTP,全称HyperText Transfer Procotol,超文本传输协议。
超文本表示超越文本限制和超文本链接。比如可以传输图片、音频、视频、超链接的跳转。
HTTP是1991年被发明,发明者是美国人。初衷只是传输文本文档。目前可以传略超文本内容。
HTTP在通信之前必须创建TCP的连接,即HTTP是建立在TCP的基础上的协议。
2. HTTP的作用
WebBrowser与WebServer之间进行通信的协定,规定了数据传输的方法、数据的传输格式、安全机制。
3. 浏览器通过HTTP来访问服务器的过程
- 打开浏览器,输入https://www.baidu.com/;
- 访问DNS来解析域名,DNS将解析到的IP地址返回给浏览器;
- 浏览器通过IP地址来访问Web服务器,使用的HTTP协议;
- 浏览器与Web服务器进行三次握手,创建TCP的连接(长连接);
- 浏览器向Web服务器发送HTTP的请求,请求的是服务器上一个资源;
- Web服务器通过资源路径来查找对应的资源,将发送给浏览器;
- 浏览器将收到的资源进行渲染和解析;
- 关闭TCP连接。
二、URL
URL,全称Uniform Resource Locator,叫做统一资源定位符
URL的通用形式:协议://IP:端口/资源路径?查询字符串#锚点
URL中各部分的解释:
- 协议:http、https、ftp、file…
- IP:主机的在网络上的地址。
ftp://用户名@密码:IP:端口/资源路径
- 端口:主机上处理Web请求的应用程序监听的端口,与一致协议
- 资源路径:浏览器所请求资源在服务器的地址;
- 查询字符串:浏览器请求资源的一些关键字
三、浏览器开发者工具
- 开发工具打开方式:
F12
- 右上角 ----> 更多工具 ----> 开发者工具
- 在页面中右键 ----> 检查
- 开发工具的标签的简介:
- Elements:元素标签。查看和修改页面元素,方便前端工程师调试页面
- Console:控制台。用来执行JS代码
- Sources:显示浏览器请求到所有静态资源的源码
- Network:网络标签。查看HTTP通信过程、Web请求和响应的性能
四、HTTP请求报文
1. 请求方式
- GET:浏览器向服务器获取资源。(查删)
- POST:浏览器向服务器新增资源。(增改)
RESTFul风格的接口,不是规则。
POST
:新增资源DELETE
:删除资源PUT
:修改资源GET
:获取资源
举例:
Github
:完全遵守RESTFul风格的接口形式。Gitee
ElasticSearch
:搜索引擎。使用RESTFul风格的接口形式来管理搜索数据。
2. GET请求报文
---请求行---
GET /get HTTP/1.1\r\n # 包括三部分:请求方式 资源路径 协议版本
---请求头---
Host: httpbin.org\r\n # 服务器主机的域名地址
Connection: keep-alive\r\n # 长连接(断开的条件:1.浏览器主动断开;2.在服务器的超时时间内无HTTP通信则断开)
accept: application/json\r\n # 浏览器告诉服务器可以接收的报文格式,表单格式Application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36\r\n # 用户代理。浏览器的标识
Referer: http://httpbin.org/\r\n # 来源服务器地址
Accept-Encoding: gzip, deflate\r\n # 浏览器可接受的数据压缩格式
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8\r\n # 浏览器可接受的语言,q=0.9表示阈值
---空行---
\r\n
3. POST请求报文
---请求行---
POST /woniusales/user/login HTTP/1.1\r\n # 分为三部分:请求方式 资源路径 协议版本
---请求头---
Host: 10.0.0.200:8080\r\n
Connection: keep-alive\r\n
Content-Length: 38\r\n # 表示报文数据的字节长度
Accept: */*\r\n # */*表示任意文本内容类型
X-Requested-With: XMLHttpRequest\r\n # 一般用于动态资源的请求
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36\r\n
Content-Type: application/x-www-form-urlencoded; charset=UTF-8\r\n # 请求报文的文本格式(重点)
Origin: http://10.0.0.200:8080\r\n # 原始服务器的地址
Referer: http://10.0.0.200:8080/woniusales/\r\n
Accept-Encoding: gzip, deflate\r\n
Accept-Language: zh-CN,zh;q=0.9\r\n
Cookie: _jfinal_captcha=585cf3fc79cc487882b567d110263ecd\r\n # 用户身份的标识
---空行---
\r\n
---请求体---
username=11&password=1&verifycode=1111\r\n
- Content-Type
application/x-www-form-urlencoded # 表单
application/json # JavaScript Object Notation(JS对象标记(简谱))
multipart/form-data # 用于文件的上传
五、HTTP响应报文
---状态行(响应行)---
HTTP/1.1 200 OK\r\n # 分为三部分:协议版本 状态码 状态描述
---响应头---
Pragma: no-cache\r\n
Cache-Control: no-cache\r\n
Expires: Thu, 01 Jan 1970 00:00:00 GMT\r\n
Content-Type: text/plain;charset=UTF-8\r\n
Transfer-Encoding: chunked\r\n # 响应报文的长度不确定,0\r\n
Date: Tue, 25 May 2021 06:13:33 GMT\r\n # 响应报文生成的服务器时间(格林威治时间)
Keep-Alive: timeout=20\r\n # 长链接的超时时间
Connection: keep-alive\r\n # 长链接
---空行---
\r\n
---响应体---
vcode-error
六、状态码
状态码是服务器返回给浏览器的响应状态的信息,是对某次请求的结果的描述。
状态码一般使用3位数字表示,第一位数代表的响应状态的类型:1xx、2xx、3xx、4xx、5xx。
状态码 | 描述 |
---|---|
200 | HTTP请求是成功的 |
302/307 | 临时重定向 |
304 | 资源已存在。浏览器的缓存中已经有了该资源,服务器返回一个304,服务器不会再提供该资源 |
400 | 一般为请求的路径或者请求体参数错误 |
404 | 资源不存在 |
500 | 服务器代码出错 |
502 | 网关错误 |
七、接口测试
1. 接口的定义
接口就是服务器中应用程序对外提供能力的一种服务。
API,全称Application Programming Interface,应用程序编程接口。测试工程师要测的接口就是API。
2. 接口的分类
- 内部接口:提供给前端使用的API,前后联调时进行测试,测试工程师一般作为辅助。
- 外部接口:一般提供第三方企业,必须由专业的测试工程师来测。
3. 接口文档
- 接口文档的撰写人
- 接口文档的使用范围(项目范围,人员的范围、法律法规和行业的标准)
- 接口文档的参数文献(产品需求文档、概要设计文档…)
- 接口的定义
- 接口的描述
- 接口的URL
- 接口的请求方式(GET、POST)
- 请求报文(字段名称、描述、数据类型、数据的长度、是否必填、枚举类型、备注)
- 响应报文(字段名称、描述、数据类型、数据的长度、是否必填、枚举类型、备注)
- 接口的示例
- 注意事项
4. 接口测试
接口测试是根据接口文档或者抓包为预期,通过程序或者工具来模拟浏览器的请求,将响应结果与预期结果进行对比。
4.1 接口测试特性
- 接口测试的介入较早;
- 测试人员可以尽早的发现Bug;
- 可以降低项目开发的风险。
- …
4.2 接口测试的工具
- 抓包工具:浏览器的开发者工具、Fiddler
- 测试工具:Python=requests、Postman、JMeter。
4.3 接口测试的流程
- 接口文档的评审;
- 设计测试脚本、编写测试用例;
- 执行用例;
- 输出测试报告、缺陷报告;
- 优化脚本、维护脚本。