Jmeter +Maven+jenkins 接口性能全自动化测试

news2024/11/23 23:51:39

背景:

首先用jmeter录制或者书写性能测试的脚本,用maven添加相关依赖,把性能测试的代码提交到github,在jenkins配置git下载性能测试的代码,配置运行脚本和测试报告,配置运行失败自动发邮件通知,这样一来性能测试的job配置完成。接着,把性能测试的job配置成开发job的下游job,一旦开发有了新的代码提交运行开发自己的job后,就会自动触发我们性能测试的job。这样我们就实现了接口性能测试的全自动化,我们只需要关注测试失败的邮件!

1 环境搭建
下载安装 jdk &eclipse。
下载安装jenkins。
下载maven 并进行解压。
下载jmeter并解压。
2 准备性能测试的脚本
启动 jmeter (双击 jmeter解压目录下的bin\jmeter.bat)。
用jmeter书写test cases,并导出(推荐)。

或者你可以用jmeter录制脚本,确保运行通过后,导出。
当然你可以选择用badboy录制脚本,确保运行通过后,导出。
3 为性能测试脚本创建maven project
打开eclipse,并创建一个 maven project。
在src/test/目录下创建jmeter文件夹把准备好的性能测试的脚本复制到这个文件夹下

 在src/test/目录下创建resource文件夹,并把测试模板(E:\apache-jmeter-3.2\apache-jmeter-3.2\extras的如下文件)复制到这个resource文件下。

 并把如下文件从apache-jmeter-3.2\bin目录下复制到src/test/jmeter文件里

  • 在maven脚本里添加jmeter-maven-plugin相关依赖如下:
  • <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
     
        <groupId>com.performance.test</groupId>
        <artifactId>PushNotificationPerformanceTest</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>
     
        <name>PushNotificationPerformanceTest</name>
        <url>http://maven.apache.org</url>
     
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <jmeter.result.jtl.dir>${project.build.directory}\jmeter\results</jmeter.result.jtl.dir>
            <jmeter.result.html.dir>${project.build.directory}\jmeter\html</jmeter.result.html.dir>
            <jmeter.result.html.dir1>${project.build.directory}\jmeter\html1</jmeter.result.html.dir1>
            <ReportName>TestReport</ReportName>
        </properties>
     
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>3.8.1</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
     
        <build>
            <plugins>
                <plugin>
                    <groupId>com.lazerycode.jmeter</groupId>
                    <artifactId>jmeter-maven-plugin</artifactId>
                    <version>2.1.0</version>
                    <executions>
                        <execution>
                            <id>jmeter-tests</id>
                            <goals>
                                <goal>jmeter</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>xml-maven-plugin</artifactId>
                    <version>1.0-beta-3</version>
                    <executions>
                        <execution>
                            <phase>verify</phase>
                            <goals>
                                <goal>transform</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <transformationSets>
                            <transformationSet>
                                <dir>${jmeter.result.jtl.dir}</dir>
                                <stylesheet>src\test\resources\jmeter-results-report-loadtest.xsl</stylesheet>
                                <outputDir>${jmeter.result.html.dir}</outputDir>
                                <fileMappers>
                                    <fileMapper
                                        implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
                                        <targetExtension>html</targetExtension>
                                    </fileMapper>
                                </fileMappers>
                            </transformationSet>
                            <transformationSet>
                                <dir>${jmeter.result.jtl.dir}</dir>
                                <stylesheet>src\test\resources\jmeter.results.shanhe.me.xsl</stylesheet>
                                <outputDir>${jmeter.result.html.dir1}</outputDir>
                                <fileMappers>
                                    <fileMapper
                                        implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
                                        <targetExtension>html</targetExtension>
                                    </fileMapper>
                                </fileMappers>
                            </transformationSet>
                        </transformationSets>
                    </configuration>
                    <!-- using XSLT 2.0 -->
                     <dependencies>
                       <dependency>
                       <groupId>net.sf.saxon</groupId>
                       <artifactId>saxon</artifactId>
                       <version>8.7</version>
                       </dependency>
                   </dependencies>
                </plugin>
            </plugins>
        </build>
    </project>复制代码

    4 在eclipse运行性能测试脚本

  • 选中性能测试的project 右击,然后在下拉框中选择run as -》maven build ,然后在弹出的对话框的Goals 写上verify,最hou点击run(如下图)。
  • 运行后会有测试结果文件如下图 
  • 5 在jenkins 运行性能测试脚本并配置测试结果
    在jenkins上安装如下插件:
    Maven Integration plugin Maven,用于jenkins可以创建maven job
    Git plugin ,用于从github下载性能测试的代码;
    Performance plugin ,用于显示性能报告;
    HTML Publisher plugin ,用于显示相关接口测试结果的报告。
    在jenkins创建maven job

在jenkins上配置运行脚本

 在jenkins上配置测试结果报告

  • 在jenkins 配置jdk和maven路径。
  • 配置完了,点击build now,便开始运行,运行结果如下图:

  • 总之:根据上面的步骤我们很容易就完成了对接口性能测试的全自动化过程!

    ps:
    关于显示测试结果:
    1. 如在jenkins使用html publisher查看报告时,发现显示不美观,不全的现象,很多东西显示不了,
    解决这个问题可以在jenkins系统管理中输入以下脚本运行,就可以解决这个问题了

  • System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")复制代码

    2.html结果好多为空,请把jmeter.property的相应的false改为true。 3.测试报告出现NaN 请在pom.xml里加上 using XSLT 2.0 依赖。

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

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

相关文章

陪诊小程序开发|陪诊系统源码|陪诊系统开发

近年来&#xff0c;一个新兴的产业异军突起。 专业陪诊医生主要是陪一些孩子不在身边的老人&#xff0c;或者家人不在身边的孕妇&#xff0c;看病、检查等&#xff0c;其实这个小程序不只是看病而已 . &#xff0c;以及更多功能。 配套小程序功能展示&#xff1a; 1、预诊预约…

23种设计模式之桥接模式(Bridge Pattern)

前言&#xff1a;大家好&#xff0c;我是小威&#xff0c;24届毕业生&#xff0c;在一家满意的公司实习。本篇文章将23种设计模式中的桥接模式&#xff0c;此篇文章为一天学习一个设计模式系列文章&#xff0c;后面会分享其他模式知识。 如果文章有什么需要改进的地方还请大佬不…

【Selenium下】——全栈开发——如桃花来

目录索引 获取元素信息&#xff1a;获取单个文本和属性&#xff1a;*获取文本&#xff1a;**获取属性&#xff1a;* 获取多个文本和属性值&#xff1a; 等待&#xff1a;显示等待&#xff1a;time等待&#xff1a; EC&#xff1a;常见方法&#xff1a; 前进后退:选项卡管理&…

同步管理1000个设备的VLAN数据,这都行?

大家好&#xff0c;我是老杨。 很多网工在工作中&#xff0c;经常会遇到企业网的交换机上需要保持VLAN信息同步的情况。 因为只有这样&#xff0c;才可以以保证所有交换机都能进行正确的数据转发。 小型企业网中&#xff0c;你可以直接登录到每台交换机上进行VLAN的配置和维…

使用Atmel Studio开发Arduino的ATmega328P单片机

摘要&#xff1a;我们知道Arduino开发板常用的芯片是Atmel公司生产的AVR微控制器系列。最常见的是ATmega328P&#xff0c;被广泛用于Arduino Uno开发板。其他常用的AVR芯片包括ATmega2560和ATmega32U4。使用Arduino平台开发AVR的单片机非常方便。Arduino IDE提供了一个非常简洁…

中睿天下成为国家信息安全漏洞库(CNNVD)一级技术支撑单位

近日&#xff0c;中国信息安全测评中心公布2023年度国家信息安全漏洞库技术支撑单位名单&#xff0c;中睿天下荣获中国信息安全测评中心颁发的“国家信息安全漏洞库&#xff08;CNNVD&#xff09;技术支撑单位等级&#xff08;一级&#xff09;证书”&#xff0c;成为该领域最高…

在tomcat中手动部署应用

以maven做为构建工具的web应用为例&#xff0c;如下图&#xff1a; 在tomcat中运行应用&#xff0c;运行的是应用的字节码文件&#xff0c;所以我先执行package生命周期&#xff0c;新增target文件夹&#xff0c;如下&#xff1a; 打开上面的war文件&#xff0c;跟第一个红框里…

Gradio的web界面演示与交互机器学习模型,全局状态与会话状态《4》

全局状态和会话状态&#xff0c;对于程序员来说都是很熟悉的了&#xff0c;开发中会经常遇到&#xff0c;这里看下在Gradio中是怎么使用的&#xff0c;以及对GPT2的一点介绍 一、Global State全局状态 如果定义的函数想要访问外部的数据&#xff0c;可以将变量写在外面成为一…

赛效: 用佐糖办公工具怎么黑白照片上色

了解更多办公工具的相关应用教程&#xff0c;可到赛效官方网站查看应用软件或应用问答栏目了解更多~ 老旧的照片一般是黑白色&#xff0c;黑白色的照片看起来比较陈旧&#xff0c;这时候可以借助一些在线处理图片的工具来还原照片的颜色&#xff0c;哪些在线办公工具支持给黑白…

动环监控系统这个用途,简直太实用了!

烟草仓库对环境要求高&#xff0c;而人工管理库房无法做到24小时的检查管理&#xff0c;如果突发高温、潮湿等现象&#xff0c;易引发霉变、虫蛀等情况&#xff0c;导致出现损失。 为了提高烟草的存放质量&#xff0c;达到防治霉菌的目的&#xff0c;减少人为监测存在误差而造成…

融云跨平台 SDK 自动生成技术的探索和实践

移步【融云全球互联网通信云】回复“地图”免费领 移步公众号报名报名 WICC 出海嘉年华 作为即时通讯云的领创品牌&#xff0c;融云的通信云产品广泛地服务于社交沟通、直播互动、实时社区、商业沟通等场景。关注【融云全球互联网通信云】了解更多 随着应用场景的丰富和开发…

华为设备内网常用访问控制案例配置

实现 vlan 10不能访问其它vlan但可以上网&#xff0c;用traffic-filter实现 vlan20 不能访问其它vlan但可以上网&#xff0c;用mqc实现 vlan 30不能上外网&#xff0c;但可以和其它网段通信&#xff0c;用mqc实现 交换机配置 : [Huawei]dis current-configuration sysname Hua…

总结JVM重要知识点

一.类加载和创建对象的过程 1.类加载 1.编译 : 将源码文件(.java)编译成JVM可以解释的.class文件 . 语法分析>语义分析>注解处理 , 生成class文件 2.加载 : 装载 : 字节码本来存储在硬盘上 , 需要运行时 , 有类加载系统负责将类的信息加载到内存中(方法区) , 使用的是类…

距离6月18日DAMA-CDGA/CDGP认证考试还有31天,报名从速

6月18日DAMA-CDGA/CDGP数据治理认证考试开放报名中&#xff01; 考试开放地区&#xff1a;北京、上海、广州、深圳、长沙、呼和浩特、杭州、南京、济南、成都、西安。其他地区凑人数中… DAMA-CDGA/CDGP数据治理认证班进行中&#xff0c;报名从速&#xff01; DAMA认证为数据管…

crow-han(基于go-micro框架的微服务脚手架)-02-添加一个微服务实战(已k8s为例)

文章目录 1. 目录结构2. 添加自己的微服务2.1 配置文件和必要的函数2.1.1 配置文件2.1.2 连接k8s 2.2 k8s服务相关代码2.3 proto2.3.1 创建proto文件2.3.2 编译proto 2.4 handler2.5 k8s的main函数 3. gateway调用3.1 调用微服务3.2 router 4. 添加文档 swagger5. 调试5.1 启动…

自学黑客(网络安全)有哪些技巧——初学者篇

很多人说&#xff0c;要想学好黑客技术&#xff0c;首先你得真正热爱它。 热爱&#xff0c;听着多么让人激情澎湃&#xff0c;甚至热泪盈眶。 但很可惜&#xff0c;“热爱”这个词对还没入门的小白完全不管用。 如果一个人还没了解过你就说爱你&#xff0c;不是骗财就是骗色…

第三十四章 使用react-redux进一步管理状态

react-redux和redux是两个不同的概念。 redux是一个重要的数据管理库。redux的作用是帮助处理应用程序中复杂的数据管理和状态管理&#xff0c;它可以让你的应用程序更加可维护和可扩展。 react-redux是一个react库&#xff0c;它可以帮助react开发者在react应用程序中集成re…

Java经典笔试题—day11

Java经典笔试题—day11 &#x1f50e;选择题&#x1f50e;编程题&#x1f95d;最近公共祖先&#x1f95d;最大连续bit数 &#x1f50e;结尾 &#x1f50e;选择题 (1)下面哪个标识符是合法的&#xff1f; A.9HelloWorld B._Hello World C.Hello*World D.Hello$World D Java中标…

操作符讲解1---C语言

目录 前言&#xff1a; 1.什么是操作符 2.算术操作符 3.移位操作符 4.位操作符 5.逻辑操作符 5.1逻辑与 5.2逻辑或 5.3练习 5.4逻辑非 前言&#xff1a; 博主这几天都在积累知识&#xff0c;俗话说&#xff1a;”只有多输入才能有输出”。在写博客之前&#xff0c;也…

一文1000字从0到1实现Jenkins+Allure+Pytest的持续集成

一、配置 allure 环境变量 1、下载 allure是一个命令行工具&#xff0c;可以去 github 下载最新版&#xff1a;https://github.com/allure-framework/allure2/releases 2、解压到本地 3、配置环境变量 复制路径如&#xff1a;F:\allure-2.13.7\bin 环境变量、Path、添加 F:\…