《软件测试实验三Jm.ppt》由会员分享,可在线阅读,更多相关《软件测试实验三Jm.ppt(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 软件测试实验三 Jmeter WebEx Confidential2Jmeter agendaJmeterJmeter简介简介JmeterJmeter安装安装脚本录制脚本录制脚本开发脚本开发WebWeb压力测试压力测试数据库测试性能测试数据库测试性能测试上机实验习题上机实验习题WebEx Confidential3Jmeter简介-概述JmeterJmeter是是ApacheApache组织的开放源代码项目组织的开放源代码项目,是纯是纯 javajava应用程序应用程序,是功能测试和性能测试的工具是功能测试和性能测试的工具.JmeterJmeter最早是为了测试最早是为了测试TomcatTo
2、mcat的前身的前身JserverJserver的执行效的执行效率而诞生的率而诞生的.目前其测试能力不仅局限于对目前其测试能力不仅局限于对WebWeb服务器的服务器的测试测试,而是涵盖了数据库而是涵盖了数据库,JMS,Web Service,LDAP,JMS,Web Service,LDAP等对种等对种对象的测试能力对象的测试能力.JmeterJmeter可以用于测试静态或是动态资源的性能可以用于测试静态或是动态资源的性能(静态文静态文件件,Servlets,java,Servlets,java对象对象,Perl,Perl脚本脚本,数据库和数据库和FTPFTP服务器服务器等等).).可以用于针
3、对服务器可以用于针对服务器,网络或对象上模拟大量并发网络或对象上模拟大量并发负载来进行压力强度测试负载来进行压力强度测试.可以分析不同压力负载下的可以分析不同压力负载下的整体性能情况整体性能情况,包括性能的图形分析包括性能的图形分析.WebEx Confidential4Jmeter简介-特点JmeterJmeter支持范围广泛支持范围广泛:多协议多协议-HTTP/TCP/FTP/JDBC/SOAP/LDAP/MAIL;-HTTP/TCP/FTP/JDBC/SOAP/LDAP/MAIL;跨平台跨平台-所有支持所有支持JVMJVM的平台都可以运行的平台都可以运行Jmeter;Jmeter;多语言
4、多语言-所有支持所有支持Bean Script FrameworkBean Script Framework的脚本语言的脚本语言;内部实现线程机制内部实现线程机制(线程组线程组),),不用编写并发负载过程代码不用编写并发负载过程代码;提供丰富的逻辑控制器提供丰富的逻辑控制器,控制线程的运行控制线程的运行;产生相应测试结果的统计报表产生相应测试结果的统计报表.WebEx Confidential5Jmeter简介-优势不依赖于界面不依赖于界面,通过通过APIAPI调用或参数传递来增加调用或参数传递来增加并执行测试用例并执行测试用例;不需要编写测试脚本不需要编写测试脚本,只需要熟悉业务流程和只需要
5、熟悉业务流程和httphttp请求请求,根据根据inputinput对象编写测试用例对象编写测试用例;跳过页面限制跳过页面限制,直接向后台程序添加非法数据直接向后台程序添加非法数据;利用利用badboybadboy录制测试过程录制测试过程,快速生成测试脚本快速生成测试脚本;运用参数化以及函数功能运用参数化以及函数功能,快速完成添加修改测快速完成添加修改测试数据试数据.WebEx Confidential6Jmeter安装JmeterJmeter官方网站官方网站 downloads release-browse download areadownloads release-browse down
6、load area 选择最新版本选择最新版本jakarta-jmeter-2.3.4.zip;jakarta-jmeter-2.3.4.zip;需要需要JDK1.4JDK1.4以及以上版本以及以上版本;WebEx Confidential7Jmeter安装目录解压生成安装目录解压生成安装目录;选择最新版本选择最新版本jakarta-jmeter-2.3.4.zip;jakarta-jmeter-2.3.4.zip;需要需要JDK1.4JDK1.4以及以上版本以及以上版本;WebEx Confidential8Jmeter安装目录BinBin目录目录 运行运行Jmeter.batJmeter.b
7、at即可看见即可看见Jmeter GUIJmeter GUI客户端客户端;注意注意:1.1.内存内存512M,512M,使用默认参数使用默认参数 内存内存512M,512M,将命令行中参数调小将命令行中参数调小 否则在否则在jmeter.logjmeter.log里会显示内存溢出错误里会显示内存溢出错误.将将Jmeter.batJmeter.bat用用UEUE打开打开WebEx Confidential9JVM内存配置参数调整set HEAP=-Xmsset HEAP=-Xms256256m-Xmxm-Xmx256256m mset NEW=-XX:NewSize=set NEW=-XX:Ne
8、wSize=128128m-XX:MaxNewSize=m-XX:MaxNewSize=128128m mset SURVIVOR=-XX:SurvivorRatio=8-set SURVIVOR=-XX:SurvivorRatio=8-XX:TargetSurvivorRatio=50%XX:TargetSurvivorRatio=50%set TENURING=-XX:MaxTenuringThreshold=2set TENURING=-XX:MaxTenuringThreshold=2set EVACUATION=-set EVACUATION=-XX:MaxLiveObjectEva
9、cuationRatio=20%XX:MaxLiveObjectEvacuationRatio=20%set RMIGC=-=600000-=600000set RMIGC=-=600000-=600000set PERM=-XX:PermSize=set PERM=-XX:PermSize=6464m-XX:MaxPermSize=m-XX:MaxPermSize=6464m mset DEBUG=-verbose:gc-set DEBUG=-verbose:gc-XX:+PrintTenuringDistributionXX:+PrintTenuringDistributionWebEx
10、Confidential10内存配置参数定义ms/mxms/mx:定义:定义YOUNG+OLDYOUNG+OLD段的总尺寸,段的总尺寸,msms为为JVMJVM启动启动时时YOUNG+OLDYOUNG+OLD的内存大小;的内存大小;mxmx为最大可占用的为最大可占用的YOUNG+OLDYOUNG+OLD内存大小。在用户生产环境上一般将这内存大小。在用户生产环境上一般将这两个值设为相同,以减少运行期间系统在内存申两个值设为相同,以减少运行期间系统在内存申请上所花的开销。请上所花的开销。NewSize/MaxNewSizeNewSize/MaxNewSize:定义:定义YOUNGYOUNG段的尺寸
11、,段的尺寸,NewSizeNewSize为为JVMJVM启动时启动时YOUNGYOUNG的内存大小;的内存大小;MaxNewSizeMaxNewSize为最大可占用的为最大可占用的YOUNGYOUNG内存大小。在用内存大小。在用户生产环境上一般将这两个值设为相同,以减少户生产环境上一般将这两个值设为相同,以减少运行期间系统在内存申请上所花的开销。运行期间系统在内存申请上所花的开销。PermSize/MaxPermSizePermSize/MaxPermSize:定义:定义PermPerm段的尺寸,段的尺寸,PermSizePermSize为为JVMJVM启动时启动时PermPerm的内存大小;
12、的内存大小;MaxPermSizeMaxPermSize为最大可占用的为最大可占用的PermPerm内存大小。在用内存大小。在用户生产环境上一般将这两个值设为相同,以减少户生产环境上一般将这两个值设为相同,以减少运行期间系统在内存申请上所花的开销。运行期间系统在内存申请上所花的开销。WebEx Confidential11Jmeter安装目录DocsDocs目录目录 Jmeter Java docs Jmeter Java docs Usermanual-Jmeter Usermanual-Jmeter英文用户文档手册英文用户文档手册 Component_reference.html Comp
13、onent_reference.html 核心元件帮助文档核心元件帮助文档 demos Jmeterdemos Jmeter脚本案例脚本案例ExtrasExtras目录目录 对对antant构建工具提供支持构建工具提供支持 运用运用antant实现批量脚本自动执行实现批量脚本自动执行,产生产生HTMLHTML报表报表.记录所有测试数据记录所有测试数据,自动生成自动生成.jtl.jtl文件至文件至extrasextras 目录下目录下,运行运行ant-Dtest=ant-Dtest=文件名文件名report,report,即可生即可生 成测试统计报表成测试统计报表.LibLib目录目录 ext
14、ext 存放存放JmeterJmeter核心核心jarjar包包.junit junit 存放存放JunitJunit测试脚本测试脚本 WebEx Confidential12录制脚本运用运用BadboyBadboy录制生成录制生成JmeterJmeter脚本脚本.安装和启动录制安装和启动录制 BadboyBadboy官方网站官方网站 /下载下载BadboyBadboy最新版本最新版本 启动启动badboy,badboy,在地址栏中输入待录制的在地址栏中输入待录制的webweb应用网站应用网站 的的URL,URL,这里以为例这里以为例,回车开始录制回车开始录制.录制过程录制过程 直接在主界面右
15、侧直接在主界面右侧badboybadboy内嵌浏览器中对应用网站内嵌浏览器中对应用网站进行操作进行操作,所有操作都会被记录在主界面右侧的编所有操作都会被记录在主界面右侧的编辑窗口中辑窗口中.WebEx Confidential13录制脚本导出脚本导出脚本 录制完成后录制完成后,点击工具栏中的点击工具栏中的stop recordingstop recording完成录制完成录制 选择选择File-Export to Jmeter,File-Export to Jmeter,并填写文件名并填写文件名 USTCLogin.jmx,USTCLogin.jmx,将录制好的脚本导出为将录制好的脚本导出为J
16、meterJmeter格式格式.执行脚本执行脚本 启动启动JmeterJmeter打开刚才生成的脚本打开刚才生成的脚本.先增加监听器先增加监听器-查看结果树查看结果树/用表格查看结果用表格查看结果WebEx Confidential14自带录制组件-Http代理服务器WebEx Confidential15配置Http代理服务器代理服务器端口代理服务器端口:8000:8000目标控制器目标控制器:录制脚本的存放位置录制脚本的存放位置 选择默认值选择默认值分组分组:将请求汇总分组将请求汇总分组,把把urlurl请求理解为组请求理解为组 不对样品分组不对样品分组:罗列所有请求罗列所有请求 在组间添
17、加分割在组间添加分割:加入一个虚拟的加入一个虚拟的,以分割线命名的动作以分割线命名的动作.每个组放入一个控制器每个组放入一个控制器:执行时按控制器定义输出结果执行时按控制器定义输出结果 只存储每个组的第一个样本只存储每个组的第一个样本:对于一次对于一次urlurl请求请求,实际很实际很多次多次httphttp请求的情况请求的情况.一般选择只存储每个组的第一般选择只存储每个组的第1 1个样本个样本.WebEx Confidential16配置Http代理服务器记录记录HTTPHTTP信息头信息头:录制录制requestrequest的的headhead信息信息添加断言添加断言:录制时录制时,加入
18、空的检查点加入空的检查点(自行填写自行填写)Regex matching:Regex matching:录制时录制时,加入空的正则匹配加入空的正则匹配.包含模式和排除模式包含模式和排除模式:过滤一些不需要的访问请求过滤一些不需要的访问请求.通过配置浏览器的代理服务器通过配置浏览器的代理服务器,使得所有访问请求使得所有访问请求通过通过JmeterJmeter发送发送,Jmeter,Jmeter将访问过程全部录制下来将访问过程全部录制下来.WebEx Confidential17浏览器设置WebEx Confidential18浏览器设置打开浏览器添加代理打开浏览器添加代理 填写本机填写本机IP或
19、是或是host name,端口填写为设置的端口填写为设置的8000 将将IE设置为代理设置为代理 在浏览器中键入待录制页面的在浏览器中键入待录制页面的URL,然后对该页面进行操作然后对该页面进行操作 Jmeter会自动将所进行的操作转化为脚本会自动将所进行的操作转化为脚本.WebEx Confidential19Jmeter脚本开发测试计划测试计划 测试计划描述了执行测试过程中测试计划描述了执行测试过程中JMeterJMeter的执行过程的执行过程和步骤,一个完整的测试计划包括一个或者多个线和步骤,一个完整的测试计划包括一个或者多个线程组程组(Thread Groups)(Thread Gro
20、ups)、逻辑控制(、逻辑控制(Logic Logic ControllerController)、实例产生控制器()、实例产生控制器(Sample Sample Generating ControllersGenerating Controllers)、侦听器)、侦听器(Listener)(Listener)、定时器(定时器(TimerTimer)、比较()、比较(AssertionsAssertions)、配置元)、配置元素(素(Config ElementsConfig Elements)。打开)。打开JMeterJMeter时,它已经时,它已经建立一个默认的测试计划建立一个默认的测试计
21、划,一个一个JMeterJMeter应用的实例应用的实例只能建立或者打开一个测试计划。只能建立或者打开一个测试计划。WebEx Confidential20Jmeter脚本开发JMeter JMeter 的主要测试组件总结如下:的主要测试组件总结如下:1.1.测试计划是使用测试计划是使用 JMeter JMeter 进行测试的起点,它是其它进行测试的起点,它是其它 JMeter JMeter 测试元件的测试元件的容器。容器。2.2.线程组代表一定数量的并发用户,它可以用来模拟并发用户发送请求。实线程组代表一定数量的并发用户,它可以用来模拟并发用户发送请求。实际的请求内容在际的请求内容在Samp
22、lerSampler中定义,它被线程组包含。中定义,它被线程组包含。3.3.监听器负责收集测试结果,同时也被告知了结果显示的方式。监听器负责收集测试结果,同时也被告知了结果显示的方式。4.4.逻辑控制器可以自定义逻辑控制器可以自定义JMeterJMeter发送请求的行为逻辑,它与发送请求的行为逻辑,它与SamplerSampler结合使用结合使用可以模拟复杂的请求序列。可以模拟复杂的请求序列。5.5.断言可以用来判断请求响应的结果是否如用户所期望的。它可以用来隔离断言可以用来判断请求响应的结果是否如用户所期望的。它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。这个限制对于有效的测试
23、问题域,即在确保功能正确的前提下执行压力测试。这个限制对于有效的测试是非常有用的。是非常有用的。6.6.配置元件维护配置元件维护SamplerSampler需要的配置信息,并根据实际的需要会修改请求的内需要的配置信息,并根据实际的需要会修改请求的内容。容。7.7.前置处理器和后置处理器负责在生成请求之前和之后完成工作。前置处理前置处理器和后置处理器负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。8.8.定时器负责定义请求之间的延迟间隔。定时器负责定义请求之间的延迟间隔。WebE
24、x Confidential21Jmeter脚本开发填充一个测试计划的内容,这个测试计划向一个填充一个测试计划的内容,这个测试计划向一个jspjsp文件和一个文件和一个servletservlet发出请求,我们需要发出请求,我们需要JMeterJMeter模拟五个请求者(也就是五个线程),每个请求者模拟五个请求者(也就是五个线程),每个请求者连续请求两次,下面介绍了详细的操作步骤连续请求两次,下面介绍了详细的操作步骤.WebEx Confidential22Jmeter脚本开发增加负载信息设置增加负载信息设置 模拟五个请求者,每个请求者在测试过程中连续模拟五个请求者,每个请求者在测试过程中连续
25、 请求两次请求两次.选中可视化界面中左边树的测试计划节点,单击选中可视化界面中左边树的测试计划节点,单击 右键,选择增加线程组右键,选择增加线程组,界面右边将会出现他的界面右边将会出现他的 设置信息框。设置信息框。线程组有三个和负载信息相关的参数:线程组有三个和负载信息相关的参数:线程数线程数:设置发送请求的用户数目设置发送请求的用户数目.Ramp-up periodRamp-up period:每个请求发生的总时间间隔,每个请求发生的总时间间隔,单位是秒。比如你的请求数目是单位是秒。比如你的请求数目是5 5,而这个参数是,而这个参数是 10 10,那么每个请求之间的间隔就是,那么每个请求之间
26、的间隔就是10105 5即即2 2秒秒.循环次数循环次数:请求发生的重复次数请求发生的重复次数,如果选择后面的如果选择后面的 forever(forever(默认默认),),那么请求将一直继续那么请求将一直继续,如果不选择如果不选择 foreverforever而在输入框中输入数字而在输入框中输入数字,那么请求将重复那么请求将重复 指定的次数指定的次数,如果输入如果输入0,0,那么请求将执行一次那么请求将执行一次.WebEx Confidential23Jmeter脚本开发WebEx Confidential24Jmeter脚本开发增加默认增加默认HttpHttp属性(可选)属性(可选)实际的
27、测试工作往往是针对同一个服务器上实际的测试工作往往是针对同一个服务器上WebWeb应应用展开的用展开的,所以所以JmeterJmeter提供了这样一种设置提供了这样一种设置,在默在默认认HttpHttp属性设置需要被测试服务器的相关属性,以属性设置需要被测试服务器的相关属性,以后的后的httphttp请求设置中就可以忽略这些相同参数的设请求设置中就可以忽略这些相同参数的设置置,减少设置参数录入的时间减少设置参数录入的时间.WebEx Confidential25Jmeter脚本开发选中可视化界面中左边树的测试计划节点,单击右选中可视化界面中左边树的测试计划节点,单击右键,选择配置元件键,选择配
28、置元件-Http-Http请求默认值请求默认值,界面右边将会界面右边将会出现他的设置信息框。出现他的设置信息框。默认默认httphttp属性的主要参数说明如下:属性的主要参数说明如下:protocalprotocal:发送测试请求时使用的协议:发送测试请求时使用的协议server name or ipserver name or ip:被测试服务器的:被测试服务器的ipip地址或者地址或者名字名字pathpath:默认的起始位置。比如将默认的起始位置。比如将pathpath设置为设置为jmeterjmeter,那么所有的,那么所有的httphttp请求的请求的urlurl中都将增加中都将增加j
29、meterjmeter路径。路径。port numberport number:服务器提供服务的端口号服务器提供服务的端口号WebEx Confidential26Jmeter脚本开发测试计划将针对本机的测试计划将针对本机的WebWeb服务器上的服务器上的WebWeb应用应用进行测试,所以进行测试,所以protocalprotocal应该是应该是httphttp,ipip使用使用localhostlocalhost,因为这个,因为这个webweb应用发布的应用发布的contextcontext路路径是径是jmeterjmeter,所以这里的,所以这里的pathpath设置为设置为jmeterj
30、meter,因为使用,因为使用TomcatTomcat服务器,所以服务器,所以port port numbernumber是是80008000。设置后的屏幕截图如下:。设置后的屏幕截图如下:WebEx Confidential27Jmeter脚本开发WebEx Confidential28Jmeter脚本开发增加增加HttpHttp请求请求 选中可视化界面中左边树的线程组节点,单击右选中可视化界面中左边树的线程组节点,单击右键,选择添加键,选择添加Sampler-HttpSampler-Http请求请求,界面右边将会出界面右边将会出现其设置信息框。现其设置信息框。参数和参数和httphttp属
31、性差不多,增加的属性中有发送属性差不多,增加的属性中有发送httphttp时方法的选择,可以选择为时方法的选择,可以选择为getget或者或者postpost。WebEx Confidential29Jmeter脚本开发WebEx Confidential30Jmeter脚本开发增加监听器增加监听器 选中可视化界面中左边树的测试计划节点,单选中可视化界面中左边树的测试计划节点,单击右键击右键.选择增加监听器选择增加监听器-查看结果树,可以查看每个链查看结果树,可以查看每个链接的执行情况接的执行情况,包括发出的请求和服务器返回的包括发出的请求和服务器返回的详细内容详细内容.选择增加监听器选择增加
32、监听器-用表格查看结果用表格查看结果,可以查看到可以查看到每个链接的执行情况每个链接的执行情况,包括执行时间与成功与否包括执行时间与成功与否.选择增加监听器选择增加监听器-聚合报告聚合报告,可以查看每个线程可以查看每个线程组的最大组的最大,最小和平均响应时间最小和平均响应时间.WebEx Confidential31Jmeter脚本开发开始执行测试计划开始执行测试计划 现在可以通过单击菜单栏运行现在可以通过单击菜单栏运行-启动开始执行测启动开始执行测试计划了。试计划了。下面是两次测试结果以及分析下面是两次测试结果以及分析.WebEx Confidential32Jmeter脚本开发WebEx
33、Confidential33Jmeter脚本开发WebEx Confidential34Jmeter脚本开发第一次执行时的几个大时间值均来自于第一次执行时的几个大时间值均来自于jsp jsp requestrequest,这可以通过下面的理由进行解释:,这可以通过下面的理由进行解释:jspjsp执行前都需要被编译成执行前都需要被编译成.class.class文件文件.所以第二次的所以第二次的结果才是正常的结果结果才是正常的结果 .WebEx Confidential35Jmeter脚本开发WebEx Confidential36Jmeter脚本开发WebEx Confidential37Jme
34、ter脚本开发WebEx Confidential38上机作业习题选择被测试服务器选择被测试服务器:Tomcat:Tomcat等等.选择被测试网页选择被测试网页:jsp:jsp选择测试对象选择测试对象:LifeRay(Tomcat6.x):LifeRay(Tomcat6.x)通过使用通过使用JMeterJMeter使用不同的线程,使用不同的线程,Ramp-Up Ramp-Up PeriodPeriod和和Loop timeLoop time等参数组合,对网站及相关内等参数组合,对网站及相关内部网页网络链接情况做出相应的测试。可以对同部网页网络链接情况做出相应的测试。可以对同一网页进行不同参数下的负载测试,之后选取其一网页进行不同参数下的负载测试,之后选取其他不同的四个子网页进行一次负载测试。他不同的四个子网页进行一次负载测试。并根据树结果并根据树结果,表格结果以及图形结果对实验数据表格结果以及图形结果对实验数据进行分析进行分析.同时提交测试脚本同时提交测试脚本.注注:进行进行10-1510-15组不同参数的测试组不同参数的测试,并生成相应脚本并生成相应脚本 (将测试计划另存为将测试计划另存为.jmx.jmx文件文件)Liu.Ming