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

【性能测试】Jenkins+Ant+Jmeter自动化框架的搭建思路

前言
前面讲了Jmeter在性能测试中的应用及扩展。随着测试的深入,我们发现在性能测试中也会遇到不少的重复工作。 比如某新兴业务处于上升阶段,需要在每个版本中,对某些新增接口进行性能测试,有时还需要在一天中的不同时段分别进行性能测试,如果一味地采取手动触发的方式,当接口数较多时,就会出现大量重复工作。 这个时候我们应该思考,是否有一种方法,可以定时、批量运行已经设计好的Jmeter脚本,并自动输出测试报告。下面就结合Jenkins+Ant+Jmeter,介绍一种性能测试自动化框架的搭建方法。

自动化框架的搭建思路
思路: Jmeter可以做接口测试,也能做压力测试,而且是开源软件; Ant是基于Java的构建工具,可以跨平台; Jenkins是持续集成工具。 将这三者结合起来可以搭建一套Web HTTP接口性能测试的持续构建环境,实现性能测试自动化。 搭建步骤: 1、在Jmeter主机上安装Ant,Ant用来构建,构建Jmeter的执行、报告的生成等任务; 2、通过Jenkins进行调度Ant,构建测试。测试执行完成后,再通过Jenkins调用Ant生成报告。 下面将分别介绍这两个步骤。

JMeter+Ant集成
1、引入Apache Ant Apache Ant是由Apache软件基金会提供的一个将软件编译、测试、部署等步骤联系在一起的自动化工具,由Java语言开发,所以支持跨平台。 2、Apache Ant的特点

Ant 是最完整的基于 Java 语言开发的构建和部署工具;
Apache Ant构建是通过XML文件来定义的,Ant通过解析这个XML文件,调用target树来执行各种任务;
Ant 擅长自动完成重复任务;
3、Apache Ant构建测试计划 Apache Ant的安装及环境配置大家可自行Google,在此不赘述。构建方法如下。 步骤一: 构建Jmeter测试计划。

步骤二: 将/apache-jmeter-5.1.1/extras目录下的ant-jmeter-1.1.1.jar文件copy到Ant所在/apache-ant-1.9.14/lib目录下。 步骤三: 修改Jmeter的配置文件。 (1)修改原因:

Jmeter执行结果文件默认保存的不是xml格式,无法转化成html格式;
Jmeter执行结果文件中很多数据不保存,但是我们需要在测试报告中体现;
(2)配置文件路径: /apache-jmeter-5.1.1/bin/jmeter.properties (3)修改方法如下图所示:

 步骤四: 修改Ant中的配置文件build.xml。 Ant采用xml格式建立构建文件,默认名称是build.xml。原始的build.xml文件路径为:/apache-jmeter-5.1.1/extras。 修改完成,将build.xml文件与Jmeter脚本放在同一个路径下面。 修改方法如下:

 4、批量执行Jmeter脚本 进入jmx脚本目录,执行Ant。进入reports目录查看生成的测试报告:

Jenkins+Ant
1、搭建Jenkins Jenkins的安装及配置可自行Google。下面步骤为Jenkins调度Ant进行构建的方法。 步骤一: 下载所需插件。例如:Performance plugin、HTML Publisher plugin、Ant Plugin 等。 步骤二: 配置中添加Jmeter插件:Performance plugin、HTML Publisher plugin。 功能:展示Jmeter执行结果。

 

 步骤三: 配置中 添加 Ant插件:Ant Plugin。 功能:用来执行Ant

 2、修改build.xml文件 修改build.xml文件生成jtl和html文件的目录到Jenkins的工作目录下

 3、项目构建 配置好上述文件及目录,点击立即构建,就可以调用Ant自动执行Jmeter脚本了

 性能测试结果

进入html目录查看生成的测试报告。可以看到,报告中给出了样本数、错误率、最大和最小响应时间,并给出出错请求的具体情况,对于接口的性能有一个大概的了解。

 

 结束语

当然,目前使用的报告模板中不包含QPS,且性能结果图表较少,可以通过修改build.xml文件扩展输出报告的内容及格式。同时,可以在Jenkins中配置定时自动执行及报告的邮件自动发送,大大扩展的工具。

相关文章:

【性能测试】Jenkins+Ant+Jmeter自动化框架的搭建思路

前言 前面讲了Jmeter在性能测试中的应用及扩展。随着测试的深入,我们发现在性能测试中也会遇到不少的重复工作。 比如某新兴业务处于上升阶段,需要在每个版本中,对某些新增接口进行性能测试,有时还需要在一天中的不同时段分别进行…...

ARM体系结构与异常处理

目录 一、ARM体系架构 1、ARM公司概述 ARM的含义 ARM公司 2.ARM产品系列 3.指令、指令集 指令 指令集 ARM指令集 ARM指令集 Thumb指令集 (属于ARM指令集) 4.编译原理 5.ARM数据类型 字节序 大端对齐 小端对齐 …...

招聘网站—Hive数据分析

招聘网站—Hive数据分析 第1关:统计最热门的十种职业(招聘人数最多) #进入hive hive#在hive中创建数据库 mydb create database mydb;#使用数据库 mydb use mydb;#创建表 recruitcleaned 并使用"/t"分割字段 create table re…...

双指针滑动窗口整理1——长度最小的子数组、水果成篮

209. 长度最小的子数组 这篇文章主要是想针对这题 209. 长度最小的子数组,总结一下双指针或是滑动窗口的小细节。对于暴力算法,我们就不再阐释了。 算法原理: 滑动窗口主要是通过控制循环终止节点j,并移动i来缩放窗口。具体而言…...

textarea之换行、replace、\n、br、innerHTML

文章目录 前言换行符介绍JavaScript部分html部分 前言 textarea标签本身不识别换行功能,回车换行用的是\n换行符,输入时的确有换行的效果,但是渲染时就只是一个空格了。这时就需要利用换行符\n和br标签的转换进行处理。 换行符介绍 表格 序…...

SKD240

SKD240 系列智能电力仪表 SKD240 系列智能电力仪表是陕西斯科德智能科技有限公司自主研发、生产的。 产品概述 - 点击了解详情 SKD240采用先进的微处理器和数字信号处理技术(内置主芯片采用32位单片机, 采用32位浮点型真有效值处理数据),测量…...

大数据采集怎么做呢?

随着互联网的发展,大数据已经成为了一个非常热门的话题。大数据采集是大数据分析的第一步,也是非常重要的一步。本文将介绍大数据采集的基本概念、采集的方法、采集的难点以及采集的注意事项等方面,希望能够对大家有所帮助。 一、大数据采集…...

【学习日记】操作系统-入门知识-个人学习记录

我的学习笔记链接: MyLinuxProgramming 参考资料 CSAPP操作系统导论OSTEP √APUEhttps://stevens.netmeister.org/631软件调试王道-操作系统操作系统真象还原小林coding-图解系统https://xiaolincoding.com嵌入式软件开发笔试面试指南Linux是怎样工作的2020 南京大…...

ChatGPT自动生成思维导图

🍏🍐🍊🍑🍒🍓🫐🥑🍋🍉 ChatGPT自动生成思维导图 文章目录 🍐问题引入🍐具体操作markmapXmind 🐳结语 &#x1f…...

count(0)、count(1)和count(*)、count(列名) 的区别

当我们对一张数据表中的记录进行统计的时候,习惯都会使用 count 函数来统计,但是 count 函数传入的参数有很多种,比如 count(1)、count(*)、count(字段) 等。 到底哪种效率是最好的呢?是不是 count(*) 效率最差? 一.…...

python爬虫入门,10分钟就够了,这可能是我见过最简单的基础教学

一、基础入门 1.1什么是爬虫 爬虫(spider,又网络爬虫),是指向网站/网络发起请求,获取资源后分析并提取有用数据的程序。 从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HTML代码/JSON数据/二进制数据&…...

华为OD机试真题 Java 实现【记票统计】【牛客练习题】

一、题目描述 请实现一个计票统计系统。你会收到很多投票,其中有合法的也有不合法的,请统计每个候选人得票的数量以及不合法的票数。 (注:不合法的投票指的是投票的名字不存在n个候选人的名字中!!) 数据范围:每组输入中候选人数量满足 1≤n≤100 ,总票数量满足 1≤…...

.NET并行计算

一段很简答的&#xff0c;模拟多任务并发的测试代码。 private void button_Click(object sender, EventArgs e) { List<Action> actions new List<Action>(); for (int i 0; i < 30; i) { //匿…...

Python:Python编程:金融量化交易

金融量化交易 1. numpy2. scipy3. Pandas3.1 : Series 3.2&#xff1a; DataFrame代码示例 在金融量化交易中&#xff0c;下面几个模块是应用的比较广泛的 numpy (Numberic Python) : 提供大量的数值编程工具&#xff0c;可以方便的处理&#xff1a;向量矩阵等运算&#xff0c;…...

「HTML和CSS入门指南」canvas 标签详解

什么是 canvas 标签? 在 HTML 中,canvas 标签用于在网页中绘制图形、动画和其他复杂的视觉效果。它是一个独立的标签,并且可以使用 JavaScript 来操纵和渲染其内容。使用 canvas 标签可以帮助您创造交互性更强、生动更具吸引力的用户界面和体验。 canvas 标签的基本语法 以…...

【JS】1699- 重学 JavaScript API - WebSockets API

❝ 前期回顾&#xff1a; 1. Page Visibility API 2. Broadcast Channel API 3. Beacon API 4. Resize Observer API 5. Clipboard API 6. Fetch API 7. Performance API 8. Web Storage API ❞ WebSockets API 提供了一种在客户端和服务器之间建立持久连接的机制&#xff0c;使…...

String s = new String(“xyz“) 创建了几个对象?

这个问题相信每个学习 java 的同学都不陌生&#xff0c;作为一个经典的面试题&#xff0c;到现在工作这么多年了我真是认为挺操蛋的一个问题&#xff0c;在网上到现在你仍然可以看见很多讨论这个问题的人&#xff0c;其中不乏工作很多年的人都有争论&#xff0c;我认为还是有必…...

STL库(1)

STL库&#xff08;1&#xff09; vectorvector介绍vector使用初始化元素访问内存扩容插入删除 listlist介绍初始化&#xff0c;元素访问插入删除元素 vector和list区别 vector vector介绍 vector是可以改变大小的数组的容器。其内存结构和数组一样&#xff0c;使用连续的存储…...

玻璃制品行业丨外贸业务管理难点及解决方案

玻璃作为一种重要的建筑材料&#xff0c;在国际贸易中一直占有一定的份额。随着国外市场需求量的不断增加&#xff0c;对玻璃制品的技术含量要求越来越高&#xff0c;需要在研发方面的投入也逐步加大。由于国际市场竞争激烈&#xff0c;想要做玻璃制品行业的外贸公司&#xff0…...

Spring Boot如何实现自定义Spring Boot启动器

Spring Boot如何实现自定义Spring Boot启动器 在Spring Boot中&#xff0c;启动器&#xff08;Starter&#xff09;是一组依赖项的集合&#xff0c;它们一起提供了某个特定的功能。使用Spring Boot启动器可以让我们更加方便地集成第三方库和框架&#xff0c;并且可以避免版本冲…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...