接口测试
接口测试
一、接口测试介绍
1、接口测试:(也叫api测试)
定义:
系统与系统之间的数据交互,模块与模块之间的数据交互,程序与程序之间的数据交互。
如:http://49.233.201.254:8080/cms/manage/loginJump.do
2、为什么做接口?
(1)节省测试时间
(2)当ui界面还未出来时,测试可以提交提前介入测试
(3)接口测试能测试到功能测试不到的场景
如:输入金额:正整数,比如测试负数
3、如何做接口测试?
通过代码或者接口测试工具进行接口测试?
工具:postman、jmeter
代码:python+requests
4、接口测试流程:
(一)有接口文档(接口文档是开发写的)
步骤:
(1)熟悉接口文档
(2)根据接口文档设计接口用例
(3)接口用例评审,评审通过以后,导入到用例管理工具(如禅道);
(4)搭建测试环境
(5)使用代码或接口工具(如postman)去测试接口
(6)测试的接口有bug通过bug管理工具,提交给开发
(7)开发修改代码,重新提交代码包,在去验证,直到接口100%通过
(8)输出测试报告
(二)无接口文档
步骤:
(1)通过抓包工具进行抓取接口(f12 或fiddler)
(2)根据抓取的接口设计接口用例
(3)接口用例评审,评审通过以后,导入到用例管理工具(如禅道);
(4)搭建测试环境
(5)使用代码或接口工具(如postman)去测试接口
(6)测试的接口有bug通过bug管理工具,提交给开发
(7)开发修改代码,重新提交代码包,在去验证,直到接口100%通过
(8)输出测试报告
5、接口测试工具?
(1)postman 接口测试工具  (讲解)
(2)jmeter   接口测试工具,性能测试工具 (讲解)
(3)fiddler  抓包工具 (讲解)
(4)charles   抓包工具
(5)bodby 录制接口的工具
(6)apifox 接口工具
(7)python+requests  python代码
6、端口号:
(1)数据库:3306端口
(2)shh    :22 端口
(3)http  :80 端口
(4)https: 443端口
(5)smtp:  110
一个电脑有65536个端口,1-1023 公认端口,1024-49151 注册端口,
49152-65536 是动态或私有端口
7、接口的类型
(1)http接口 (主讲)
(2)rpc接口
(3)rmi接口
(4)webservice接口
(5)restful 接口
8、http和https讲解:
(1)http是一个超文本传输协议,是用于万维网服务器传输超文本到本地浏览器的传输协议,http协议的端口号:80
(2)http协议的原理:
HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向户端发送响应信息。
(3)https协议:(http+ssl/tls)
定义:https是一个超文本传输安全协议,web服务器存在htto和https两种通讯方式发送请求,服务器接受到http请求后,采用不加密的方式传输,而https是在传输数据的过程中,需要用ssl/tls对数据进行加密和解密
端口号:443
(4)http 和https的区别?
a、端口号一样:http80,https 443
b、https是加密传输,http不是加密传输
c、http请求速度要比https更快
d、https比http更耗费服务资源
9、tcp/ip协议
定义:
中国人和中国人说话,要遵循汉语的的语法结构,使用汉语的发音。当我们和外国人交流时,就要适用外国的语言了,遵循外国的语法机构和发音。其实这就是一种协议,只不过我们称之为语言。计算机在这方面体现的更为直观,两台机器之间该如何通信呢,就需要制定各种各样的协议。例如:文件传输适用TCP协议。域名系统适用DNS协议。有了这些协议的存在,各种数据流按照规则传输,计算机之间得以通信。
TCP/IP协议是一个协议集合。所以统称为TCP/IP。TCP/IP协议族中有一个重要的概念是分层,TCP/IP协议按照层次分为以下五层。
国内五层:应用层(http)、传输层(tcp、udp)、网络层(ip)、数据链路层、物理层
国外七层:(应用层、表示层、会话层)、传输层、网络层、数据链路层、物理层
10、三次握手、四次挥手
三次握手:网络建立一个连接
四次挥手:断开网络需要四次
11、网络的概念:在IT领域,网络是信息传输、交换、接收、共享的虚拟平台,通
过它把各个点、线、面的信息联系在一起,从而实现资源共享。
12、网络的四要素:
有独立功能的计算机
有通讯设备和通讯线路
有网络软件支持
实现资源共享
13、网络的发展阶段
第一代:远程终端连接(20世纪60年代初)例如: xshell连接Linux服务器
第二代:局域网(20世纪60年代中期)
例如:校园网
第三代:广域网(internet 20世纪80年代)例如: 跨城市,跨洲
第四代:信息高速阶段(如:可视电话,网上电视点播,千兆以太网等)
14、服务模式
ISP (internet service provider) :互联网业务提供商。(如:电信,移动,联通、广电)
ICP (internet content provider) :互联网内容提供商。(如:新浪,腾讯,抖音)
15、网络的分类
1 ).按覆盖范围分:
局域网->城域网->广域网
|2 ).按拓扑结构分:
总线型,环型,星型,网状型
|3 ).按传输介质分:
有线网,无线网,光纤网
16、接口的请求方法
(1)请求方法详解
GET (查)请求指定的页面信息,并返回实体主体,请求参数一般放在ur|地址栏的
后面。(重点)
POST (增)向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数
据被包含在请求体中。(重点)
HEAD  类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
PUT (改) 从客户端向服务器传送的数据取代指定的文档的内容。
DELETE (删)  请求服务器删除指定的页面。
CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS允许客户端查看服务器的性能。
TRACE   回显服务器收到的请求,主要用于测试或诊断。
(2)post请求和get请求的区别
a、参数填写不一样:get在url上,post是在body中
b、参数格式不一样: get就是json,post的json、键值、图片等
c、参数的大小不一样:get的大小有限制,post的大小无限制
d、请求速度不一样:get请求快、post相对get慢
e、安全性不一样:post请求相对get更安全
17 .响应状态码:
(一)
HTTP状态码分类
(1)1 信息,服务器收到请求,需要请求者继续执行操作
(2)2 成功,操作被成功接收并处理
(3)3 重定向,需要进一步的操作以完成请求
(4)4 客户端错误,请求包含语法错误或无法完成请求
(5)5** 服务器错误,服务器在处理请求的过程中发生了错误
(二)常见的状态码(记下)
200 OK 请求成功。一般用于GET与POST请求
400 Bad Request 客户端请求的语法错误,服务器无法理解
401 Unauthorized 请求要求用户的身份认证
404 Not Found 服务器无法根据客户端的请求找到资源(网页)
302 Found 临时移动
500 Internal Server Error 服务器内部错误,无法完成请求
501 Not Implemented 服务器不支持请求的功能,无法完成请求
502 Bad Gateway 充当网关或代理的服务器,从远端服务器接收到了一个无效的请求
18、
(一)、cookie (cookie存储在客户端上)
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie是一个非常具体的东西,指的就是浏览器里面能永久存储的一种数据,cookie由服务器生成,发送给浏览器,浏览器把cookie以kv形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该cookie发送给服务器。
3、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。
(二)、session (session存储在服务器上)
1、session翻译为会话
2、session服务器会保存一份,可能保存到缓存/数据库/文件里面。
3、session从字面上讲,就是会话。服务器要知道当前发请求给自己的是谁。为了做这种区分,服务器就要给每个客户端分配不同的“身份标识”,然后客户端每次向服务器发请求的时候,都带上这个“身份标识”,服务器就知道这个请求来自于谁了。至于客户端怎么保存这个“身份标识”,对于浏览器客户端,大都默认采用cookie 的方式。
服务器使用session把用户的信息临时保存在了服务器上,用户离开网站后session会被销毁。这种用户信息存储方式相对cookie来说更安全,可是session有一个缺陷:如果web服务器做了负载均衡,那么下一个操作请求到了另一台服务器的时候session会丢失。
(三)、token:(令牌,服务器返回给到客户端的)
1、token的定义: token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个token便将此token返回给客户端,以后客户端只需带上这个token前来请求数据即可,无需再次带上用户名和密码。
2、使用token的目的: token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。
3、token的原理:
第一步:你第一次登入成功之后,服务器就会产生一个token值,而这个值就会被服务器保存,同时将token值发送给客户端。
第二步:客户端拿到token值后要进行保存
第三步:当客户端再次发起网络请求时(该请求不是登录请求,是登录之后的请求),在该次请求中token值会发送给服务器。
第四步:服务器接受到客户端的请求后,会进行token值的对比。当token值一致时,说明已经登入成功,用户处于登入状态;当token值不一致时,说明原来登入的信息已经失效,让用户重新登入。
二、接口的认识
网站:http://49.233.201.254:8080/cms/manage/index.do
1、通过网页抓取接口fn+f12 networkfetch/xhr
接口的url:http://49.233.201.254:8080/cms/manage/loginJump.do
接口的请求参数:userAccount=admin&loginPwd=123456
接口的请求:Request Method:POST
接口的状态码:Status Code:200
2、通过fiddler 工具抓取接口 (fiddler是一个抓包工具)
(1)安装fiddler,下载fiddler的安装包,点击安装
(2)打开fiddler,配置允许抓取https的协议,设置抓取的端口号,允许所有终端链接
(3)重启fiddler下,我们抓取接口
(4)在浏览器种操作界面,fiddler就能抓取操作的接口,我们在根据我们需要看具体的接口
:比如登录接口点击接口,inspectors ,点击raw显示请求体和请求头,通过raw查看响应头,相应体。
19、异步接口和同步接口
同步接口:发起一个接口请求必须要等到响应结果才能发起下一个接口请求
异步接口:发起一个接口请求不需要等到响应结果就能发起下一个接口请求
20、请求参数类型:
Content-Type(连接类型):
application/x-www-form-urlencoded; charset=UTF-8
(1)x-www-form-urlencoded;
(2)form-data 表单
(3)raw (包含json,text、html等)
三、接口的详解
(1)f12抓取接口的详情
General部分:
Request URL:资源的请求url #  (重点)
Request Method:HTTP方法  (方式)
Status Code:响应状态码
200(状态码) OK
301 - 资源(网页等)被永久转移到其它URL
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误
Response Headers:(响应头信息)
Content-Encoding:gzip 压缩编码类型
Content-Type:text/html 服务端发送的类型及采用的编码方式  (入参格式)
Date:Tue, 14 Feb 2017 03:38:28 GMT 客户端请求服务端的时间
Last-Modified:Fri, 10 Feb 2017 09:46:23 GMT 服务端对该资源最后修改的时间
Server:nginx/1.2.4 服务端的Web服务端名
Transfer-Encoding:chunked 分块传递数据到客户端
Response Headers:
Accept:客户端能接收的资源类型
Accept-Encoding:gzip, deflate(客户端能接收的压缩数据的类型)
Accept-Language:en-US,en;q=0.8 客户端接收的语言类型
Cache-Control:no-cache 服务端禁止客户端缓存页面数据
Connection:keep-alive 维护客户端和服务端的连接关系
Cookie:客户端暂存服务端的信息
Host:www.jnshu.com 连接的目标主机和端口号
Pragma:no-cache 服务端禁止客户端缓存页面数据
(2)fiddler抓取接口
HTTP请求头和请求体、响应头和响应体
1)请求头部信息:
post :表示请求的方法
HTTP/1.1 :表示超文本传输协议 版本为1.1就是版本 URL统一资源定位符
Host:域名 Host表示请求的服务器网址 (ip地址)
Content-Length:用来说明传输的正文大小或者内容长度 #length长度
Connection:Keep-Alive Connection表示客户端与服务连接类型 #持续连接
Keep-Alive:表示持久连接
Accept:text html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8 (支持的数据类型)
浏览器支持的 MIME 消息内容类型分别是 text html、application/xhtml+xml、application/xml 和 /,优先顺序是它们从左到右的排列顺序
Content-Type: application/x-www-form-urlencoded; charset=UTF-8 请求的老数据类型
origin:表示跨域资源请求
POST http://localhost:8080/cms/manage/loginJump.do HTTP/1.1 #接口请求的方式
Host: localhost:8080 #请求 的域名和地址
Connection: keep-alive #持续连接
Content-Length: 33 #连接长度
Accept: application/json, text/javascript, /; q=0.01 #接收的数据类型
X-Requested-With: XMLHttpRequest #标识ajax请求
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36
用户的代理人:浏览器/5.0
Content-Type: application/x-www-form-urlencoded; charset=UTF-8 内容类型
Origin: http://localhost:8080 #起源
Sec-Fetch-Site: same-origin #场地
Sec-Fetch-Mode: cors #模式
Sec-Fetch-Dest: empty #教育
Referer: http://localhost:8080/cms/manage/loginOut.do
Accept-Encoding: gzip, deflate, br # 接收的编码格式
Accept-Language: zh-CN,zh;q=0.9 # 接收的语言
Cookie: JSESSIONID=F6D7AE748A7C87ACC4867A362796358A #比较重要,就是客户端发服务端发送请求,就会发送一个绘画,有个sessions id ,cookie保持会话持续,保持时间一个员,或者更久,只要不是手动删除,会以cookie的方法保持在服务端
userAccount=admin&loginPwd=123456
rigin:标识跨域资源请求
X-Requested-With:标识Ajax请求,大部分js框架发送请求时都会设置它为XMLHttpRequest
User-Agent:用户代理的字符串值浏览器的身份标识字符串,user-agent会告诉网站服务器,访问者是通过什么工具来请求的
Content-Type: 设置请求体的MIME类型 Content-Type: application/x-www-form-urlencoded
Referer :设置前一个页面的地址,并且前一个页面中的连接指向当前请求
Accept-Encoding :设置接受的编码格式 Accept-Encoding: gzip, deflate
Accept-Language :设置接受的语言
Accept-Language:en-US 是英文 zh-cn为中文
Cookie:设置服务器使用Set-Cookie发送的http cookie Cookie的作用就是用于解决记录客户端的用户信息
当用户下一次访问该web页面时,可以在cookie中读取用户访问记录。
2)请求体部信息
userAcount=admin&userPwd=123456 想做函数的入参,
3)响应头部信息
HTTP/1.1:表示超文本传输协议 版本为1.1版本 URL统一资源定位符
响应状态:200
Server:服务器名称 Server: Apache/2.4.1 (Unix)
Set-Cookie:设置HTTP Cookie Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1
Content-Type:设置响应体的MIME类型 Content-Type: text/html; charset=utf-8
Transfer-Encoding:设置传输实体的编码格式,目前支持的格式: chunked, compress, deflate, gzip, identity
Date:设置消息发送的日期和时间 Date: Tue, 15 Nov 1994 08:12:31 GMT #接口响应时间
(3)diddler的快捷键
ctrl+X :清空所有记录 或 remove all
Ctrl+F:查找
F12:启动或者停止抓包 (fn+f12) 或者直接点击左下脚的红色的点
delete 删除已选中的session
shift+delete 删除未选中的session
(4)接口栏中字段显示详情:
一般以.do 是java的命名
(1) [#]-HTTP Request的顺序,从1开始,按照页面加载请求的顺序排序。.
(2)[Result] – HTTP 响应的状态。
(3)[Protocol]一一请求使用的协议(如HTTP/HTTPS/FTP)
(4)[Host] --请求地址的域名
(5)[URL] -一请求的服务器路径和文件名, 也包括GET参数
(6)[BODY]-- 请求的大小,以byte为单位
(7)[Caching] -一请求的缓存过期时间或缓存控制header等值
(8)[Content-Type] - -请求响应的类型(Content-Type)
(9)[Process] 一发出此请求的Windows 进程及进程ID
(10)[Comments] - -一用户通过脚本或者右键菜单给此session增加的备注)
(11)[Custom]-- 用户可以通过脚本设置的自定义值
5、postman调试接口(抓取接口)
(1)安装postman
(2)创建一个集合,在编辑一个接口,选择请求方式(post或get),填写接口url,点击sava保存,
编辑接口名称,选择保存的集合,点击send发送,查看到接口运行的结果(响应体和响应头)
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号