持续更新…
标记


1. 接口测试概述

1.1 生活中的接口和软件程序的接口

生活中的接口
比如(插座,插头)、网线和USB的转接等。

软件程序的接口

软件接口就是指程序中具体负责在不同模块之间传输或接受数据的并做处理的类或者函数。(而不是指传输的数据!!)
比如腾讯发布一个qq登录的接口(一个函数),别人拿到这个函数放到自己的网站代码里面运行,就可以通过这个函数把用户输入的账号密码传给腾讯服务器,服务器校验成功后就能让用户第三方登录QQ了。
软件中什么是接口?软件接口的具体定义

1.2 接口测试的定义

接口的定义

  • API(Application Program Interface)接口属于一种系统或程序的调用接口;
  • GUI(Graphic User Interface)接口属于一种图形界面的操作软件的系统;

尤其是API,有些公司会制定自己的系统接口标准,当需要执行系统整合、自定义和程序应用等操作时,公司所有成员都可以通过该接口标准调用源代码,该接口标准被称为开放式API。

接口测试

  • 接口测试是测试系统内部各个组件间接口,以及系统和外部系统之间的交互点;
  • 测试的主要内容:1.检查数据的交换,2.传递和控制管理过程,3.系统间的相互逻辑依赖关系;

接口测试是集成测试中非常常用的手段。

1.3 接口测试的范围和适用场景

接口测试的范围
在这里插入图片描述
接口测试的使用场景

1)一般应用于系统间交互开发;
2)适用于为其他系统提供服务的底层框架系统和中心服务系统;
3)适用于上一层系统中的服务层接口;
4)总之,平台越复杂,系统越庞大,接口测试的效果就越明显。

关于接口测试

  • 与界面功能测试相比:
    • 接口测试没有具体的页面;
    • 它是通过接口规范文档上的调用地址、请求参数、拼接请求信息;
    • 然后发送请求,检查返回结果;
    • 只需要测入参和出参就行。
  • 进行接口测试的好处:
    • 可以发现很多在页面上操作发现不了的bug;
    • 检查系统的异常处理能力;
    • 检查系统的安全性、稳定性;
    • 前端随便变、接口测好了,后端不用变。

2. 接口测试必备条件

2.1 接口测试的必要条件

1)接口说明
2)调用url(统一资源定位器)
3)请求方法(比如get/post等)
4)请求参数、参数类型、请求参数说明
5)返回参数说明

2.2 标准和规范的接口文档

2.3 如何获取接口信息

  • 标准的接口文档
  • 询问开发人员
  • 测试人员自己抓包获取数据和信息

3. 接口测试必备的知识

3.1 常见的接口传输协议和标准

常见的传输协议:

  • http(超文本传输协议)/https(超文本传输安全协议):是tcp/ip四层架构中应用层的协议;
  • ftp(文件传输协议)

数据的传输标准:

  • jdbc(java与数据库的连接标准)

3.2 常见的接口测试工具

  • Chrome
  • Firefox
  • Postman
  • JMeter
  • Fiddler(抓包工具,如果没有标准的接口文档,测试人员自己抓包获取数据和信息)

3.3 常见的接口数据组织形式

  • HTML(超文本标记语言)
  • JSON(轻量级的数据交换格式)
  • String
  • XML(可扩展标记语言):常用于传输和存储数据

3.4 接口测试流程

  1. 接口需求分析;
  2. 测试计划编写;
  3. 测试用例设计;
  4. 测试脚本开发;
  5. 测试执行;
  6. 发布测试结果。

4. 接口测试用例设计

4.1 用例设计方法

1)等价类划分、边界值分析(用于选取测试数据)
2)因果图法、判定表驱动法
3)正交试验法
4)场景法
5)功能图法
6)错误猜测法(类似探索性测试法)

4.2 接口测试用例模板

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

5. HTTP协议

网络体系结构:TCP/IP(传输控制协议/网际协议)、OSI/RM(开放式通信系统互联参考模型)

TCP/IP结构四层(应用领域广泛):网络接口层,网络层,传输层,应用层。
OSI/RM结构七层:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。

传输层协议:TCP协议(传输控制协议),UDP协议(用户数据报协议)
应用层协议:HTTP(超文本传输协议)、HTTPS(超文本传输安全协议)、FTP(文件传输协议)、POP3(邮局协议版本3)、IMAP/SMTP(交互邮件访问协议/简单邮件传输协议)
常用协议的端口:http端口(80)、https端口(443)、ftp端口(21)、pop3端口(110)

5.1 HTTP协议基础

5.1.1 HTTP和HTTPS协议定义

HTTP定义
HTTP(Hyper Text Transfer Protocol,超文本传输协议)是从万维网(WWW(3W):World Wide Web)服务器传输超文本到本地浏览器的传送协议,HTTP是一个基于TCP/IP通信协议来传递数据的(eg:HTML文件,图片文件,查询结果等)。

HTTPS定义
HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单说就是HTTP的安全版,HTTPS在HTTP的基础上加入了SSL,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。请添加图片描述

5.1.2 HTTP协议的工作原理

HTTP工作环境
HTTP工作与客户端/服务器(C/S)架构上;
1)浏览器作为HTTP客户端通过URL向HTTP服务器(即WEB服务器,常用的WEB服务器:Apache服务器、IIS(Internet Information Services)服务器,nginx服务器等)发送请求
2)Web服务器根据接收到的请求后,向客户端发送响应信息。

在这里插入图片描述

5.1.3 HTTP协议特性

HTTP的特点
1)无连接的(即请求和响应的双方可以不同时在线)
2)媒体独立的(传输过程中的数据和通信协议没有关系,即只要客户端和服务端能够识别数据,就能够进行传输,协议只是起到了媒介的作用)
3)无状态的:只要请求,就重新响应,不管之前响应了多少数据。(即频繁的刷新反而会带给浏览器负担)

5.1.4 与HTTPS协议的关系

HTTP和HTTPS的区别
1)HTTP是SSL加密的,HTTP不加密:HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费,HTTPS是具有安全性的SSL加密传输协议,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输,身份认证的网络协议,比HTTP协议安全;
2)端口不同:HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443;

5.2 HTTP请求及其结构

5.2.1 HTTP请求的组成

HTTP协议的客户端发送一个HTTP请求到服务器的请求消息包括以下格式:1.请求行(request line)、2.请求头(header)、3.空行、4.请求数据四个部分组成。下
下图给出了请求报文的一般格式:
在这里插入图片描述

5.2.2 HTTP请求方法|URL

根据HTTP标准,HTTP请求可以使用多种请求方法:
1)HTTP1.0定义了三种请求方法:GET,POST和HEAD方法
2)HTTP1.1新增了五种请求方法:OPTIONS,PUT,DELETE,TRACE和CONNECT方法。

所以现在HTTP协议请求方法一共有8种:

序号方法描述
1GET请求指定的页面信息,并返回实体主体
2HEAD类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头
3POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立或已有资源的修改。
4PUT从客户端向服务器传送的数据取代指定的文档的内容
5DELETE请求服务器删除指定的页面
6CONNECTHTTP1.1中预留给能够将连接改为管道方式的代理服务器
7OPTIONS允许客户端查看服务器性能
8TRACE回显服务器收到的请求,主要用于测试或诊断

5.2.3 HTTP请求头(Request Headers)

请求头:用来说明服务器要使用的附加信息,比较重要的信息有Cookie、Referer、User-Agent等,部分常见的请求体字段如下:

  • Referer:包含一个URL,用户从该URL代表的页面除法访问当前请求的页面;
  • User-Agent:浏览器类型,如果Servlet返回的内容与浏览器的类型有关则该值非常有用;
  • Content-Length:表示请求消息正文的长度;
  • Cookie:是最重要的请求头信息之一;
  • Form:请求发送者的email地址,由一些特殊的web客户程序使用,浏览器不会使用到它;
  • Host:初始URL中的主机和窗口;
  • Accept-Language:浏览器希望的语言,当服务器能够提供一种以上的语言版本要用到;
  • Authorization:授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中;
  • Content-Type:表示后面的文档属于什么MIME类型(媒体类型(通常称为 Multipurpose Internet Mail Extensions 或 MIME 类型 )是一种标准,用来表示文档、文件或字节流的性质和格式),Servlet默认为text/plain,但通常需要显示地指定为text/html,由于经常要设置Content-Type,因此HttpServletResponse提供了一个专门的方法setContentType;

5.2.4 HTTP请求体(Request Body)

请求体:一般用于POST请求中,主要是向浏览器提交数据类型,而对于GET请求Request Body为空。

Content-Type提交数据方式
application/x-www-form-unrlencodedform表单提交
multipart/form-data表单文件上传提交
Content-Type提交数据方式
application/json序列化JSON数据提交
text/xmlXML数据提交

5.3 HTTP响应及其结构

5.3.1 HTTP响应的组成

HTTP响应由服务器返回,也由四个部分组成,分别是:1.状态行、2.消息报头、3.空行、4.响应正文
具体格式如下:
在这里插入图片描述

5.3.2 HTTP响应头及其结构

响应头说明
Allow服务器支持哪些请求方法(eg:GET、POST)
Content-Encoding文档编码(Encode)方法,只有在编码之后才可以得到Content-Type头指定的内容类型
Content-Length表示内容长度,只有当浏览器使用持久HTTP连接时才需要这个数据
Content-Type表示后面的文档属于什么MINE类型,Servlet默认为text/plain,但通常需要显式地指定为text/html,由于经常要设置Content-Type,因此HttpSevletResponse提供了一个专门的方法setContentType
Date当前的GMT时间,你可以用setDateHeader来设置这个头以避免转换时间格式的麻烦
Expires应该在什么时候认为文档已经过期,从而不再缓存它?
WWW-Authenticate客户应该在Authorzation头中提供什么类型的授权信息。在包含401(Unauthorized)状态行的应答中这个头是必需的
Last-Modified文档的最后改动时间。客户可以通过If-Modified-Since请求头提供一个日期,该请求将被视为一个条件GET,只有改动时间迟于指定时间的文档才会返回,否则返回一个304(Not Modified)状态
Location表示客户应当到哪里去提取文档。Location通常不是直接设置的,而是通过HttpServletResponse的sendRedirect方法,该方法同时设置状态代码为302
Refresh即浏览器应该在多长时间之后刷新文档,以秒计。注意这里Refresh的意思是“N秒之后刷新本页面或访问指定页面”,而不是“每隔N秒刷新本页面或访问指定页面”
Server服务器名字,可由web服务器自己指定
Set-Cookie设置和页面相关联的Cookie

在这里插入图片描述
查看Cookie
在这里插入图片描述

5.3.3 HTTP响应状态码

当浏览器接受并显示网页前,此网页所在的服务器会返回包含HTTP状态码(HTTP Status Code)的信息头(server header)用以响应浏览器的请求。
在这里插入图片描述
在这里插入图片描述
HTTP响应状态分类

分类描述
1**信息,服务器收到请求,需要请求者继续执行操作
2**成功,操作被成功接受并处理
3**重定向,需要进一步的操作以完成请求
4**客户端错误,请求包含语法错误或无法完成请求
5**服务器错误,服务器在处理请求的过程中发生了错误

HTTP状态码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.4 查看客户端和服务端的数据交换

浏览器作为媒介,会将客户端和服务端进行数据沟通的所有情况完完整整的记录下来,从页面开始请求到请求完毕,Network会记录下来所有的数据交换内容,客户端和服务器端进行了哪些数据交换,它都会以实体的方式一一列出。
请添加图片描述
在这里插入图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐