• jmeter笔记7


    一、脚本录制(Jmeter):
    Jmeter 脚本(.jmx)为 xml 格式,树形结构,由元件组成,使用“取样器”产生请求。
    在“工作台”添加“HTTP 代理服务器”
    端口:
    代理服务器的端口,默认 8080,可自行修改,但不要与其它应用端口冲突
    目标控制器:录制的脚本存放的位置,可选择项为测试计划中的线程组
    分组:
    对请求进行分组。“ 分组”的概念是将一批请求汇总分组,可以把 url 请求理解为组。
    “不对样本分组”: 所有请求全部罗列
    “在组间添加分隔”: 加入一个虚拟的以分割线命名的动作,运行同“不对样本分组”,
    无实际意义
    “每个组放入一个新的控制器”: 执行时按控制器给输出结果
    “只存储每个组的第一个样本”: 对于一次 url 请求,实际很多次 http 请求的情况,这
    个选项很好用,因为我们常常是不关心后面的那些请求的。
    记录 HTTP 信息头:
    录制 request 的 head 信息
    添加断言:
    录制时加入空的检查点
    Regex matching:
    录制时加入空的正则匹配
    在浏览器中录制
    启动 HTTP 代理服务器后,打开浏览器(IE,Firefox,Opera 等),添加代理,地址填
    写本机 ip 或 host name,端口填写刚刚设置的代理端口,在浏览器中进行正常网页浏览,即
    可录制下对应的操作。
     
    二、脚本录制(Badboy):
    使用 jmeter 的代理服务器可以顺利录制完整的 http 请求,包括请求的头;但无法录制
    cookies,对于网站脚本,大多需要 cookies 支持,可以使用 badboy 来录制。Badboy 是澳大
    利亚的一个软件公司设计的,有免费版可以下载。当然不通过录制也可以自己添加 cookies
    Badboy 使用:
    下载安装包,一键安装,“ 开始”>“程序”>“badboy”
    点击红色的 record 按钮开始录制,输入 url,与在浏览器中操作一样。左边的脚本栏会
    显示录制下来的请求。
    录制完成后,“ File”>“Export to Jmeter”, 保存成 jmeter 的脚本 jmx 文件;
    用 jmeter 打开脚本,可以看到比较完整的请求。
     
    三、参数化:
    方法一:使用“函数助手”添加从文件中读取字符串的函数。
    通过菜单“选项”à“函数助手对话框”调出“函数助手”。 选择“__StringFromFile”
    填写文件路径;可以填入命名以便在其它地方使用该函数。点击生成。“ 函数助手”保
    留最近一次生成的函数信息。拷贝字符串,粘贴到需要调用该函数的地方即可,如:
    在其它地方调用时使用函数填写的命名${命名},如${keywords}:
    方法二:使用“CSV Data Set Config”元件
    在脚本中添加“配置元件”à“CSV Data Set Config”
    Filename 与 Variable Names 的定义与“__StringFromFile”函数一样,填写后即可使用。
    调用时使用 Variable Names 的命名${填写的 Variable Names},如${keywords}:
     
    四、使用关联参数:
    在 http请求下加入“后置处理器”>“
    正则表达式提取器”:
    引用名称即使用的参数名;填入正则表达式;模板选取匹配的组;匹配数字为匹配的个
    数,负数表示全部匹配;缺省值为没有匹配到时的取值。
    示例中用正则表达式匹配出产品 id 作为后续使用的参数。
    提取到的参数,调用时用${product_id_1},${product_id_2},${product_id_3}……;
    如果想要得到匹配出的参数的个数,用${product_id_matchNr};如果想随机选取其中一个,
    只需将匹配数字设为0,使用${product_id}调用即可。
    可以一次匹配多组;示例中只匹配了一个,假如正则表达式为 name="chkProductIds"
    id="chk(.+?)" value="(.+?)",就会有两组参数。想获得匹配到的组个数用${product_id_g}。模板针对的是匹配到的字符串再做组的区分,比如希望${product_id}取出的是第二组参数的值,用$2$。
     
    五、添加检查点:
    在脚本中添加“断言”à“响应断言”
    使用正则表达式进行检查,可以选择正则的模式匹配规则,以及检查的文字段。
     
    六、设置思考时间:
    在脚本中添加“定时器”à“固定定时器”
    设定延迟时间。
     
    七、设置集合点:
    在脚本中添加“定时器”à“Synchronizing Timer”
    设置集合点处的并发用户数,即“多少”个用户达到集合点后再执行。
     
    八、使用 cookies:
    访问的页面需要 cookies 时,在脚本中加入“配置元件”>“
    HTTP Cookies 管理器”,
    要点:cookies 管理器元件需要位于需要使用 cookies 的请求的上一级节点。
    在示例中加入了一个事务控制器,在该任务控制器下的节点都使用同一个 cookies 管理器
     
    九、模拟浏览器操作:
    HTTP Cache 管理器
    一般来说不建议使用,因为在 LR 中我们一般也不让页面 cache,避免由于 cache 导致
    压力不足,结果过于乐观。
    HTTP 请求的“从HTML 文件获取所有内含的资源”
    如果勾选了该项,则对 html 文件所调用的外部链接也会产生压力,响应的服务必须是
    在待测系统范围内,即 该服务也是受压的系统之一。一 般来说当不具备该服务环境时不勾选。
    Embedded URLs must match
    这个用于匹配 html 中的资源链接,正则表达式,只有匹配符合的才会去请求比如正则
    表达式http://www.baidu.com/.*,意味着只有http://www.baidu.com相关的链接才会被请求。
     
    十、控制器实现脚本逻辑:
    If 控制器:
    条件符合时执行控制器的子节点内容
    示例:判断${is_run}=1 是否成立,如果成立就执行 http 请求;复选框“Evaluate for all
    children?”表示是否对所有子节点使用判断条件,不选择的话,只对第一个子节点生效。
    无 else 判断,可以用非条件来实现。
    随机控制器:
    随机执行某一个子节点内容
    示例中随机控制器下有四个子节点:HTTP 1、HTTP 2、简单控制器、HTTP 3,简单控
    制器下有两个子节点:HTTP 3、HTTP 4;
    当复选框“忽略控制器块”未勾选时,简单控制器是作为一个节点跟其它随机控制器子
    节点一起参与随机执行;勾选时,简 单控制器下的子节点直接参与其它随机控制器子节点一
    起参与随机执行。
    随机顺序控制器:
    子节点全部执行,但顺序随机。
    循环控制器:
    设置执行控制器子节点的次数,也可以设置永远执行。
     
    十二、示例脚本(Examples.jmx)内容:
    1. https 脚本:https get 请求
    2. icbulogin
    脚本:https post 请求,cookies 管理器,head 管理器,断言(检查点)
    3. icbuwww1
    脚本:参数化 unique 方式,关联参数(获取参数个数判断是否执行请求,
    随机选择一个参数)
    4. icbuwww2
    脚本:参数化 sequential 方式,关联参数(获取参数个数判断是否执行请求,
    固定选择参数)
    5. 集合点脚本:集合点(同步定时器)
    6. 逻辑控制:仅一次控制器(init),switch(根据不同的 vuser 选择不同请求),随机控制器(随机选取一个请求执行),随机顺序控制器,
     
    十三、设置场景
    设置测试计划:
    测试计划就是一个完整的场景
    “独立运行每个线程组”: 勾选以后所有的线程组都是顺序执行的了。一般不勾选,让所有
    的线程组并发启动。
    “函数测试模式”: 勾选后会有详细的请求记录,消耗资源,影响客户端性能。一般不勾选。
    用户定义的变量:全局变量
    添加线程组:
    取样器错误后要执行的动作:继续,停止线程,停止测试
    线程数:可理解为当前线程组下脚本运行的“并发用户数”。
    RampUp
    Period (in seconds):开始运行时线程数在“设定的时间”内由 0 增加到设置值。
    循环次数:当前线程组下脚本运行循环次数;“ 永远”选项,无限次循环
    启动时间:脚本自动启动时间
    结束时间:脚本自动结束时间
    持续时间(秒):持续运行的时段
    启动延迟(秒):延迟指定时间后启动
    线程组参数分析:
    1. 取样器错误后执行的动作:“ 停止线程”为停止当前的线程运行;“ 停止测试”为停止测
    试计划运行。
    2. RampUp
    Period 表示从 0 增加到指定线程数的时间,是线性增加,如:线程数为20 个,
    RampUp
    Period 为 50s,50/20=2.5s/个,所以是每隔 2.5s 增加一个线程。
    3. 循环次数:勾选“永远”, 启动后必须手工“停止”才会停止;次数达到时若调度器未
    运行完毕,则调度器无效,停止执行;调度器中运行完毕,次数尚未达到,则次数设置
    无效,停止执行。
    4. 调度器:在手工启动后生效,设置生效原则:启动延迟的优先级高于启动时间,持续时
    间优先级高于结束时间,设置针对“未来时间”有效,针对“过去时间”无效;即启动
    延迟与启动时间同时设置如果不一致,则以启动延迟为准,持续时间与结束时间同时
    设置如果不一致,则以持续时间为准,设置为过去的时间则不生效。
    线程运行状态显示:
    在 jmeter 右上角处。图示含义为:绿色表示正在运行;共 20 个线程,已启动 8 个。
     
    十四、响应数据
    图形结果:添加“监视器”à“图形结果”
    显示内容含义:
    样本数目:运行时得到的取样器响应结果个数
    最新样本:最近一个取样器结果的响应时间
    平均:所有取样器结果的响应时间平均值
    偏离:所有取样器结果的响应时间标准差
    吞吐量:每分钟响应的取样器结果个数
    中值:所有取样器结果的响应时间中间值
    显示图线为随时间变化曲线,但 x 轴不是时间轴,是取样器个数的均匀分布轴
    察看结果树:添加“监视器”à“察看结果树”
    显示内容含义:
    取样器结果:显示的是取样器相关参数(客户端参数与响应参数)
    请求:http request
    响应数据:http response data
    聚合报告:添加“监视器”à“聚合报告”
    显示内容含义:
    Label:取样器名称
    Samples:运行时得到的取样器响应结果个数
    Average:所有取样器结果的响应时间平均值
    Median:所有取样器结果的响应时间中间值
    90%Line:所有取样器结果的响应时间 90%线
    Min:所有取样器结果的响应时间最小值
    Max:所有取样器结果的响应时间平均值
    Error%:出错的取样器结果占所有取样器结果的比例
    Throughput:每秒钟响应的取样器结果个数
    KB/sec:每分钟响应的数据流量
    Summary Report:添加“监视器”à“Summary Report”
    显示内容含义:
    Label:取样器名称
    Samples:运行时得到的取样器响应结果个数
    Min:所有取样器结果的响应时间最小值
    Max:所有取样器结果的响应时间平均值
    Std.Dev.:所有取样器结果的响应时间标准差
    Error%:出错的取样器结果占所有取样器结果的比例
    Throughput:每秒钟响应的取样器结果个数
    KB/sec:每分钟响应的数据流量
    Avg.Bytes:所有取样器返回 http response data 字节数的平均值
    将响应情况保存到文件中以供统计:
    给单个取样器添加监视器后,在“所有数据写入一个文件”下方的输入框输入响应情况
    记录的保存文件,或者浏览选择;可使用全路径,也可使用相对路径,相对路径基准为脚本
    保存路径;多个取样器使用一个监视器时,得到的统计结果是累加起来的。
     
    十五、服务器资源监控(Linux)
    Linux 服务器上加入监控脚本:
    登录到被监控的服务器上,将 status 脚本放上去。该脚本执行时会在所在路径生成
    status.xml 文件,可以直接将 status 脚本放在 web server 的目录下,也可以用软链接来链到
    status.xml 文件。下面介绍在基于apache 的 web server 上的配置方法:
    在 apache 的配置文件 httpd.conf 中找到 DocumentRoot,一般默认是 apache 目录下的
    htdocs,将 status 脚本放到该目录下;
    更改执行权限:
    chmod 744 status
    启动该脚本:
    ./status start
    启动起来之后就会在当前目录下产生 status.xml 文件
    不需要监控时,停止该脚本:
    ./status stop
    Jmeter 上使用监控:
    使用
    打开 jmeter,建立一个线程组,添加一个 http 请求,ip 就是要监控的服务器地址,端口
    号就是 apache侦听的 http端口,协议是“http”, 路径是“/status.xml”, 勾选“用作监视器”;
    再为该 http请求添加一个“固定定时器”组件和一个“监视器结果”组件,“ 固定定时
    器”的延时要设置为大于 1 秒的时间,即数据的采样时间。
    在线程组中循环次数设置勾选“永远”;
    Run 一下,就可以在监视器结果上看到刚刚添加的监控服务器了,目前已经监控了6 个
    参数:cpu%user,cpu%iowait,load,mem%(used/total),swap in,swap out。
    将监控到的资源情况保存到文件中以供统计:
    方法同“将响应情况保存到文件中以供统计:”
     
    十六、统计分析
    将记录响应情况和资源监控情况的文件生成 html 图表报告以便进行分析(注意:记录
    文件格式为 xml,若不完整是无法解析的;即脚本运行中生成的文件是无法解析的,必须在
    脚本运行完毕后才能进行以下处理);生成方法如下:
    设置 jmeter 保存的文件地址
    打开 jmeter 目录的 bin 目录下的JmeterDataChart.
    ini 文件,按照格式:
    response=响应文件路径
    resources=监控资源文件路径
    进行填写。比如有 2 个响应文件 res/r1.jtl,res/r2.jtl,1 个监控资源文件 res/linux.jtl,则
    填写文件内容为:
    response=res/r1.jtl
    response=res/r2.jtl
    resources=res/linux.jtl
    保存退出。
    双击运行 bin 目录下的JmeterDataChart.
    bat,进行文件的解析和图表生成。解析处理成
    功后,在 bin 目录下会生成一个名为 CurDataChartIndex.
    html,双击打开,可以看到相应的
    图表链接,是原文件名+ res.
    html 的文件
    点击链接打开报告,IE 提示脚本风险
    点击允许,即可看到完整的图表:
    响应图表:
    资源监控图表:
    注意:因为该图表采用 vml 编写,在不支持 vml 的浏览器上无法显示。
    附录
    监控器实现的是 linux 系统上的资源监控,要求:服务器上至少有一个 web server
    (因需要通过http请求获取资源xml), 用 于生成服务器资源xml的脚本中使用了sysstat
    包中的指令,所以需要安装 sysstat 包。
    如果被监控的 linux 上没有安装 sysstat 包,是无法正常生成监控数据的,这里附上
    sysstat 包的安装方法:
    首先到 http://perso.wanadoo.fr/sebastien.godard/ 下载最新的版本,最好是源码包,
    比如 sysstat5.1.1.
    tar.gz
    1.解包:
    tar zxvf sysstat5.1.1.
    tar.gz
    2.安装:
    cd sysstat5.1.1
    make config
    这步可以省略,有些发行版中会出错;如果不用这个命令,可以直接安装到其默认
    的/usr/local/lib 目录中
    make
    编译
    make install
    安装__
  • 相关阅读:
    xxx
    04消息队列zmq的发布者-订阅者的计算π的简单程序。
    03网络编程从之异步服务器
    03Python网络编程之多线程服务端。
    03Python网络编程之单线程服务端
    03Python网络编程之客户端。
    03Python网络编程系列之服务端
    02select监听客户端
    02select监听服务端
    07爬虫之-urllib总结
  • 原文地址:https://www.cnblogs.com/kuihua/p/5452455.html
Copyright © 2020-2023  润新知