Jmeter入门学习与安装

PART1:JMeter安装包内部文件解析说明

1、bin目录,该目录是jmeter的主目录,存主JAR包;

       ApacheJMeter.jar是主要JAR包;

       jmeter.bat/jmeter.sh分别是win和Linux的运行文件;

       jmeter.properties是主要配置文件;

2、docs目录:存放官方的API文件,用于二次开发;

3、extras目录:扩展目录,存放ant和jmeter集成所需的文件;

4、lib目录:该目录是Jmeter启动时默认的classpath,意味着使用jmeter过程中,所需import类,都需要存放在lib目录下(仅限JAR包);

5、lib\ext目录:存放jmeter的第三方组件和插件,主要继承和使用jmeter的GUI框架,形成图形化界面看到的部分;

6、printable_docs:jmeter官方帮助文档;

 

PART2:JMeter安装步骤

参考文章:http://www.cnblogs.com/Lam7/p/5431431.html

Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。用jmeter做简单的接口测试(接口测试主要还是用soapUI),Web测试和数据库的测试。

JMeter安装包地址:http://jmeter.apache.org/download_jmeter.cgi

需要JDK1.8:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

badboy安装包:http://www.badboy.com.au/download/index

1、下载好这些安装包,配置Java环境和Jmeter环境。

java环境变量配置参考:https://jingyan.baidu.com/article/ff41162596a77912e4823716.html

jmeter环境变量配置:新建系统变量 JMETER_HOME,变量值为解压的jmeter路径,例如路径 F:\Jmeter\apache-jmeter-2.11;在CLASSPATH 后面添加变量值

;%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar;

2、安装完成后,在F:\Jmeter\apache-jmeter-2.11 目录下点击bin目录,找到Jmeter.bat文件,双击即可打开。

 

PART3:Jmeter脚本开发初步方法

1、通过第三方软件录制:

            第三方软件:badboy、blazeMeter       

           badboy: I:需要将badboy中录制的脚本file export to jmeter来导出为jmeter文件;II:使用jmeter打开文件,对脚本中的说有step组件至少执行一次;III:右键  change controller逻辑控制器-选择一种逻辑控制器;

            优点:操作简单、生成脚本容易;缺点:仅限于B/S架构,因为内置浏览器的内核问题,会产生兼容性的问题,导致无法录制;

通过badboy录制脚本方法,参考地址:http://www.cnblogs.com/Lam7/p/5462536.html

出现的问题1:badboy录制出现脚本错误解决办法:浏览器工具 - “互联网选项 - ”高级属性页 - “选中“禁止脚本调试”复选框之后就不会再收到这些警告了。

出现的问题2:jmeter导入badboy录制脚本错误原因,jmeter与badboy版本都需要为最新;

            blazeMeter:是一个测试平台,也提供基于Chrome浏览器的录制插件; 需要翻墙下载;需要注册账号,不能用QQ邮箱;优点:操作简单、生成脚本简洁易懂;缺点:需要访问国外网站,存在风险;          

2、通过自带的http代理服务器来录制;

        参考地址:http://www.cnblogs.com/Lam7/p/5461604.html

      理解:录制的本质是什么?和抓包手写有什么区别?录制的本质是抓包和解包,之所以能够自动完成,是因为通信的协议是标准的。

        1、添加线程组、再添加HTTPcookie管理器、HTTP代理服务器

        2、HTTP 代理服务器修改目标控制器,改成测试计划-->线程组,为所创立的线程组;建议修改TYPE为Java;

        3、HTTP 代理服务器的requests filtering过滤器中的排除模式使用默认推荐的内容,再加上.* 

         4、录制对象为百度,设置HTTPs Domains填写www.baidu.com,可不加;

          5、netstat -an确定自己电脑的可用端口,在端口处写上相应的端口,如8888;

          6、点击启动,点击OK(关于根证书);

          7、修改客户端设置,使之通过jmeter的代理服务器去访问被测服务器;Windows下通过IE选项(Internet选项-连接-局域网设置-选中代理服务器-localhost-端口)来设置即可,移动端通过wlan高级现象来设置(保证客户端和Jmeter的代理服务器在同一个局域网);

            8、录制脚本完之后停止;然后将internet选项设置回来;

            9、添加察看结果树,可关闭HTTP代理服务器,用JMeter运行脚本,察看结果;

测试HTTPS的网站,如百度;需要重新生成证书,没有证书的情况下打开网站会出现提醒“您的连接不是私密连接”;

优点:操作非常灵活;适用于所有实用的http/https协议的产品,不限于B/S,也可以用于C/S或者APP。

缺点:操作过程比较繁琐,需要一定的网络、架构知识;

 

3、抓包手写

            抓包手写适用于任何的接口、性能测试工具的脚本生成;

            抓包手写对测试人员的要求比较高:要对测试系统的通信协议了解;要对抓包工具了解;要对接口&性能测试工具了解;黑夜小怪弄得插件支持fiddler导出到jmeter。

 

PART4:jmeter教程

https://www.yiibai.com/jmeter/

Jmeter 相关元祖参数:https://blog.csdn.net/fanxiyanhong/article/details/51423487

https://www.cnblogs.com/zhangwy1024/p/9083108.html

https://blog.csdn.net/wangnan537/article/details/77627896

 

PART5:JMeter主要元素与组件(转载至易百教程

JMeter的一些主要组件:

请参阅以下图,以了解每个组件及其与JMeter特定模块的关系。

测试计划:包含执行脚本的所有步骤。 测试计划中包含的所有内容都按照从上到下的顺序执行,或者按照测试计划中定义的顺序执行。

线程组:表示JMeter在测试期间将使用的线程组。 线程组元素是任何测试计划的起点。 线程组提供的控件允许:设置线程数;设置加速期;设置执行测试的次数;

线程组控制面板包括:

  • 线程组名称。
  • 线程数(您正在测试的用户数)。
  • 加速时间(您希望允许线程组从0到3个用户的时间)。
  • 循环计数(应该循环测试的次数)。
  • 调度程序复选框(“线程组”面板底部的复选框用于启用/禁用额外字段,您可以在其中输入测试持续时间,启动延迟,运行的开始和结束时间)。

控制器可分为两大类:采样器和逻辑控制器。

1、采样器

采样器是允许JMeter将特定类型的请求发送到服务器的组件。它模拟用户对目标服务器的页面的请求。采样器是必须将组件添加到测试计划中的,因为它只能让JMeter知道需要将哪种类型的请求发送到服务器。请求可以是HTTP, HTTP(s), FTP, TCP, SMTP,SOAP等。

下面给出了JMeter采样器服务的请求列表:

  • FTP请求
  • HTTP请求(也可用于SOAP或REST Web服务)
  • JDBC请求
  • Java对象请求
  • JMS请求
  • JUnit测试请求
  • LDAP请求
  • 邮件请求
  • 操作系统进程请求
  • TCP请求

2、逻辑控制器

逻辑控制器可帮助您控制线程中采样器处理顺序的流程。 它还可以更改来自其子元素的请求的顺序。

以下是JMeter中所有逻辑控制器的列表:

  • 运行时控制器
  • IF控制器
  • 事务控制器
  • 录音控制器
  • 简单控制器
  • while控制器
  • Switch控制器
  • ForEach控制器
  • 模块控制器
  • 包括控制器
  • 循环控制器
  • 仅一次控制器
  • 交错控制器
  • 随机控制器
  • 随机顺序控制器
  • 吞吐量控制器

监听器可以在测试的任何地方进行调整,直接包括在测试计划下。JMeter提供了大约15个监听器,但主要使用的是表,树和图形。当JMeter的采样器组件被执行时,监听器提供JMeter收集的关于那些测试用例的数据的图形表示。它便于用户在某些日志文件中以表格,图形,树或简单文本的形式查看采样器结果。

以下是JMeter中所有监听器的列表:

  • 图表结果
  • 样条曲线可视化器
  • 断言结果
  • 简单的数据编写者
  • 监控结果
  • 分布图(alpha)
  • 聚合图
  • 梅勒展示台
  • BeanShell监听器
  • 总结报告
  • 示例结果保存配置
  • 图表完整结果
  • 查看结果树
  • 汇总报告
  • 查看表格中的结果

计时器:当您在网站或应用程序上执行任何操作时,它们自然会有暂停和延迟。 这些可以使用计时器(Timers)进行模拟。

JMeter发送请求时不会在每个采样器/请求之间应用延迟。 如果在服务器上执行负载/压力测试没有指定延迟,它将会超载。 这可能不完全是我们想要的。可以添加一个计时器元素,该元素允许您定义在每个请求到达时间等待的终止。

下面给出了JMeter提供的所有计时器元素的列表:

  • 同步定时器
  • JSR223 时间
  • BeanShell 时间
  • 高斯随机定时器
  • 统一随机定时器
  • 恒定吞吐量计时器
  • BSF时间
  • 泊松随机时间

配置元素:配置元素的工作与采样器的工作类似。但是,它不发送请求,但它允许修改采样器发出的请求。

这是一个简单的元素,您可以在其中收集所有采样器的关联配置值,如webserver的主机名或数据库URL等。

配置元素只能从放置元素的分支内部访问。

下面给出了JMeter提供的一些最常用配置元素的列表:

  • Java请求默认值
  • LDAP请求默认值
  • LDAP扩展请求默认值
  • 密钥库配置
  • JDBC连接配置
  • 登录配置元素
  • CSV数据集配置
  • FTP请求默认值
  • TCP采样器配置
  • 用户定义的变量
  • HTTP授权管理器
  • HTTP缓存管理器
  • HTTP Cookie管理器
  • HTTP代理服务器
  • HTTP请求默认值
  • HTTP标头管理器
  • 简单的配置元素
  • 随机变量

预处理器元素:在采样器发出请求之前执行,如果预处理器附加到采样器元素,那么它将在该采样器元素运行之前执行。
预处理器元素用于在运行之前修改样本请求的设置,或更新未从响应文本中提取的变量。
以下是JMeter提供的所有预处理器元素的列表:

  • JDBC预处理器
  • JSR223预处理器
  • RegEx用户参数
  • BeanShell预处理器
  • BSF预处理器
  • HTML链接解析器
  • HTTP URL重写修饰符
  • HTTP用户参数修饰符
  • 用户参数

后处理器元素:在发出采样器请求之后执行后处理器元素。 如果后处理器连接到Sampler元素,那么它将在该sampler元素运行之后执行。

后处理器最常用于处理响应数据,例如,为了将来目的而提取特定值。

下面给出了JMeter提供的所有后处理器元素的列表:

  • CSS/JQuery抽取器
  • BeanShell后处理器
  • JSR223后处理器
  • JDBC后处理器
  • 调试后处理器
  • 正则表达式提取器
  • XPath抽取器
  • 结果状态操作处理程序
  • BSF后处理器

函数:JMeter函数可以称为特殊值,可以填充测试树中任何Sampler或其他元素的字段。
JMeter中函数的语法:

${__functionName(var1,var2,var3)} ,

这里_functionName匹配函数的名称,圆括号围绕发送给函数的参数。

如果函数参数包含逗号,那么请务必使用“\”对其进行转义,否则JMeter会将其视为参数分隔符。
例如:

${__time(EEE\, d MMM yyyy)}

函数列表

函数类型名称注解
信息threadNum获取线程号
信息samplerName获取采样器名称(标签)。
信息log记录(或显示)消息(并返回值)。
信息machineName获取本地计算机名称。
输入StringFromFile从文件中读取一行。
输入FileToString读取整个文件。
输入CSVRead从CSV分隔文件中读取。
输入XPath使用XPath表达式从文件中读取。
计算Counter生成递增数字。
计算intSum相加int数字。
计算longSum相加long数字。
计算Random生成一个随机数。
计算RandomString生成随机字符串。
脚本BeanShell运行BeanShell脚本。
脚本javaScript运行javaScript脚本。
脚本jexl, jexl2评估Commons Jexl表达式。
属性Property读取property文件。
属性P读取一个属性(速记方法)。
变量Split将字符串拆分为变量。
变量eval评估变量表达式。
字符串regexFunction使用正则表达式解析先前的响应。
字符串escapeOroRegexpChars引用ORO正则表达式使用的元字符。
字符串Char从数字列表生成Unicode char值。
字符串Unescape包含Java转义的进程字符串(例如\n&\t)。
字符串unescapeHtml解码HTML编码的字符串。
字符串escapeHtml使用HTML编码对字符串进行编码。
字符串TestPlanName返回当前测试计划的名称。

注意:JMeter函数和变量始终区分大小写。

Example:让我们考虑一个Log Function的例子来理解JMeter中函数的使用。

JMeter日志函数的语法:

${__log("message")}

首先,我们将使用HTTP请求采样器创建一个简单的测试计划。

创建JMeter测试计划

  • 进入到JMeter/bin文件夹并双击jmeter.bat文件以启动JMeter界面。
  • 选择测试计划节点,然后右键单击所选项目。
  • 鼠标悬停在“Add”选项上,然后将显示元素列表。
  • 选择“Threads (Users)” > “Thread Grou”
  • 将此线程组重命名为Thread Group 1

添加采样器

我们必须在线程组中添加一个HTTP请求采样器。

  • 选择“Thread Group”,然后右键单击所选项。
  • 鼠标悬停在“Add”选项上,然后将显示元素列表。
  • 选择Sampler > HTTP请求选项。
  • 它将添加一个空的HTTP请求采样器。

将HTTP Request Sampler的字段配置为 -

  • Name - HTTP请求采样器1。
  • Server名称或IP - 在示例中,Web服务器名称将为 - www.yiibai.com 。
  • Protocol - 此字段保持不变。
  • Path - 我们将其写为“/”(斜杠)。 它表示我们想要服务器的根页面。

现在,复制整个线程组1 并将其粘贴在测试计划中三次。

  • 将其他线程组分别重命名为线程组2线程组3
  • 将其他采样器分别重命名为HTTP Request 2HTTP Request 3

下图显示了测试计划的目录结构。

添加监听器

  • 选择“Test Plan”节点,然后右键单击所选项目。
  • 鼠标悬停在“Add”选项上,然后将显示元素列表。
  • 选择 Listener -> Summary Report

保存并执行测试计划

  • 单击文件 -> 将测试计划另存为。
  • 将整个测试计划保存为Function_test.jmx
  • 单击“Run” -> “Start” 以执行测试计划。

验证输出

因此,已经成功执行了测试计划。 现在,我们将使用log函数作为第一个HTTP Request Sampler的名称。

您可以看到日志功能已打印“Hello World”而不是完整的采样器名称。

让我们来看看一个时间函数的例子,将再次使用它作为第二个HTTP采样器的名称。

时间函数的语法:

${__time(dd MM YYYY HH mm ss)}

 

单击Run > Start 以执行测试计划。

可以看到时间函数已打印确切的时间和日期,而不是完整的采样器名称。

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值