接口测试基础知识
一、接口的分类
1、从平台划分:分为内部接口和外部接口。
2、从类型/协议来说:分为http接口和soap(webservice)接口。
☛ HTTP接口:通过GET或POST来获取数据,在数据处理上效率比较高。
☛ Webservice接口:通过soap协议来获取数据,比起HTTP来说能处理更加复杂的数据类型。
但从实质上来说soap请求也是HTTP类型的请求,只不过是把HTTP类型加封了一层Webservice协议,所以就变成了soap类型请求。(接口类型有很多种,只重点掌握HTTP类型请求,了解soap类型请求)
☛ HTTP接口中GET或POST请求方式区别:【此资料来源于网络】
1、GET和POST与数据如何传递没有关系??
GET和POST是由HTTP协议定义的。那么使用哪个方式与应用层的数据如何传输是没有相互关系的。从而,HTTP就没有要求,POST一定要放到请求体里面,GET就一定要放到URL里面。
在HTML标准中,是有着类似的定义。但这只是HTML标准对HTTP协议的用法的约定。也就是规范上说,无区别。
那么,这个说法是从何而来的呢?是因为有各种浏览器等软件的实现,就变成了我们现在熟知的现象,GET要用URL传参,POST用body传参。
2、HTTP协议对GET和POST有没有对长度的限制??
HTTP协议明确地指出了,HTTP请求头和请求体都没有长度的要求。
而对于URL长度上的限制,有两方面的原因造成:
1)浏览器。
据说IE对URL长度会限制在2048个字符内。但是就我所知,firefox是支持10W以上的长度。
2)服务器。
服务器处理超长的URL本身就是一种负担,更何况遭受恶意攻击呢?
因此,多数服务器出于安全、稳定等多方面的考虑,会给URL长度加限制。但是这个限制是针对所有HTTP请求的,与GET、POST没有关系。
3、安全不安全和GET、POST有没有关系??
这个问题,首先你得确认面向对象。
举个例子:
1)你现在要让我爸爸妈妈去看看这个URL,你觉得安全吗?
2)你现在要让一个刚入门的初级功能测试工程师去测试这个链接,你觉得安全吗?
3)你现在要让安全测试工程师去看看get请求,你觉得安全吗?
所以,针对不同的人群,安全的定义就会不一样。
“如果你愿意一层一层一层的剥开我的心 ,你会发现你会讶异 ,你是我最压抑 ,最深处的秘密 ”
把Get和Post剥开后,他们的本质上就是TCP链接,并无差别。
只是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。
那么真相到底是什么呢?
Get产生一个TCP数据包;Post产生两个TCP数据包。
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
对于POST,浏览器先发送header,服务器响应100(continue),然后再发送data,服务器响应200(返回数据);
二、接口数据传递的格式
一般数据的传递方式:xml和json两种。【面试可能问到两种格式的组成】
1、XML格式:每一对tag(标签)会包裹一对数据,传递到接口。
以注册接口为例:
1 <status>1</status>
2 <code>10001</code>
3 <data>null</data>
4 <msg>注册成功</msg>
2、JSON格式:用花括号括起来,键值对组装成数据,并传递到接口。
以注册接口为例:
1 {“regname”:“jac”,“pwd”:“1234”,“mobilephone”:“15088693973”}
两种格式的详细介绍可查询网址:www.w3school.com.cn
三、接口测试的原理
通过模拟客户端向服务器发送请求,服务器接收请求后对相应的请求做处理并向客户端返回响应结果,客户端接收结果的一个过程。【简言之:模拟客户端请求的发送以及结果的接收】
客户端收发请求的模拟可以是工具如:Jmeter来完成,也可以是自己编写脚本来模拟。
四、接口测试工具介绍
Firefox(火狐)插件 ----httprequester
Chrome(谷歌)插件 ---------Postman 推荐使用,做了解
安装:直接下载postman客户端或者是去给chrome浏览器安装插件均可。
下载地址:https://www.getpostman.com/
soapui -----推荐使用
Jmeter -----重点掌握