zoukankan      html  css  js  c++  java
  • 第2章 测试工具-JMeter,扩展组件开发

    一、测试工具篇-JMeter

    • 断言在并发时,不适合用

    常用功能

    【测试计划】可以理解为各种测试元件的容器。

    【线程组】可以设置一些并发策略,模拟并发用户发送请求。

    【Sampler】取样器


    HTTP请求:测试必备,jmeter测试http协议接口的各种传参方式(链接);
    BeanShell Sampler:
    Debug Sampler调试取样器:只看到jmeter变量,其他2个默认false;
    如果是其它协议,比如java、dubbo、websocket、smtp、tcp、jdbc,添加对应的取样器等即可,如果没有,那么就需要我们自己开发,所以,java基础是必备的。

    【逻辑控制器】

    if
    事务控制器、吞吐量控制器
    ForEach控制器
    仅一次控制器
    

    【前置处理器】发送请求前做的一些处理

    BeanShell PreProcessor
    用户参数
    

    【后置处理器】发送请求后做的一些处理

    正则表达式提取器:关联的方式很多,用万能的正则;另外,jmeter关联的5种方式
    Debug PostProcessor:除了可以看到jmeter变量,还可以看到配置信息,最好放在正则表达式提取器后面,否则看不到提取的结果;
    BeanShell PostProcessor
    

    【断言】

    响应断言
    BeanShell断言
    

    【定时器】类似于LR思考时间

    固定定时器
    高斯随机定时器
    Synchronizing Timer
    

    【配置元件】

    HTTP信息头管理器
    HTTP Cookie管理器
    CSV 数据文件设置:参数化
    HTTP请求默认值 
    


    提醒:分隔符不能是参数化的值中的符号,否则会被截断,比如,你参数化整个json,逗号作为分隔符,而json中就有逗号,所以,发送请求的时候,会被截断。

    【监听器】

    查看结果树
    聚合报告
    

    【函数助手】
    常用的函数需要掌握,如随机函数等,举例:生成1-1000的随机数,可以通过${__Random(1,1000,key)}生成随机数,通过${key}可以获取这个随机数;

    【作用域】
    全局的放线程组下,局部的,专属哪个取样器,就放哪个取样器下。

    【jmeter执行顺序】
    配置元件 → 前置处理器 → 定时器 → 取样器 → 后置处理器 → 断言 → 监听器;
    同一层级的,顺序执行;
    注意:一个万能且保险的方法,放到对应的取样器下面即可。

    Jmeter中定义变量的地方:有4种

      a) 测试计划(Test plan),在右边的面板上添加User Defined Variables
      b) 线程组,右键选择 配置元件——用户定义的变量;( config element)-->User Defined Variables
      c) 通过前置或后置处理器生成的变量:Jmeter关联,正则表达式提取器,
    前置处理器—用户参数;
      d)使用csv参数化的变量:Jmeter参数化
    注意:如果同一个变量在多个 b 中被定义,那么只有最后一个定义会生效。
    例如 c 或者 d 可以被用来重新定义变量,这些重定义仅仅影响当前线程。

    【jmeter生成测试报告】

    • 创建脚本
      线程组:3个线程持续运行30秒,
      http请求:访问百度首页,响应断言“百度一下”
      http请求:百度搜索,添加“wd,python”,响应断言“python”

    • 1、命令方式执行生成报告
      jmeter -n -t G:111lianxilianxijmeter3.功能生成测试报告-举例.jmx -l G:111lianxilianxijmeter3.功能 esult.jtl -e -o G:111lianxilianxijmeter3.功能TestReport

    • 2、查看报告
      点击index.html
      聚合报告


    【分布式压测】

    分布式压测也是需要掌握的,参考:jmeter5.1分布式压测
    https://mp.weixin.qq.com/s?__biz=MzIxMzMxMDcwNA==&mid=2247484111&idx=1&sn=85d15b3175bce5821eca5f14b6612e79&chksm=97b98f50a0ce0646b054aa83d78c5ce0a3a823cc19ab3acb89cfb31d4a86e78e7bd9a12caa5b&scene=21#wechat_redirect

    【beanshell】

    可以参考:玩转jmeter:beanshell必备技能
    https://www.cnblogs.com/uncleyong/p/7189778.html

    性能测试方案

    jmeter实现多并发

    • 线程组:负载发生器,用多线程或多进程的方式来模拟用户的使用行为。jmeter是以线程的方式来进行模拟用户的并发访问的。

    jmeter实现逻辑分支控制

    • 逻辑控制器:用来控制测试脚本的逻辑判断,也可以理解为如何控制脚本的运行。例如控制器,就是当满足什么条件后执行哪一步操作。
    • 常用的有:如果(If)控制器 、switch Controller 、Runtime Controller、循环控制器等。另一类是用来组织可控制 sampler 来节点的,如 事务控制器、吞吐量控制器。

    jmeter实现配置管理


    • 请求头,参数化数据,用户自定义变量 来定义常量

    jmeter最佳实践

    http://jmeter.apache.org/usermanual/best-practices.html
    Jmeter压测减少资源使用的一些建议,即压测结果会更准确:
    1、使用非GUI模式(也就是CLI,Command Line Interface,命令行界面):jmeter -n -t test.jmx -l result.jtl
    2、少使用Listener, 如果使用-l参数,它们都可以被删除或禁用
    3、在加载测试期间不要使用“查看结果树”或“用表格查看结果”监听器,只能在脚本阶段使用它们来调试脚本
    4、包含控制器在这里没有帮助,因为它将文件中的所有测试元素添加到测试计划中
    5、不要使用功能模式
    6、使用CSV输出而不是XML
    7、只保存你需要的数据
    8、尽可能少地使用断言
    9、如果测试需要大量数据,尤其是需要将其随机化,可以提前准备好测试数据放到数据文件中,从CSV数据集中读取, 这样可以避免在运行时浪费资源

    二、Jmeter扩展组件开发实战、

    1、自定义java请求开发

    • 准备工具:下载java,idea——maven

    注意:4个方法,顺序


    举例:显示百度;访问百度/QQ网页,OK;java代码可以改结果树那里的名称

    2、扩展组件开发:自定义函数

    • 添加beanshell填写内容:为 下方生成的
    • 函数助手,生成复制

    火爆的大数据:hadoop


    • 对数据处理:实时处理,离线处理
    • 了解架构,按模块测试;

    实时数据处理三大框架





    实战使用jmeter进行大数据性能测试

    1、百度Apache kafkat,zookeeper,下载;搭建环境

    2、

  • 相关阅读:
    计算机视觉之图像特效(实现图像边缘检测、浮雕效果、颜色映射、油画特效等功能)
    计算机视觉之图像特效(实现图像灰度处理、颜色反转、马赛克、毛玻璃、图片融合等功能)
    计算机视觉之几何变换(实现图片缩放、剪切、移位、镜像、仿射变换、旋转等功能)
    Python实现人工神经网络逼近股票价格
    Python中matplotlib模块的简单使用
    Python中numpy模块的简单使用
    TensorFlow入门(矩阵基础)
    TensorFlow入门(常量变量及其基本运算)
    计算机视觉入门
    菜得一P!
  • 原文地址:https://www.cnblogs.com/chenhuan123/p/12332089.html
Copyright © 2011-2022 走看看