接口协议

一、软件开发的两种结构
1.1 CS(Client/Server):客户端----服务器结构

在这里插入图片描述

CS的优缺点:

1、能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器,所以CS客户端响应速度快。

2、操作界面漂亮、形式多样,可以充分满足客户自身的个性化要求。

3、C/S结构的管理信息系统具有较强的事务处理能力,能实现复杂的业务流程。

4、安全性能可以很容易保证,C/S一般面向相对固定的用户群,程序更加注重流程,它可以对权限进行多层次校验,提供了更安全的存取模式,对信息安全的控制能力很强。一般高度机密的信息系统采用C/S结构适宜。

①、兼容性差,对于不同的开发工具,具有较大的局限性。若采用不同工具,需要重新改写程序。

②、 开发、维护成本较高,需要具有一定专业水准的技术人员才能完成,发生一次升级,则所有客户端的程序都需要改变。

③、用户群固定。由于程序需要安装才可使用,因此不适合面向一些不可知的用户

1.2 BS(Browser/Server):浏览器----服务器结构
在这里插入图片描述

BS的优缺点:
1、分布性强,客户端零维护。只要有网络、浏览器,可以随时随地进行查询、浏览等业务处理。

2、业务扩展简单方便,通过增加网页即可增加服务器功能。

3、维护简单方便,只需要改变网页,即可实现所有用户的同步更新。

4、开发简单,共享性强。

①、在跨浏览器上,BS架构不尽如人意。

②、客户端服务器端的交互是请求-响应模式,通常动态刷新页面,响应速度明显降低(Ajax可以一定程度上解决这个问题)。无法实现分页显示,给数据库访问造成较大的压力。

③、在速度和安全性上需要花费巨大的设计成本。

④、功能弱化,难以实现传统模式下的特殊功能要求。

1.3. BS与CS优缺点对比(重点)
CS响应速度快,安全性强,用户体验好,一般应用于局域网中,但是开发维护成本高,;BS可以实现跨平台,客户端零维护,但是个性化能力低,响应速度较慢。所以有些单位日常办公应用BS,在实际生产中使用CS结构。

二、Http协议
2.1 什么是http协议
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
在这里插入图片描述

2.2 HTTP1.0和HTTP1.1的区别
HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。
在这里插入图片描述

HTTP 1.1支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。
在这里插入图片描述

2.3 HTTP和HTTPS的区别
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

2.4 http请求方式(红色为重点)
HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。

HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

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

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

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

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

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

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

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

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

2.5 Get与post请求的区别(重点)
1、GET使用URL或Cookie传参。而POST将数据放在BODY中。

2、GET的URL会有长度上的限制,2kb,则POST的数据则可以非常大。

3、POST相比GET更安全,因为数据在地址栏上不可见

4、一般get请求用来获取数据,post请求用来发送数据。

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

三、Cookie和Session
3.1 cookie概念
Cookie就是一个键和一个值构成的,随着服务器端的响应发送给客户端浏览器。然后客户端浏览器会把Cookie保存起来,当下一次再访问服务器时把Cookie再发送给服务器。

Cookie是由服务器创建,然后通过响应发送给客户端的一个键值对。客户端会保存Cookie,并会标注出Cookie的来源(哪个服务器的Cookie)。当客户端向服务器发出请求时会把所有这个服务器Cookie包含在请求中发送给服务器,这样服务器就可以识别客户端了!

Cookie数据类型只能保存非中文字符串类型的。可以保存多个cookie,但是浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB。

3.2 cookie应用场景
记录上次访问时间
记录用户名
显示浏览记录

3.3 session概念
一个浏览器独占一个session对象(默认情况下)。因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户服务。

3.4 session和cookie的区别
Cookie是把数据保存在浏览器端的内存中
Session把数据保存在服务器端的内存中

二者的联系:

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

四、接口测试
4.1 什么是接口
API接口是Application Programming Interface的简称,是一些预先定义的函数,包括接口地址、传入参数和返回参数。

可以简单理解为,当需要访问某些数据,正常状态下传入合格参数,会收到该数据范围内的返回参数。

4.2 什么是接口测试
不管是哪种接口,其本质就是发送一个request,然后服务器响应后返回一个response,然后我们对response进行分析,这即是接口测试。

接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互。

4.3 接口的分类
1.webservice接口《10年前常用》

2.http api接口 《目前常用》

webService接口是走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试。

http api接口是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常用的两种请求方式。

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

请求协议:

http — 普通的http请求
https — 加密的http请求,传输数据更加安全
请求IP:就是指提供接口的系统所部署的服务器地址
请求端口:如果不填端口,默认是80,否则需要填写端口号
接口路径:指系统提供的接口在什么位置

接口参数:参数在接口路径后,用“?”来表示路径地址完了,剩下的都是参数了,用“&”来区分参数个数

4.4 为什么要做接口测试
①、可以发现很多在页面上操作发现不了的bug
②、检查系统的异常处理能力
③、检查系统的安全性、稳定性
④、前端随便变,接口测好了,后端不用变

现在很多系统前后端架构是分离的,从安全层面来说:

(1)、只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前面实在太容易), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。

(2)、前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。

4.5 接口测试工作流程
准备阶段(80%)

拿到开发的接口文档,并理解每个接口的参数及含义

了解被测试系统的业务流程

编写接口测试用例

执行阶段(10%)

测试用例/测试场景执行

测试数据/系统数据收集

分析阶段(10%)

数据汇总/日志分析

测试报告

4.6 接口测试用例编写在这里插入图片描述
在这里插入图片描述

接口测试用例编写要点

测试每个参数类型不合法的情况

测试每个参数取值范围不合法的情况

测试参数为空的情况

测试参数前后台定义的一致性

测试每个参数的上下限(这里容易出致命的BUG,如果程序处理不当,可能导致崩溃)

测试每个参数取值不合理的情况(包括取的值不属于自己,取值在这阶段不会出现,取值超出了自己所拥有的数量或者范围)

如果两个请求有严格的先后顺序,需要测试调转顺序的情况

自己和自己的交易、聊天等操作(这种特别容易遗漏)

4.7 接口文档
我们做接口测试,需要开发提供接口文档。最重要的有一下几点:

被测接口的地址

接口参数,以及各个参数的说明

必要的http头与http体 ( http头是可以自定义的,可以用来校验是否是自己人访问 )

接口返回什么值,以及各个返回值的说明

接口是干什么的

4.8 接口测试:json
4.8.1 什么是json
Json是一种数据载体。

互联网本质就是数据传输,数据传输就需要数据载体。比如:页面信息就是存储在HTML这种数据载体中
在这里插入图片描述

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

4.9 接口测试工具及原理
4.9.1 常见接口测试工具
典型商业工具:loadrunner,soapui
典型开源工具: jmeter
扩展插件:POSTMAN

4.9.2 实现原理
模拟客户端对服务器进行多连接

5.1 接口测试工具Postman
这里我们使用一个免费的接口测试:

https://www.juhe.cn/docs/index/otherid/1?bd_vid=8722659703662196220

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

5.1.2 get请求
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值