接口测试(二)


HTTP协议中常用的请求方法有4种:
GET:客户端从服务端获取资源
POST:客户端往服务端发送请求添加新的资源
PUT:客户端针对服务端已有的数据进行更新
DELETE:客户端删除服务端已有的数据

编程语言:
get:获取信息
set:设置信息

由于PUT和DELETE请求方法不安全,所以了很多时候,往往会使用POST来进行替代

发送Requests的组成部分:

1、请求地址
2、请求方法
3、请求头
Content-Type:指的是数据格式
Cookie:反爬虫,身份凭证
Referer:发送请求的地址是从哪里来的
User-Agent:发送网络请求的时候向服务端标注请求是通过什么浏览器或者什么软件(PostMan,JMeter)发送的
1、开发了一个APP,想看那个系统使用的用户比较多,统计user-agent的数据,进行分析
4、请求参数 :请求头中的数据格式决定了请求参数的格式
get:路径参数 http://xxx.com/xxx?key1=value1&key2=value2(get的请求参数与数据格式没任何关系)
post:payload中显示了请求的参数

Response响应部分:
1、协议状态码
200 请求成功? 301 永久重定向? 302 临时重定项? 400 Bad Request 客户端请求错误
1、请求参数不对
2、请求头不对
401 Unauthorized 无权限访问该系统
403 Forbidden 有权限但是禁止访问
404 请求的资源不存在 404NOT FOUND(请求的地址不存在,所以导致请求的资源也是不存在)

405 不被允许的请求方法 405METHOD NOT ALLOWED
你请求的方法,没有定义对应的请求方法,但是你去进行访问? 500 服务器内部错误
空指针 Null PointExpection 堆栈溢出 在测试选择项的时候,选择很多很多的项,同时触发,看是否会暴露该问题
OOM(内存泄露)Out Of Memory
其他异常:Expection? 504 GateWay Timeout
网关超时

2、响应数据:响应数据返回的数据格式是由响应头里面的content-type来决定的
3、响应头(response headers)

  content-type:指明返回的响应数据的数据格式是什么
  set-cookie:服务端返回给客户端的登录凭证

常用的数据格式:
1、表单 application/x-www-form-urlencoded; charset=UTF-8(GBK)
2、json格式:application/json;charset=UTF-8 json数据格式:基于JSON的数据格式,但是数据类型是字符串

3、text/html :返回的是基于html的数据格式
4、text/xml:返回的是基于xml的数据格式

http是一个无状态的协议,但是互联网产品的发展,需要记住用户的操作行为习惯。
cookie:主要是存储用户操作行为的数据,在早期的互联网产品中,用户登录系统的凭证都是由cookie来进行记录的,但是由于是存储在客户端的(本机的电脑),所以是不安全的
session:session是把登录成功后的数据存储在服务端
token:本质上是session的原理,我们可以把它理解为一个令牌,每次登录成功后,返回的token都是随机的字符串 jwt的技术来实现

session流程:
1、客户端输入账户和密码,点击登录
2、登录成功后,会在服务端把用户登录成功后的信息生成一个sessionid的凭证,并且存储在服务端
3、然后服务端通过响应头中的set-cookie把生成的sessionid返回给客户端
4、客户端再次查看个人主页,客户端会通过请求头中的cookie,把set-cookie返回的sessionid带上,发送给服务端
5、服务端接收到客户端发送的sessionid,和存储在服务端的session ID作一个对比
6、如果对比一致,用户可以继续反问系统的任何功能,如果对不一致,立刻跳转到登录的页面

token:
1、客户端输入账户和密码,点击登录
2、登录成功后,会在服务端把用户登录成功后的信息生成一个Token的凭证,同时了存储在服务端
3、服务端会通过响应数据或者是响应头中的set-cookie返回给客户端
4、那么客户端再次向服务端发送请求,会在请求参数或者请求头中的Authuration中带上返回来的token发送给服务端
5、服务端接收到客户端发送的Token,和存储在服务端的Token作一个对比
6、如果对比一致,用户可以继续反问系统的任何功能,如果对不一致,立刻跳转到登录的页面

HTTPS
HTTP的协议它是存在缺陷的,主要为:
  通信内容是明文,内容很可能被第三方获取到
  不验证通信方的身份信息,容易被伪装
  无法证明请求头的完整性
基于HTTP存在这些缺陷,也就有了HTTPS的协议,我们可以把HTTPS可以汇总为:HTTPS=HTTP+加密+认证+完 整性保护。
HTTPS不是全新的协议,它只是HTTP的协议基础上新增SSL和 TLS。HTTPS中,HTTP先和SSL通信,SSL再和TCP来进行通信。

HTTP认证体系 HTTP/1.1版本中,使用的认证方式具体为:
BASIC认证,也就是基本认证 DIGEST认证,也就是摘要认证 SSL客户端认证 FormBase认证,也就是基于表单认证

auth2.0的认证体系

BASIC
基本认证采用Base-64编码方式,但不是加密的处理方式。不需要附加任何信息可对其进行解码,那么在HTTP等 非加密通信的线路上进行BSCIC认证的过程中,很容易被人进行获取信息,安全体系不够高。

DIGEST
DIGEST的认证体系是为了解决BASIC的缺陷之一的,它也是采用质询/响应的模式,但是不会直接发送明文密码。 所谓质询/响应模式指的是一开始一方先发送认证要求给另外一方,接着使用从另一方那接收到的质询码计算生成 响应码,最后将响应码返回给对方进行认证的方式。

安装和破解Charles后,首先要进行配置:

1、安全证书,证书必须安装在可信任的安全列表中

2、配置监听的端口

3、配置HTTPS的端口

4、点击 Start Recording 进行监听

模拟弱网络的请求
互联网的产品,规则就是请求响应时间小于3秒,认为是优秀,如果是3-5秒,认为是可以接收
接口测试的请求响应时间其实就是:一个HTTP完整的请求时间之和
toC:消费者人群
toB:企业级客户

同时发送网络请求:
在同一个时间段(秒为单位)同时发送N个网络请求,来验证服务端的承载能力

场景:
1、开发要求再次请求一次,那么直接使用工具
2、模拟N个客户端同时向服务端发送网络请求

 发送Request的请求信息以及Response的响应信息:
1、使用浏览器的network
2、使用charles的工具
3、查看开发的接口文档

1、安装Postman

2、新建 Untitled Request 选择对应的请求格式,并输入网址

使用 GET 方法获取到对应数据

使用 POST 方法提交并返回数据