接口和抓包测试

软件开发的两种结构

1.CS(Client/Server):客户端--------服务器结构

c/s的特点:交互性强、具有安全的存取模式、网络通信量低、响应速度快、利于处理大量的数据

CS的优缺点:

优点:

(1)能充分发挥客户端pc的处理能力,很多工作在客户端处理后再交给服务端,所以cs客户端响应速度快
(2)操作界面漂亮、形式多样、可以充分满足用户自身的个性化要求
(3)c/s结构的管理信息系统具有较强的事务处理能力,能实现复杂的业务流程
(4)安全性能可以容易保证,c/s一般面向相固定的用户群,程序更加注重流程,对权限进行多层次效验,提供了更安全的存储模式,对信息安全的控制能力很强。

一般高度机密的信息系统采用C/S结构适宜。

缺点:

(1)需要专门的==客户端安装程序==,分布功能弱,针对点多面广且不具备网络条件的用户群体,不能够实现快速部署安装和配置。
(2)兼容性差,对于不同的开发工具,具有较大的局限性
(3)开发、维护成本较高,需要具有一定专业水准的技术人员才能完成,发生一次升级,则所有客户端的程序都需要改变
(4)用户群固定。(由于程序需要安装才可使用,因此不适合面向一些不可知的用户)

2.BS(Browser/Server):浏览器-------服务器结构

是目前应用系统的发展方向。
BS是伴随着Internet技术的兴起,对C/S架构的改进,为了区别于传统的C/S 模式,特意称为B/S模式。
在这种结构下,通过W3浏览器来进入工作界面

BS的优缺点:
优点:

(1)分布性强,客户端零维护(只要有网络、浏览器,可以随时随地进行查询、浏览等业务处理)
(2)业务扩展简单方便,通过增加网页即可增加服务器功能
(3)维护简单方便,只需要改变网页,即可实现所有用户的同步更新
(4)开发简单,共享性强。

缺点:

(1)个性化特点明显降低,无法实现具有个性化的功能要求
(2)在跨浏览器上,BS架构不尽如人意
(3)客户端服务器端的交互是请求-响应模式,通常动态刷新页面,响应速度明显降低(Ajax可以一定程度上解决这个问题)。无法实现分页显示,给数据库访问造成较大的压力
(4)在速度和安全性上需要花费巨大的设计成本。
(5)功能弱化,难以实现传统模式下的特殊功能要求

3.BS与CS优缺点对比

CS响应速度快,安全性强,用户体验好,一般应用于局域网中,但是开发维护成本高,

BS可以实现跨平台,客户端零维护,但是个性化能力低,响应速度较慢。

所以有些单位日常办公应用BS,在实际生产中使用CS结构。

HTTP协议

1.http协议:

是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议

客户端是终端用户,服务器端是网站

我们在浏览器的地址栏里输入的网站地址叫做URL ,
当你在浏览器的地址框中输入一个URL或是单击一个超级链接时,URL就确定了要浏览的地址
浏览器通过超文本传输协议(HTTP),将Web服务器上站点的网页代码提取出来,并翻译成漂亮的网页

在这里插入图片描述
HTTP和URL

HTTP使用统一资源定位符来传输数据和建立连接。
URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息

url组成:

(1)协议部分
(2)域名部分
(3)端口部分
(4)虚拟目录部分
(5)文件名部分
(6)锚部分
(7)参数部分

HTTP1.0和HTTP1.1的区别

一个WEB站点每天可能要接收到上百万的用户请求,为了提高系统的效率

HTTP 1.0规定:浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接

HTTP 1.1:支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟

HTTP客户机与服务器的信息交换过程

在这里插入图片描述
http请求方式

 HTTP1.0 定义了三种请求方法:GET, POST 和 HEAD方法
 HTTP1.1 在HTTP1.0的基础上新增了五种:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法

GET  请求指定的页面信息,并返回实体主体。

HEAD     类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头

POST     向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。

HTTP1.1 新增的五种请求方式:

PUT 从客户端向服务器传送的数据取代指定的文档的内容。

DELETE 请求服务器删除指定的页面

CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器

OPTIONS 允许客户端查看服务器的性能。

TRACE 回显服务器收到的请求,主要用于测试或诊断。

http请求:get和post
1.get请求:
在这里插入图片描述
2.post请求:
在这里插入图片描述
get和post的区别:

1、GET使用URL或Cookie传参。而POST将数据放在BODY中。
  2、GET请求数据在URL上显示,有长度上的限制,1kb,则POST的数据则可以非常大。
  3、POST比GET安全,因为数据在地址栏上不可见。
  4、一般get请求用来获取数据,post请求用来发送数据。
  5.GET请求数据位于请求行中 ,POST请求数据位于请求体中
  
http请求—消息头Request

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:
请求行(request line)、请求头部(header)、空行和请求数据四个部分组成
在这里插入图片描述

第一部分:请求行,第一行明了是post请求,以及http1.1版本。
第二部分:请求头部,第二行至第六行。
第三部分:空行,第七行的空行。
第四部分:请求数据,第八行。

在这里插入图片描述
http响应

服务器接收并处理客户端发过来的请求后会返回一个HTTP的响应消息

HTTP响应也由四个部分组成:状态行、消息报头、空行和响应正文
在这里插入图片描述

第一部分:状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成。
第一行为状态行,(HTTP/1.1)表明HTTP版本为1.1版本,状态码为200,状态消息为(ok)

第二部分:消息报头,用来说明客户端要使用的一些附加信息
第二行和第三行为消息报头,

Date:生成响应的日期和时间;Content-Type:指定了MIME类型的         HTML(text/html),编码类型是UTF-8

第三部分:空行,消息报头后面的空行是必须的
第四部分:响应正文,服务器返回给客户端的文本信息。
空行后面的html部分为响应正文。

常见的响应头

Set-Cookie:SS=Q0=5Lb_nQ; path=/search   --表示服务器发送给浏览器的cookie信息(会话管理用到)
Connection: close/Keep-Alive           --表示服务器和浏览器的连接状态。close:关闭连接 keep-alive:保存连接

HTTP之状态码

状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:

 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        //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

更多状态码可参考的网址:http://www.runoob.com/http/http-status-codes.html

会话跟踪技术

在一个会话的多个请求中共享数据,这就是会话跟踪技术

cookie是在本地的,在本地就会有人想着去修改cookie里面的数据,从而获取别人的信息。
于是就有新的处理办法,改在服务器端记录用户信息。
也就出现了session机制,一切用户的身份由服务器掌控。
这就是cookie机制和session机制的历史。

保存会话的两种技术

1.客户端技术   Cookie
两个经典应用场合:判定注册用户是否已经登录网站,购物车。

2.服务端技术   Session
经典应用场合一般就是在Session中存储了用户的登录信息,进而可以访问一些需要权限才能访问的页面。

Cookie(由服务器创建)

1.应用场景

(1)记录上次访问时间    
(2)记录用户名
(3)显示浏览记录

2.原理分析

在这里插入图片描述
cookie与session 的区别

Cookie是把数据保存在浏览器端的内存中
Session把数据保存在服务器端的内存中
cookie与session的联系:
       当服务器端生成一个session时就会向客户端发送一个cookie保存在客户端,这个cookie保存的是session的sessionId。。
       这样才能保证客户端发起请求后客户端已经登录的用户能够与服务器端成千上万的session中准确匹配到已经保存了该用户信息的session,同时也能够确保不同页面之间传值时的正确匹配。

接口测试

1.接口含义:

API接口是一些预先定义的函数,包括接口地址、传入参数和返回参数。
可以简单理解为,当需要访问某些数据,正常状态下传入合格参数,会收到该数据范围内的返回参数

使用场景:在美团旅游频道,用户选定时间、地点后搜索航班,后台会调用搜索接口传入时间、地点等参数,接收航班类别、价格等参数,在前台页面上进行排列展示。同理,下单时会调用生单接口确认是否成单,支付时会调用支付接口完成交易,自动修改订单状态

2.接口分类

(1)webservice接口 
      webService接口是走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试
(2)http api接口
        http api接口是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常用的两种请求方式

一个URL就是一个接口:接口大致会分为一下几个部分:
在这里插入图片描述

请求协议:
      http --- 普通的http请求
      https --- 加密的http请求,传输数据更加安全
请求IP:就是指提供接口的系统所部署的服务器地址
请求端口:如果不填端口,默认是80,否则需要填写端口号
接口路径:指系统提供的接口在什么位置
***接口参数:参数在接口路径后,用“?”来表示路径地址完了,剩下的都是参数了,用“&”来区分参数个数,

为什么要做接口测试

随着系统越来越多,以及复杂性越来越高,
为了保证系统的独立性,也为了使业务更加的独立,系统间的交互,越来越多的使用接口,
这时候,为了保证数据的传输的准确性,接口测试也应运而生了,数据的错误,有可能引起系统的重大BUG

接口测试的重要性

1.越底层发现bug,它的修复成本是越低的。
2.前端随便变,接口测好了,后端不用变,前后端是两拨人开发的。
3.检查系统的安全性、稳定性,前端传参不可信,***比如京东购物,前端价格不可能传入-1元,但是通过接口可以传入-1元。
4.如今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,接口测试可以提供这种情况下的解决方案。
5. 接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。接口持续集成是为什么能低成本高收益的根源。
***6. 现在很多系统前后端架构是分离的,从安全层面来说:
    (1)只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前面实在太容易), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。
    (2)前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。

接口测试工作流程

准备阶段(80%)
  ***拿到开发的接口文档,并理解每个接口的参数及含义
   了解被测试系统的业务流程
    编写接口测试用例
执行阶段(10%)
   测试用例/测试场景执行
   测试数据/系统数据收集
分析阶段(10%)
    数据汇总/日志分析
    测试报告

接口测试:json

什么是json

Json是一种数据载体
互联网本质就是数据传输,数据传输就需要数据载体。比如:页面信息就是存储在HTML这种数据载体中

在这里插入图片描述
在这里插入图片描述
为什么使用json

Json传输数据效率更高,所以部分场景下使用HTML与XML
但是JSON语言描述不及标签语言,所以部分场景下使用HTML与XML
如果传递少量数据,使用JSON

常见接口测试工具

典型商业工具:loadrunner,soapui
典型开源工具: jmeter 
扩展插件:POSTMAN

原理实现

模拟客户端对服务器进行多连接

get请求

在这里插入图片描述

post请求
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值