利用jmeter测试java请求

news2025/3/3 5:13:37

jmeter和loadrunner一样包含了测试脚本开发、测试执行、以及测试结果统计三个部分。只是jmeter没有脚本开发工具,因此测试java请求的脚本选择在eclipse中进行。

首先介绍如何用eclipse编写接口性能测试脚本。

针对"Java请求"类型的测试,需要基于JMeter测试框架编写用例。

1、新建一个普通的Java工程或者maven工程;

2、将 $JMeter安装目录/lib/ 目录引入工程;在java工程名上点鼠标右键选择build Path里面的Configure Build Path进入下面的jar包添加窗口。

点击Add External JARs..选择jmeter安装目录下的/lib/ext目录下的包加进来。

3、新建Java Class,如下的" testworkdayservicejmeter ",并继承"AbstractJavaSamplerClient";

package test.pssservice;



import java.text.DateFormat;

import java.text.SimpleDateFormat;

import java.util.Date;



import org.apache.jmeter.config.Arguments;

import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;

import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;

import org.apache.jmeter.samplers.SampleResult;





public class testworkdayservicejmeter  extends AbstractJavaSamplerClient{



   

    private static long start = 0;

    private static long end = 0;

    public testpssWorkDayService pssAPItest;

       //设置可用参数及的默认值;

    public Arguments getDefaultParameters() {

     Arguments params = new Arguments();

     params.addArgument("workday", "");

    

     return params;

    }



    public void setupTest(JavaSamplerContext arg0) {

    try{

       pssAPItest=new testpssWorkDayService();

        }catch (Exception e1) {

           e1.printStackTrace();

        }

       }

   

       public SampleResult runTest(JavaSamplerContext arg0) {

           SampleResult sr = new SampleResult();

           try

           {

          

           sr.sampleStart();// jmeter 开始统计响应时间标记

           String tmpde=arg0.getParameter("workday");

           DateFormat dft=new SimpleDateFormat("yyyy-MM-dd");

           Date tmpdate=dft.parse(tmpde); 

           boolean tmpresult=pssAPItest.isworkday(tmpdate);//调用接口方法

          

          

           if (tmpresult){

             sr.setSuccessful(true);

           }

           else{

              sr.setSuccessful(false);

           }

          

           sr.sampleEnd();

          

           }catch (Exception e1) {

              e1.printStackTrace();

              sr.setSuccessful(false);

              sr.sampleEnd();

           }

          

       return sr;

       }

       public void teardownTest(JavaSamplerContext arg0) {

           pssAPItest=null;

       }





}

4、导出成Jar并置于 $JMeter安装目录/lib/ext/ 下,若有依赖Jar也置于 $JMeter安装目录/lib/ 下;

5、启动或重启JMeter。

其次讲一下如何在jmeter中执行接口性能测试。

将上一步导出的jar包放在$JMeter安装目录/lib/ext/ 下,然后把需要的参数化文件也拷贝到压力机上的磁盘目录上面(参数化文件可以与jar目录相同也可以不同)。

1.运行jmeter.bat打开jmeter主界面;

2.在测试计划里面将包加进来;

在测试计划下添加线程组元件,然后在线程组下面添加java请求元件、CSV Data Set Config元件和聚合报告元件。如果不需要参数化的话,CSV Data Set Config元件可以不需要。

聚合报告元件用于显示测试的结果。

3.在java请求中的测试类选出来

此处测试的类是test.pssservice.testworkdayservicejmeter。

4.设置参数化文件信息

filename处填写参数化文件的绝对路径和参数文件名称;

File encoding是参数化文件的编码,一般为utf-8;

Variable Names参数文件中对应的参数名称,如果有多个用“,”隔开;

Delimiter表示同一个参数文件中有多个参数的,此处列出他们的分隔符;

5.测试结果通过聚合报告列出来

如果有多个接口的话,需要添加多个线程组,每个线程组一个java请求,然后将聚合报告添加到测试计划下。

然后是测试结果的统计

聚合报告中的throughput相当于loadrunner当中的tps,average相当于loadrunner中的平均响应时间,samples相当于总的通过事务数。error表示失败率。

最后讲讲利用jmeter进行分布式测试

在进行性能测试时,需要模拟多用户并发访问,但是由于单台负载机模拟用户数量有限,我们期望使用多台负载机进行负载模拟,利用JMeter进行性能测试时,可以在多台负载机上部署JMeter,如我们有23台性能测试机,其中一台为主控机(192.168.6.117),另外一台为负载机192.168.6.235),具体配置方法如下:

1、 在主控台(192.168.6.117)的JMeter机器上,打开JMeter目录bin文件夹下的jmeter.properties文件,修改remote_hosts=192.168.6.117:1099,192.168.6.235:1099保存后,重启192.168.6.117。

2、 分别运行负载机192.168.6.117,192.168.6.235上的jmeter-server.bat

3、 运行主控台192.168.6.117 JMeter的jmeter.bat,打开GUI界面,打开“运行”菜单下的“远程控制”,可以看到新添加的负载机192.168.6.117,192.168.6.235,如下图所示:

4、 下面就可以开始利用远程负载机进行性能测了。

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

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

相关文章

折半查找包含程序

折半查找又称二分查找,它仅适用于有序的顺序表 以下面的例子来讲解折半查找的过程 元素710131619293233374143数组位置012345678910 第一步:先确定查找元素,以14为例子;low和high分别是指向表的上界和下界;最开是low…

【Cookie】Cookie简介以及跨域问题

Cookie 一、Cookie简介 1、Cookie是什么 cookie是由网络服务器存储在你电脑硬盘上的一个txt类型的小文件,它和你的网络浏览行为有关,所以存储在你电脑上的cookie就好像你的一张身份证,你电脑上的cookie和其他电脑上的cookie是不一样的。 …

java 堆(优先级队列)详解

JAVA堆以及优先级队列详解 一、堆的模拟实现1.1堆的概念1.2 堆的性质1.3堆的存储结构1.4堆的创建1.4.1 只有根节点不满足堆的特性1.4.2 不只有根节点不满足堆的特性1.4.2.1 建堆代码1.4.2.2 建堆过程图示 1.4.3 建堆的时间复杂度 1.5堆的插入1.5.1堆的插入的基本思想1.5.2堆的插…

非局部attention之Non-local

论文:Non-local Neural Networks Github:GitHub - AlexHex7/Non-local_pytorch: Implementation of Non-local Block. GitHub - facebookresearch/video-nonlocal-net: Non-local Neural Networks for Video Classification cvpr2018 凯明作品 论文提出…

Echarts自定义legend图例

legend: {icon: rect, // 形状itemHeight: 4, // 高度itemWidth: 18, // 宽度itemGap: 15, //设置图例的间距...... }, 效果:

QT进度条代理的实现

目的 进度条也是一个基本的功能,这里进度条想在Tableview里面实现,让Tableview其中一个单元格显示进度条,因为就用了代理。 什么是代理,官方说: 代理(Delegate)就是在视图组件上为编辑数据提供编辑器,如在…

Kindle刷机安装微信读书。

1、越狱 2、安装软件 3、刷机 4、安装微信读书 刷机参考链接: https://www.xiaohongshu.com/explore/63d3f730000000001f027d0e?sourcequestion Kindle 通用越狱教程:适用固件版本 5.12.2.2~5.14.2 – 书伴 正式开始了。 1、越狱,参考…

[Flask] Flask会话

由于HTTP的无状态性,为了使某个域名下的所有网页能够共享某些数据,Cookie和Session应运而生 1.Cookie对象 HTTP是无状态(stateless)协议,一次请求响应结束后,服务器不会留下任何关于对方状态的信息 也就是说,尽管在…

2023年数字人产业发展趋势报告:好看的皮囊到有趣的灵魂

报告来源:腾讯研究院 报告看点:随着交互智能技术的加速发展,数字人正在从技术创新走向产业应用。 在腾讯2022数字生态大会腾讯云智能专场上,腾讯研究院、腾讯云智能、创业黑马经过产业研究、实地调研,共同提炼发布《数…

【Spring】Spring Bean 容器的生命周期是什么样的?

文章目录 一、什么是 Spring Bean 的生命周期?二、Spring 中的 bean 的作用域有哪些?三、Spring Bean 的生命周期四、Spring Bean 的生命周期流程图 一、什么是 Spring Bean 的生命周期? 对于普通的 Java 对象,当 new 的时候创建对象&#…

智头条|2023TUYA开发者大会精彩不断,IDC预测:2026年全球AI服务支出将增至646亿美元

1、行业动态 奢侈品巨头LVMH宣布将推出元宇宙项目“The Journey” 近日,奢侈品巨头LVMH宣布推出元宇宙项目“The Journey”,允许旗下用户进入一个拥有专属产品和体验的全新虚拟世界,目前官网显示该元宇宙项目下包括The Showroom、The Tech …

HotSpot 垃圾收集器

HotSpot 垃圾收集器 HotSpot 虚拟机提供了多种垃圾收集器,每种收集器都有各自的特点,虽然我们要对各个收集器进行比较,但并非为了挑选出一个最好的收集器。我们选择的只是对具体应用最合适的收集器。 新生代垃圾收集器 Serial 垃圾收集器&am…

Tomcat的部署及优化

目录 1.Tomcat概述 1.1 Tomcat的组件构成​编辑 1.2 Tomcat功能组件结构 1.3 Tomcat的请求过程 2. Tomcat服务的部署 2.1 搭建Tomcat运行环境 3.设置JDK环境变量​ 3.1测试java环境 4.安装启动Tomcat 1.Tomcat概述 Tomcat 是 基于Java 语言开发的Tomcat 属于轻量级应用服务…

数据结构 | 顺序线性表

一、数据结构定义 typedef int SqlTableType;typedef struct seqTable{int MAXNUM; // 最大元素个数 int curNum; // 元素的个数SqlTableType* element; // 连续空间的起始地址 }*SqlTable; 二、方法概览 SqlTable CreateSqlTable(int max); // 创建空顺序表 …

MySQL——mha高可用

MHA的概念 什么是 MHA MHA(MasterHigh Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。 MHA能在故障切换的过…

【Android -- 面试】程序员面试必备软技能,值得收藏!

文章目录 一、准备技术型简历1. 准备简历模板2. 准备个⼈信息3. 准备专业技能4. 准备⼯作经历5. 准备项⽬经历 二、面试前的准备1. 利用脑图来梳理知识点2. 收到面试邀请后的准备 三、面试的注意事项1. ⾃我介绍2. 技术考察3. 向⾯试官提问4. 面试礼仪 四、如何通过 HR ⾯1. HR…

数据结构 | 顺序栈

一、数据结构定义 typedef int StackType; typedef struct seqStack{int MAXNUM; // 最大元素个数 int top; // 栈顶位置,初始化为0或-1StackType element[100]; // 元素的连续空间的起始地址 } *SeqStack; 二、方法概览 SeqStack CreateSqlStack…

【服务器数据恢复】ZFS文件系统下raid5数据恢复案例

服务器数据恢复环境: 某公司一台EMC某型号存储中有一组由12块硬盘组建的raid5磁盘阵列,其中有2块盘作为热备盘使用。 服务器故障&分析: raid5磁盘阵列中有2块磁盘离线,只有1块热备盘成功启用,另外一块热备盘未启用…

Elastic 栈中的 Kibana安装

Kibana 是一个开源分析和可视化平台,旨在与 Elasticsearch 协同工作。 你使用 Kibana 搜索,查看和与存储在 Elasticsearch 索引中的数据进行交互。 你可以轻松执行高级数据分析,并在各种图表,表格和地图中可视化你的数据。 官方链…

文件批量下载方法 文件批量下载工具

软件版本:Internet Download Manager 在当今数字化时代,我们日常使用电脑进行各种工作和娱乐活动。有时候,我们需要从互联网上下载大量文件,例如电影、音乐、文档等。在这种情况下,手动逐个下载文件将变得繁琐而耗时。…