2024年3月13日发(作者:)
HTTP接口测试教程
HTTP基础知识介绍:
HTTP协议中文名超文本传输协议,适用于OSI七层协议中的应用层,在web应用中
使用抓包工具(例如fiddler)可以了解到,一个完整的HTTP协议都包含了请求和响应的
过程。请求有开始行、请求头、body构成;响应由状态行、信息头、响应报文构成;
开始行
开始行一般有三部分构成:分别是请求方式、请求地址的相对路径、HTTP的版本,
我们需要重点理解一下HTTP的请求方式,HTTP有八种请求方式,分别是:
GET 请求获取Request-URI所标识的资源
POST 在Request-URI所标识的资源后附加新的数据
HEAD 请求获取由Request-URI所标识的资源的响应消息报头
PUT 请求服务器存储一个资源,并用Request-URI作为其标识
DELETE 请求服务器删除Request-URI所标识的资源
TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT 保留将来使用
OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求
重点掌握GET请求和POST两种请求方式,他们的区别如下:
第一:GET把参数包含在URL中,POST通过request body传递参数。
第二:GET产生一个TCP数据包;POST产生两个TCP数据包。
第三:GET是获取数据请求;post是提交数据请求,会改变服务器状态
第四:GET 请求不应在处理敏感数据时使用,post较安全
第五:GET参数有长度限制(受限于url长度,具体的数值取决于浏览器和服务器的
限制),而post无限制
第六:GET 请求可被缓存
第七:GET 请求保留在浏览器历史记录中
第八:GET 请求可被收藏为书签
信息头:向服务器发送更加详细的参数,常见的参数如下
Accept:浏览器可接受的MIME类型。
Accept - Charset:浏览器可接受的字符集。
Accept - Encoding:浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够
向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍
的下载时间。
Accept - Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言
版本时要用到。
Authorization:授权信息,通常出现在对服务器发送的WWW - Authenticate头的
应答中。
Connection:表示是否需要持久连接。如果Servlet看到这里的值为“Keep - Alive”,
或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连
接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。
要实现这一点,Servlet需要在应答中发送一个Content - Length头,最简单的实现方法
是:先把内容写入ByteArrayOutputStream,然后在正式写出内容之前计算它的大小。
Content - Length:表示请求消息正文的长度。
Cookie:这是最重要的请求头信息之一,参见后面《Cookie处理》一章中的讨论。
From:请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用
到它。
Host:初始URL中的主机和端口。
If - Modified - Since:只有当所请求的内容在指定的日期之后又经过修改才返回它,
否则返回304“Not Modified”应答。
Pragma:指定“no - cache”值表示服务器必须返回一个刷新后的文档,即使它是
代理服务器而且已经有了页面的本地拷贝。
Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。
User - Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常
有用。
UA - Pixels,UA - Color,UA - OS,UA - CPU:由某些版本的IE浏览器所发送的
非标准的请求头,表示屏幕大小、颜色深度、操作系统和CPU类型。
body:存放请求参数,post请求方式存放在请求body上,get请求方式直接跟随
在URL上
举例,ams登录完整的http请求:
#******开始行********#
GET /ams/sysLogin/ HTTP/1.1
#******请求头********#
Host: 218.17.83.17:2195
Connection: keep-alive
Content-Length: 75
Accept: */*
Origin: 218.17.83.17:2195
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: 218.17.83.17:2195/ams/sysLogin/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie:service_org_name=%E6%B7%B1%E5%9C%B3%E7%BD%91%E4%BF%
A1%E5%8A%9E;
service_orgid=10006;ogin_entrance=general;JSESSIONID=00F40A3A69C7C985D2
38E8146E8271E7; my_name=; contextPath=%2Fams
#******body********#
agent vms2
loginname sz-test
loginpassword 25d687e2c7e715b2f1c9bc30a47b0863
状态行:
1、状态行格式如下:
HTTP-Version Status-Code Reason-Phrase CRLF
其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回
的响应状态代码;Reason-Phrase表示状态代码的文本描述。
举例:
状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求
常见状态代码、状态描述、说明:
200 OK //客户端请求成功
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报
头域一起使用
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢
复正常
eg:HTTP/1.1 200 OK (CRLF)
响应头:这里不做详细介绍,有兴趣查阅相关文档继续学习
响应报文:请求返回的数据,可以是多种类型数据:0、-1、1,json格式数据、xml
格式数据等
举例,ams登录的http响应:
#******开始行********#
HTTP/1.1 200 OK
#******响应头********#
Server: nginx/1.10.2
Date: Wed, 06 Dec 2017 05:53:43 GMT
Content-Type: text/plain;charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
content-encoding: gzip
#******响应报文********#
{"result":"","code":1}
学习完上述的HTTP的简单介绍,我们就可以通过工具来进行HTTP接口测试了,如
果有接口文档我们可以直接参照接口文档进行测试,如果没有就需要使用抓包工具来抓取
接口的参数;
工具准备:
抓包工具:fiddler,百度就可以下载到,下载解压就可以使用;有兴趣的朋友可以去
汉化,便于前期的学习和使用。
接口测试工具:postman、jmeter等,此次教程以jmeter作为示例,jmeter去官网
下载资源包,安装jdk环境,解压就可以使用jmeter了。
步骤1:
首先设置打开fiddler,对URL进行过滤,如果不过滤的URL的话,很多后台程序的
链接也会被抓取到,不便于抓取到期望的接口;如下图设置
步骤2:
在浏览器上操作系统,例如进行登录的操作,我们可以从结果上抓取到我们想要的数
据,请求的相对路径、请求参数、响应报文,有了这些参数之后就可以在jmeter上进行
这个接口的测试了
步骤3:在 打开jmeter-->右键测试计划创建线程组-->右
键线程组创建取样器sample(选择Http请求)-->右键Http请求创建响应断言-->填
写测试协议的类型(HTTP)-->接口IP地址和端口-->请求方式post(fiddler的开始行
上可以抓取到)-->请求地址的相对路径-->填写请求参数--》填写断言
步骤4:右键线程组创建结果观察树,然后点击三角图标运行脚本,查看接口测试情
况,如果用例图标是绿色状态,说明接口测试成功。
类似的Http接口测试都可以参照这个教程,至于fiddler和jmeter的其他功能,大
家可以慢慢去挖掘,谢谢!


发布评论