一:接口测试前准备

接口测试是基于协议的功能黑盒测试,在进行接口测试之前,我们要了解接口的信息,然后才知道怎么来测试一个接口,如何完整的校验接口的响应值。

那么问题来了,那接口信息从哪里获取呢?常用的有三种方式:

1.通过抓包工具比如fiddle,charles获取接口信息

2.通过浏览器开发者工具,networks查看接口请求信息

3.当然最直接和最靠谱的就是接口文档,这就是接口的需求文档

一个规范的接口文档最基本的应该包含了:

接口请求地址、请求方法、请求头信息说明

接口入参说明(包括参数的类型、是否必填、长度范围等)

接口响应示例、响应状态码

现在很多公司没有接口文档,但是接口的重要性我这里就不累赘了,我认为测试人员应该主动提出来,开发需要编写接口文档,在测试工作中需要更加主动。下面是我编写的swagger的接口文档,大家可以参考一下:

二:接口测试实战

一般刚开始接触接口测试都是基于测试工具,比如接口调试神奇postman,开发和测试都用它来调试和测试接口。

这里演示部分的接口是用Flask搭建的Mock Serve,后续也会分享如何从0搭建接口项目

实例一:demo

接口信息:

地址 :127.0.0.1:5000/api/demo

GET类型

参数为limit 非必填 ,表示获取数据限制

我们打开postman,请求demo接口,如图所示:

这个demo接口由于可以不填任何参数,和请求头部信息,所以操作非常简洁,输入接口地址,选择接口请求方法,点击send直接请求成功,或者接口的响应状态码,和响应值。那如果get请求有参数入参怎么请求呢?如图所示:

在Params中以键值对的形式填写参数,大家发现这个时候接口响应值里面的info字段只有一条数据信息了,那当然limit为2时,就返回2条数据。细心的朋友可能已经发现get接口的参数直接拼接在url后面,如:http://127.0.0.1:5000/api/demo?limit=1,get接口也可以直接在浏览器中请求,获取响应值

三:理解cookie

通过一个实例12306查询车次信息接口来理解讲接口请求头信息中的cookie,打开浏览器开发者工具获取接口地址,请求方法,参数,响应值等如图所示:

然后像实例一在postman里面输入接口地址和参数,发送请求,但是,请求失败了,小朋友,你是否有很多问号:

那为什么在网页中这个接口请求没有问题,到postman里面来就失败了。其实当web开发人员去向后端请求这个接口的时候,会把浏览器一些网站信息,用户的登录状态,用户的浏览习惯等通过Request Headers中的cookie传给后端,但是postman就不会。那我就在postman里面模拟添加请求头信息(头信息在浏览器中可以获取),如图所示:

果然就请求成功了,是不是有点意思,通过俩个get接口实例,理解接口测试和cookie。那么接下来我们看一个post类型的接口,顺便理解一下常见的token,这也是面试常问的一个问题,问到接口鉴权如何测试

四:接口测试实战之post接口

接口信息:地址127.0.0.1:5000/api/login POST类型

参数 username 表示登录用户名

密码 password 表示登录密码

Content-Type:application/json

如图所示:

post接口首先选择Body参数,再输入参数发送请求。我们可以看到登录接口如果请求成功了,就返回了一个token,就像身份证ID,每个人都有都是唯一的。该token就是这个人员的通行证。

token鉴权,简单来说,就是要不要登录,一般来说,一个系统的所有接口都需要鉴权才能请求,换句话说先要请求这个系统的登录接口,拿到服务端响应认证,才能去请求其它接口,一般放在请求头headers或者body参数里面。如果请求其它接口没有传token就会提示无权限访问或者未登录

对于http协议我们已经掌握常用的getpost接口测试,那当然还有其它很多类型的接口测试,比如delete,put等,还有入参为form-data类型的接口,比如文件上传接口

那么对于不同协议的接口,比如webservice等,dubbo接口我们都需要通过实例去了解。当理解了各种类型的接口测试之后,我们就可以进行接口自动化了,得到一套落地有效的接口自动化测试方案,可以根据实际测试需求自主封装搭建适合项目的测试框架。

文章首发于公众号:程序员一凡,关注我学习更多软件测试知识

直接请求接口_「软件测试教程」基于postman进行接口测试实战相关推荐

  1. 得出来的视差图左边有黑色补上原图_「PS教程」Photoshop使用通道快速抠图的详细教程...

    抠图的方法很多,通道抠图的话就有很多刚学习PS的小伙伴不知道了,今天我就来演示一次使用通道给人物抠图的全过程,教程还算蛮详细大家可以跟着教程一起来学习一遍. 先看一下原图: 一.打开通道面版 我们首先 ...

  2. ai如何旋转画布_「AI教程」使用AI制作3D立体文字效果

    今天macdown小编要通过AI制作一种3D立体字体,主要的知识点是混合工具的使用.Shift键.Alt键的灵活运用.3D旋转命令.投影效果的创建等,学会后可以应用在需要的设计中,比如海报设计,log ...

  3. golang 接口_「Golang系列」 深入理解Golang Empty Interface (空接口)

    空接口可用于保存任何数据,它可以是一个有用的参数,因为它可以使用任何类型. 要理解空接口如何工作以及如何保存任何类型,我们首先应该理解名称背后的概念. 接口 这是Jordan Oreilli对空接口的 ...

  4. dreamweaver排列顺序怎么用_「化妆教程」粉底液是怎么用的?用在哪个具体步骤顺序...

    今日学而仿给大家带来一节粉底液"化妆教程",详情见下文:当然你也可以购买在线教程(如下):手把手教会你(文末) 粉底液怎么使用? 教您打粉底的技巧,涂抹粉底液其实不需要任何复杂的技 ...

  5. java 常用 函数式接口_「java8系列」神奇的函数式接口

    前言 在上一篇Lambda的讲解中我们就提到过函数式接口,比如:Consumer consumer = (s) -> System.out.println(s);其中Consumer就是一个函数 ...

  6. python canvas画弧度_「万圣节教程」不给糖就捣乱,用Python绘制有趣的万圣节南瓜怪...

    关于万圣节 万圣节又叫诸圣节,在每年的11月1日,是西方的传统节日;而万圣节前夜的10月31日是这个节日最热闹的时刻.在中文里,常常把万圣节前夜(Halloween)讹译为万圣节(All Saints ...

  7. excel表格打印每页都有表头_「Excel教程」10个处理Excel表头的小技巧,让你的表格更高级...

    打开表格的第一眼看到的便是表头,它就如同人的容貌,打扮的精致会给人留下深刻的印象,表头做的精致一是方便工作,二是给人耳目一新的效果.那么,怎样操作? 一.如何批量插入表头? 工作中领导要的不仅仅是准确 ...

  8. sobel算子原理_「学术论文」基于Sobel算法图像边缘检测的FPGA实现

    摘要: 针对嵌入式软件无法满足数字图像实时处理速度问题,提出用硬件加速器的思想,通过FPGA实现Sobel边缘检测算法.通过乒乓操作.并行处理数据和流水线设计,大大提高算法的处理速度.采用模块的硬件设 ...

  9. boot客户管理系统源码_「计算机毕设」基于SpringBoot开发的仓库管理系统

    前言 大家好,我是it分享师,今天给大家带来一个计算机的毕设项目.基于Springboot开发的仓库管理系统,底层权限控制已经基于shiro实现了,直接可以作为二次开发框架使用! 使用技术 本套系统采 ...

最新文章

  1. mysqlbinlog -v与-vv --base64-output 与不加的区别
  2. [ARM-assembly]-ARMv8-A64指令集总结和学习
  3. python中的字符串处理
  4. python中字符串文件如何打开_python-字符串·文件·集合操作
  5. CSS提高需要关注的国外网站
  6. mongodb比较操作符笔记
  7. win10 安装 framework3.5
  8. 英特尔傲腾驱动下载_什么是英特尔傲腾内存?
  9. nutch代码分析第一篇——综述
  10. linux如何后台执行程序?
  11. Python的文献计量分析流程实现--含代码
  12. 19深度探秘搜索技术_基于slop参数实现近似匹配以及原理剖析和相关实验
  13. 什么样的项目适合UI自动化测试
  14. Windows 7钉子户
  15. Plotly Express 详细使用指南,20组案例从入门到进阶(附源代码)
  16. 飞腾cpu服务器浪潮信息,浪潮发布国产飞腾CPU服务器
  17. html图片转换特效,css3图片切换效果
  18. ibm imm挂载iso文件_IBM IMM调试方式
  19. hevc 基于均值的RDO模式删减
  20. kubernetes-二进制部署的时候,遇到kubelet启动失败,服务报错Unit kubelet.service entered failed state.

热门文章

  1. as2.0与php交互,Flash(AS2.0)与php通讯 分享
  2. php反射机制与依赖注入,利用反射机制实现基本的依赖注入
  3. bootstrap 垂直居中 布局_网页布局都有哪种?一般都用什么布局?
  4. 《Reids 设计与实现》第十二章 复制
  5. JAVA ThreadPoolExecutor线程池
  6. Centos/linux开放端口
  7. 第一周例行报告(补)
  8. 2018牛客多校第一场 B.Symmetric Matrix
  9. Spring 知识点提炼-转
  10. HDU 1827:Summer Holiday(强连通)