jmeter之接口功能自动化
一、接口测试简述
接口:用来连接前端,后端还有移动端的程序模块。由于不同端的工作进度不一样,需要对最开始出来的接口进行接口测试。
接口分类:POST,GET,PUT,DELETE。
POST请求的数据是放在WebForm里面的,以表单的形式提交;GET请求的数据是拼接在URL中的,以URL的形式提交数据。
不同接口类型的差异:
1.参数提交的方式;
2.请求数据的大小;
3.安全性。
接口测试主要测试要点:
1、检查请求是否成功,默认请求成功时状态码是200
2、检查返回数据的正确性(即返回的数据是否与预期结果一致)与格式
3、检查接口的容错性,即传递数据的类型错误时是否可以处理
4、接口参数的边界值。例如,传递的参数足够大或为负数时,接口是否可以正常处理
5、接口的性能,接口处理数据的时间也是测试的一个方法。这直接影响用户的使用体验
6、接口的安全性
二、jmeter工具栏及常用组件介绍

1、Jmeter常用组件介绍——HTTP请求(GET)
线程组->添加->Sampler->HTTP请求

2、Jmeter常用组件介绍——HTTP请求(POST)
线程组->添加->Sampler->HTTP请求

3、Jmeter常用组件介绍——响应断言
HTTP请求->添加->断言->响应断言

4、Jmeter常用组件介绍——HTTP请求默认值
线程组->添加->配置元件->JDBC Connection Configuration

5、Jmeter常用组件介绍——HTTP信息头管理器
线程组->添加->配置元件->HTTP信息头管理器

6、Jmeter常用组件介绍——用户定义的变量
线程组->添加->监听器->查看结果树

7、Jmeter常用组件介绍——聚合报告
线程组->添加->监听器->聚合报告

8、Jmeter常用组件介绍——JDBC Connection Configuration
线程组->添加->配置元件->JDBC Connection Configuration

9、Jmeter常用组件介绍——JDBC Request
线程组->添加->配置元件->JDBC Request

10、Jmeter常用组件介绍——正则表达式提取器
线程组->添加->后置处理器->正则表达式提取器

三、接口测试过程

4、问题
一、如何引用变量?
1、定义变量 给需要被引用的参数值定义一个变量名,变量名是唯一的。 2、引用变量 在需要使用参数值的地方引用变量名,引用格式为: ${变量名} PS:引用变量名用到的符号均为英文字符。
二、当接口有依赖关系,即某个接口的输入参数是另一个接口的请求结果时,应该如何进行参数传递?
1、当依赖接口所需入参出现在被依赖接口的返回结果中时,
在被依赖接口的【 HTTP请求】下添加【正则表达式提取器】,使用(.+?)将所需数据从返回结果中提取出来
2、当依赖接口所需入参没有在被依赖接口的返回结果中出现时
在被依赖接口的HTTP请求后面添加【 JDBC Connection Configuration 】和【 JDBC Request】,从数据库中查询需要的数据,并在【 JDBC Request】下添加【正则表达式提取器】使用(.+?)将所需参数从查询结果中提取出来
步骤流程:请求‘注册短信验证码’接口
短信验证码验证’接口依赖‘注册短信验证码’接口
1、请求发送验证码接口

2、添加JDBC Connection Configuration连接数据库

3、添加JDBC Request查询‘注册短信验证码’接口产生的数据

4、查看数据库查询结果

5、提取验证码

6、引用验证码名称,请求‘短信验证码验证’接口

三、为什么要连接数据库进行数据查询?
当接口之间有依赖关系,但是被依赖接口的返回结果中并没有直接返回依赖接口所需的数据时,便需要从数据库中查询出需要的测试数据。 例如: ‘短信验证码验证’需要获取‘注册短信验证码’生成的验证码,但‘注册短信验证码’的返回结果为: {“StatusCode”:200,“DataCount”:0,“Data”:1,“Error”:null},并没有直接返回验证码,因此需要连接数据库查询接口生成的验证短信,并用正则表达式提取出验证码,同时定义一个引用名称,便于‘短信验证码验证’引用。
四、当多个接口可以串成一个完整业务流程时如何处理?
前提:熟悉业务逻辑和接口所实现的功能
最好实行新增操作,然后进行一系列的操作后再删除
例如:
1.新增标签
2.新增/删除指定标签下的医生/药店/商品,同时更改标签名称
3.获取指定标签下的医生/药店/商品详情
4.删除指定标签下的医生/药店/商品
5.删除标签
以上5个接口可以按照顺序串成一个完整业务流程,在Jmeter中需要按照业务逻辑顺序来安排接口先后位置。
具体实现如下:
1.请求‘新增标签’;
2.从数据库中查询新增的标签ID,引用标签ID,请求‘新增/删除指定标签下的医生/药店/商品,同时更改标签名称’;
3.引用标签ID,请求‘获取指定标签下的医生/药店/商品详情’;
4.引用标签ID,请求‘删除指定标签下的医生/药店/商品’;
5.引用标签ID,请求‘删除标签’。
如此可以保证测试数据的一致性,且不会产生过多垃圾数据。
五、如果生成的csv测试报告文件显示乱码怎么办?
1.用txt方式打开csv文件
2.文件另存为UTF-8编码格式,替换原来的csv文件
3.打开csv文件优化测试报告
4.另存为.xlsx格式
PS:最后一步一定要另存为普通excel格式,否则数据位置会错乱。
相关文章:
jmeter之接口功能自动化
一、接口测试简述 接口:用来连接前端,后端还有移动端的程序模块。由于不同端的工作进度不一样,需要对最开始出来的接口进行接口测试。 接口分类:POST,GET,PUT,DELETE。 POST请求的数据是放在…...
【openGL4.x手册07】几何着色器
目录 一、说明二、关于几何着色器三、原始输入/输出规范3.1 实例 四、输入五、输出5.1 分层渲染 六、输出限制 一、说明 几何着色器对于渲染管线设计是一个新生事物;目前对应于几何着色器的资料不多,并且说法不一,因此如何用几何着色器&…...
鸿蒙OpenHarmony开发实战:【MiniCanvas】
介绍 基于OpenHarmony的Cavas组件封装了一版极简操作的MiniCanvas,屏蔽了原有Canvas内部复杂的调用流程,支持一个API就可以实现相应的绘制能力,该库还在继续完善中,也欢迎PR。 使用说明 添加MiniCanvas依赖 在项目entry目录执行…...
【JavaEE初阶系列】——单例模式 (“饿汉模式“和“懒汉模式“以及解决线程安全问题)
目录 🚩单例模式 🎈饿汉模式 🎈懒汉模式 ❗线程安全问题 📝加锁 📝执行效率提高 📝指令重排序 🍭总结 单例模式,非常经典的设计模式,也是一个重要的学科&#x…...
flutter-elinux的基本介绍及安装调试
搜集到两个很有用的网站: 1、flutter-elinux的基本介绍:https://juejin.cn/post/7257285697383612453 2、flutter-elinux的安装调试等:https://github.com/sony/flutter-elinux/wiki 其中,在flutter-elinux设置环境变量时&#…...
二分查找法总结
目录 1、思路讲解(LC704)2、代码思路讲解(循环不变量)(1) 左闭右闭(2)左闭右开(3)总结:左开右闭和左闭右开(4)复杂度分析 …...
Python工具-清理Unity(批量深度)清理U3D项目工程保留关键工程文件
前沿 1. Unity工程越来越多,很久不用的工程里存在了很多无用的大文件夹,极大的影响电脑容量。 2. 我电脑里面U3D工程只有17个,但容量就高达60GB,使用自己编写的工具清理后,减到了30GB多。清理了不是很重要的文件和文件…...
vue 安装脚手架报错 certificate has expired
vue 安装脚手架的时候报错,报错信息如下: 错误信息:npm ERR! request to https://registry.npm.taobao.org/vue%2fcli failed, reason: certificate has expired 翻译:npm ERR!请求到https://registry.npm.taobao.org…...
使用 Python 快速开始机器学习
🔗 快速开始 PyTorch|使用 Python 建立深度学习模型 认识 PyTorch 1.1 Torch 与 PyTorch 1.2 安装 PyTorch 1.3 验证安装并查看 PyTorch 版本PyTorch 深度学习模型的建立范式 2.1 准备数据 2.2 定义模型 2.3 训练模型 2.4 评估模型 2.5 做出预测为预测任…...
CCDP.02.OS正确部署后的Dashboard摘图说明
前言 在部署成功OpenStack后,应该可以在浏览器打开Dashboard,并对计算资源(这里主要是指VM)进行管理,也可以在Dashboard上面查看OpenStack是否存在错误,下面,已针对检查的关键点,用红…...
【计算机视觉】Gaussian Splatting源码解读补充(二)
第一部分 本文是对学习笔记之——3D Gaussian Splatting源码解读的补充,并订正了一些错误。 目录 三、相机相关scene/cameras.py:class Camera 四、前向传播(渲染):submodules/diff-gaussian-rasterization/cuda_rast…...
Java transient 关键字
Java字段不想序列化怎么办 在 Java 中,如果某个字段不想被序列化(即不希望被写入到序列化的数据流中),可以使用 transient 关键字进行标记。通过在字段前加上 transient 关键字,可以告诉 Java 序列化机制忽略该字段&am…...
前端工程化(三)邂逅Webpack和打包过程
目录 Vue项目加载Webpack 安装Webpack的默认打包创建局部的 webpack Vue项目加载 JavaScript的打包: 将ES6转换成ES5的语法; TypeScript的处理,将其转换成JavaScript; Css的处理: CSS文件模块的加载、提取&a…...
Gradle v8.5 笔记 - 从入门到进阶(基于 Kotlin DSL)
目录 一、前置说明 二、Gradle 启动! 2.1、安装 2.2、初始化项目 2.3、gradle 项目目录介绍 2.4、Gradle 项目下载慢?(万能解决办法) 2.5、Gradle 常用命令 2.6、项目构建流程 2.7、设置文件(settings.gradle…...
Jmeter-基础元件使用(二)-属性及对数据库简单操作
一、Jmeter属性 当我们想要在不同线程组中使用某变量,就需要使用属,此时Jmeter属性的设置需要函数来进行set和get操作 1.创建set函数 2.然后采用Beanshell取样器进行函数执行 3.调用全局变量pro_id 4.将上面生成的函数字符串粘贴到另一个线程组即可…...
docker 的八大技术架构(图解)
docker 的八大技术架构 单机架构 概念: 应用服务和数据库服务公用一台服务器 出现背景: 出现在互联网早期,访问量比较小,单机足以满足需求 架构优缺点: 优点:部署简单,成本低 缺点࿱…...
LeetCode-热题100:131. 分割回文串
题目描述 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。 示例 1: 输入: s “aab” 输出: [[“a”,“a”,“b”],[“aa”,“b”]] 示例 2: 输入&am…...
常用相似度计算方法总总结
一、欧几里得相似度 1、欧几里得相似度 公式如下所示: 2、自定义代码实现 import numpy as np def EuclideanDistance(x, y):import numpy as npx np.array(x)y np.array(y)return np.sqrt(np.sum(np.square(x-y)))# 示例数据 # 用户1 的A B C D E商品数据 [3.3…...
【漏洞复现】WordPress Plugin NotificationX 存在sql注入CVE-2024-1698
漏洞描述 WordPress和WordPress plugin都是WordPress基金会的产品。WordPress是一套使用PHP语言开发的博客平台。该平台支持在PHP和MySQL的服务器上架设个人博客网站。WordPress plugin是一个应用插件。 WordPress Plugin NotificationX 存在安全漏洞,该漏洞源于对用户提供的…...
AI新工具(20240322) 免费试用Gemini Pro 1.5;先进的AI软件工程师Devika;人形机器人Apptronik给你打果汁
✨ 1: Gemini Pro 1.5 免费试用Gemini Pro 1.5 Gemini 1.5 Pro是Gemini系列模型的最新版本,是一种计算高效的多模态混合专家(MoE)模型。它能够从数百万个上下文Token中提取和推理细粒度信息,包括多个长文档和数小时的视频、音频…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...
