一、接口测试基础

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         // 服务器当前不能处理客户端的请求,一段时间后可能恢复正常