• JMeter入门


    JMeter基本概念

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

    为什么要使用JMeter

    • 开源免费,基于Java编写,可集成到其他系统可拓展各个功能插件
    • 支持接口测试,压力测试等多种功能,支持录制回放,入门简单
    • 相较于自己编写框架活其他开源工具,有较为完善的UI界面,便于接口调试
    • 多平台支持,可在Linux,Windows,Mac上运行

    JMeter安装配置

    Windows

    1. 点击下载链接,根据自己将要使用的平台,下载相应的文件。
    2. 安装JDK,配置环境变量
      • JAVA_HOME【C:Program FilesJavajdk1.8.0_73】
      • classpath【.;%JAVA_HOME%lib;%JAVA_HOME%lib ools.jar】
      • Path【;%JAVA_HOME%in;%JAVA_HOME%jrein;】
    3. 解压下载的JMeter压缩包,打开/bin/jmeter.bat

    配置环境变量
    JMETER_HOME【E:1-必备工具35-JMeterapache-jmeter-4.0】
    Path【;%JMETER_HOME%in】

    其它平台安装

    与windowns一致,除打开入口不同,如Linux下/bin/jmeter.sh

    JMeter目录结构

    1. bin目录常用文件介绍
      • examples:目录下包含Jmeter使用实例
      • ApacheJMeter.jar:JMeter源码包
      • jmeter.bat:windows下启动文件
      • jmeter.sh:Linux下启动文件
      • jmeter.log:Jmeter运行日志文件
      • jmeter.properties:Jmeter配置文件
      • jmeter-server.bat:windows下启动负载生成器服务文件
      • jmeter-server:Linux下启动负载生成器文件
    2. /docs目录——Jmeter帮助文档
    3. /extras目录——提供了对Ant的支持文件,可也用于持续集成
    4. /lib目录——存放Jmeter依赖的jar包,同时安装插件也放于此目录
    5. /licenses目录——软件许可文件,不用管
    6. /printable_docs目录——Jmeter用户手册

    JMeter插件安装

    JMeter插件安装很简单,只需要下载相应的插件解压即可。

    1. 点击下载
    2. 下载后解压放入:apache-jmeter-2.12libext目录下
    3. 重启jmeter

    数据库链接驱动如果需要需要专门下载,例如mysql需要jdbc的jar包,地址:http://dev.mysql.com/downloads/file/?id=462850
    使用注意事项:添加第三方插件并使用后保存的jmx文件在未添加该插件的运行环境下会导致无法打开该文件并报错,请保持环境一致性。

    JMeter命令行模式

    1. 命令
      jmeter -n -t <testplan filename> -l <listener filename>
    2. 参数
      -h 帮助 -> 打印出有用的信息并退出
      -n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter
      -t 测试文件 -> 要运行的 JMeter 测试脚本文件
      -l jtl文件 -> 记录结果的文件
      -r 远程执行 -> 启动远程服务
      -H 代理主机 -> 设置 JMeter 使用的代理主机
      -P 代理端口 -> 设置 JMeter 使用的代理主机的端口号
      -j 日志文件->设置JMeter日志文件的名称

    JMeter分布式测试(windows下)

    作为一个纯 JAVA 的GUI应用,JMeter 对于CPU和内存的消耗还是很惊人的,所以当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至还会引起JAVA内存溢出的错误。不过,JMeter 也可以像 LoadRunner 一样通过使用多台机器运行所谓的 Agent 来分担 Load Generator 自身的压力,并借此来获取更大的并发用户数。

    1. 在所有期望将JMeter作为Load Generator(负载生成器)的机器上安装JMeter,并确定其中一台作为Controller,其他的机器作为Agent。然后运行所有Agent机器上的JMeter-server.bat文件(假定使用192.168.0.11和192.168.0.12作为Agent,Agent机器上必须安装JDK,并设置环境变量)
    2. 在Controller机器的%JMETER_HOME%in下,找到JMeter.properties文件,编辑该文件,查找“remote_hosts=”这个字符串,可以找到这样一行“remote_hosts=127.0.0.1”。其中的127.0.0.1表示运行JMeter Agent的机器,这里需要修改成为“remote_hosts=192.168.0.11:1099,192.168.0.12:1099”(其中1099为端口号)。一般资料显示1644为JMeter的Controller和Agent之间进行通讯的RMI端口号,但是在测试时发现设置的1644运行不成功,改成1099后运行通过。
    3. 双击启动Controller机器上的jmeter.bat,选择菜单Rum->Remote Start,将会看到有两台Agent。
      常见问题:
    4. 确定在controller机器上安装jdk,版本和jmeter一致,配置环境变量:Java_home等

    在Agent机器上安装jdk,配置环境变量:Java_home和JMeter_home

    1. 在Controller端上控制某台机器Run,提示"Bad call to remote host"。

    解决方法:检查被控制机器上的jmeter-server有没有启动,或者JMeter.properties中remote_hosts的端口配置错误。

    1. Agent机器启动Jmeter_server.bat时,后台提示:"could not find ApacheJmeter_core.jar"

    解决方法:确定在Agent机器安装jdk,并设置环境变量:java_home、path、classpath和jmeter_home

    1. 查看1099端口是否被占用

    netstat -ano | findstr "1099"
    tasklist | findstr "1099"

    1. 启动远程时,报错:

      只要将本机的jmter-server.bat执行即可。要是在jmeter.properties配置的地方写了127.0.0.1 的话就要开本机的 jmeter-sever.bat.。不写的话就不用开了。

    JMeter使用

    1. 切换中文

      • 【Options】--> 【Choose Language】--> 【Chinese】
      • Jmeter_home/bin/jmeter.properties,设置language=zh_CN
    2. 正则表达式

      引用名称:代表下一个请求要引用的参数名称,如填写“openid”,那么则可用“({openid}”引用它。 正则表达式: `()`:括起来的部分就是要取的 `. `:匹配任何字符 `+`:一次或多次 `?`:在找到第一个匹配项后停止 模板:用)$引起来,(2)表示取第2个值给openid
      匹配:匹配多个值时,0代表随机取值,1代表取第一个
      缺省值:如果参数没有取到值,那就默认给它一个值

    3. 图形结果

      样本数目:总共发送到服务器的请求数。
      最新样本:代表时间的数字,是服务器响应最后一个请求的时间。
      吞吐量:服务器每分钟处理的请求数。
      平均值:是总运行时间除以发送到服务器的请求数,即每个请求的平均响应时间。
      中间值:是代表时间的数字,有一半的服务器响应时间低于该值而另一半高于该值。
      偏离:表示服务器响应时间变化、离散程度测量值的大小,即数据的分布。

    4. 聚合报表

      90%line:90%的响应时间都比这个时间小
      Min:代表时间的数字,是服务器响应的最短时间。
      Max:代表时间的数字,是服务器响应的最长时间。
      Error%:请求的错误百分比。
      KB/sec:是每秒钟请求的字节数。

    5. 操作mysql数据库
      操作数据库基本有四个步骤:

      1. 导入mysql的jdbc的jar包,存放到apache-jmeter-4.0lib下;
      2. 创建数据库的连接配置,线程组里添加配置元件-JDBC Connection Configuration;
      3. 线程组里添加jdbc request,写sql语句;
      4. 添加察看结果树,点击启动按钮,就能看到执行的SQL。

        特别说明:jmeter还可以操作oracle、postgreSQL、msSQL、mongodb等等数据库,同时不同的数据库,JDBC Connection Configuration填写的Database url格式和JDBC Driver驱动名称也不相同。jmeter数据库驱动列表如下表所示:

        JDBC Driver class是固定的,Jmeter操作各类数据的Driver参考下图;
    6. jmeter3.2以后没有SOAP/XML-Request

    7. Jmeter的参数化方法

      • 利用函数助手获取参数值
        选项->函数助手对话框
        __CSVRead 生成的函数字符串: ${__CSVRead(,)}第一个参数是文件名(包含路径),第二个参数是文件中的列(列数从0开始);


        __Random 生成的函数字符串:${__Random(,,)}第一个参数为随机数的下限,第二个参数为随机数的上限,第三个参数为储存随机数的变量名;

      • 利用配置元件(CSV Data Set Config)
        选中线程组,右击,添加->配置元件->CSV Data Set Config

        选中线程组,右击,添加->sampler->HTTP 请求,在http请求参数中引用变量
      • 用户自定义变量
        选中纯种组,右击,添加->配置元件->用户自定义变量
    8. HTTP Cookie Manager
      用于需要登录cookie的接口中

    JMeter使用注意事项

    1. 变量问题
      使用过程中,一定要注意控件的执行顺序以及变量的作用域。
    2. 路径问题
      Windows下支持"/"""并存模式,推荐使用"/",方便跨平台使用。
      在linux格式下支持"/"格式。
    3. Jmeter自身性能问题
      命令行模式:命令相同。
      UI模式:操作方式相同,但会存在windows下能打开linux下打不开的情况,暂不知道原因。
  • 相关阅读:
    log日志----logging模块
    配置文件--configparser
    面向对象——进阶
    面向对象
    内置函数
    模块和包
    常用模块
    正则表达式
    递归函数
    内置函数+匿名函数
  • 原文地址:https://www.cnblogs.com/yoyoyang/p/11821267.html
Copyright © 2020-2023  润新知