Jemeter学习笔记

来源:互联网 发布:iphone6s网络设置 编辑:程序博客网 时间:2024/06/04 00:44

apache jmeter

apache组织开发的 开源的性能测试工具

jmeter没有事务 所以每个接口代表一个事务

环境搭建:java需要版本到1.6以上,apache-jmeter-2.1.1,badboy2.0.5(性能工具,可有可无,使用录制功能,用于jmeter)


1.接口设置:在测试计划下面,添加线程组-sampler-http请求,右键添加线程组-添加查看结果树

                        名称:百度网页接口

                        web服务器:www.baidu.com

                       路径:/(斜杠左边自动填写的是服务器地址)

                       方法:get(可以传明参)

                      勾选“跟随重定向”“use keepalive

                      编码:识别中文

                      点击查看结果树,左下角调成html(download resource),点击运行三角标

                     ie=utf-8&ρ=8&vsv_bp=0解释,参数的值通过&连接,第一个参数的值是utf-8,第二个参数的值是8

        解释名称:本属性用于标识一个取样器,建议使用一个有意义的名称,可自定义

                注释,对于测试没有任何作用,仅用于记录用户可读的注释信息

                服务器的名称或IP:http请求发送的目标与服务器名称或ip地址

                端口号:目标服务器的端口号,默认值是80,后面的超时定义可以不用填写

                协议:向目标服务器发送http请求时的协议,可以使http或者https,默认值为http

                方法:发送http请求的方法,可用方法包含get/post/head/put/option/teeace/delete等

                content encoding:内容的编码方法

                路径:目标url路径(不包括服务器地址和端口)前面要有、

                 自动重定向:如果选中该选项,当发送http请求与后得到的响应是302/301时,jmeter自动重定向到新页面(如果请求真是的话,该选项可以勾掉)

                 use keepalive:当该选项被选中的时,jmeter和目标服务器之间使用keep-alive方法进行http通信,默认选择。(持久长连接)

                 use multipart/form-data for http post:当发送http post请求的时候,使用use  multipart/form-data 方法发送,默认不选中

                同请求一起发送参数:请求中发送url参数,对于带参数的url,jmeter提供一个简单的对参数化的方法,用户可以将URL中所有参数设置在本表中,表中的每一行是一个参数值对应(名称1=值1)。另外如果发送为中文,将后面的编码要进行勾选

             同请求依次发送文件,在请求中发送文件,通常,http文件上传为可以通过这种方法模拟

               从html文件获取所有内含的资源:当该选项被选中时,jmeter在发送http请求并获得相应http文件内容后,还对该html文件进行parse并获取html中包含的所有资源(图片,flash等),默认不选中,如果用户只希望获取页面中的特定资源,可以在下方embedded urls must match文件框中填入需要下载的特定资源表达式,这样,只有能匹配指定正则表达式的url指向资源会被下载

                  用作监视器:次取样器被当做监视器,在monltor results listener中可以直接看到基于该取样器的图形化统计信息,默认不选中,

                    save response as MD5 hash:选中该项,在执行仅记录服务器相应数据的MD5值,而不记录完整的响应数据,在需要进行数据量非常大的测试时,建议选中该项一减少取样器记录响应数据的开销。

不能虚拟ip,报告比较不友好


2.线程组设置:

           线程组:虚拟用户数(整数,模拟人数)

              ramp up period :设置的虚拟用户数需要多长时间全部启动。如果线程数为20,时间为10,20/10=2,也就是每秒钟启动2个线程,

             循环次数:每个线程发送的请求次数,如果线程为20,循环次数为100,那么每个线程发送100次请求,总请求数为20*100=2000.运行时间就是全部启动时间10*(循环次数)10=100秒。

              如果勾选了“永远”,那么所有线程会一直发送请求,知道选择停止运行脚本,

               调度器:可以更灵活的设置运行时间等,可以设置启动,结束,持续,延迟等

            总结

                      线程/间隔时间=增加线程数策略

                     线程数*循环=最后的请求次数

                      间隔*循环=运行时间

                   监听器:聚合报告(单位:毫秒)

                    前提:添加监听器——聚合报告

                   解释label:定义http请求名称

                  average:平均响应时间-默认情况下是单个request的平均响应市场,当使用了transaction controller时,也可以以transaction为单位平均响应市场

                 media:中位数,也就是50%用户的响应时长

                90%line:90%用户的响应时长

                 min:访问页面的最小响应时长

                max:访问页面的最大响应时长

                 error%:错误请求的数量/请求的总数

                throughtput:默认情况下每秒完成的请求数(request per second),当时用了transaction controller时,也可以表示类似loadrunnertransaction per second数。

                KB/sec:每秒从服务器端接收到的数据量

         可以将文件保存,保存文件后缀是.jtl


3.jmeter元件的作用域与执行顺序

            元件的作用域

           配置元件:会影响作用范围内的所有元件

            配置处理程序:在其作用范围内的每一个sampler有效

            定时器;:对其作用范围内的每一个sampler有效

            后置处理程序:在其作用范围内的每一个sampler元件之后执行

              断言:收集起作用范围的每一个sampler元件的信息并呈现

             sampler:元件不和其他元件相互作用,因此不存在作用域的问题

            执行顺序(如果存在多个相同类型的元件按照从上到下的顺序执行):配置元件、前置、定时器、sampler、后置、断言


4.参数化

        第一种参数化:用户参数

                   1.在需要的作用域中右键添加-前置处理器-用户参数假设名为rou

                   2.添加变量 为rou

                  3.添加用户:每个用户代表一个参数的值

                  4.在接口中的参数找到需要参数化的值

                 5.修改为:${rou}

                当需要多个参数化时,可以多次添加变量。

           第二种参数化:

             CSV Data Set Config

                    1.在需要的作用域中右键添加-配置元件CSV Data Set Config

                   2.设置filename文件名:  即残说话要引用的文件名,这里是路径 比如:d\number.txt。前提已经有了这个文件

                   3.file encoding文件编码:   可以不填,填写的值为gbkutf-8

                  4.varlable names(comma-delimited):    变量名(多个变量可以用逗号分割)

                 5.delimiter(use'\t'for tab:  参数文件中要有多个变量值的分隔符,\t表示用tab键分割,默认分隔符是‘,’(逗号)

                 6.recycle on EOF?:结束后是否循环?默认是True

               补充文件格式(d:\number.txt):

                               白菜,1111

                               牛肉,2222

                               猪肉,3333

5.集合点

                 在请求前右键添加定时器-synchronizing timer

              位置:要放到集合的操作前,也就是放到需要集合的请求前

             设置:名称自定义

              number of simulated users to group by

                          整数,就是多少人并发数

                         注意:线程和并发人数的关系,并发人数不能大于线程数


6.检查点:(jmeter中叫做断言)

            1.   jmeter的检查点就是断言中的响应断言

                     添加-断言-响应断言

                     如果查看断言结果:添加-监听器-断言结果

                    在响应断言中点击添加:把需要检查的值,输入即可

                     如果检查的值是变量,那么可以把变量的名输入。例如:${rou}

           2.断言的持续时间:

                  例如:百度首页显示时间不能超过1s,那么这种就可以用持续时间断言

                              设定:输入持续时间(毫秒):1000

                   运行后,在断言结果中可以查看

            3.返回结果字节大小断言

                     右键在需要断言的地点添加-断言-size assertion

                    填写字节大小即可

                    运行后,在断言结果中可以查看


7.动态关联:jmeter中关联的方法:一般为正则和xpath

             步骤:lr中小飞机程序网站的设定,勾选第三项

            更新后,每次登录会有一个变化的session值。

              <session=XXX,id=XX,name=XX>html

             LB=session

             RB=id=XXX

             1.小飞机的nav.pl接口是发送登录接口

            2.在nav.pl接口上点击右键-添加-后置处理器-正则表达式提取器

            比如原有的html为<input type=hidden name=usersession value=134.3445ad>

             可以讲value的值用正则表达式编写(.*)

                解释:正则表达式都是在()中表示,点.代表一个或多个字符,星号*表示出现一次或者多次

             模板:在正则表达式中输入以下内容:

                             引用名称,随意编写比如session

                             正则表达式name=usersession value=.*)>

                             模板:$1$

                             匹配数字(0代表随机):1

              解释:模板:如果前面的正则表达式取了不止一个参数,那么这里需要指定参数的组别,如果该参数为$1$,则表示取得第一个值,$2$表示取得第二个值,以此类推,如果一个html可以配出很多值,那么取html中的第几个这里就填写几个

              匹配数字:0随机,-1取所有值,以数组形式存储:1,2,,,,1就是取第一个值,依次类推

            4.判断管理是否正确

            4.1添加断言:输入${session}

            5.在接口的传值中,可以把usersession后的值填写

            5.1${session}


8.jmeter图形监控(扩展)

         前提下载插件:http://jmeter-plugins.org/downloads/add/

           添加扩展插件:1.将jmeterplugins.jar包复制到jmeter的lib目录下面的ext目录下面,重新启动jmeter(jmeter plugins-standard-1.2.0.zip

                                2.我们需要将server agent目录及下面的文件赋值到我们测试的服务器上,然后点击打开,它的默认端口为4444,如果我们服务器是windows的,双击startagent.bat即可,如果服务器是Linux的,在linux中执行start agent.sh即可(server agent-2.2.1.zip


1 0
原创粉丝点击