IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 如何做接口测试 -> 正文阅读

[开发测试]如何做接口测试

什么是接口测试

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

可以简单的理解为接口就是URL,URL通过Get或者Post请求像服务器发送一些东西,然后得到一些相应的返回值,本质就是数据的传输与接收。

为什么要做接口测试

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

②若前端页面修改,接口测试完成,后端不受影响不用重复去测试接口

③测试接口可以发现一些,页面无法发现的Bug。例如,登录接口有错误登录次数限制,错误次数大于3次则禁止登录,通常前端会在错误次数达到限制时,置灰登录按钮,无法进行点击,仅通过页面去测试就会认为功能是正常的。这种情况下调用登录接口,可以绕过前端无法点击“登录”按钮的限制,通过UI、接口共同来验证功能是否满足需求。

④能够更好的进行测试覆盖,也相对容易实现自动化持续集成,可以减少人工回归成本与时间,缩短测试周期

请求结构

1.请求协议

  • http — 普通的http请求
  • https — 加密的http请求,传输数据更加安全
  • ftp — 文件传输协议,主要用来传输文件

2.请求IP,就是指提供接口的系统所部署的服务器地址

3.请求端口:如果不填端口,默认是80,否则需要填写端口号

4.接口路径:指系统提供的接口在什么位置

5.接口参数:Get请求,参数在接口路径后,用“?”来表示路径地址完了,剩下的都是参数了,用“&”来区分参数个数。Post请求,参数存放在请求数据包的消息体中。

6.HTTP请求详解

  • HTTP 请求方式
GET --- 通过请求URI得到资源 (常用)
POST --- 用于添加新的内容 (常用)
PUT --- 用于修改某个内容 (常用)
DELETE --- 删除某个内容 (常用)
CONNECT --- 用于代理进行传输,如使用SSL
OPTIONS --- 询问可以执行哪些方法
PATCH --- 部分文档更改
PROPFIND (wedav) --- 查看属性
PROPPATCH (wedav) --- 设置属性
MKCOL (wedav) --- 创建集合(文件夹)
COPY (wedav) --- 拷贝
MOVE (wedav) --- 移动
LOCK (wedav) --- 加锁
UNLOCK (wedav) --- 解锁
TRACE --- 用于远程诊断服务器
HEAD --- 类似于GET, 但是不返回body信息,用于检查对象是否存在,以及得到对象的元数据
  • HTTP请求头

????????请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度。

Accept: */*    //用户代理可处理的媒体类型
Accept-Encoding: gzip, deflate, br   //优先的内容编码
Accept-Language: zh-CN,zh;q=0.9    //优先的语言
Cache-Control: no-cache      //控制缓存的行为
Connection: keep-alive      //逐跳首部、链接的管理
Cookie:xxx
Host: gitee.com   //请求资源所在的服务器
Pragma: no-cache   //报文指令
Referer: https://gitee.com/profile/emails   //对请求中URI的原始获取放
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36    //http客户端程序的信息
  • HTTP请求体

????????请求体就是请求等正文了,可以有很多种请求体,如json格式、xml格式、html格式、二进制格式( 多数用于图片 )、字符串格式

  • HTTP响应状态码
1xx 消息,一般是告诉客户端,请求已经收到了,正在处理,别急...
2xx 处理成功,一般表示:请求收悉、我明白你要的、请求已受理、已经处理完成等信息.
3xx 重定向到其它地方。它让客户端再发起一个请求以完成整个处理。
4xx 处理发生错误,责任在客户端,如客户端的请求一个不存在的资源,客户端未被授权,禁止访问等。
5xx 处理发生错误,责任在服务端,如服务端抛出异常,路由出错,HTTP版本不支持等。

200 OK
即处理成功

303 See Other
我把你redirect到其它的页面,目标的URL通过响应报文头的Location告诉你。

304 Not Modified
告诉客户端,你请求的这个资源至你上次取得后,并没有更改,你直接用你本地的缓存吧,我很忙哦,你能不能少来烦我啊!
404 Not Found
你最不希望看到的,即找不到页面。
500 Internal Server Error
看到这个错误,你就应该查查服务端的日志了,肯定抛出了一堆异常。

接口测试

前面的基本信息了解后,接口测试就很简单了

1.拿到接口的url地址

2.查看接口是用什么方式发送

3.添加请求头,请求体发送

4.查看返回结果,校验返回结果是否正确

接口的信息来自开发人员提供的接口文档,可以是word或者swagger等形式。

下图所示,就是一个接口调用过程展示,通过查看返回结果,状态码401可以知道接口调用失败了,并且给出了明确的错误信息,该接口需要登录状态才能进行调用。

然后在Header中补充cookie信息再次进行调用,接口调用成功。

testurl和cookie添加到了全局变量中,接口调用时直接引用该变量,当接口较多、参数改变时,就不用每个接口挨着去改了,操作更灵活。

接口测试用例

一个接口通常是有输入输出的,输入就是我们常见的入参,输出有时有,有时没有。调用相关接口,接口会执行相关处理逻辑。

接口测试的用例设计,主要从输入和接口处理两方面考虑:

1)针对输入,可按照参数类型进行设计。根据参数的类型,运用等价类、边界法、特殊值、遍历法以及一些特殊字符的输入去考虑

2)针对接口处理,可按照逻辑进行用例设计。如约束条件分析(数值限制、状态限制、关系限制、权限限制等)、操作对象分析(用户A只能查询自己账户的余额,不能查询其他用户的)、状态转换分析、时序分析等

3)针对输出,可根据结果进行分析设计。接口处理正确的结果可能只有一个,但是错误异常返回结果有很多情况很多值。如果知道返回结果有很多种,就可以针对不同结果设计用例。覆盖返回码也是用例设计的一种思路。

接口自动化

前面已经说到过接口测试能够更好的进行测试覆盖,也相对容易实现自动化持续集成,对比UI自动化投入小,效益高,下面列举几种接口自动化的实现方式。

1.使用Postman,将被测接口按流程加入到集合中,定期执行。

2.Postman+Newman+Jenkins.?Newman就是命令行版的Postman,它可以使用Postman导出的collection文件直接在命令行运行,把Postman界面化运行的操作用命令行代替。

3.jmeter+ant+jenkins,jmeter不光可以用来测试性能,配合其他工具也能够实现接口自动化,但这种方式配置文件比较麻烦,个人不太推荐

4.成熟的接口测试平台,如Yapi、Metersphere,由专业的团队开发,图形化界面,没有代码也能轻松上手使用。

?5.自己写代码实现,Python+Request、Python+Django等,需要一定的代码基础

? ?接口自动化的实现首先要根据自己的技术实力和技术功底来选择,测试人员的第一目标都是保障交付项目的质量,前期可以使用工具来实现,但工具都有局限性,掌握了一门开发语言,就能够结合实际开发属于自己的测试框架,也能够提升自己的竞争力。

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-08-27 12:10:10  更:2021-08-27 12:11:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 22:42:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码