HTTP协议的接口测试怎么做?

Posted 凡猫软件测试

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP协议的接口测试怎么做?相关的知识,希望对你有一定的参考价值。





HTTP接口



下面介绍最常用的HTTP接口。

● HTTP接口的应用场景:Web网站、公司的OA服务、小型手机游戏等。

● HTTP响应也是由三个部分组成,分别是:状态码、消息报头、响应正文。


HTTP 即超文本传输协议(Hypertext Transfer Protocol) , 是基于请求/响应范式的(相当于客户机/服务器)。一台客户机与服务器建立连接后,发送一个请求给服务器;服务器接到请求后,给予相应的响应信息。HTTP的默认端口是80, 可以不写。

    

下面用具体的实例来说明 HTTP接口。

这里使用的是 Fiddler工具。该工具可以抓取HTTP数据包,辅助进行测试。通过该工具抓取特定网页的协议数据包,来分析 HTTP 的知识点。该工具的具体使用方法会在第3章详细讲到,目前读者只需要知道该工具可以抓取HTTP 数据包即可。

下面抓取的是百度个人中心首页的“百度新闻”一“个性推荐”栏目中的短数据,页面如图2-3-1所示。


▲ 图 2-3-1 百度个人中心


使用Fiddler工具获取的接口如图2-3-2所示。


HTTP协议的接口测试怎么做?

▲ 图 2-3-2 使用Fiddler工具获取的接口数据



1.  HTTP请求的三个重要数据


Host: i.baidu.com
Connection:keep-alive
Content-Length: 0 
Accept: */*
Origin: http://i.baidu.com
X-Requested-With: XMLhttp_request 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebkit/537.36 (Khtml,Like Gecko) Chrome/49.0.2623.110 Safari/537.36
Referer: http://i.baidu.com/ 
Accept-Encoding: gzip,deflate 
Accept-Language:zh-CN,zh;q=0.8 
Cookie:
BDUSS=d0b2JQSGxBbXQ3NUhIcWpqT21xdHVGY3gyTFJENk1FbWhSNjRuSmFLOTB4emRaSVFBQ 
UFBJCQAAAAAAAAAAAEAAADOnjcitPPJ9E43


//名词解释

//

NOCITCE

下面介绍消息报头的主要参数。

● Host:i.baidu.com

指定被请求资源的 Internet主机和端口号,默认是80端口

● Connection:keep-alive

HTTP长连接(持久连接), 客户端和服务器端建立一次连接之后,可以在这条连接上进行多次请求/响应操作。持久连接,可以设置过期时间
(Keep-Alive:timeout=60) , 也可以不设置。
● Accept: */*
表示浏览器能接受任何类型的文件。

● X-Requested-With: XMLHttpRequest
表明这是一次Ajax请求(异步), 非传统请求(同步)。                     

● User-Agent: Mozilla/5. 0 (Windows NT 

6. 1; WOW 64)

用户代理。告知服务器请求方所使用的操作系统及版本、CPU类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
● Accept-Encoding:gzip,deflate
设置从网站中接收的返回数据是否进行gzip压缩。
● Cookie: BDUSS=d0b2JQSGxBbXQ3NUh

IcWpqT21xd 

储存在本地的缓存数据,随HTTP请求一起发送,用来给服务器端验证,比如是否已经登录。



●请求正文:p=xinwen&c=pernews.



HTTP 响应的三个重要数据



● 状态码:

HTTP/1. 1  200  OK


● 消息报头:

Server: nginx 
Date: Tue, 05 Dec 2017 08:31:08 GMT 
Content-Type:application/JSON; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: php/5.3.24 
Expires: Thu, 19 Nov 1981 08:52:00 GMT 
Cache-Control:no-store,no-cache,must-revalidate,post-check=0,pre-check=0
Pragma:no-cache 


● 响应正文:

{"status": 0, "statusInfo": "". "data": {"news":[{“nid”:”15108122493597820269”,”sourcets”:”1512447114000”,”ts”:”1512453966000”,”title”:”\u6f58\u77f3\u5c79\u5e2e\u8001\u5bb6\u5356\u82f9\u679c\u7956\u575f\u88ab\u6252\ufflf\u8001\u4e61\uffla\u7956\u575f\u660e\u660e\u90fd\u5728", "url": "http: \ / \ /news.ifeng.com\ /a\ /20171205\ /53870395  O.shtml", "imageurls": [{"url":"http:\ / \ /t10.baidu.com\ /it\ /u=3005973888, 565646067&fm=173&s=72219143520B0753D380B4B70300D041&w=218&h=146&Img.JPEG","height": 146, "width": 218, "url_webp":”https: \ / \ /timg01.bdimg.com\ /timg?news&quality=80&size=f218_146&wh_rate=0&imgtype-4&sec=0&di=3b739c57cd68d41d10045ba2acefcd10&er=1&src=http%3A%2F%2Ft10.baidu.com%2F1t%2Fu%3D3005973888%2C565646067%26fm%3D173%26s%3D72219143s520B0753D380B4B70300D041%26w%3D218%26h%3D146%26img. JPEG"} . .


下面介绍响应的消息报头。

"Content-Type:application/JSON;charset=UTF-8” 表示服务器发送的实体数据的数据类型。

在HTTP请求的返回数据包中,响应状态码分为以下5种。

● lxx: 消息。一般是告诉客户端,请求已经收到了,正在处理,别急····.

● 2xx: 处理成功。一般表示请求收悉、我明白你要的、请求已受理、已经处理完成等信息。

● 3xx: 重定向到其他地方。它让客户端再发起一个请求,以完成整个处理过程。

● 4xx: 处理发生错误,错误来自客户端。例如,客户端请求的是一个不存在的资源、客户端未被授权、禁止访问等。

● 5xx: 处理发生错误,错误来自服务器端。例如,服务器端抛出异常、路由出错、HTTP版本不支持等。



HTTP 发送请求的方式



HTTP中有四种发送请求的方式:GET、POST、PUT和 DELETE。

● GET: 向特定的资源发出请求。

● POST: 向指定资源提交“数据进行处理”请求(例如,提交表单或者上传文件), 数据被包含在请求体中。POST 请求可能导致新的资源的创建,以及(也可能是“或”) 已有资源的修改。

● PUT: 向指定资源位置上传其最新内容。

● DELETE: 请求服务器执行删除操作。

在实际应用中常用的是GET和POST.其他的请求方式都可以通过这两种方式间接地实现。



GET 方式和POST 方式的区别



HTTP 发送请求最主要的两个方式是GET和POST, 这两者有哪些区别呢?



区别一

对请求参数的处理方式不同(直观的区别)


● GET请求:请求的数据会附加在URL之后,以“?”分隔URL和传输数据,如有多个参数则用“&”连接。URL采用的是ASCII编码格式,而不是Unicode 编码格式,即所有的非ASCII字符都要在编码之后再传输。


举例:https://www.v2ex.com/api/nodes/show. JSON?name=Python


● POST请求:POST 请求会把请求的数据放置在HTTP 请求包的 Body 数据中,数据包的形式可以是“参数名 1=参数值1&参数名 2=参数值2”, 也可以是JSON 格式(键值对)。当然,JSON格式是一种通用的方式。


举例:http: //192. 168. 1. 171: 8081/api/user_sign/


Body数据:{"time":"1499933825", "sign": "deb697c7fffcca828a7a03a218b2cda5”}


区别一

传输数据的大小不同


HTTP 没有对传输数据的大小进行限制,也没有对URL 的长度进行限制。


GET:特定浏览器和服务器对URL的运及有限刷。例如。IE对URL长度的限制是2083Byte(2x1024Byte+35Byte)。其他浏览器( 如Netscape, FireFox)在理论上没有长度的限制,其限制取决于操作系统的支持。因此,在采用GET方式提交数据时,传输数据会受到URL长度的限制。


POST: 由于不是通过URL传值,在理论上数据的大小不受限制。Web服务器会对采用 POST 方式提交的数据的大小进行限制,例如,Apache、IIS6都有各自的配置。


区别一

安全性不同



POST方式需要抓包才能获取到数据,变相地提高了安全性。



往期精彩文章


以上是关于HTTP协议的接口测试怎么做?的主要内容,如果未能解决你的问题,请参考以下文章

怎么使用jmeter对http协议接口测试

接口测试面试题

说说我在工作中如何开展接口测试?

如何使用WebSocket做接口测试?

如何做接口测试?

关于接口测试,我们需要知道的