接口测试基础---postman

初步了解接口测试的流程:
在这里插入图片描述

首先,需要对接口协议要有些许了解!!socket 、http:
[https://editor.csdn.net/md/?articleId=125027294

一、什么是接口

接口是一组定义、程序及协议的集合,通过API接口实现计算机软件之间的相互通信。或指软件系统不同组成部分衔接的预先的约定。

简单理解就是前端通过调用后台的url,获取响应数据,然后经过渲染展示出来的结果的过程,这个过程中,前端调用后端url就是接口,连接前后端的桥梁。

接口通常由三种类型:PRC、REST、GraphQL
目前用的最广泛的就是REST,为了统一接口Restful api,行业推出接口的规范OAS(openAPI Secification)
其中就有swagger 2.0 和openapi 3.0

swagger就是API工具集合:

  • 接口设计工具
  • 接口文档工具
  • 接口代码生成工具
  • 接口规范
    到了openapi3.0,接口规范就从swagger提取出来给了OAS组织。

REST:软件架构
RESTful:符合rest风格的架构
REST充分使用HTTP协议来描述资源和对资源的操作:

  • 使用URL表示资源
  • method表示对资源的操作
  • status code表示操作的结果

介绍见:restful实践

RPC(remote procedure call)远程过程调用,将其他程序、系统、软件的功能当作是本程序的功能,进行调用使用。例如程序A实现了add函数,那么程序B就要通过接口API来调用使用add函数。

GraphQL:
更强大、灵活的接口类型,它是一个查询语言,也是基于HTTP协议的,通过参数来区分不同的接口请求以及响应。特点:

  • 只需要一个URL
  • 只需要一个method
  • 所有的参数都放在body中

接口分类

程序内部接口:一个项目的内部接口,前后端分离项目,前端调用后端接口、手机app程序等。
一般只测试正确的用例

程序对外的接口:项目和项目之间的获取资源信息所采用的接口。例如物流接口、短信接口、天气预报等等。需要专门测试

接口测试重点:检查数据交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等等。
例如:提交订单,支付订单,退款等等。比如退款,可能会涉及多个接口,这时候测试的虽然表面上看是退款这个接口,但是需要将相关接口的正向用例作为前置条件。所以跑的是一整个流程,并不是单一的退款接口。

常见接口

1.webservice接口:走soap协议,通过http传输,请求报文和返回报文都是xml格式的。可以通过工具调用、测试,如soapUI、jmeter 、loadrunner等。

2.http api接口:走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get、post等方法。工具:postman、restClient、jmeter等。

接口的优点:

  • 统一设计标准
  • 前后端开发分离
  • 扩展性灵活
  • 前后端可以用自己熟悉的技术

二、什么是接口测试

接口测试就是通过测试不同情况下的输入参数和与之对应的输出结果,来判断接口是否符合或满足相应的功能性,安全性要求。
简单来说,接口测试就是代替前端或第三方,来验证后端实现是否符合接口测试规范。

接口测试原理:
模拟客户端向服务器发送请求报文,服务器接受请求报文后对相应的报文做处理并向客户端返回应答,客户端接收响应数据后并进行判断。

  • 请求:是否正常,默认请求成功是返回200,错误请求返回400,404,500等等号状态码。
  • 检查:返回数据的正确性和完整性
  • 安全性:接口一般不会暴露在网上任意被调用,需要做一些限制,如登录错误次数限制,频率限制等。

接口测试流程: 定位服务器接口资源并提交测试数据,然后查看响应结果是否符合预期。

接口测试核心类型

  • 参数化:数据分离,入参类型、边界值、组合(必填和非必填)
  • 数据库:连接数据库来获取数据
  • 关联:动态获取数据,解决接口之间的数据依赖
  • 集合点:掌握如何基于jmeter并发测试
  • 断言:出参的结果断言。判断自动化测试脚本执行成功或失败

测试关注点

  • 了解接口的功能,提交方式,接口的URL,接口参数(可选,必选)
  • 明确接口正常请求,正常情况下的响应参数
  • 保证业务功能的正确性,同时需要包括异常场景的考虑
  • 业务规则的覆盖,入参不同,实现逻辑也不同
  • 参数验证,入参、出参规则,边界值
  • 服务器的性能:响应时间,吞吐量,并发数
  • 安全性:用户越权、SQL注入等

三、接口测试的流程

接口测试文档规范

接口说明:功能说明
接口请求方法(get post?)
调用的URL
请求参数、参数类型、请求参数说明
请求头
返回参数说明(响应的错误代码等)
预期响应结果

测试流程

1.拿到接口文档(没有的话,自己根据抓包工具获取),熟悉接口业务,接口地址,鉴权方式,入参,响应码等信息
2.设计接口测试用例及评审
大致思路:
正例:输入正常入参,接口能够成功返回的数据
反例:
①鉴权:鉴权码为空,鉴权码错误,鉴权码过期
②参数:参数为空,参数类型异常,参数长度异常
③错误码覆盖:根据业务而定的
④其他错误常见:接口黑名单,接口调用次数限制,分页场景

3.使用接口测试工具执行接口测试
4. postman_newman_jenkins实现持续集成,并且输出测试报告

通过性验证

1.首先保证接口的功能是正常的。按照接口文档上的参数,正常传参,是否可以正常反馈正确的结果
2.检查接口的容错性,例如数据类型错误,是否有异常处理机制
3.接口参数的边界值,例如传的参数是负数,是小数,是一个超级大的数,接口是否可以正常处理
4.接口的性能,接口的处理时间
5.接口的安全性,外部接口尤为重要

四、在线教育系统接口测试—postman

本次先介绍使用postman工具做接口测试,但是强烈建议学习用jmeter做接口测试!!!

1、参数的集中实现接口关联的方式

设置环境变量或全局变量,调用固定的数值
1.通过json提取器获取参数

//使用json提取cookies值
//①首先将第一个请求的返回字符串格式的数据转化为对象的形式
var  res=JSON.parse(responseBody);
也可以这样提取:var res=pm.response.json()
//②再将需要的某个值通过《对象.参数名》形式提取出来,并设置为全局变量
pm.globals.set("cookiesjson", res.cookie);

//设置为全局变量后,在右上角可以看到设置的值,然后第二个请求就可以通过{{cookiejson}}来获取该值

2.通过正则表达式获取

//使用正则表达式提取器实现接口关联,match匹配
var res=responseBody.match(new RegExp('"retcode": (.*?), '))
console.log(res[1])
//②再将需要的某个值通过数组形式提取出来,并设置为全局变量
pm.globals.set("retcode", res[1]);
//注意:通过正则提取出来的是数组形式的数据,此时第一个数据是包含左右边界的数值,我们要取得一般是第二个数,由于数组下标是从0开始计算,所以我们要去的是res[1]的值

在这里插入图片描述

2、postman内置的动态参数以及自定义的动态参数

内置参数:一般内置函数都用{{$}}来引用

{{$timestamp}}生成当前时间的时间戳

{{$randomint}}生成0-100的随机数

{{$guid}}生成速记的GUID字符串

自定义动态函数

//手动获取时间戳
var time=Date.now();
//将其设置为全局变量,使用时,直接通过{{time}}调用即可
pm.globals.set("time", time);

3、断言

1、状态断言
pm.test(“Status code is 200”, function () {
pm.response.to.have.status(200);
});

2、业务断言

pm.test(“返回包含retcode”, function () {
pm.expect(pm.response.text()).to.include(“retcode”);
});
在这里插入图片描述
在这里插入图片描述

在断言中怎么获取自定义动态参数?(主要通过全局变量获取)
1.pm.globals.get(“times”)
2.globals[“times”]
3.globals.times

4、全局断言的设置

在这里插入图片描述

5、Mock server服务器用法

mock模拟接口的实现:用于后端接口还没开发完成,前端的业务需要调用后端的接口来进行测试。

代码的用法实现见:https://editor.csdn.net/md?articleId=130900925

五、输出测试报告:newman

首先写好接口后,将其打包在同一个文件夹中,然后通过newman命令自动化执行
在这里插入图片描述

在这里插入图片描述

输出测试报告文件
  newman 支持四种格式报告文件:cli,json,html,junit
  生成 html 报告时需要安装html套件,命令行中执行:npm install -g
 newman-reporter-html

输出报告时使用的命令:
    -r html,json,junit 指定生成html,json,xml形式的测试报告
    --reporter-json-export jsonReport.json 生成json格式的测试报告
    --reporter-junit-export xmlReport.xml 生成xml格式的测试报告
    --reporter-html-export htmlReport.html 生成html格式的测试报告
    默认生成的测试报告保存在当前目录下,如果文件名前加上路径,则保存在指定的目录下

环境搭建

1)安装nodejs,使用npm包管理工具操作。node -v 命令来检查是否安装成功
下载路径:
中文下载地址:http://nodejs.cn/download/
英文下载地址:https://nodejs.org/en/download/

2)安装newman工具
安装newman :npm install newman -global
安装newman 报告工具:npm install -g newman -reporter -html
3)导出测试脚本和数据
导出集合:
在这里插入图片描述

导出环境变量
注:确保initial value字段中有值,因为导出的变量只能导到initial value值。
在这里插入图片描述
在这里插入图片描述
导出全局变量
注:确保initial value字段中有值,因为导出的变量只能导到initial value值。
(操作跟导环境变量一致)

将所有导出的文件放在同个文件夹,例如:
在这里插入图片描述
c.json 请求集合脚本,e.json环境变量,g.json全局变量

4)执行自动化接口脚本
newman run c.json -g g.json -e e.json - -reporters html - -reporter -html -export d:\jiekou\reporter.html

测试报告:
在这里插入图片描述

生成html测试报告

方法一:通过日志文件生成:
jmeter -n -t c:\users\automat_test.jmx -l testLog -e -o +要保存的路径

参数说明:
-n : 以非GUI形式运行jmeter
-t:source.jmx脚本路径
-l : 运行结果(jtl)保存的路径
-e :在脚本运行结束后生成html报告
-o :保存html报告的地址

注意:
1.jtl、txt,jmx后缀必须不存在

方法二:使用已有的jtl日志文件或csv日志文件生成
jmeter -g c:\users\xx.jtl -o ./outputreport

六、接口测试中经典bug

1.参数为null,或者空字符串“ ” 等
2.权限未处理,可以访问其他用户的信息(无权限可以访问或者一般用户访问管理员权限)
3.状态处理不当,导致出现错误
4.潜在性能问题(后台提交处理请求时间很久)
5.逻辑校验不完善,可利用漏洞获取非正当利益等

postman操作见:postman接口测试操作

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
JMeter是一款功能强大的开源性能测试工具,广泛应用于接口测试。2021年最新的JMeter接口测试入门到精通实战主要包括以下几个方面: 1. JMeter基础知识:首先要了解JMeter的基本概念和工作原理,包括测试计划、线程组、取样器、监听器等。掌握JMeter的基础知识对于后续的实战非常重要。 2. 接口测试准备:接口测试前需要做一些准备工作,比如准备测试环境、了解接口文档、分析接口性能要求等。这个阶段还可以学习如何使用JMeter的代理功能来捕获接口请求。 3. 创建测试计划:在JMeter中,测试计划是测试基础,可以在测试计划中添加多个线程组,设置线程数、循环次数等参数。通过设置各种配置元件,如HTTP请求、参数化、断言等,来模拟实际接口请求。 4. 编写测试脚本:使用JMeter的录制功能,可以将浏览器的请求转化为JMeter的测试脚本。也可以手动编写测试脚本,根据接口文档构建请求并添加断言、参数化等。同时可以学习如何使用JMeter的函数和变量,实现参数化和数据驱动测试。 5. 断言和验证:在接口测试中,需要对返回结果进行断言和验证。可以使用JMeter提供的多种断言器对返回结果进行校验,如响应码、响应时间、返回值等。同时,可以学习如何使用JMeter内置的验证器,如正则表达式、xpath等。 6. 性能监控和分析:通过监听器可以查看测试结果,包括响应时间、吞吐量、错误率等。还可以学习如何使用JMeter的插件和扩展,实现更详细的性能监控和分析,如生成图表、分析报告等。 7. 脚本优化和调试:在实际测试过程中需要不断优化和调试测试脚本,提高测试效率和可靠性。可以学习如何使用JMeter的调试功能,查看请求和响应的详细信息,解决测试中的问题。 通过以上实战,可以逐步提升自己的JMeter接口测试能力,从入门到精通。但需要注意的是,JMeter是一个非常强大但也复杂的工具,需要付出一定的学习和实践,才能更好地掌握和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值