接口测试学习内容复习--接口测试基础及HTTP协议详解
一、接口测试基础
1、什么是接口
接口:是指系统或组件之间的交互点,通过这些交互点可以实现数据的交互。
2、接口的类型
按照范围划分:
系统之间的接口:多个内部系统之间的交互,内部系统与外部系统之间的交互
程序内部的接口:方法与方法间,模块与模块之间的交互
3、接口测试
接口测试:是对系统或组件之间的接口进行测试,主要是校验数据的交换、传递和控制管理过程,以及相互逻辑依赖关系。
4、接口测试的原理
模拟客户端向服务器发送请求,服务器接收请求后进行相应的业务处理,并向客户端返回响应数据,检查响应数据是否符合预期。
5、接口测试的特点
-测试可以提前介入,提早发现bug,符合质量控制前移的理念
-可以发现一些页面操作发现不了的问题
-接口测试低成本高效益(一个底层的bug,能够引发上层8个左右的bug,接口测试可以实现自动化)
-不同于传统的单元测试,接口测试是从用户的角度对系统进行全面的检测
6、接口测试的实现方式
-使用接口测试工具 Jmeter postman
-通过编码代码来实现 python + requests
7、接口自动化测试
概念:是让程序或者工具代替人工自动的完成对接口进行测试的一种过程
二、HTTP协议介绍
HTTP协议超文本传输协议,是一个基于请求与响应模式的、应用层的协议、也是互联网上应用最广泛的一种网络协议
1、http协议的特点
1)支持客户端/服务器模式
2)简单快速
3) 无连接
4)无状态
2、URL格式
http://www.itcast.cn:8080/news/index.html?uid=123&page=1
-协议部分: http 常见的协议 HTTP,HTTPS,FTP等
-域名部分: www.itcast.cn,也可以使用IP地址作为域名的使用
-端口部分:8080 端口可以省略,默认端口 HTTP :80 HTTPS: 443 FTP: 21
-资源路径:/news/index.html 后台服务器文件的资源路径
-查询参数部分:uid=123&page=1,可以允许有多个参数,多个参数之间用&作为分隔符
3、HTTP的请求
HTTP的请求由三部分组成:请求行 请求头 请求体
POST http://demo.zentao.net/user-login.html HTTP/1.1 //请求行 Host: demo.zentao.net User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Referer: http://demo.zentao.net/user-login.html Content-Type: application/x-www-form-urlencoded Content-Length: 54 Connection: keep-alive Upgrade-Insecure-Requests: 1 // 该空行表示请求头数据已经结束 account=demo&password=efc4a3b32e48054865e5a8321cfda3e4
1)请求行
请求行用来说明请求方法和要访问的资源以及所使用的协议版本
常用的请求方法:
-GET:从服务器获取资源 (一项或多项)
-POST:在服务器新建一个资源
-PUT:在服务器更新资源(在客户端提供改变后的完成资源)
-DELETE:从服务器删除资源
其他请求方法:
-HEAD: 请求获取由Request-URI所标识的资源的响应消息报头
-TRACE:请求服务器回送收到的请求消息,主要用于测试或诊断
-CONNECT:保留将来使用
-OPTIONS: 请求查询服务器的性能,或者查询与资源相关的选项和需求
2)请求头:
请求头 紧接着请求行,请求头部由键值对组成,每行一对。请求头部通知服务器有关于客户端请求的信息,典型的请求头包含:
-UserAgent:产生请求的浏览器类型
-Accept:客户端可识别的内容类型列表
-Content-Type: 请求体数据的类型,常见类型有:
- text/html : HTML 格式
-test/plain:纯文本格式
-image/jepg:jpg图片格式
-application/json:Json数据格式
-application/x-www-form-urlencoded: form表单数据被编码为key/value格式发送到服务器(表单默认的是提交数据格式)
- multipart/form-data: 在表单中进行文件上传时使用
3)请求体
-请求体不在GET方法中使用,经常在POST、PUT方法中使用
-请求体的数据可以是:表单数据、文本、xml、JSON
-与请求数据相关的最常用的请求头是Content-type,和Content-Length
4、HTTP响应
-HTTP响应也为三部分,分别是,状态行、响应头、响应体
HTTP/1.1 200 OK Date: Fri, 22 May 2009 06:07:21 GMT Content-Type: text/html; charset=UTF-8 <html> <head></head> <body>...</body> </html>
1)状态行
状态行由协议版本号、状态码、状态消息散布分组成
状态码有三位数字组成,第一个数字定义了响应的类别:
-1XX: 指示信息,表示请求已接收,继续处理
-2XX: 成功--表示请求已被成功接收、理解、接受
-3XX:重定向--要完成请求必须进行更进一步的操作
-4XX:客户端错误--请求有语法错误或请求无法实现
-5XX: 服务端错误--服务器未能实现合法的请求
2)响应头:
响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理响应数据
-Date: 响应时间
-Content-Type:返回数据的类型、格式
3)响应体
响应体就是响应的消息体,数据可以是普通文本,xml、json、HTML源码
200 ok //客户端请求成功 400 bad request //客户端请求有语法错误,不能被服务器所理解 401 unauthorized //未经授权,这个状态码必须和www-Authenticate报头一起使用 403 Forbidden //服务器收到请求,但是拒绝提供服务 404 Not Found //请求资源不存在,eg:输错了URL地址 500 Internal server error //服务器发生了不可预期的错误 503 Server Unavialbel // 服务器当前不能处理客户端的请求,一段时间后可能恢复正常