分类 JMeter 下的文章

在复杂的脚本中,会涉及到jmeter的多个元件,而元件之间的作用域和执行顺序这时候就很重要了,放错位置不仅会造成数据获取不正确,严重还会无法执行,下面即为大家介绍一下元件作用域与执行顺序。

1、元件的作用域

  • 配置元件(config elements):会影响其作用范围内的所有元件(同级别或父级起作用)
  • 前置处理程序(Per-processors):在起作用范围内的每一个sample元件之前执行
  • 定时器(timers):对其作用范围内的每一个sampler有效(同级别或父级起作用)
  • 后置处理程序(Post-processors):在其作用范围内的每一个sampler元件之后执行(同级别或父级起作用)
  • 断言(Assertions):对其所用范围内的每一个sampler元件执行后的结果执行校验
  • 监听器(Listerners):收集其作用范围的每一个samoler元件的信息并出现(同级别或父级起作用)
  • sampler元件不和其他元件相互作用,因此不存在作用域的问题

2、元件的执行顺序

  • 配置元件
  • 前置处理器
  • 定时器(首次也是定时器先执行再执行sampler)
  • Sampler
  • 后置处理器(只在有结果可用情况下执行)
  • 断言(只在有结果可用情况下执行)
  • 监听器(只在有结果可用情况下执行)

如果在同一作用域内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序依次执行

备注:如果两个相同配置元件作用于同一个采样器,那么这两个配置元件会进行合并,完全一样的取排序靠近的配置元件(如父子级关系)

例1:zuoyongyu1则执行结果是:one显示网页b的地址加上了a的参数(HTTP默认请求都有网页,必须取其一,那么取就近的地址,参数不受影响)。

例2:

zuoyongyu2

后置处理器debug,作用域里按照顺序执行,无就近原则。

3、元件的部分概念

  • 断言:可以用来判断请求响应的结果是否如用户所期望的。它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。
  • 前置处理器及后置处理器:负责在生成请求之前完成工作。前置处理器常常用来修改请求的设置。
  • 后置处理器:负责在生成请求之后完成工作。后置处理器常常用来处理响应的数据,我们主要在动态关联中用到后置处理器的正则表达式提取器

这只算一个小技能,并没有什么难度,大家可以体验一下:

1、首先打开jmeter,在测试计划下,右击添加“线程组”

2、在工作台下,右击添加“非测试元件—HTTP代理服务器”

1)输入端口号,可以自定义,如9887

2)输入HTTPS Domains(域名):输入自己主机的ip,查询:cmd输入ipconfig即可查看,如:192.168.1.1

3)目标控制器,选择上面的线程组

4)HTTP sampler settings中的Type选择“HttpClient4”

5)配置完手机端(下面的第3步),点击【启动】

shouji1

ps:关于HTTP代理服务器的一些扩展

如图所示,分组选择每个类型的含义:(颜色标出的是比较常用的方式)

shouji2

  • 不对样本分组(Do not group samplers):所有请求全部罗列
  • 在组间添加分隔(Add separators between groups):加入一个虚拟的以分割线命名的动作,运行同“不对样本分组”,无实际意义
  • 每个组放入一个新的控制器(Put each group in a new controller):执行时按控制器给输出结果
  • 只存储每个组的第一个样本(Store 1st sampler of each group only):对于一次url请求,实际很多次http请求的情况,这个选项很好用,因为我们常常是不关心后面的那些请求的。(当选择这个进行录制后,获取的http请求,可以选中图下模式)

shouji3

 

 

3、配置手机端

1)打开设置-无线网-详情,选择HTTP代理—手动

2)输入服务器ip:即为你上面填写在jmeter中的ip,即主机ip

3)输入端口:即为上面自定义的端口,9887

4、操作手机,按着需要录制的东西操作

5、录制完成后,点击HTTP代理服务器的停止按钮,然后删除掉不必要的请求,添加监听器,即可按着刚刚的操作运行查看结果。(有问题可调试解决)

备注:

工作台默认不保存在脚本里,如果需要保存,需要勾选图下内容:(一般情况下我们不需要保存工作台下面的内容)

shouji4

JMeter与ant的结合使用使得运行结果更丰富、图表化,可以直接浏览器查看。

默认你已经安装了jmeter且配置好了jdk环境变量,如有不懂的,可以先看这篇文章

传送门:http://blog.jianjiexuan.com/tools/jmeter/178.html

1、首先需要安装ant,

  下载地址:http://ant.apache.org/bindownload.cgi

  下载好了之后解压即可

2、配置环境变量

path           D:/apache-ant-1.9.1/bin

classpath        D:/apache-ant-1.9.1/lib

3、验证是否安装成功

    命令行运行:ant -version

ant         出现这个原因是因为Ant需要用到jre\lib目录下的tools.jar,我们把jdk\lib下的tools.jar拖过去就可以

重新输入命令:ant -version,成功

ant1

4、将jmeter的extras目录中ant-jmeter-1.0.9.jar包拷贝至ant安装目录下的lib目录中

5、修改Jmeter的bin目录下jmeter.properties文件的配置jmeter.save.saveservice.output_format=xml

6、编写脚本,build.xml,想要深入了解的可以自己去翻资料摸透,只是想实现效果的,可以直接将下方的代码拿去即可

♥注某些地方需要根据自己的实际情况进行修改

<?xml version="1.0" encoding="UTF-8"?>

<project name="ant-jmeter-test" default="all" basedir=".">

    <tstamp>

   <format property="time" pattern="yyyyMMddhhmm" />

    </tstamp>

    <!-- 需要改成自己本地的 Jmeter 目录-->

<property name="jmeter.home" value="D:\apache-jmeter-2.6" />

<!-- jmeter生成jtl格式的结果报告的路径-->

<property name="jmeter.result.jtl.dir" value="D:\resultLog\jtl" />

<!-- jmeter生成html格式的结果报告的路径-->

<property name="jmeter.result.html.dir" value="D:\resultLog\html" />

<!-- 生成的报告的前缀-->

<property name="ReportName" value="TestReport" />

<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />

<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" />

<target name="all">

<antcall target="test" />

<antcall target="report" />

    </target>

<target name="test">

        <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />

        <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">

        <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本-->

               <testplans dir="D:\testcase" includes="*.jmx" />

<property name="jmeter.save.saveservice.output_format" value="xml"/>

               </jmeter>

</target>

    <path id="xslt.classpath">

   <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>

          <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>

            </path>

<target name="report">

<xslt classpathref="xslt.classpath"

force="true"

  in="${jmeter.result.jtlName}"

              out="${jmeter.result.htmlName}"

style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" />

  <param name="dateReport" expression="${report.datestamp}"/>

        <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->

<copy todir="${jmeter.result.html.dir}">

<fileset dir="${jmeter.home}/extras">

<include name="collapse.png" />

<include name="expand.png" />

</fileset>

</copy>

</target>

</project>

7、命令行,进入放build.xml脚本的目录下,运行ant,如图所示

ant2

8、运行结束后,打开对应路径下的html文件查看结果,如下图所示

ant3

所有的都结束啦,这个图表的作用也没那么大,主要是通过自己写build脚本,可以让执行变得多样化,也可以同时执行多个脚本。

使用非GUI模式,即命令行模式运行JMeter测试脚本,这样能够大大缩减所需要的系统资源。

命令需要在jmeter的bin目录下执行

命令:jmeter -n -t <testplan filename> -l <listener filename>

如:jmeter -n -t testplan.jmx -l log.jtl

停止运行:ctrl+c       停止后台运行:ctrl+z

解释:

  • -h帮助 → 打印出有用的信息并退出
  • -n非GUI模式 → 在非GUI模式下运行Jmeter
  • -t测试文件 → 要运行的JMeter测试脚本文件
  • -l日志文件 → 记录结果的文件
  • -r远程执行 → 启动远程服务
  • -H代理主机 → 设置JMeter使用的代理主机
  • -P代理端口 → 设置JMeter使用的代理主机的端口号

如:jmeter -n -t test1.jmx -l logfile1.jtl -H 192.168.1.1 -P 8080

服务器GUI模式(分布式测试):jmeter -server -H 192.168.1.1 -P 8080

备注

1、执行命令前要检查当前目录是否是%Jmeter_Home%\bin目录,如果不是,需要指定完整的路径;如果要把执行的结果保存在其他地方也要指定完整的路径。

2、执行结果可以使用GUI模式下的聚合报告查看。打开Jmeter GUI界面 →测试计划 →添加线程组 →添加聚合报告 →点击“所有数据写入一个文件”下的“浏览”,找到之前生成的.jtl文件即可。

3、命令行实时查看运行结果,需修改jmeter.properties,打开以下内容:

summariser.name=summary

summariser.interval=30  //这个表示统计频率

summariser.out=true //是否将统计结果输出到控制台

4、使用编辑器直接打开jtl文件

buchong1

名词解释:

属性 内容
httpSample 取样节点名字
t 用时(ms)
lt 延时(ms)-不是所有的取样器支持这个
ts 时间标志
s 是否成功
lb 标签
rc 响应代码
rm 响应消息
tn 线程名
dt 数据类型
by 字节数
de 数据编码
ng 在这个线程组中活跃的线程数
na 所有线程组中的活跃线程数

 

其实jmeter安装很简单,但是还是有人问起,这边就简单描述一下。

总概括

1、前置条件:安装配置好jdk

2、jmeter下载地址:

http://jmeter.apache.org/download_jmeter.cgi

3、一般启动:直接解压,点击bin目录里的jmeter.bat即可启动

4、服务器模式启动:jmeter -server.bat。允许在远程节点上以服务器模式运行jmeter,并通过jmeter gui来控制。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

详细扩展:

1、JDK的安装与配置

1)jdk下载:http://pan.baidu.com/s/1ge8efeF

2)双击适用的jdk版本的exe文件,一般安装至C:\Program Files\Java目录下;

3)配置环境变量:
①我的电脑→右键→属性→高级系统设置→环境变量

②在系统变量中新建,变量名:CLASSPATH,变量值:
C:\Program Files\Java\jdk1.7.0_71\lib\dt.JAR;
C:\Program Files\Java\jdk1.7.0_71\lib\TOOLS.JAR;
C:\Program Files\Java\jdk1.7.0_71\BIN;

③再新建,变量名:JAVA_HOME,变量中:
C:\Program Files\Java\jdk1.7.0_71;

④修改PATH变量,添加%JAVA_HOME%/bin;

⑤然后确定即可。

检测JDK是否安装成功:
在系统cmd中输入java -version,返回版本信息说明成功。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

2、Jmeter的安装与配置

1)下载地址:http://pan.baidu.com/s/1dEGVCwp,解压

2)配置环境变量:
①我的电脑→右键→属性→高级系统设置→环境变量

②在系统变量中新建,变量名:JMETER_HOME,变量值:(你当前解压jmeter的路径)

如:
D:\apache-jmeter-2.6;

③修改CLASSPATH变量,添加
%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;
% JMETER_HOME%\lib\jorphan.jar;
%JMETER_HOME%\lib\logkit-2.0.jar;

④然后确定即可。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

3、然后点击Jmeter目录下bin文件夹里的jmeter.bat就可以打开Jmeter

赶快去看我的另一篇文章:搭建基本测试环境,体验一下jmeter吧!

传送门:http://blog.jianjiexuan.com/tools/jmeter/98.html