探索接口测试:SOAP、RestFul规则、JMeter及市面上的接口测试工具

引言

  在当今软件开发领域,接口测试扮演着至关重要的角色。随着系统变得日益复杂和互联,对于内部和外部接口的测试变得愈发关键。接口测试不仅仅是验证接口的正确性,更是确保系统的稳定性、安全性和性能优越性的关键一环。

  本篇博客将带您深入了解接口测试的分类、不同架构的设计、关键测试重点以及目前市面上常用的接口测试工具。我们将探讨从 SOAP、RPC、RestFul 到 HTTP 协议的架构演变,并聚焦于 JMeter 这个强大的接口测试工具,详细介绍其简介、安装、常用组件以及执行接口测试的步骤。


一、接口测试分类

内部接口:
测试被测系统各个子模块之间的接口,或被测系统提供给内部使用的接口

外部接口:

  1. 被测系统调用外部的接口
  2. 系统对外提供的接口

接口测试重点:检查接口参数传递的正确性,接口功能的正确性,输出结果的正确性,以及对各种异常情况的容错处理,以及权限控制、分页,调用次数限制.

二、目前接口架构设计

  1. 基于SOAP架构,基于XML规范。基于WebService协议。特点:接口地址?wsdl结尾。

  2. 预计RPC架构,基于dubbo协议,thrift协议。SpringCloud微服务。

  3. 基于RestFul架构,基于json规范,预计http协议。

RestFul规则:

接口地址:http://127.0.0.1/user ,get(查询用户) post(新增用户) put(修改用户) delete(删除用户)

  • Json数据格式:只有两种数据类型,
  • 键值对:{key : value}
  • 数组:[arry1, arry2]

http协议详解:

请求:请求行,请求头,请求正文
  1. 请求行:
    POST http://47.107.116.139/phpwind/index.php?m=u&c=login&a=dorun HTTP/1.1

  2. 请求头:

  • HOST 47.107.116.139(请求主机)
  • Connectoin: keep-alive(保存活跃)
  • Content-Length: 112(内容长度)
  • Accept: application/json, text/javascript, */8, q=0.01(数据格式)
  • X-Request-With: XMLHttpRequest(异步请求)
  • User-Agent:Mozilla/5.0(Windows NT)(客户端类型)
  • Content-Type:(内容类型)
  • Cookie:csrf_token=xxxxxx(Cookie信息,客户端发送给服务器的Cookie)
  1. 请求正文

username=msxy%password=msxy&backurl=httpxxxxx

响应:响应行,响应头,响应正文
  1. 响应行:

HTTP/1.1 200 OK

  1. 响应头
  • Server: nginx
  • Data: Tue, 24 Aug 2021 12:23:12 GMT
  • Conten-Type: text/html; charset=UTF-8
  • Transfer-Encoding: chunked
  • X-Powered-By: PHP/5.6.36
  • Set-Cookie: (服务器发送给客户端的Cookie信息)
  1. 响应正文
  • xxx

三、市面上的接口测试工具

Jmeter+Ant+Git+Jenkins

Postman+Newman+Git+Jenkins

soapui, apipost, fildder, charles

四、Jmeter简介,安装,环境变了的配置

基于Java语言压力测试工具,可以做接口测试,也可以做性能测试。

安装:JDK1.8以上,配置环境变量

五、Jmeter目录介绍

jmeter目录

backups:脚本备份目录,格式JML

bin:存放Jmeter的启动脚本,配置文件,模块文件

Jmeter.bat 启动Jmeter

jmeter.prperites 核心配置文件。

docs:离线帮助文档。

extras:存放于第三方的集成构建文件,继承Ant,Jenkins

lib目录:存放jar包

licensce:许可证文件

六、Jmeter常用组件

1.测试计划:起点,所有组件的容器。

2.线程组:代表一定数量的用户

3.取样器:向服务器发送请求的最小单元

4.逻辑控制器:结合取样器实现一些复杂的逻辑。

5.前置处理器:在请求之前的工作

6.后置处理器:在请求之后的工作

7.断言:用于判断请求释放成功

8.定时器:负责在请求之间的延迟间隔,固定,高斯,随机

9.配置元件:配置信息

10.监听器:负责收集结果

顺序:非常重要

测试计划》线程组》配置元件》前置处理器》定时器》取样器(请求)》后置处理器》断言》监听器。

作用域:非常重要

必须组件:测试计划,线程组,取样器

辅助组件:除必须组件外

辅助组件作用于父组件,同级组件,以及同级组件下的所有子组件

七、Jmeter执行接口测试

  1. 拿到API文档(实在不行就Fiddler抓包),熟悉接口业务,接口地址,鉴权方式,入参,出参,错误码。

  2. 编写接口测试用例。

测试思路:
正例:

输入正常入参,查看接口正常返回。

反例:

鉴权:空,错误,鉴权过期,鉴权次数限制…
参数:空,类型错误,长度错误,错误码的覆盖。
其他,黑名单,分页

  1. 使用接口测试工具执行

  2. Jmeter+Ant+Git+Jemkins实现持续集成输出接口测试报告,通过电子邮件发送。


接口测试作为软件开发和维护的重要组成部分,为确保系统的稳定性和可靠性提供了重要保障。通过了解不同类型的接口、架构设计以及掌握接口测试工具的使用,我们能够更加高效地测试接口的正确性和性能。接口测试不仅仅是发现问题,更是为系统的优化和提升提供了有力支持。让我们携手探索接口测试的世界,不断提升软件质量,为用户带来更好的体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/172719.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Linux]进程等待

文章目录 3.进程等待3.1什么是进程等待3.2为什么要进程等待3.3如何进行进程等待?1.wait2.waitpid2.1函数的讲解2.2status的理解2.3代码理解 3.4学后而思1.直接用全局变量获取子进程退出码可以吗?如下2.进程具有独立性 退出码是子进程的数据 父进程是如何拿到退出码的3.对内存…

云匣子 FastJson反序列化RCE漏洞复现

0x01 产品简介 云匣子是租户连接云资源的安全管理工具,帮助云租户更加安全、精细的管理云上的虚拟机、数据库等资源。 云安宝结合多年的运维和安全实践,将云上的运维和安全有机结合,实现对运维过程的事前规划、事中控制和 事后审计。在此之上…

nodejs微信小程序+python+PHP-婚纱摄影预约系统的设计与实现-安卓-计算机毕业设计

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…

Linuxfork,写时拷贝

1.prinf隐藏的缓冲区 1.思考:为什么会有缓冲区的存在? 2.演示及思考? 1).演示缓存区没有存在感 那为什么我们感觉不到缓冲区的存在呢?我们要打印东西直接就打印了呢? 我们用代码演示一下: 比如打开一个main.c,输入内容如下: #include <stdio.h> int main() { …

LLaMA 2:开源的预训练和微调语言模型推理引擎 | 开源日报 No.86

facebookresearch/llama Stars: 36.0k License: NOASSERTION LLaMA 2 是一个开源项目&#xff0c;用于加载 LLaMA 模型并进行推理。 该项目的主要功能是提供预训练和微调后的 LLaMA 语言模型的权重和起始代码。这些模型参数范围从 7B 到 70B 不等。 以下是该项目的关键特性…

kubernetes架构及核心组件简单介绍

目录 整体架构控制面kube-apiserver访问控制通知 kube-scheduler概述默认调度策略 kube-controller-manageretcd架构Raft协议日志复制 数据面kubeletkube-proxy 整体架构 集群架构图 控制面 控制面是kubernetes的核心组件&#xff0c;负责管理和控制集群的整体行为&#xf…

jdk17安装全方位手把手安装教程 / 已有jdk8了,安装JDK17后如何配置环境变量 / 多个不同版本的JDK,如何配置环境变量?

&#x1f9f8;欢迎来到dream_ready的博客&#xff0c;&#x1f4dc;相信您对博主首页也很感兴趣o (ˉ▽ˉ&#xff1b;) 学生邮箱白嫖/免费安装JetBrains全家桶(IDEA/pycharm等) —— 保姆级教程 目录 1、下载jdk17 2、安装jdk17 3、配置环境变量 -> 电脑无其他jdk 4、…

Echarts title标题配置项的使用 更改颜色 副标题

title配置项主要是对图表的标题进行配置 title配置项所有属性文档 title&#xff1a; { ...... }设置标题 副标题 text: 简单创建柱形图,//图表标题 subtext: 副标题,如果想对副标题设置 超链接 边框 颜色 宽度…等 比如&#xff1a;设置超链接 sublink:‘…’, 设置标题位置…

10_7iic整体框架流程

在内核中 这边把iic整个流程分成了 4层 iic_dtiver at24_iic_eeprom 也就是我们的自己的驱动 i2c-core.c 核心层 i2c/busses/i2c-s3c2410.c 控制器层 平台总线驱动层,或者也是图中的设备树 硬件描述 我们假设 板子上有三个iic控制器 0 1 2 这里在控制器0 上挂载了gt24c02的eep…

STK Components 二次开发-创建地面站

1.地面站只需要知道地面站的经纬高。 // Define the location of the facility using cartographic coordinates.var location new Cartographic(Trig.DegreesToRadians(-75.596766667), Trig.DegreesToRadians(40.0388333333), 0.0); 2.创建地面站 创建方式和卫星一样生成对…

如何使用JMeter测试导入接口/导出接口

今天一上班&#xff0c;被开发问了一个问题&#xff1a;JMeter调试接口&#xff0c;文件导入接口怎么老是不通&#xff1f;还有导出文件接口&#xff0c;不知道文件导到哪里去了&#xff1f; 我一听&#xff0c;这不是JMeter做接口测试经常遇到的嘛&#xff0c;但是一时半会又…

解决视口动画插件jquery.aniview.js使用animate.css时无效的问题(最新版本网页视口动画插件的使用及没作用、没反应)

当网站页面元素进入视口时自动应用过渡效果。CSS过渡效果可以为网页添加动画效果&#xff0c;并提供了一种平滑的转换方式&#xff0c;使元素的变化更加流畅和生动。而通过jQuery插件来获取页面滚动位置决定合适调用动画效果。 一、官网 animate.css官网 一款强大的预设css3动…

Linux的基本指令(四)

目录 前言 时间相关的指令 date指令 时间戳 日志 时间戳转化为具体的时间 cal指令 find指令&#xff08;十分重要&#xff09; grep指令&#xff08;行文本过滤工具&#xff09; 学前补充 什么是打包和压缩&#xff1f; 为什么要打包和压缩&#xff1f; 怎么打包和…

【数据结构】二叉树oj题

在处理oj题之前我们需要先处理一下之前遗留的问题 在二叉树中寻找为x的节点 BTNode* BinaryTreeFind(BTNode* root, int x) {if (root NULL)return NULL;if (root->data x)return root;BTNode* ret1 BinaryTreeFind(root->left, x);BTNode* ret2 BinaryTreeFind(ro…

Windows系统下更新后自带的画图软件出现马赛克bug

一.bug的样子&#x1f357; 在使用橡皮后&#xff0c;原来写的内容会变成马赛克。而我们希望它是纯白色的。 二.解决方法&#x1f357; 第一步 第二步 第三步 三. 解决后的效果&#x1f357; 用橡皮擦随便擦都不会出现马赛克了。 更新过后&#xff0c;想用win自带的画图软件会出…

【前沿技术了解】web图形Canvas、svg、WebGL、数据可视化引擎的技术选型

目录 Canvas&#xff1a;HTML5新增 Canvas标签&#xff08;画布&#xff09; 渲染上下文canvas.getContext(contextType[, contextAttributes]) 上下文类型&#xff08;contextType&#xff09; 上下文属性 (contextAttributes) 示例 动画 setInterval(function, delay)…

2023/11/26总结

一些学习记录&#xff1a; 在对数据库进行一系列操作的时候&#xff0c;遇到一个问题&#xff0c;在插入数据的时候&#xff0c;我数据库对应的是自增id&#xff0c;但是插入后想获取到这个id去使用。我以为是不可以马上获取的&#xff0c;然后看到 项目进度 购物车&#xff…

[pyqt5]PyQt5之如何设置QWidget窗口背景图片问题

目录 PyQt5设置QWidget窗口背景图片 QWidget 添加背景图片问题QSS 背景图样式区别PyQt设置窗口背景图像&#xff0c;以及图像自适应窗口大小变化 总结 PyQt5设置QWidget窗口背景图片 QWidget 添加背景图片问题 QWidget 创建的窗口有时并不能直接用 setStyleSheet 设置窗口部分…

【学习记录】从0开始的Linux学习之旅——驱动模块编译与加载

一、概述 Linux操作系统通常是基于Linux内核&#xff0c;并结合GNU项目中的工具和应用程序而成。Linux操作系统支持多用户、多任务和多线程&#xff0c;具有强大的网络功能和良好的兼容性。本文主要讲述如何编译及加载linux驱动模块。 二、概念及原理 应用程序通过系统调用与内…

软件介绍02- flameshot截图软件(linux系统可用)

1 软件介绍 在Windows和mac平台一直都使用着snipaste截图&#xff0c;非常好用&#xff0c;又能够钉图。遗憾是并没有开发linux版本&#xff0c;真不知道为什么。 好在终于找到一款截图软件&#xff0c;flameshot截图软件&#xff0c;可以平替snipaste。 下载网址&#xff1a;…