接口测试概念和软件安装
接口测试:
1、协议协议:
http websocket Dubbo
gRPC
2、接口测试的工具:PostMan,JMeter
3、接口测试的框架
4、MockServer
接口测试是目前所有测试人员必须掌握的技术栈
1、流量回放
2、混沌工程(混沌理论)
3、全链路监控&分布式
金字塔模型

1、金字塔模型把开发测试的模型分为三层,分别是单元测试,接口测试,和UI测试
2、unit:单元测试;services:接口测试(API自动化测试);UI:UI测试(功能测试,ui自动化测试)
3、越底层的,越应该投入更多的精力去保障,越上层的,投入少量的精力去保障
在金字塔的模型中,在测试分为三个维度来进行思考,分别是单元,服务和UI三个层级。
服务层的测试,在服务层的测试维度中,主要针对的是业务接口的测试,来验证接口功能是否完整且稳定,如内部逻辑,异常处理。
所以接口的测试相对而言比较容易而且更加高效,测试用例的维护成本也低。有很多主流的测试工具都可以做接口测试,如PostMan,JMeter,SoupUi等
除了工具还有在Python语言中很多的第三方的库都是可以来做接口测试的,如:urllib,requests,aiohttp等
单体架构 微服务架构 面向服务架构(B/S模型) 分布式架构
单体架构的开发模式:单体架构的模式是把前后以及所有的业务场景的代码都整合到一起

微服务架构模式:把每个独立业务场景单独分离成一个服务,这样服务和服务之间通信通过REST API或者gRPC的协议来进行交互

微服务的架构模式
saas化:Software As A Service 软件即服务
pass化:Platform As A Service 平台即服务
微服务的通信模式使用的方式有两种:
1、一种是采用基于REST API的轻量级的基于HTTP的协议
2、使用的是gRPC的协议
应用层
应用层决定了向用户提供应用服务时通信的活动。而HTTP的协议和gRPC的协议就是属于应用层的协议。
传输层
应用层的下层是网络传输层,提供处于网络连接中的两台计算机之间的数据传输。核心的协议就是TCP/IP的协议,TCP/IP通信传输流
主要是用来处理网络上流动的数据包,所谓数据包就是网络传输中的最小单位,在该层协议中,规范了通过怎样的
路径到达目标计算机,并且把数据包传送给对方。
链路层
主要是处理连接网络的硬件部分,如操作系统,硬件设备的驱动等。

可以理解为
1、服务端的确认:客户端发送数据出去,服务端需要确认我收到了
2、服务端反馈:服务端告诉客户端,你发送的数据我这边确认收到了
3、客户端确认:客户端需要向服务端再次反馈,客户端收到服务端的反馈了
客户端:拿微信来说,手机微信,电脑微信,都是客户端
服务端:腾讯的微信服务器
Python:数据分析,数据科学领域非常具备优势
Go:容器化的语言,应用在Docker和K8S的开发
PHP:轻量级的语言
Net:微软系列
协议 web1.0 web2.0 移动互联网
HTTP:超文本传输协议,应用层协议;最新版本HTTP/2.0(gRPC协议基于HTTP/2.0的版本来进行设计) 但广泛使用是HTTP/1.1

1、请求地址
2、请求方法
3、请求头
4、请求参数(可能有,也可能没有)
Response回复:
1、协议状态码
2、响应数据
3、响应头

通信模式:


生产者消费者模式:生产后,基于进行快速的消费
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 方法提交并返回数据

怎么做接口测试
由于项目前后端调用主要是基于http协议的接口,所以测试接口时主要是通过工具或代码模拟http请求的发送与接收。
工具有很多如:postman、jmeter、soupUI等。
做接口测试需要有《接口文档》,对前端传入的请求参数(比如登录时的帐号及密码就是参数)内容进行说明,对服务器响应内容也需要说明。
测试工程师需要去验证这些参请求参数、服务器响应内容是否合理。

浙公网安备 33010602011771号