51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 2363|回复: 2

[原创] 开源性能测试工具jmeter快速入门(一)

[复制链接]
  • TA的每日心情
    开心
    2018-8-15 14:22
  • 签到天数: 63 天

    连续签到: 2 天

    [LV.6]测试旅长

    发表于 2018-1-26 18:15:22 | 显示全部楼层 |阅读模式
    目录
    一、JMeter简介
    二、JMeter功能介绍
    三、JMeter脚本
    四、关于JMeter小提示


    三、JMeter脚本

    1.测试计划
    测试计划是JMeter进行测试的起点 ,是其他JMeter测试元件的容器,每个测试场景/脚本都叫做一个测试计划。
    (1)名称;与业务相关的名称
    (2)注释:非必填
    (3)用户定义的变量,引用时直接用${变量名}即可,这里的变量是全局变量,作用于整个测试计划。
    (4)独立运行每个线程组:默认不勾选,即所有线程组并发启动。勾选则顺序执行所有线程组。
    (5)

    结束线程运行后,停止主线程。
    (6)函数测试模式:默认不勾选 。勾选则记录详细请求,增加资源消耗,影响客户端性能。
    (7)

    向类路径(%JMeterHOME%\lib)中添加目录及JAR包。

    2.VUser及场景设计
    JMeter的场景设计 及Vuser都是在线程组下设计的。
    这里线程-->Vuser(并发用户数)
    循环次数及调度器-->场景设计模块

    (1)线程属性:
    线程数
    Ramp-Up Period:线程间的时间间隔
    循环次数:请求的重复次数 。
    Delay thread Creation until needed:延迟创建线程,直到需要创建时创建。
    (2)调度器
    持续时间:测试计划持续时间,将覆盖结束时间
    启动延迟:测试计划延迟多少时间启动,将覆盖启动时间。

    3.使用Badboy进行脚本录制
    Badboy录制较简单,无需使用代理;但不能像JMeter代理可以录制到URL相关的静态文件及dwr请求。
    录制完成后导出为JMeter格式的,然后在JMeter中直接打开脚本就可以使用了。


    4.参数化
    (1)在测试计划中使用“用户定义变量”,
    添加参数,然后找到需要参数化的脚本,将其值修改为:${key}即可

    (2)使用自带的随机函数
    JMeter中有函数助手,有多个内置函数,可以用相关函数进行参数化设置。
    方法:打开函数助手 ,填写min,max ,函数名称,点击“生成”,复制生成的随机函数到需要参数化的地方 。




    5.关联
    JMeter的关联是基于正则和Xpath Extractor实现的。


    (1)名称、注释、Apply to 默认即可。
    (2)要检查的响应字段 :表示在哪个地方提取正则表达式,一般选择Body即可。
    (3)引用名称:其他地方引用提取值的变量名称,引用方式为${变量名称}
    (4)正则表达式,提取的正则表达式主体
    (5)模板,用$$引用起来,正则表达式的提取模式,值从1开始 ,值0对应的是整个匹配的表达式。
    (6)默认值,若返回结果中无匹配的值,则变量的值采用默认值 。

    6.检查点
    JMeter的检查点是用断言实现的,使用较多的是响应断言 。如下添加断言后,需要在相应的监听器中添加“断言结果”才能在执行后查看断言结果是否正确。

    (1)名称、注释、 Apply to 默认
    (2)要测试的响应字段,文本、代码均可
    (3)模式匹配规则 :
    匹配:需达到精确匹配
    Equals:返回结果与指定结果一致
    SubString:返回结果是指定结果的子串
    否:不进行匹配
    (4)要测试的模式,若设置多个断言结果 ,则需要所有结果通过才成功 ,否则失败

    7.思考时间
    JMeter的思考时间是用定时器实现的。默认时,JMeter发送请求是没有时间间隔的。添加间隔是为了更真实模拟用户请求,同时可以减少服务器压力。无论定时器放在哪里 ,它都会在Sampler前执行,若需要在某个位置暂停,,可加入Test Action。
    定时器的作用域,若在线程组下添加多个定时器,则会累加作用于线程组内的所有Sampler,可以在单独的Sampler中添加定时器。


    8.集合点
    JMeter中使用Synchronizing Timer实现集合点功能 ,模拟多用户并发测试。


    表示集合点够多少个用户才开始执行并发,在使用中发现最后一批线程数不够时,JMeter会停止不动。

    9.结果分析

    运行性能场景时,开启多个监听器会消耗资源 。常用的有聚合报告 、图形结果、监视器结果 等等。


    四、关于JMeter小提示

    1.尽量少用监听器
    2.尽量把相似的Sampler放在循环内, 使用变量修改这些Sampler,而不是重复添加Sampler
    3.不要使用函数测试模式
    4.以CSV格式输出结果  ,尽量不用XML格式
    5.只保存需要的数据结果
    6.最好在调试脚本时使用断言,运行脚本时禁用断言 ,这样有利于精准测试结果
    7.查看结果树和用表格查看结果监听器最好在调试脚本时使用,不在负载测试期间使用
    8.若需要测试大量数据,则可以提前准备好测试Data并放在数据文件中,避免浪费资源 。
    9.对于大并发量的负载测试,尽量在多台机器上运行多个非GUI JMeter实例,进行分布式测试。
    10.若测试过程中报内存不足, 可以在jmeter的bin目录下找到jmeter.bat来修改JVM内存设置,如修改为:HEAP="-Xms512m -Xmx512m"这样可减小频繁申请创建、销毁内存引起的性能损耗开销。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2018-2-9 09:20
  • 签到天数: 9 天

    连续签到: 4 天

    [LV.3]测试连长

    发表于 2018-1-29 19:39:44 | 显示全部楼层
    目前在用jmeter做接口测试,和性能上的应用组件还是有点区别的
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-8-15 14:22
  • 签到天数: 63 天

    连续签到: 2 天

    [LV.6]测试旅长

     楼主| 发表于 2018-1-31 10:27:22 | 显示全部楼层
    kz东方 发表于 2018-1-29 19:39
    目前在用jmeter做接口测试,和性能上的应用组件还是有点区别的

    是的,一般还是来做压力测试的,也用于功能测试和回归测试。灵活性和可扩展性还是可以的。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-3-29 06:18 , Processed in 0.062747 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表