1.jmeter常用功能jmeter软件的目录:根目录:测试计划1.线程组:测试计划-右键-添加-Threads(Users)-线程组2.Setup thread group:可用于执行预测试操作,这些线程的行为完全像一个正常的线程组元件,类似于Loaderrunner中的init3.Teardown thread group:可用于执行测试后动作,这些线程的行为完全像一个正常的线程组元件,类似于Loaderrunner中的end2.jmeter的两种脚本录制方法2.1录制1——badboy1.badboy下载:http://www.badboy.com.au/2.介绍badboy3.打开badboy工具,点击栏目上的红色圆形按钮,在地址栏目中输入被测试的项目的地址4.录制完成后,点击工具栏旁边的黑色按钮,结束录制,选择“文件”–Export to Jmeter5.打开Jmeter工具,选择文件-打开-选择.jmx类型,将文件导入进来了6.演示录制2.2录制2——代理1.创建一个线程组(右键测试计划-添加-线程组)2.在工作台-非测试元件-添加HTTP代理服务器3.代理服务器的端口默认8080,可自行修改,但是不要与其他应用端口冲突4.目标控制器:录制的脚本的存放位置,可选择项为测试计划中的线程组(根据实际来选择即可)5.分组:对请求进行分组,“分组”的概念是将一批请求汇总分组,可以把URL请求理解为分组——不对样本分组:所有的请求全部罗列——在组间添加分隔:加入一个虚拟的以分隔线,命名的动作,运作同“不对样本分组”无实际意义——每个组放入一个新的控制器:执行时按控制器给输出结果——只存储每个组的第一个样本:对于一次URL请求,实际很多次http请求的情况6.设置IE浏览器7.IE——internet属性——连接——局域网-勾选代理服务器为LAN使用代理,地址:localhost,端口号:要与jmeter中的端口号设置为一致,勾选:跳过本地地址的代理服务器,点击确定,重新启动IE浏览器,在浏览器地址中输入地址,jmeter中就会限制录制的网址8.现在点击jmeter上的启动按钮,打开浏览器输入需要录制web项目地址,jmeter会自动记录你IE所访问的页面9.录制完成后一定要到局域网中停止2.Jmeterbadboy脚本开发技术详解1.badboy中的检查点:以sougou.com中搜索小强软件测试为例:脚本录制完成,选择停止:在搜索框中选择要设置的检查点——Tools——Add Assertion for Selection回放——选择play all2.badboy中的参数化-文本(1)建立参数化列表:value-右键添加(2)在请求中替换${参数名称}:query右键-properties-value改为${参数名称}(3)中文可能有乱码,改下请求中的编码即可回放:此网址右键-properties-选项1:是设置循环几次,选项2是每个参数都循环3.Jmeter性能测试小小的实战项目描述:被测网站:xqtesting.blog.51cto.com指标:响应时间以及错误率场景:线程属性:线程数:20,Ramp up Period(in seconds):10,循环次数3.1打开jmeter-测试计划-线程组-添加http请求(1)http请求:-保持默认即可(2)名称:本属性用于标识一个取样器,建议使用一个有意义的名称(3)注释:对于测试没有任何作用,仅用户记录用户可读的注释信息(4)服务器名称或IP:HTTP请求发送的的目标服务器名称或IP地址(5)端口号:目标服务器的端口号,默认值为80,后面的超时定义可以不用填(6)协议:向目标服务器发送http请求时的协议,可以是http或者是https,默认值为http(7)方法:发送http请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等(8)Content encoding:内容的编码方式(9)路径:目标URL路径(不包括服务器地址和端口)(10)自动重定向:如果选中该选项,当发送HTTP请求后得到的响应是302/301时,JMeter自动重定向到新的页面(11)Use keep Alive:当该选项被选中时,jmeter和目标服务器之间使用keep-Alive方式进行HTTp通信,默认选中(12)Use multipart/from-data for HTTP POST:当发送HTTP POST请求时,使用Use multipart/from-data的方法发送,默认不选中(13)同请求一起发送参数:在请求中发送URL参数,对于带参数的URL,jmeter提供了一个简单的对参数化的方法,用户可以将URL中所有参数设置在本表中,表中每一行时一个参数值对(对应URL中的 名称1=值1)(14)同请求一起发送文件:在请求中发送文件,通常,HTTP文件上传行为可以通过这种方式模拟(15)从HTML文件获取所有有内含的资源:当该选项被选中时,jmeter在发出HTTP请求并获得响应的HTML文件内容后,还对该HTML进行Parse并获取HTML中包含的所有资源(图片、flash等),默认不选中,如果用户只希望获取页面中的特定资源,可以在下方的Embedded URLs must match文本框中填入需要下载的特定资源表达式,这样,只有能匹配指定正则表达式的URL指向资源会被下载(16)用作监视器:此取样器被当成监视器,在Monitor Results Listener中可以直接看到基于该取样器的图形化统计信息,默认为不选中(17)Save response as MD5 hash?:选中该选项,在执行时仅记录服务端响应数据的MD5值,而不记录完整的响应数据,在需要进行数据量非常大的测试时,建议选中该选项以减少取样器记录响应数据的开销3.2线程组设置‘(1)线程数:虚拟用户数(2)ramp up period:设置虚拟用户数需要多长时间全部启动,如果线程数为20,时间为10,也就是每秒钟启动2个线程(3)循环次数:每个线程发送请求的次数,如果线程数为20,循环次数为100,那么每个线程发送100次请求,总请求数为20*100=2000,如果勾选了“永远”,那么所有线程会一直发送请求,一直到选择停止运行脚本(4)调度器:可以更灵活的设置运行时间等3.3监听器(1)查看结果树(2)聚合报告单位:默认是毫秒Label:定义HTTP请求名称Samples:表示这次测试中一共发出量多少个请求Average:平均响应时长-默认情况下单个Request的平均响应时长,当使用了Transaction Controller时,也可以以Transaction为单位展示平均响应时长Median:中位数,也就是50%用户的响应时长90%Line:90%用户的响应时长Min:访问页面的最小响应时长Max:访问页面的最大响应时长Error%:错误请求的数量/请求的总数Throughput:默认情况下表示每秒完成的请求数,当使用了Transaction Controller时,也可以表示类似LoadRunner的Transaction per Second数KB/S恶臭:每秒从服务器端接收到的数据量4.jmeter元件的作用域与执行顺序1.元件的作用域(1)配置元件(config elements)会影响其作用范围内的所有元件(2)前置处理程序(per-processors)在其作用范围内的每一个sampler元件之前执行(3)定时器:(timers)对其作用范围内的每一个sampler有效(4)后置处理程序(Post-processsors)在其作用范围内的每一个sampler元件之后执行(5)断言(Assertions)对其作用范围内的每一个sampler元件执行后的结果执行校验(6)监听器(Listeners):收集其作用范围的每一个sampler元件的信息并呈现(7)sampler元件不和其他元件相互作用,因此不存在作用域的问题2.执行顺序配置元件前置定时器Sampler后置断言监听器如果在同一作用域范围内由多个同一类型的远近啊,则这些元件则按照他们在测试计划中的上下顺序依次执行5.jmeter之参数化5.1方式1右键-添加-前置处理器-用户参数-添加变量、添加用户,勾选:每次迭代更新一次在实际的网址请求中替换:parameters——${参数名}添加查看结果树进行查看,点击运行响应断言:相当于检查点,输入${参数名}5.2方式2CSV Data Set ConfigFilename:d:\text.txt,文件中放参数(参数化要引用的东西)在Variable Names中填写上变量名File encoding:文件编码:可以不填Variable Names:变量名(用逗号进行分隔)Delimiter(use ‘t‘ for tab):参数文件中多个变量的分隔符,\t表示用tab键分隔,默认是逗号Recycle on EOF?:结束后是否循环?默认是true5.3方式31.选项-函数助手对话框——_random-生成八.jmeter之集合点1.右键-添加-定时器-Syncheonizing Timer:注意位置要放到集合的操作之前2.Number of simulated Users to Group by:意思是多少个用户时进行集合点的并发6.jmeter之检查点1.断言:脚本导入jmeter参数化对相应请求添加响应断言:输入${参数名},右键-添加-断言-响应断言对相应请求添加断言结果:插入-监听器-断言结果2.断言持续时间:响应时间在多少毫秒以内,如果超过多长时间就认为是失败的响应时间不能超过150毫秒,则可以使用断言持续时间来判断断言——添加-断言-响应断言-断言持续时间在断言结果中运行查看3.返回结果大小断言:Size Assertion7.jmeter之动态关联1.jmeter中关联的两种方式:正则、xpath(一般xml的时候用的多)步骤:视频中以webtours开启关联badboy录制导入jmeter找出需要关联的请求(nav.pl)该请求-后置处理器-正则表达式提取器-填入内容应用名称:例如:session正则表达式:name=userSession value=(*)>模版:如果前面的正则表达式取了不止一个参数,那么这里需要定制参数的组别,如果参数$1$则表示取得第一个值,$2$表示取得第二个值匹配数字:0随机,-1所有值,以数组形式存储;1;2缺省值:不用管添加断言添加断言结果运行查看8.jmeter也有loaderrunner一样的图像添加-监听器-图形结果、查看结果树、断言结果、生成概要经过、用表格查看结果、监视器结果、聚合报告扩展下载网址:https://jmeter-plugins.org/install/Install/ServerAgent-2.2.1.zip未下载我们需要将serverAgent目录以及下面的文件复制到我们侧睡的服务器上,然后点击打开,他默认的端口号是44441.扩展常用:jp@gc – PerfMon Metrics Collector:资源监控Add Row :CPU 、Memory、DisksI /O2.扩展应用 Hits per Second9.jmeter也性能测试实战-web程序项目背景XX网站,并发登陆的性能测试,1s增加2个线程,运行2000次,分别看20,40,60并发下的表现,监控:成功率、响应时间、标准差、CPU、mem。Io,资源监控需要在Linux下部署监控agent(server agent)步骤:badboy录制,导入jmeter,参数化、检查点、集合点,指标监控,资源监控,报告(可导出到xls,然后自行生成报表)1.参数化:前置处理器-用户参数:username:用户:xiaowang2.在网址连接中的uername替换成${username}3.检查点:连接-右键-添加-响应断言-${username}4.右键-添加-断言结果5.右键-添加-监听器-查看结果树、聚合报告数据写入文件的后缀名jtl,也可以保存到Excel中10.jmeter性能测试实战-FTP程序需求:上传一个文件到服务器(put)下载一个文件到本地(get)右键-添加-线程组-FTP请求-服务器名称或IP-Remote File(远程的文件是什么?)-local File(本地的文件是什么)——用户名,密码11.jmeter性能测试实战-数据库mysql1.需求:测试用户表(select2.环境准备:mysql驱动Jmeter-jdbc配置Jmeter-jdbc请求3.步骤:(1)测试计划中加入mysql-connector-java-8.0.27.jar包,在测试计划的右下方浏览(2)jdbc配置:线程组-jdbc Connection Configuration主要填写 Database URL、JDBC Driver Class:org.gjt.mm.mysql.Driver、Username、password(3)jdbc请求右键-添加-JDBC RequestQuery Type:默认 :Select StatementQuery:填写:select * from person;(4)断言、结果树如果需要实现同时多个不同的用户使用不同的SQL,可以通过把整条SQL语句参数化来实现,例如把SQL语句放在CSV文件中,然后在JDBC Request 的Query中使用参数代替${SQL_Statement}12.控制器1.if控制器条件:${is_run}=1示例:判断${is_run}=1 是否成立,如果成立就执行 http 请求;复选框“Evaluate for allchildren?”表示是否对所有子节点使用判断条件,不选择的话,只对第一个子节点生效。无 else 判断,可以用非条件来实现。2.随机控制器随机执行某一个子节点内容3.随机顺序控制器子节点全部执行,但顺序随机4.循环控制器设置执行控制器子节点的次数,也可以设置永远执行