接口测试-postman版本

接口测试基础

  • 接口是什么
  • HTTP协议
  • 接口测试工作流
  • API文档
  • API测试用例

1、什么是接口?

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

2、接口都有哪些类型?

接口一般分为两种:

①程序内部的接口(系统内部的数据交互)

②系统对外的接口(互联网中真实用户访问你的系统能拿到的数据)

系统对外的接口:比如你要从别的网站或服务器上获取资源和信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数据共享的目的。

程序内部的接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,比如百度有登录模块,发帖模块等,用户要发帖就需要先登录,那么这两个模块就有交互的过程,它就会抛出一个接口,供内部系统进行调用。

3、接口的本质是什么? 

接口可以简单的理解,它就是URL,工作原理就是URL通过get或者post请求像服务器发送一些东西,然后得到一些相应的返回值,本质就是数据的传输和接收

如这个接口:http://httpbin.org/get

把它拆成3部分,分别是:

第一部分:协议,如http,https

第二部分:主机名,能解析到对方的服务器,在上述接口表达为httpbin.org

第三部分:方法,访问接口的一个路径,访问不同的路径就能拿到不同的数据,在上述接口表达为get

整体可以理解为你朋友邀请(http)你去参观他的家(httpbin.org),他家有很多房间,你先进入的(get)这个房间。

其实访问这个接口和打开百度没有区别,都是网站返回的数据,只不过百度是前端进行的美化,而上方接口返回的是一串数据.

4、什么是接口测试?

接口测试是测试系统组件之间接口的一种测试。主要用于检测外部系统与内部系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换、传递、控制管理过程和系统之间相互逻辑依赖关系。

接口测试对系统或组件之间的接口进行测试访问,模拟数据的校验、传递、控制管理,检查系统内的逻辑关系,本质上就是模拟客户端向服务器发请求,服务器接收到请求后进行对应业务处理,并且向客户端返回响应数据,最终检查响应数据是否符合预期。

上图过程描述:客户端连接服务器->客户端发请求->服务器接收到请求并处理->服务器返回数据->客户端检查数据是否符合预期

5、为什么要做接口测试?

①越早发现bug,修复成本越低

②现在系统都是采用前后端分离模式,前端样式随便更新,接口这边测出没问题,后端就不需要改变什么。

③检查系统的安全性、稳定性,比如金额传参,前端给的输入框是不允许输入负数和0的,但是通过接口发现传入-1元接口验证通过,就证明后端接口校验有问题。

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

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

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

6、怎么做接口测试?

接口测试工具:Jmeter、Postman

写代码:Python+requests

7、接口测试重点是什么?

目的:测试接口的正确性和稳定性

原理:模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文进行处理并向客户端返回应答,客户端接收应答的过程

重点:检查数据的交换,传递和控制管理过程,还包括处理的次数

核心:持续集成是接口测试的核心

优点:为高复杂性的平台带来高效的缺陷检测和质量监督能力,平台越复杂,系统越庞大,接口测试的效果越明显(提高测试效率,提升用户体验,降低研发成本)

用例设计重点:通常情况下主要测试最外层的两类接口:数据进入系统接口(调用外部系统的参数为本系统使用)和数据流出系统接口(验证系统处理后的数据是否正常)

HTTP协议是什么?

打开浏览器(web browser)的地址栏输入网站名字(域名),web页面是如何展示的?

当在浏览器的地址栏内输入某个URL(Uniform Resource Locator,统一资源定位符)https://www.baidu.com/,只要电脑可以上网,就能看到URL对应的web页面,就算不了解内部原理,也能肉眼看到结构。

Web页面肯定不是凭空出现的,根据浏览器地址栏指定的URL,浏览器向web server(web服务器)中获取文件资源(resource),从而显示出页面。

Web使用的一种名为HTTP(HyperText Transfer Protocol,超文本传输协议),完成客户端到服务端的一系列请求过程。

HTTP协议用于client和server之间通信,一般是请求一个静态资源称之为客户端,提供资源的一方称之为服务端。

1、 URL与URI

统一资源标识符URI,是一个用于标识某一互联网资源名称的字符串,在世界范围内标识定位某一个唯一信息资源。URI就是在某一规则下能把一个资源独一无二的标识出来,例如身份证定位唯一的一个人,肯定不会重复,身份证号就好比URI

统一资源定位符URL,主要用在各种www客户端和服务器程序上,URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器地址和目录等,例如定位到这个人,他在哪,住址协议://地球/中国/江苏/无锡/小明,同于https://www.baidu.com/index.html

URL组成:

①协议:http,https(加上了证书认证,保证协议是安全的)

②主机ip或域名:www.baidu.com(会被DNS服务器解析为服务器的ip地址)

③端口:默认http是80,https是443

④文件资源具体地址:https://www.baidu.com/index.html

第一部分用”://“隔开,第二部分用”/“符号隔开

2、HTTP请求与响应

什么是API?

API也是接口(接口又是一个可以拿到数据的URL)中的一种形式

日常生活中也有很多类似的API场景,比如电脑需要调用手机里面的信息,这时候你会拿一根数据线将电脑和手机连接起来,电脑和手机上连接数据线的接口就是API硬件接口(USB,TypeC)

API使用场景:研发人员A开发了软件A,研发人员B正在研发软件B,有一天,研发人员B想要调用软件A的部分功能来用,但是他又不想从头看一遍软件A的源码和功能实现过程,怎么办呢?研发人员A想了一个好主意: 我把软件A里你需要的功能打包好,写成一个函数,你按照我说的流程把这个函数放在软件B里,就能直接用我的功能了!其中,API就是研发人员A说的那个函数。

1、传统接口风格 

一个对用户数据操作的接口,客户访问这个接口URL就能获取到用户的数据

不同的URL有不同的操作和请求方法(get是从服务器获取数据,post用于提交数据到服务器),从上述可以看出,不同的需求,需要定制不同的URL,维护起来很麻烦。

2、RESTful风格 

REST 的实质可以理解为:通过URL定位资源,用GET、POST、PUT、DELETE 等动词来描述操作。而满足 REST 要求的接口,就被称为 RESTfu1 风格的接口。

举个例子:老板每次上班给秘书提了这么个要求:用红色杯子,去茶水房泡一杯放了糖的37.5度的普洱茶,可是秘书总是很难理解这种定于很多的句子,于是老板为了让其说的话更简单明了,并把这句话设计成了更简洁的样子:

①去茶水房泡茶

要求:

①类型:普洱

②杯子:红色

③放糖:放

④温度:37.5度

这里的茶就是资源,茶水房就是资源的地址URI,泡是动词,后面的要求就是这个地址对应接口的参数。这样的一种表现形式,就是REST接口。

总的来说,RESTful接口通常以HTTP GET和POST形式出现。但并非所有的GET、POST 请求接口,都是RESTful的接口。记住这句话,对一个资源URL,针对不同的http-method,执行不同的动作,就是restful-URL。

restful风格特点:

  • 每一个URL都代表一个资源,如上述的用户信息URL,就是用户资源
  • 通过请求方法的不同,实现对资源操作,这个叫做表现层状态转化
  • 接口响应的数据,以JSON为主,以key-value的形式对应的数据
  • 主要用于前后端分离模式,后端返回json数据格式给前端,前端渲染该json数据,得到完整的HTML网页

实践restful风格:

  • get:从服务器获取资源,一个或多个,查询用户信息
  • post:创建新资源,创建用户
  • put:更新服务器资源,更新用户资料
  • delete:删除用户记录

接口测试流程 

1、需求分析

①依赖需求文档

2、接口文档

①开发人员编写API(说白了就是后端开发,写的一段代码,且提供了URL规范)文档,解释具体的接口参数和对应接口的url)

②文档具体说明URL是什么,参数怎么传递,支持哪些http请求方式

3、设计测试用例

4、执行测试

①使用接口测试工具

②python脚本

5、接口缺陷管理、跟踪

6、生成测试报告

7、接口自动化、持续集成

Postman实现接口测试 

安装地址:Download Postman | Get Started for Free

入门体验:

使用Postman访问百度:http://www.baidu.com,并查看响应结果

实现步骤:

  1. 设置请求方式
  2. 输入接口地址
  3. 点击发送请求
  4. 查看响应结果

基本用法:

  1. 访问URL,发送get请求,目标:访问一段api(url),发出get请求,并且要携带参数
  2. 发送表单数据,post请求,目标:登录接口(ur1),发出post类型请求,且携带参数
  3. 发送JSON数据,发出json类型的请求,查看json类型数据返回。

案例一:get请求

访问URL接口:http://192.168.123.202:8208/sys/company/getInfoReport

请求方式:GET

请求路径:http://192.168.123.202:8208/sys/company/getInfoReport

传递参数:companyId=208

操作步骤:

1、设置请求方式为GET

2、输入请求路:http://192.168.123.202:8208/sys/company/getInfoReport

3、设置请求数据(查询字符串)

4、点击发送请求

5、查看响应数据

案例二:post请求

访问URL接口:http://192.168.123.202:8208/login

请求方式:POST

请求路径:http://192.168.123.202:8208/login

传递参数:username=18861736511,password=fhs111111

操作步骤:

1、设置请求方式为POST

2、输入请求路:http://192.168.123.202:8208/login

3、主体Body中传递参数,Json格式

4、点击发送请求

5、查看响应数据

针对第三步的操作,接口如果是request.form,则第三步可以选择使用form-data的选项卡来传递数据,但现在接口都做规范,默认就是通过@RequestBody 的方式请求的;也就是每一个请求必须是通过实体对象进行传参,不能通过form-data 表单提交的方式进行传参,所以需要使用json类型的方式传递数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值