当前位置: 首页 > news >正文

Jmeter实现接口自动化

自动化测试理论知识

  • 什么是自动化测试?
让程序或工具代替人为执行测试用例
  • 什么样的项目适合做自动化?
1、项目周期长 --多长算长?(自己公司运营项目)
2、需求稳定(更多具体功能/模块)
3、需要回归测试(电商、金融、部队、对外运营的项目)
  • 自动化测试用例覆盖率?
上限:全部的功能用例执行自动化。--基本不可能。
1、有些用例能去做,而不去做(配置功能,不常用)
2、有些用例都不能做自动化(如:图片上的文字)
公司:
1、如果自动化用例只覆盖业务线,覆盖率10~20%
2、好点的公司,自动化覆盖40%~60%
  • 自动化测试与功能测试的区别?–脚本执行层面
1、自动化脚本可重复执行
2、功能脚本是靠人眼睛进行断言,自动化是靠工具或程序进行断言。
  • 自动化测试归属什么测试?
归属:功能测试(原因:自动化测试使用的用例都是功能的用例)
  • 自动化测试实现方式?
1、工具
2、代码
  • 自动化测试分类
1、ui自动化(web、app、win32)
2、接口自动化

自动化脚本

  • 如何设置自动化脚本
1、使用程序或工具断言
2、可重复运行

添加断言

  • 注册、登录

image-20240629154951244

提示:1、图片验证码使用响应断言->断言状态码2、其他全部使用响应断言3、依赖接口不用断言,只需断言被测接口。(如:注册依赖图片验证码、短信验证码,只需要断言注册即可)
  • 认证、充值、开户、投资

image-20240629155305067

提示:
1、断言内容来源预期结果,预期结果一般情况与实际结果一致。文字偏差大概看意思是否一样,如果不一样,那就是缺陷。
2、看实际结果是否有明确提示错误原因和引导信息。如果有就通过,否则就失败。

可重复执行

  • 如何可以做到可重复执行?
1、清除测试数据(已注册数据、造借款数据)
2、脚本按指定顺序执行
  • 清除测试数据

    • 明确清除哪些数据?
    1、删除已注册的手机号
    2、造数据(借款标)
    
    • 这些数据在哪个库、哪个表?
    库:czbk_member
    表:
    mb_member(会员主表)
    mb_member_info(信息表)
    mb_member_login_log(登录日志)
    mb_member_register_log(注册日志) 
    
    • 确定sql语句

    分析

    image-20240629161632910

    1、mb_member、mb_member_register_log直接使用phone字段进行过滤删除
    2、mb_member_info、mb_member_login_log必须配合mb_member表的id进行关联查询,在删除。
    

    查询sql(确认sql语句是否正确)

-- 一、确认表中是否有数据
# 1、查询确认语句 mb_member
select * from mb_member where phone in
("13600001111","13600001112","13600001113","13600001114")
# 2、mb_member_info
select * from mb_member_info i INNER JOIN mb_member m on i.member_id=m.id
where m.phone in
("13600001111","13600001112","13600001113","13600001114")
# 3、mb_member_login_log
select * from mb_member_login_log l INNER JOIN mb_member m on
l.member_id=m.id where m.phone in
("13600001111","13600001112","13600001113","13600001114")
# 4、mb_member_register_log
select * from mb_member_register_log where phone in
("13600001111","13600001112","13600001113","13600001114")

删除sql

-- 二、删除sql语句
# 1、删除 mb_member_info
delete i.* from mb_member_info i INNER JOIN mb_member m on
i.member_id=m.id where m.phone in
("13600001111","13600001112","13600001113","13600001114")
# 2、删除 mb_member_login_log
delete l.* from mb_member_login_log l INNER JOIN mb_member m on
l.member_id=m.id where m.phone in
("13600001111","13600001112","13600001113","13600001114")
# 3、删除 mb_member_register_log
delete from mb_member_register_log where phone in
("13600001111","13600001112","13600001113","13600001114")
# 4、删除 mb_member
delete from mb_member where phone in
("13600001111","13600001112","13600001113","13600001114")
-- 二、删除sql语句
# 1、删除 mb_member_info
delete i.* from mb_member_info i INNER JOIN mb_member m on
i.member_id=m.id where m.phone in
("${phone1}","${phone2}","${phone3}","${phone4}")
# 2、删除 mb_member_login_log
delete l.* from mb_member_login_log l INNER JOIN mb_member m on
l.member_id=m.id where m.phone in
("${phone1}","${phone2}","${phone3}","${phone4}")
# 3、删除 mb_member_register_log
delete from mb_member_register_log where phone in
("${phone1}","${phone2}","${phone3}","${phone4}")
# 4、删除 mb_member
delete from mb_member where phone in
("${phone1}","${phone2}","${phone3}","${phone4}")
  • 使用jmeter连接数据库、执行sql语句。
    • 添加数据库连接池并配置

image-20240629162940848

jdbc:mysql://121.43.169.97/czbk_member?allowMultiQueries=true
allowMultiQueries=true :开启批量执行sql语句
  • 添加jdbc请求执行sql语句

image-20240629163912799

注意:
1、每个sql语句结尾需要使用;
2、Query Type:选中Callable Statement
  • 脚本按指定顺序执行

image-20240629164254742

持续集成

持续集成理论

  • 什么是持续集成?

image-20240629165409292

通过一款工具(Jenkins)持续自动集成代码
  • CI工具最常用啥?
Jenkins
  • 通过Jenkins工具运行脚本的本质是啥?
运行脚本的命令
jmeter -n -t 脚本.jmx -l 结果.txt -e -o 目录
  • 持续集成所依赖的环境是啥?
1、jenkins环境:jdk jenkins.war
2、运行脚本的环境:newman、jmeter、jdk、python、pytest
  • 持续集成运行脚本的方式有哪些?–脚本在哪里放?
1、项目托管平台(github、gitree、gitlabe)
2、Jenkins服务器(将脚本从托管平台下载到jenkins服务器本地,调用命令去执行)

脚本管理

  • 通过工具上传托管平台

image-20240629195544722

  • 通过命令上传

image-20240629195824949

创建git仓库:

image-20240629195914903

配置

  • 执行脚本
配置:
1、源码管理(将脚本下载到jenkins服务器)
2、构建(在jenkins本地服务器执行脚本的命令)
1、执行删除报告目录和结果目录命令
mac/linux:rm -rf re*
windows: del result.txt rmdir /Q/S report
2、x:/xx/apache-jmeter-5.1.1/bin/jmeter.bat -n -t 02-auto_script.jmx -l
resut.txt -e -o report
  • 测试报告

image-20240629201436484

报告无内容或无样式:
jenkins 管理->执行命令
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")
  • 发送邮件

image-20240629201702621

image-20240629201717327

相关文章:

Jmeter实现接口自动化

自动化测试理论知识 什么是自动化测试? 让程序或工具代替人为执行测试用例什么样的项目适合做自动化? 1、项目周期长 --多长算长?(自己公司运营项目) 2、需求稳定(更多具体功能/模块) 3、需要…...

【大模型】多模型在大模型中的调度艺术:解锁效率与协同的新境界

多模型在大模型中的调度艺术:解锁效率与协同的新境界 引言一、多模型与大模型的概念解析二、多模型调度的必要性三、多模型调度的关键技术3.1 负载均衡与动态分配3.2 模型间通信与协作3.3 模型选择与优化 四、多模型运行优化策略4.1 异构计算平台的利用4.2 模型压缩…...

LeetCode 704, 290, 200

目录 704. 二分查找题目链接标签思路代码 290. 单词规律题目链接标签思路代码 200. 岛屿数量题目链接标签思路代码 704. 二分查找 题目链接 704. 二分查找 标签 数组 二分查找 思路 这道题是 二分查找 最经典的一道题,掌握了本题的思想就进入了 二分 思想的大…...

如何利用Java进行大数据处理?

如何利用Java进行大数据处理? 大家好,我是微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 1. 引言 在当今信息爆炸的时代,处理大数据是许多应用程序和系统的核心需求之一。Java作为一种…...

【论文通读】GUICourse: From General Vision Language Model to Versatile GUI Agent

GUICourse: From General Vision Language Model to Versatile GUI Agent 前言AbstractMotivationSolutionGUICourseGUIEnvGUIEnv-globalGUIEnv-local GUIActGUIAct (web-single)GUIAct (web-multi)GUIAct (smartphone) GUIChat ExperimentsMain ResultAblation Study Conclusi…...

王道考研数据机构:中缀表达式转为后缀表达式

实现方法: 初始化一个栈,用于保存暂时还不能确定运算顺序的运算符。从左到右处理各个元素,直到末尾。可能遇到三种情况: 遇到操作数。直接加入后缀表达式遇到界限符。遇到“(”直接入栈;遇到“)”则依次弹出栈内运算符并加入后缀表达式&…...

PL/SQL安装+汉化教程

PL/SQL安装教程 一、安装: 登陆官网:PL/SQL Developer - Allround Automations下载 下载PL/SQL稳定版本12.0.7 根据自己计算机版本安装相适配的版本。我这里安装X64-bit版本 进行安装: 根据情况去更改安装,我这里全部下一步…...

Qt | Qt 线程相关类概述和举例

Qt 是一个广泛用于跨平台应用开发的框架。在 Qt 中,多线程支持是其核心特性之一,它允许开发者在不同平台上创建并发应用。以下是 Qt 中与线程相关的类概述及其使用示例。 Qt 中的线程相关类 QThread QThread 是 Qt 中用于创建和管理线程的基类。通过派生并重写 run() 函数…...

Linux 复现Docker NAT网络

Linux 复现Docker NAT网络 docker 网络的构成分为宿主机docker0网桥和为容器创建的veth 对构成。这个默认网络命名空间就是我们登陆后日常使用的命名空间 使用ifconfig命令查看到的就是默认网络命名空间,docker0就是网桥,容器会把docker0当成路由&…...

HBuilder X 小白日记03-用css制作简单的交互动画

:hover选择器,用于选择鼠标指针浮动在上面的元素。 :hover选择器可用于所有元素,不只是链接 :link选择器 设置指向未被访问页面的链接的样式 :visited选择器 用于设置指向已被访问的页面的链接 :active选择器 用于活动链接...

【深度学习练习】心脏病预测

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 一、什么是RNN RNN与传统神经网络最大的区别在于,每次都会将前一次的输出结果,带到下一隐藏层中一起训练。如下图所示: …...

创建react的脚手架

Create React App 中文文档 (bootcss.com) 网址:creat-react-app.bootcss.com 主流的脚手架:creat-react-app 创建脚手架的方法: 方法一(JS默认): 1. npx create-react-app my-app 2. cd my-app 3. …...

用例导图CMind

突然有一些觉悟,程序猿不能只会吭哧吭哧的低头做事,应该学会怎么去展示自己,怎么去宣传自己,怎么把自己想做的事表述清楚。 于是,这两天一直在整理自己的作品,也为接下来的找工作多做点准备。接下来…...

C++ 仿函数

一、介绍 CSTL中的仿函数,又被称为函数对象,其实就是:重载了()运算符的类。 因为在使用重载的operator()时,类似于函数调用,因此被称为仿函数。 ※注意※:仿函数本质上是一个类,不是函数。 二…...

Redhat 安装 docker 网络连接超时问题

目录 添加阿里云的Docker CE仓库 更新YUM缓存 安装 Docker Engine 启动并设置Docker自启动 验证 Docker 安装 [userlocalhost ~]$ sudo yum-config-manager --add-repohttps://download.docker.com/linux/centos/docker-ce.repo 正在更新 Subscription Management 软件仓库…...

Java面试题:undo log和redo log

undo log和redo log的区别 缓冲池(buffer pool): 主内存中的一个区域,可以缓存磁盘上经常被操作的数据,在执行crud时先操作缓冲池的数据以减少磁盘io 数据页(page): InnoDB存储引擎管理的最小单元,每页大小为16kb,页中存储的是行数据 redo log 重做日志,用来实现任务的持…...

【Scrapy】Scrapy 中间件等级设置规则

准我快乐地重饰演某段美丽故事主人 饰演你旧年共寻梦的恋人 再去做没流着情泪的伊人 假装再有从前演过的戏份 重饰演某段美丽故事主人 饰演你旧年共寻梦的恋人 你纵是未明白仍夜深一人 穿起你那无言毛衣当跟你接近 🎵 陈慧娴《傻女》 Scrapy 是…...

SDK环境的安装(测试使用)

1、安装 将文件解压至目录,我的目录为:D:\Program Files\Android 解压后如下: 下载链接如下: sdk下载 提取码见文章最后: 2、配置环境 1、在环境变量中,选择系统变量,点击新建。 变量名:ANDROID_HOME 变量值:“你自己的android-sdk安装路径” (例如我的:D:\Pro…...

【matlab】【python】爬虫实战

目录 引言 具体步骤 1.设置请求选项 2.发送请求并获取响应 3.设置正则表达式 4.执行正则表达式匹配 matlab完整代码 python代码示例 引言 在当今这个信息爆炸的时代,数据已成为推动社会进步和企业发展的核心动力之一。随着互联网的普及和技术的飞速发展&am…...

Android TV跨平台开发心得

这半年来陆陆续续做了一堆poc,刚开始是flutter,结果领导叫停了,说有其他部门做一样的事,真不巧;后来是react native,开发了个demo,上报上去了已经;现在又要做android nativewebview …...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...

【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?

FTP&#xff08;File Transfer Protocol&#xff09;本身是一个基于 TCP 的协议&#xff0c;理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况&#xff0c;主要原因包括&#xff1a; ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...

Python训练营-Day26-函数专题1:函数定义与参数

题目1&#xff1a;计算圆的面积 任务&#xff1a; 编写一个名为 calculate_circle_area 的函数&#xff0c;该函数接收圆的半径 radius 作为参数&#xff0c;并返回圆的面积。圆的面积 π * radius (可以使用 math.pi 作为 π 的值)要求&#xff1a;函数接收一个位置参数 radi…...

跨平台商品数据接口的标准化与规范化发展路径:淘宝京东拼多多的最新实践

在电商行业蓬勃发展的当下&#xff0c;多平台运营已成为众多商家的必然选择。然而&#xff0c;不同电商平台在商品数据接口方面存在差异&#xff0c;导致商家在跨平台运营时面临诸多挑战&#xff0c;如数据对接困难、运营效率低下、用户体验不一致等。跨平台商品数据接口的标准…...

动态规划-1035.不相交的线-力扣(LeetCode)

一、题目解析 光看题目要求和例图&#xff0c;感觉这题好麻烦&#xff0c;直线不能相交啊&#xff0c;每个数字只属于一条连线啊等等&#xff0c;但我们结合题目所给的信息和例图的内容&#xff0c;这不就是最长公共子序列吗&#xff1f;&#xff0c;我们把最长公共子序列连线起…...

【技巧】dify前端源代码修改第一弹-增加tab页

回到目录 【技巧】dify前端源代码修改第一弹-增加tab页 尝试修改dify的前端源代码&#xff0c;在知识库增加一个tab页"HELLO WORLD"&#xff0c;完成后的效果如下 [gif01] 1. 前端代码进入调试模式 参考 【部署】win10的wsl环境下启动dify的web前端服务 启动调试…...

CppCon 2015 学习:Simple, Extensible Pattern Matching in C++14

什么是 Pattern Matching&#xff08;模式匹配&#xff09; ❝ 模式匹配就是一种“描述式”的写法&#xff0c;不需要你手动判断、提取数据&#xff0c;而是直接描述你希望的数据结构是什么样子&#xff0c;系统自动判断并提取。❞ 你给的定义拆解&#xff1a; ✴ Instead of …...