jmeter笔记8

JMETER接口性能测试方案

JMETER简介

JMeter可以用于测试静态或者动态资源的性能(文件、Servlets、Perl脚本、java对象、数据库和查询、ftp服务器或者其他的资源)。 JMeter用于模拟在服务器、网络或者其他对象上附加高负载以测试他们提供服务的受压能力,或者分析他们提供的服务在不同负载条件下的总性能情况。你可 以用JMeter提供的图形化界面分析性能指标或者在高负载情况下测试服务器/脚本/对象的行为。

场景介绍

被测dubbo服务:

com.alifi.adapter.service.AdminPortalService

场景描述:

当以上服务被调用时,服务会去adminportal查询对应的数据.并返回结果给测试服务器.

工具原理:

利用JMETER调用测试脚本去调用dubbo上的服务.并记住每次调用并获取反馈值的响应时间.计算成功率.

JMETER性能测试环境准备

工具:

jakarta-jmeter-2.3.2

将ZIP压缩包解压缩在你很容易找到的地方,本文放在C盘根目录下.

Eclipse

需要安装testNG插件,maven环境.

JMETER主要目录结构分析

JMETER主要的文件夹有:

%Jmeter_home/lib

该文件夹中主要存放测试JAR文件运行时需要依赖的JAR包.

%Jmeter_home/lib/ext

该文件夹中主要存放带有main函数的测试JAR文件.只有将测试JAR包放在该目录下,才会被JMETER工具识别.

后续会有相应的介绍.

JMETER性能测试步骤及监控

JMETER做简单的UI性能测试及脚本录制:

(http://www.ibm.com/developerworks/cn/java/l-jmeter/)

操作很简单.这里不做介绍.

JMETER做接口性能测试用例步骤:

前提:带有main函数的JAR包及其运行所以来的JAR包都对应的放入JMETER文件夹中.

步骤一,新建一个测试用例:

在%Jmeter_home/bin中找到Jmeter.bat文件.双击打开Jmeter程序:

在[文件]选项中可以选择以往处理过的脚本.现在以新增一个测试用例为例.

步骤二.在[测试计划]中添加一个线程:

右键[测试用例],依次选择[添加]—[线程组];得到如下视图:

线程数(Number of Threads): 设置发送请求的用户数目.

Ramp-up period: 每个请求发生的总时间间隔,单位是秒。比如你的请求数目是5,而这个参数是10,那么每个请求之间的间隔就是10/5,也就是2秒 .

循环次数(Loop Count): 请求发生的重复次数,如果选择后面的forever(默认),那么 请求将一直继续,如果不选择forever,而在输入框中输入数字,那么请求将重复 指定的次数,如果输入0,那么请求将执行一次。

在[调度器]中可以选择启动时间,结束时间等.

步骤三,在线程租种添加一个动作:

右键[线程组]—[sampler]—[java请求],如下图:

我们得到一个JAVA请求的动作:

在[类名称]中选择我们要测试的类;在这里,我们被测服务为:

com.sane.remote.adapter.AdapterForAdminPortal

步骤四,为线程组添加一个监控:

这里我们可以选择图形结果,聚合报告等监听器.我才去的是聚合报告,当然可以选择多种监控控件.

注意:这里的监视器结果需要我们单独在被测服务器上做监控配置才能获取到.

这里可以监控到错误率,最高响应时间,I/0值.每个监视器的功能不一样.大家可以摸索摸索.

步骤五:运行及结果监控.

注意:为了验证我们的JAR是否执行成功,我推荐打开被测目标的日志,检查是否被调用.

以下是我的简单的运行结果:

Error结果为0%.表明我执行的过程中没有报错.

被测服务器的日志有打印,调用成功.

JMETER性能测试脚本编写

测试工程目录结构介绍

被测工程:

Adapter工程,我们主要关注的是

adapter.service.api/src/main/java/com.alifi.adapter.service

里面包含了我们所有注册在dubbo上的所有服务.拿adminPortalService为例:

我们可以看到整个类需要传入String类型的bankcode,dateStr及int类型的page,并反馈给一个Result.具体的实现方式我们并不关心.

这三个参数决定了我们在测试脚本中不管是引入变量还是写死固定的变量值.

测试工程

Src/main/java中包含了我们测试JAVA.

Src/main/resources中包含了一些我们需要的配置文件;这里我主要存放dubbo的配置文件(dubbo.properties)及引入的dubbo服务设置(dubbo_config.xml).

Src/test/java用来存放对一些方法的单元测试(testNG).

POM.XML文件介绍

配置文件中主要引用的有:

对adapter服务的引用:

<dependency>

<groupId>com.alifi.adapter</groupId>

<artifactId>adapter.service.api</artifactId>

<version>1.1.0-SNAPSHOT</version>

</dependency>

对dubbo的引用

<dependency>

<groupId>com.alibaba.dubbo</groupId>

<artifactId>dubbo.core.service</artifactId>

<version>${dubbo-version}</version>

<scope>test</scope>

</dependency>

<dependency>

<groupId>com.alibaba.dubbo</groupId>

<artifactId>dubbo.core.registry.default</artifactId>

<version>${dubbo-version}</version>

<scope>test</scope>

</dependency>

对Jmeter的调用:

<dependency>

<groupId>com.alibaba.external</groupId>

<artifactId>apache.jmeter</artifactId>

<version>2.3</version>

</dependency>

引用单元测试:

<dependency>

<groupId>com.alifi.aliloan.common</groupId>

<artifactId>common.test</artifactId>

<version>1.0-SNAPSHOT</version>

<scope>test</scope>

</dependency>

引用Spring

<dependency>

<groupId>com.alibaba.external</groupId>

<artifactId>sourceforge.spring</artifactId>

<version>2.5.6</version>

<type>jar</type>

</dependency>

将依赖包导出项目的方法(mvn clean package -DskipTests=true -Denforcer.skip=true)

<build>

<plugins>

<plugin>

<artifactId>maven-dependency-plugin</artifactId>

<version>2.1</version>

<executions>

<execution>

<id>copy-dependencies</id>

<phase>prepare-package</phase>

<goals>

<goal>copy-dependencies</goal>

</goals>

</execution>

</executions>

<configuration>

<includeTypes>jar</includeTypes>

<overWriteSnapshots>true</overWriteSnapshots>

<type>jar</type>

<outputDirectory>D:\remote\lib</outputDirectory>

</configuration>

</plugin>

</plugins>

</build>

D:\remote\lib是我用来存放依赖包的文件夹,用命令打包出来后全部丢入%Jmeter_home/lib文件夹中.

命令: (mvn clean package -DskipTests=true -Denforcer.skip=true)

Dubbo配置文件介绍

Dubbo_config

<beans default-autowire="byName"

xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:dubbo="http://repo.alibaba-inc.com/schema/dubbo"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-2.0.xsd

http://repo.alibaba-inc.com/schema/dubbo

http://repo.alibaba-inc.com/schema/dubbo/dubbo-component.xsd">

<dubbo:reference id="adminPortalService"    interface="com.alifi.adapter.service.AdminPortalService" version="1.0.0" />  <!--  定义dubbo的服务.-->

</beans>

主要是将"com.alifi.adapter.service.AdminPortalService"引入bean容易中方便主函数中引用.大家可以改成自己需要测试的服务目标.

id="adminPortalService"这里的id可以自己随便定义,相当于一个别名.

Dubbo.properties

这个就不过多介绍了,就是dubbo的配置文件.主要是修改dubbo的注册地址及测试服务名称.

dubbo.application.name=adapter

dubbo.registry.address=10.249.198.180:9090

dubbo.monitor.address=N/A

dubbo.service.server.port=20880

dubbo.service.console.port=30880

dubbo.service.server.weight=10

dubbo.service.min.thread.pool.size=10

dubbo.service.max.thread.pool.size=300

dubbo.service.thread.keep.alive.seconds=300

dubbo.service.shutdown.wait.seconds=10

dubbo.logging.level=INFO

dubbo.logging.root=/logs

dubbo.logging.file=adapter.log

JMETER代码格式及注意事项

所有的代码注意事项已经在脚本中用注释形式全部展现.请阅读adminportalForAadminPortal.java源码.

注意事项,在编写完main函数之后,有必要进行testng单元测试.

在Cmd环境下找到工程目录,获取依赖的JAR文件.和Jmeter需要调用的带有MAIN函数的JAR文件.

JMETER性能测试心得

关于JMETER调用接口时候传入参数的方式还没有研究透.

正在努力地在脚本中添加日志结构,方便跟跟踪到错误信息.

JMETER对借口测试的方便在于,对dubbo的服务可以可以配置话,或者架设在ci上进行可配置话的远程性能测试.

时间: 2024-10-10 18:42:25

jmeter笔记8的相关文章

jmeter笔记1

使用 JMeter 分布式性能测试 作为一个纯 JAVA 的GUI应用,JMeter 对于CPU和内存的消耗还是很惊人的, 所以当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心, 甚至还会引起JAVA内存溢出的错误.不过,JMeter 也可以像 LoadRunner 一样通过使用多台机器运行所谓的 Agent 来分担 Load Generator 自身的压力,并借此来获取更大的并发用户数. 根据 JMeter官方文档的署名,你需要自己完成这个配置,不过不用担心,这将非

jmeter笔记5

性能测试是任何分布式或Web应用程序测试计划的重要组成部分.在计划和开发周期中进行性能评价,可以保证交付给客户的应用程序满足客户对于高负载.可用性和可伸缩性的要求. 性能测试是任何分布式或Web应用程序测试计划的重要组成部分.在计划和开发周期中进行性能评价,可以保证交付给客户的应用程序满足客户对于高负载.可用性和可伸缩性的要求.提前确定软件的负载限制可以为适当地进行系统配置提供帮助,从而避免出现意料之外的故障.系统性能分析中要处理的几个问题是:系统或服务器能否处理数百个或数千个客户端的同时请求,

jmeter笔记2

使用jmeter它来完成最常用的三种类型服务器,即 Web 服务器.数据库服务器和消息中间件,压力测试的方法.步骤以及注意事项. 讲到测试,人们脑海中首先浮现的就是针对软件正确性的测试,即常说的功能测试.但是软件仅仅只是功能正确是不够的.在实际开发中,还有其它的非功能因素也起着决定性的因素,例如软件的响应速度.影响软件响应速度的因素有很多,有些是因为算法不够高效:还有些可能受用户并发数的影响. 在众多类型的软件测试中,压力测试正是以软件响应速度为测试目标,尤其是针对在较短时间内大量并发用户的访问

Jmeter笔记:响应断言详解

平时我们使用jmeter进行性能测试时,经常会用到断言.jmeter提供了很多种断言,本来想全都写一下,但发现每一个断言里面的东西都很多,所以就先写一下我们经常使用的响应断言. 响应断言 :对服务器的响应进行断言校验 (1)应用范围: main sample and sub sample, main sample only , sub-sample only , jmeter variable 关于应用范围,我们大多数勾选“main sample only” 就足够了,因为我们一个请求,实质上只

Jmeter笔记

熟悉几个专有名词: 1.测试计划是顺序执行的,一个性能测试必须有的三部分:测试计划.线程组.sampler(采样器)--核心 2.控制器(用来定义请求执行的):loop if else 3.timer:请求与请求之间的延时. 4.断言:可以直接加载采样器之后,用于判断采样器的输出结果是否符合预期. 5.监听器:统计结果,输出测试报告用--聚合报告 =========================================================== jmeter目录结构说明: 测

Jmeter笔记2:参数化

案例:邮箱登录操作,参数化登录的用户名 方法一.依赖Jmeter自带的函数助手 选项-->函数助手对话框,即可打开函数助手弹窗 (1)比如使用函数_Random 输入最小值.最大值,点击下方的[生成]按钮,即会生成:${__Random(1,5,)} 假如邮箱是163的,则用户名参数的值直接填入:${__Random(1,5,)}@163.com,我测试的邮箱是内网测试用的域名是180chen.cn,则填写${__Random(1,5,)}@180chen.cn (2)比如使用函数__CSVRe

【转】Jmeter笔记:响应断言详解

平时我们使用jmeter进行性能测试时,经常会用到断言.jmeter提供了很多种断言,本来想全都写一下,但发现每一个断言里面的东西都很多,所以就先写一下我们经常使用的响应断言. 第一次在cnblog上写东西,不会排版,希望达人指点. 响应断言 :对服务器的响应进行断言校验 (1)应用范围: main sample and sub sample, main sample only , sub-sample only , jmeter variable 关于应用范围,我们大多数勾选“main sam

jmeter笔记4

软件测试中使用JMeter测试Web应用 JMeter作用领域 JMeter可以用于测试静态或者动态资源的性能(文件.Servlets.Perl脚本.java对象.数据库和查询.ftp服务器或者其他的资源).JMeter用于模拟在服务器.网络或者其他对象上附加高负载以测试他们提供服务的受压能力,或者分析他们提供的服务在不同负载条件下的总性能情况.你可以用JMeter提供的图形化界面分析性能指标或者在高负载情况下测试服务器/脚本/对象的行为. 使用JMeter测试Web应用 接下来的章节里,作者将

Jmeter 笔记

Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域. 它可以用于测试静态和动态资源例如静态文件.Java 小服务程序.CGI 脚本.Java 对象.数据库, FTP 服务器, 等等.JMeter 可以用于对服务器.网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能.另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果.为

JMeter笔记4:测试结果-聚合报告的字段说明

1.Lable :定义 HTTP 请求名称2.Samples :表示这次测试中一共发出了多少个请求3.Average :平均响应时长---默认情况下是单个Request的平均响应时长,当使用Transcation Controller时,也可以以Transcation为单位显示平均响应时长4.Median :中位数,也就是50%用户的响应时长5.90%Line :第90百分位用户的响应时长(响应时长按从小到大排序,第90%个用户的响应时长)6.Min:访问页面的最小响应时长7.Max:访问页面的