利用JMeter进行Web测试 King_W.

Slides:



Advertisements
Similar presentations
软件测试实验三 Jmeter
Advertisements

第六 章数据库访问页 6.1 数据访问页视图 6.2 创建数据访问页 6.3 编辑数据访问页 6.4 查看数据访问页 退出.
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
基于解释性语言的手机跨平台架构 Sloan Yi. Qt MTK.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
在PHP和MYSQL中实现完美的中文显示
J2EE与中间件技术 ——Lab.
陈香兰 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 助教:陈博、李春华 Spring 2009.
移动开发的灵便迭代之道 黄凯.
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
Android开发入门 -----Android 开发“Ready go!” 主讲:李晓蕾
AngularJS -- 使用AngularJS进行开发
第二讲 搭建Java Web开发环境 主讲人:孙娜
第八章 菜单设计 §8.1 Visual FoxPro 系统菜单 §8.2 为自己的程序添加菜单 §8.3 创建快捷菜单.
SOA – Experiment 3: Web Services Composition Challenge
大学计算机基础 典型案例之一 构建FPT服务器.
SVN服务器的搭建(Windows) 柳峰
SQL Injection.
走进编程 程序的顺序结构(二).
网络常用常用命令 课件制作人:谢希仁.
第11章:一些著名开源软件介绍 第12章:服务安装和配置 本章教学目标: 了解当前一些应用最广泛的开源软件项目 搭建一个网站服务器
PostgreSQL 8.3 安装要点 四川大学计算机学院 段 磊
Windows网络操作系统管理 ——Windows Server 2008 R2.
第一讲: 基本流程(1).
以ISI平台为例,为您演示一下如何在Endnote文献中查看该文献的References
中国科学技术大学计算机系 陈香兰(0551- ) Spring 2009
Windows 7 的系统设置.
YMSM D-PACK 安装手册 作成者:D-PACK维护组(YMSLx) 作成日:
VSS使用简介 王树升
任务1-3 使用Dreamweaver创建ASP网页
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
程序设计工具实习 Software Program Tool
SOA – Experiment 2: Query Classification Web Service
Visual Studio 2010简捷入门.
录制回放工具使用说明 鲁晓宇
Web安全基础教程
第四章 团队音乐会序幕: 团队协作平台的快速创建
VisComposer 2019/4/17.
JMeter 丁勇
VB与Access数据库的连接.
姚金宇 MIT SCHEME 使用说明 姚金宇
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
项目二:HTML语言基础.
教育部 财政部 网络教育数字化学习资源中心平台系统 安装与配置
Web安全基础教程
第4章 Excel电子表格制作软件 4.4 函数(一).
JSP实用教程 清华大学出版社 第2章 JSP运行环境和开发环境 教学目标 教学重点 教学过程 2019年5月7日.
iSIGHT 基本培训 使用 Excel的栅栏问题
《手把手教你学STM32-STemWin》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
第六章 素材的加工与处理 第13讲 用GoldWave进行音频的截取、合并、淡入淡出操作
LOGIX500软件入门 西安华光信息技术有限公司 2008年7月11日.
Visual Basic程序设计 第13章 访问数据库
VRP教程 2011.
Delphi 7.0开发示例.
SCI收录号查询方法介绍 上海大学情报研究所
第9章 多媒体技术 掌握 Windows 画图工具的基本操作; 掌握 Windows 音频工具进行音频播放;
Python 环境搭建 基于Anaconda和VSCode.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
YOUR SUBTITLE GOES HERE
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
第四章 UNIX文件系统.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
实验六静态路由.
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
第六讲 酒店客房管理系统(二) 教育部“十二五”职业教育国家规划教材
培训课件 AB 变频器的接线、操作及参数的备份 设备动力科.
学习目标 1、什么是列类型 2、列类型之数值类型.
JUDDI安装手册.
百万行、千万行数据查询教程 老黄牛.
Presentation transcript:

利用JMeter进行Web测试 King_W

利用JMeter进行Web测试 JMeter介绍 脚本录制 运行JMeter进行测试 JMeter主要组件介绍 参数化设置 动态数据关联 利用XSLT分析JMeter结果文件

JMeter介绍 JMeter,一个100%的纯Java桌面应用,它是Apache组织的开放源代码项目,它是功能和性能测试的工具。JMeter可以用于测试静态或者动态资源的性能(文件、Servlets、Perl脚本、Java对象、数据库和查询、ftp服务器或者其他资源)。原先Jmemer是为Web/HTTP测试而设计的,但是它已经扩展以支持各种各样的测试模块。它和用于HTTP和SQL数据库(使用JDBC)的模块一起运送。它可以用来测试静止资料库或者活动资料库中的服务器的运行情况,可以用来模拟对服务器或者网络系统加以重负荷以测试它的抵抗力,或者用来分析不同负荷类型下的所有运行情况。它也提供了一个可替换的界面用来定制数据显示,测试同步及测试的创建和执行。   Jmeter的下载地址:http://jakarta.apache.org/jmeter/usermanual/index.html   JMeter 的特性:   a) 能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试(通过JDBC)。   b) 完全的可移植性和100% 纯Java。   c) 完全 Swing 和轻量组件支持(预编译的JAR使用 javax.swing.*)包。   d) 完全多线程 框架允许通过多个线程并发取样和 通过单独的线程组对不同的功能同时取样。   e) 精心的GUI设计允许快速操作和更精确的计时。   f) 缓存和离线分析/回放测试结果。   g) 高可扩展性:   h) 可链接的取样器允许无限制的测试能力。   i) 各种负载统计表和可链接的计时器可供选择。   j) 数据分析和可视化插件提供了很好的可扩展性以及 以及个性化。   k) 具有提供动态输入到测试的功能(包括Javascrīpt)。   l) 支持脚本变成的取样器(在1.9.2及以上版本支持BeanShell)。

脚本录制 利用BadBoy进行脚本录制 利用JMeter的代理服务器功能进行脚本录制

利用BadBoy录制JMeter脚本(1) 安装Badboy。安装过程同一般的Windows 应用程序没有什么区别,安装完成后你可以在桌面和Windows开始菜单中看到相应的快捷方式——如果找不到,可以找一下Badboy安装目录下的Badboy.exe 文件,直接双击启动Badboy; 启动Badboy,你可以看到下面的界面。

利用BadBoy录制JMeter脚本(2) 在地址栏(图中红色方框标注的部分)中输入你需要录制的Web应用的URL——这里我们以http://www.baidu.com 为例 。 点击 开始录制 按钮(图中蓝色圆圈标注的部分)开始录制。 开始录制后,你可以直接在Badboy内嵌的浏览器(主界面的右侧)中对被测应用进行操作,所有的操作都会被记录在主界面左侧的编辑窗口中(图中黄色方框标注的部分)——在这个试验中,我们在baidu的搜索引擎中输入 JMeter 进行搜索。不过录制下来的脚本并不是一行行的代码,而是一个个Web对象——这有点像LoadRunner的VuGen中的Tree View视图; 录制完成后,点击工具栏中的“停止录制”按钮(图中紫色方框标注的部分),完成脚本的录制;

利用BadBoy录制JMeter脚本(3) 选择“File -> Export to JMeter”菜单,填写文件名“baidu.jmx”,将录制好脚本导出为JMeter脚本格式。也可以选择“File -> Save”菜单保存为Badboy脚本; 启动JMeter并打开刚刚生成的测试脚本,就可以用JMeter进行测试了。

利用JMeter的代理服务器功能 进行脚本录制(1) 在测试计划中添加线程组,在线程组中添加逻辑控制器-录制控制器。 在工作台中添加非测试元件-HTTP代理服务器。 端口:即代理服务器的监听端口,我们设为8080。 目标控制器选择:测试计划>线程组; 分组选择:每个组放入一个新的控制器。

利用JMeter的代理服务器功能 进行脚本录制(2) 在HTTP代理服务器中添加定时器-高斯随机定时器(用于告知Jmeter来在其生成的HTTP请求中自动的增加一个定时器)。定时器将会使相应的的取样器被延迟。 延时的规则是,在上一个访问请求被响应并延时了指定的时间后,下一个被定时器影响的取样访问请求才会被发送出去。 如果在代理服务器元件里使用了高斯随机定时器,就应该在其中的固定延迟偏移(Constant Delay Offset)设置项里添上${T}(用于自动引用纪录的延迟时间)。

利用JMeter的代理服务器功能 进行脚本录制(3) 代理服务器配置好以后,点击启动,代理服务器就会开始记录所接受的HTTP 访问请求。 打开浏览器,打开Internet选项,将局域网(LAN)设置中的代理服务器设为:localhost,端口为在代理服务器中设的端口:8080。

利用JMeter的代理服务器功能 进行脚本录制(4) 在浏览器地址栏中输入地址并进行相关的操作进行录制,录制完成后, 停止HTTP 代理服务器; 在录制控制器元件上单击右键将记录的元件保存为一个文件用于以后重用,另外,不要忘了恢复浏览器的代理服务器设置。

运行Jmeter进行测试(1) 脚本录制完毕后,就可以运行JMeter来进行我们的测试了。 下载JMeter的最新版本,将zip文件解压缩到D:/JMeter,运行D:/JMeter/bin下的jmeter.bat即可。

运行Jmeter进行测试(2) 打开JMeter会有一个默认的测试计划,点击文件-打开,选中录制的脚本文件如:WebXSample_addUser.jmx,打开脚本进行测试。 在线程组上添加监听器-聚合报告(用于分析测试结果)后,点击运行-启动,开始测试,测试完毕后在聚合报告中就可以看到测试结果。一个简单的测试计划就完成了。

运行Jmeter进行测试(3) 聚合报告显示测试结果

运行Jmeter进行测试(4)-聚合报告详解 Label:每个 JMeter 的 element (例如 HTTP Request )都有一个 Name 属性,这里显示的就是 Name 属性的值 #Samples:表示你这次测试中一共发出了多少个请求,如果测试计划模拟10个用户,每个用户迭代10次,这里就会显示100 Average:平均响应时间 — 默认情况下是单个 Request 的平均响应时间,当使用了事务控制器时,也可以以事务为单位显示平均响应时间 Median:中位数,也就是 50 %用户的响应时间 90% Line: 90 %用户的响应时间 Min:最小响应时间 Max:最大响应时间 Error%:错误率,本次测试中出现错误的请求的数量 / 请求的总数 Throughput:吞吐量 —— 默认情况下表示每秒完成的请求数( Request per Second ) KB/Sec:每秒从服务器端接收到的数据量

JMeter主要组件介绍 测试计划(Test Plan)是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。 线程组(Thread Group)代表一定数量的并发用户,它可以用来模拟并发用户发送请求。 取样器(sampler)定义实际的请求内容,被线程组包含,我们主要用HTTP请求。 监听器(Listener) 逻辑控制器(Logic Controller) 断言(Assertions) 配置元件(Config Element) 前置处理器(Pre Processors)和后置处理器(Post Processors) 定时器(Timer)

JMeter主要组件介绍-测试计划 测试计划(Test Plan)是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。 名称:你可以为你的测试计划取一个有意义的名字。 注释:对测试计划的注释。 用户定义的变量:用户可以自己定义变量,在用到此变量的时候直接用${变量名}引用即可。例:变量名=url,值=http://www.baidu.com,在需要http://www.baidu.com时直接用${url}即可。 Add directory or jar to classpath:向类路径即%JMETER-HOME%\lib中添加目录及jar包。

JMeter主要组件介绍-线程组 名称:为线程组起名字。 线程属性-线程数:设置发送请求的用户数目 ,即并发数。 线程属性-Ramp-Up Period(in second):线程间的时间间隔,单位是秒。即所有线程在多少时间内启动。 线程属性-循环次数:请求的重复次数,如果选择后面的forever(默认),那么 请求将一直继续,如果不选择forever,而在输入框中输入数字,那么请求将重复指定的次数,如果输入1,那么请求将执行一次,如果是0,会出现问题。 调度器配置-启动时间:测试计划什么时候启动,启动延迟会覆盖它。 调度器配置-结束时间:测试计划什么时候结束,持续时间会覆盖它。 调度器配置-持续时间:测试计划持续多长时间,会覆盖结束时间。 调度器配置-启动延迟:测试计划延迟多长时间启动,会覆盖启动时间。

JMeter主要组件介绍-取样器(HTTP请求) 名称:HTTP请求的名字。 Web服务器-服务器名称或IP、端口号,脚本录制时自动添加,也可以使用“用户自定义变量”。 HTTP请求:用默认值即可。 同请求一起发送参数:请求中的参数、值可以在此设置,需要用到参数化及动态数据关联,我们在后面专门介绍。 同请求一起发送文件:我可以制定同请求一起发送哪个文件。 其他任务包括:从HTML文件中获取所有内含的资源、用作监视器、Embedded URLs must match。

JMeter主要组件介绍-监听器 监听器(Listener)负责收集测试结果,同时也被告知了结果显示的方式。我们常用的包括:聚合报告、查看结果树、用表格查看结果,都支持将结果数据写入文件。其他的添加上去看看就行。聚合报告前面我们介绍过,后面是查看结果树和用表格查看结果的截图。

JMeter主要组件介绍-监听器(用表格查看结果)

JMeter主要组件介绍-监听器(查看结果树)

JMeter主要组件介绍-逻辑控制器 逻辑控制器(Logic Controller)可以自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。

JMeter主要组件介绍-逻辑控制器 循环控制器可以设置请求的循环次数或永远循环(如果选中永远的话)。 事务控制器可以将多个请求放在同一个事务中。如果选中Gegerate parent sample,则聚合报告中只显示事务控制器的数据,而不会显示其中的各个请求的数据,反之则全部显示。

JMeter主要组件介绍-断言 断言(Assertions)可以用来判断请求响应的结果是否如用户所期望的。它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。这个限制对于有效的测试是非常有用的。

JMeter主要组件介绍-配置元件 配置元件(Config Element)维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。我们主要在参数化中用到CSV Data Set Config

JMeter主要组件介绍-前置处理器和后置处理器 前置处理器(Pre Processors)和后置处理器(Post Processors)负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。我们主要在动态关联中用到后置处理器的正则表达式提取器。

JMeter主要组件介绍-定时器 定时器(Timer)负责定义请求之间的延迟间隔。

参数化设置 在我们的测试计划中我们使用的都是HTTP请求,在HTTP请求中常常会提交一些参数,我们为了不想在每一次请求中都使用相同的参数值,就要想办法让每一次请求的参数的值都是不一样的,我们就需要进行参数化设置,这里我们介绍两种参数化设置的方法。 一种是利用函数助手中的_Random函数进行参数化设置; 一种是利用配置元件中的CSV Data Set Config进行参数化设置。

参数化设置-函数助手(1) JMeter中有一个函数助手的功能,里面内置了多个函数,我们可以利用其中的_Random函数来进行请求中的参数化设置。

参数化设置-函数助手(2) 在JMeter中选择“选项-函数助手对话框”打开函数助手对话框。

参数化设置-函数助手(3) 选择一个功能_Random。 设定最小值为1。 设定最大值为100。 函数名称设为func1。 其中函数名称用来在引用中作区别,即我们可以设定不同的名称在不同的地方引用同一个函数的功能。

参数化设置-函数助手(4) 例如:我们生成了两个串${_Random(1,100,func1)}、 ${_Random(1,100,func2)},在添加图书的请求中,我们在bookName的参数值中引用${_Random(1,100,func1)},在bookConcern的参数值中应用${_Random(1,100,func2)},见截图,这样测试运行时不同的线程将产生不同的bookName和bookConcern。

参数化设置-CSV Data Set Config(1) 在线程组上点击右键选择添加-配置元件-CSV Data Set Config,打开CSV Data Set Config。 Filename文件名:即参数化要引用的文件名。这里是d:\number.txt File encoding文件编码:可以不填。 Variable Names(comma-delimited)变量名(用逗号分割):多个变量可以引用同一个文件,用逗号分割。这里是num1,num2 Delimiter(use ‘\t’ for tab):参数文件中多个变量值的分隔符,\t表示用tab键分割,默认是逗号。 Recycle on EOF?:结束后是否循环?默认是True. Number.txt文件内容见截图。

参数化设置-CSV Data Set Config(2) 在添加图书的请求中,我们在bookName的参数值中引用${num1},在bookConcern的参数值中应用${num2},见截图,这样测试运行时不同的线程将产生不同的bookName和bookConcern。

动态数据关联 在HTTP请求的参数中经常会遇到一些参数的值是从服务器相应的动态数据,这些数据需要进行关联才能使得每一次请求都能成功得被服务器接受,在JMeter中采用正则表达式提取器来获取这些动态的数据。 正则表达式允许用户从服务器响应中获取数据,作为一个后置处理器,正则表达式提取器会在每一个请求执行后再执行,正则表达式提取请求的参数值,产生模板字符串,并将结果保存到给出的变量中。

动态数据关联(1)-正则表达式提取器 在HTTP请求的参数中经常会遇到一些参数的值是从服务器相应的动态数据,这些数据需要进行关联才能使得每一次请求都能成功得被服务器接受,在JMeter中采用正则表达式提取器来获取这些动态的数据。比如我们想要获得从服务器相应的TOKEN,就可以使用下面的正则表达式提取器。

动态数据关联(2) 使用时就可以使用${token_g1}来表示获取到的TOKEN值。如下图:

使用命令行运行JMeter脚本 JMeter -n -t my_test.jmx -l log.jtl -n告知JMeter采用非图形化运行JMeter脚本 -t指定要运行的脚本文件 -l指定保存执行结果的文件名 执行命令前要检查当前目录是否是%JMeter_Home%\bin 目录; 如果 JMeter 脚本不在当前目录,需要指定完整的路径;如果要把执行的结果保存在其他地方也要指定完整的路径。

利用XSLT分析JMeter结果文件(1) 将结果文件的扩展名改为xml,例:将log.jtl改为log.xml。 在log.xml的文件头 <?xml version="1.0" encoding="UTF-8"?> <testResults version="1.2"> 中添加 <?xml-stylesheet type=“text/xsl” href=“jmeter-results-report.xsl” ?> 使之变成 <?xml-stylesheet type="text/xsl" href="jmeter-results-report.xsl" ?> 其中href指定xsl文件的路径,如果与xml文件在同一目录,则只写文件名即可,否则要写明详细路径。

利用XSLT分析JMeter结果文件(2) 将修改后的xml文件用浏览器打开即可得到统计结果

JMeter中进行分布式测试 作为一个纯 JAVA 的GUI应用,JMeter对于CPU和内存的消耗还是很惊人的,所以当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至还会引起JAVA内存溢出的错误。不过,JMeter也可以像 LoadRunner 一样通过使用多台机器运行所谓的代理来分担负载产生器自身的压力,并借此来获取更大的并发用户数,我们只需手动配置一下即可。 1、在所有期望运行JMeter作为 负载产生器的机器上安装JMeter,并确定其中一台机器作为 控制器,其他的机器作为 代理。然后运行所有 代理 机器上的JMeter-server.bat文件—假定我们使用两台机器172.20.80.47和172.20.80.68作为 代理; 2、在Controller 机器的JMeter安装目录下找到 bin 目录,再找到 jmeter.properties 这个文件,使用记事本或者其他文字编辑工具打开它; 3、在打开的文件中查找“remote_hosts=”这个字符串,你可以找到这样一行“remote_hosts=127.0.0.1”。其中的 127.0..0.1 表示运行JMeter代理的机器,这里需要修改为“remote_hosts=172.20.80.47,172.20.80.68”; 4、保存文件,并重新启动控制器机器上的JMeter,并进入启动 ->远程启动菜单项。就会看到我们刚才添加的两个代理的地址,选中即可运行,如果想同时启动所有代理,选择远程全部启动即可。 要进行分布式测试代理机器上需要添加环境变量,即添加用户变量JMETER_HOME=d:\jmeter,系统变量中的path中添加d:\jmeter\bin(假设jmeter放在d盘根目录下)。

谢谢! 祝大家工作愉快!身体健康!