• 接口测试jmeter


    #################################

    jmeter
    是Apache阿帕奇开发的使用java语言开发的测试工具,
    功能很强大,

    场景:
    1,对一个查询接口,查询100次,这种postman这种工具就受限了
    2,50个客户同时请求,怎么做,这种postman这种工具也做不了,
    所以复杂的应用场景还是使用jmeter
    比如高并发的,

    ##################################

    jmeter安装
    1,下载
    2,解压
    3,安装java环境,


    jmeter的强大
    1,接口测试
    2,性能测试,内在,这种算法的好坏决定的,
    3,压力测试,外在,访问的人的数量,
    4,web自动化测试
    5,数据库测试,
    6,java程序测试,

    #################################

    jmeter目录结构
    1,backups,备份,执行过的会保存
    2,bin目录,有很多的可执行程序,里面有Apache.jmeter.jar 这是jmeter的启动程序,
    3,lib目录,有很多的jar文件,我们可以整合自己的功能,需要的jar文件可以放到这里,

    ################################

    编写一个jmeter的测试用例
    1,测试计划,填写名称测试用例01-XXX
    2,测试计划中右键,添加-threads-线程组,
    3,线程组右键,添加-sampler-http请求,
    这个http请求有三要素
    3.1,名字
    3.2,ip,端口8000,协议:http,方法get/post.. 路径,编码utf-8
    3.3,测试计划右键,添加-监听器-查看结果树,然后执行http请求,在结果树就可以有结果了,
    查看结果主要是状态码和响应结果,

    ##################################

    jmeter的线程组,这是一个组件,
    1,线程组和进程,线程就有关系了,
    进程:运行的程序
    线程:程序执行的任务
    线程组:为了方便线程管理,所以分了组,

    并发执行:多个线程同时
    顺序执行:按照启动顺序执行,

    为什么有线程组?就是因为方便管理

    进程--就是测试计划
    线程组---就是线程组,一个进程可以添加多个线程组,
    线程----在线程组中可以设置线程数

    如果线程组1有两个线程,线程组2有3个线程,每一个线程都会执行一次,一共执行5次请求,
    这五次不是顺序执行的,但是可以设置成为顺序执行,在测试计划中,独立运行每个线程组,打上勾就可以线程组顺序执行了,


    ##################################

    线程组应用重点:  jmeter一切都是组件,
    1,在post的请求的时候需要添加信息头,
    在测试计划右键,添加-配置元件-信息头管理器,
    在线程组右键 添加-配置原件-信息头管理器,
    两种都可以,但是作用范围不一样,
    需要添加数据格式,

    ################################

    线程组---请求默认值
    1,测试计划-添加-配置元件-请求默认值
    2,可以把固定的ip,http,端口,数据格式,等,配置默认值,
    3,这个时候,你去添加http请求,就可以不用写上面这些内容了,
    如果不填写用默认,填写了用填写的,

    ################################

    上面都是线程组基本的使用,
    下面进入线程组高级的部分:线程组的属性和调度器,

    位置就是在线程组页面里面,

    属性:
    1,上面学习了一个可以设置线程数,
    2,ramp-up period 10 这是设置在10秒内启动这个线程组,配合线程数,看性能的问题,
    3,循环次数:输入3,就是执行3次,如果线程数是1,就是3次,如果线程数是3,就是9次,可以设置永远,

    调度器: 就是计时器,使用的时候,上面的循环次数,设置为永远
    1,持续时间,就是持续运行多久,
    2,启动延迟,这是延迟几秒启动,
    3,启动时间,结束时间,这是一个时间段,运行,相当于定时执行了,注意2,3有冲突

    ###################################

    jmeter的参数化
    1,什么是参数化
    是动态的获取数据,
    比如添加数据接口,每次添加的内容不一样,如果没有参数化,就会导致每次添加都要修改参数,如果有了参数化就可以替换参数,达到参数化批量添加,

    2,如何参数化,
    方法有很多,


    下面介绍csvData SetConfig 实现方法----这是重点中的重点,
    这是一个组件,通过这个组件可以实现批量添加,

    实现原理:
    就是提交的数据格式是固定的,只是内容不一样,内容由参数化替换,csv可以存储添加的记录,比如添加三条数据,需要配合循环次数的设置,
    通过这个组件可以读取里面的数据,然后设置进入数据格式里面去,然后去提交到接口,
    csv是一个外部文件,

    实现过程
    1,创建一个http请求
    2,添加请求数据格式,数据里面都是空的内容,就是空字符串
    3,设置循环次数是3次,
    4,在测试计划文件夹的同级别,创建csv文件,文件的内容每一个字段通过逗号分割,每一条数据一行,每一行的结尾不需要逗号,
    5,线程组右键,添加-配置元件-csv data setconfig
    6,csv data setconfig配置,
    文件名,可以使用相对定位,./参数/canshu/txt
    编码机制:utf-8,保持一致
    设置变量名:如果是三个字段就设置三个变量:id,name,age,英文逗号分割
    7,在http请求的页面,提交数据的内容,进行参数化,name:"${name}",必须一一对应,
    非常棒!!!!

    #################################

    特殊的线程组
    1,setup线程组,最先执行,比如;加载程序执行所需要的资源
    2,teardown线程组,最后执行,比如:程序关闭之前讲数据保存到内存,

     ###############################

    参数化的另外三种方式:
    1,之前讲解了csv data setconfig
    2,用户参数
    3,用户定义的变量
    4,函数,
    这四种都是一个参数化的,都是组件,

     ##########################

    参数化----用户参数:

    1,实现思想
    和csv data setconfig思想差不多,
    将数据设计到第三方,然后组件去读取,
    和csv的区别,
    csv是设置到玩不的文本文件,而这种用户参数是设置进入jmeter的内置组件,
    所以是数据放的地方不一样

    实现流程
    1,搭建框架,测试计划,线程组,http请求,查看结果树,http信息头管理器,http请求默认值,json数据先不要设置,就是格式是空字符串,
    重点:执行次数3,不是设置循环次数,而是设置线程数,这是区别

    2,使用jmeter内置组件插入数据

    3,读取组件中的数据,设置到http请求的json中, 格式还是和csv一样的, name = "${name}"

    添加用户参数组件,测试计划右键,添加---前置处理器---用户参数,
    功能:添加用户是添加列,添加变量是添加行,删除用户删除列,删除变量是删除行,
    名称 用户1 用户2 用户3
    id 1 2 3
    name andy merry jack
    age 11 22 33

    这种是竖着添加的数据

    三个线程组,每一个线程组会执行一列数据
    如果是1个线程组,循环3次,就是第一列的数据循环了3次,

    看起来是比csv还要简单,只需要一个组件,不需要设置外部的文件了,

     #####################################

    参数化-------用户定义的变量
    一个接口的增删查改,前面的内容都是一样的,比如
    http请求中的url路径:
    /api/dept/ 查询 get
    /api/dept/1   删除 delete

    你会发现127.0.0.1:8000/api/dept这一段都是一样的,
    所以可以使用一个组件存储,然后使用的时候直接调用,

    添加组件-测试计划右键,添加---配置元件---用户定义的变量

    名称 值 描述
    path /api/dept/

    所以你在你在http请求中路径写的时候就可以写成:
    ${path}   查询  get
    ${path}/1   删除  delete
    这种就可以了,
    1,可以简化写法
    2,更加安全,可以简化手写操作的错误
    3,该的时候,直接改一个地方就可以了,更加的方便,

    所以一些全局使用的变量就可以这样,

     ###################################

    参数化------函数
    /api/dept/1  我循环10次查找,我想要把后面的1,变成1-10,
    怎么办?
    这种可以使用函数中的计数器,
    每天登陆的人数就可以使用计数器,每一个用户登录了+1,


    怎么使用:
    1,打开jmeter内置的函数组件
    打开函数的方法,在菜单中,选项,点击函数助手对话框就打开了

    2,选择要使用的函数,给函数传参,jmeter生成调用格式,
    选择一个__counter,
    第一个参数是TURE,就是每一个用户都有自己的计数器,都是从1开始的,
    如果是FALSE就是全局的计数器,会累积的,第一个1-10,第二个即使11-20了,
    第二个参数不写,
    生成调用格式,${__counter(TRUE,)}

    3,在需要调用函数的位置使用jmeter生成的调用格式,
    使用:/api/dept/?counter=${__counter(TRUE,)}

    #####################################

    直连数据库
    这是一个什么功能?
    之前我们都是使用接口和数据库交互的,增加数据,查询数据,删除数据,修改数据,
    我们测试api的结果,都要和数据库进行比对,看是否有漏查,这种比较低效
    所以有了直连数据库,避免人工比对,让程序去和数据比对,这个功能很奇特,


    怎么使用?
    这也是一个组件,
    1,jmeter本身不支持直连数据库,但是我们可以通过第三方整合,
    mysql-connector-java-5.1.35-bin.jar
    sqlite-jdbc-3.21.0.jar
    两个jar包的添加,在测试页面页面最底部,添加jar包,
    你导入了这个包,这个jmeter就具备了连接数据库的功能了,

    2,配置数据的连接
    添加组件,测试计划右键,添加-配置元件-jdbc-connect-config
    变量名:通过变量找到配置,
    数据连接池,这个默认的就行,先不管,
    默认连接配置:
    2.1,路径,jdbc:mysql://localhost:3306/xst_shop
    2.2,驱动类,com.mysql.jdbc.Driver
    2.3,账号,
    2.4,密码


    3,创建取样器(jdbcrequest不再是httprequest了,)连接数据库
    线程组---添加---sampler--jdbcrequest
    变量名,和上线配置的是一样的,
    下面就可以写sql语句了,
    查询就是选择select

    4,查看结果,


    #########################################  

    直连数据库
    上面只是拿到了查询结果,
    下面讲解对结果进行处理

    场景:
    比如获取查询结果的第二个,然后到百度去搜索

    手动的操作
    1,创建一个http请求,ip是www.baidu.com
    2,url是: /?wd=python
    3,然后可以查询百度,

    如何让他自动化运行?????
    在jdbcrequest页面,可以把查询结果赋值给一个变量,比如deptname
    但是查询结果有很多怎么办?实际是有一个内置的规则的,多个结果就是deptname_1 deptname_2   .....这个规则是jmeter的,
    这个可以通过debug组件,看底层的实现,
    所以结果结果就是
    url是: /?wd=${deptname_2}
    这样就可以了,


    ##########################################

    jmeter关联,
    这是什么?
    两个请求之间不是独立的,是有关系的,就是关联,
    一个请求的结果是另一个请求的数据,
    比如上面的数据库查询的结果是http请求的参数,


    为什么需要关联?
    这种可以实现多样的业务逻辑,业务可能会有多个请求组成,

    怎么实现?

    实现方法1,jdbc请求结果赋值给变量,然后在另一个请求中调用变量, 这种常用的方式,
    实现方案2,xpath提取器,
    实现方案3,正则表达式提取器,


     ################################

    关联的第二种方案------xpath提取器
    1,创建两个http请求,访问百度,再有一个请求谷歌,
    2,把百度中的title标签内容提取出来,然后在谷歌中搜索,
    3,在百度http请求右键,添加---后置处理器-----xpath extractor,
    变量名:设置一个变量名,其他地方引用,title
    xpath://title
    缺省值,就是如果不存在应该返回什么
    4,在谷歌请求中,/?wd=${title}


     #############################################

    正则表达式提取器
    1,创建两个http请求,访问百度,再有一个请求谷歌,
    2,把百度中的title标签内容提取出来,然后在谷歌中搜索,
    3,在百度http请求右键,添加---后置处理器-----正则表达式提取器
    引用名称:设置一个变量名,其他地方引用,title
    正则表达式:<title>(.*)</title>
    模板:$1$ 固定写法 可能正则表达式有多个,$2$ 这是使用第二个,
    匹配数字:0是随机匹配,1就是匹配第一个找到的,2是第二个找到的 缺省值,就是如果不存在应该返回什么 4,在谷歌请求中,/?wd=${title}

    使用这种方法可以把接口返回的数据使用正则表达式提取出来,然后再去处理,


    关联
    1,xpath
    2,正则表达式,
    这两种是有不同应用场景的:
    如果从标签中,HTML,xml,提取使用xpath
    如果是文本格式,比如json,使用正则更加方便,

     ########################################

    jmeter环境
    1,什么是环境变量?
    就是系统设置,高级设置中的path,
    设置了path,系统可以直接cmd命令行运行,因为系统回去path中找启动程序,一直遍历所有的path直到找到,

    2,path怎么用,
    如果想要直接在dos启动,需要将该程序的目录配置到path

    3,path和我们有什么关系
    和java开发必须有,使用java开发要有可执行程序,
    要配置jdk环境变量,开发必备,

    4,所以我想要cmd里面,输入Jmeter,启动起来Jmeter,怎么办,
    就可以配置path

    #######################################

    jmeter断言
    
    1,是什么?
    就是程序替代人工去判断响应的结果是否符合预期,
    
    2,为什么使用断言
    安全,高效,功能强大,
    
    3,怎么用
    3.1 断言响应的状态码
    3.2 断言响应的内容
    3.3 断言响应的字节数,
    3.4 断言响应的时间,
    大概四种断言,

    ############################################

    断言---状态码
    1,搭建框架,测试计划, 线程组,结果树,http请求查询接口,
    2,在http请求右键,添加-断言-响应断言
    3,断言页面
    3.1 选择要断言的字段:响应代码
    3.2 模式匹配规则,substring
    3.3 要测试的模式,添加,200
    断言正确是没有任何反应的,错误了会有报错,告诉你断言失败的内容,

     ###########################################

    断言---断言内容
    1,搭建框架,测试计划, 线程组,结果树,http请求查询接口,
    2,在http请求右键,添加-断言-响应断言
    3,断言页面
    3.1 选择要断言的字段:document(text)
    3.2 模式匹配规则,substring
    3.3 要测试的模式,添加,andy  判断相应的json数据是否包含这个内容,
    断言正确是没有任何反应的,错误了会有报错,告诉你断言失败的内容,

     #####################################

    断言---长度断言
    1,搭建框架,测试计划, 线程组,结果树,http请求查询接口,
    2,在http请求右键,添加-断言-size assertion
    3,断言页面
    3.1 选择要断言的字段:有全部相应,响应头,响应体,等,我们断言响应体,就是json数据,
    3.2 模式匹配规则,输入100,可以选择大于,等于,小于,等,判断的是响应体大于这个字段,
    断言正确是没有任何反应的,错误了会有报错,告诉你断言失败的内容,

    #######################################

    断言---断言时间,用于性能测试,
    1,搭建框架,测试计划, 线程组,结果树,http请求查询接口,
    2,在http请求右键,添加-断言-断言持续时间,
    3,断言页面
    3.1 一个字段就是毫秒,输入10,
    如果是符合10毫秒以内,就没有问题,大于就有问题,
    断言正确是没有任何反应的,错误了会有报错,告诉你断言失败的内容,

    #########################################

    集合点:
    jmeter的内置组件,
    是什么?
    作用,可以启动多个用户,并且让多个用户在同一刻去访问服务器,

    为什么?
    模拟高并发,测试服务器性能,

    怎么用
    场景:模拟N个用户同一时刻查询某一个接口,

    是不是可以把线程数设置为10,但是怎么保证同一时刻呢,是没有办法的,所以需要使用到集合点,
    1,搭建框架,测试计划, 线程组,结果树,http请求查询接口,
    2,线程组需要通过线程数,模拟用户,
    3,通过添加组件,来控制同一时刻,
    http请求右键,添加-配置元件-同步定时器,
    有两个选项,分组,我们设置成为10,
    超时时间,10毫秒,就是请求超过某一个时间就不等响应了了,

    如果是这种集合点,测试性能,
    可以使用聚合报告来看结果,
    会看到这个请求,有多少人,平均响应时间,50%,90%,95%,最大,最小,错误率,吞吐(每秒请求数) 服务器接收,服务器响应,


    关于分组,
    有10个线程,分组是10,就是说10个用户,每组10个,其实就是分成了1组
    有200个线程,分组是50,就是说200个用户,每组50个,实际就是分成了4组,
    有200个线程,分组是201,超时时间是20秒,就会200个执行完了,然后等待20秒执行最后一个,实际最后一个不存在,所以超时就结束了,

    关于超时时间,
    输入0,不是不等待,是无限等待,有200个线程,分组是201,超时时间是0秒,就会200个执行完了,然后一直等待了,
    所以线程数和组,要能整除,如果有余数,你的超时时间还是0,就会挂起,

    ###########################################

    函数
    1,是什么?
    也是一个组件,封装了一些功能,
    之前使用过一个counter计数器,

    2,为什么使用函数
    容易读容易维护

    怎么使用
    1,打开jmeter的函数模块,
    2,选择要调用的函数
    3,生成函数调用格式,
    4,哪里需要就粘贴,

    函数分类:
    1,和数字有关的,
    __counter() 计数器
    __time() 获取时间
    __random() 随机数
    2,文件读取
    __CSVRead() 读取CSV格式的数据,之前使用过了,csv data setconfig,类似,
    3,设置属性
    __setProperty() 属性设置
    __property() 属性获取,

    ####################################

    函数-----数字相关的函数
    1,搭建框架,测试计划,线程组,http请求,查看结果树,
    2,添加函数,生成调用格式
    3,哪里使用就粘贴调用格式,

    counter,false,true,
    random,最大值,最小值,一个随机数区间,
    time 格式:yyyy/MM/dd HH/mm/ss 第二个参数可以不写,



    函数---csvRead
    使用这个函数,实现数据的批量插入,
    1,框架搭建,插入几条,就要循环几次,比如三个数据,就是线程数3,循环次数1,
    2,数据保存在外部文件,
    3,使用csvread逐行获取并解析,插入到提交的数据中,

    csvread有两个参数
    1,文件路径
    2,文件列号,这是什么?输入0,是读取第一行第一行第一列,输入1,就是读取第二行的第一列,
    文件:
    1,andy,11
    2,merry,22
    3,jack,33
    所以写的时候,
    {
    id = '${__csvread(路径,0)}'
    name ='${__csvread(路径,1)}'
    age = '${__csvread(路径,2)}'
    }

     #######################################

    函数-----属性设置和属性获取
    __setProperty()
    __property()
    
    场景:
    1,http请求1 百度
    http请求2 google
    使用请求1的结果, title值,作为请求2的参数,

    1,搭建框架:测试计划, 线程组,http请求1,http请求2,
    2,http请求1,添加-后置处理器-xpath,
    两个字段
    title
    //title

    3,http请求2,
    /?wd=${title}
    #########################
    上面是之前的方法
    但是如果是两个线程组,并且是独立运行,就会有问题,涉及到一个作用域的问题,上面的变量作用域只在本线程组,

    怎么实现:
    思想:把线程组内部的数据导出,放到共享空间中,其他线程组要使用数据,就从共享空间获取,

    1,讲数据从线程组导出,使用的是函数setproperty。
    第一个字段:属性名,out。自己起名字
    第二个字段value,${title}
    生成调用格式,
    在本线程,添加-sampler-beanshallsampler,把生成的调用格式,粘贴进入,
    这样就导出了,可以所有的线程组共享了,
    2,另一个线程组,从共享空间引入,property,
    第一个字段:属性名。out
    然后生成调用格式,
    然后在另外的一个线程组引入,就可以了,

     ##################################

    分布式-------基本架构

    1,多台机器协作(集群方式)完成测试任务
    2,更加高效,安全,

    怎么用:
    有控制机和执行机

    控制机控制多个执行机,分配每一个执行机生成任务,然后统一返回到控制机,然后汇总,

    控制机负责,任务分发和结果汇总
    执行机负责接任务和做任务,

    所以分成三步:
    1,控制机分配不同的任务给执行机
    2,执行机执行任务,将结果返回给控制机
    3,控制机将结果汇总,

    #######################################

    分布式--------环境搭建
    1,搭建伪分布式环境,就是打开多个jmeter。
    怎么搭建:
    1.1 把jmeter的安装包复制多个,在不同的文件夹,然后打开就模拟多个jmeter的启动,
    1.2 修改端口号,在bin目录,jmeter.property,这是配置信息,找到server_port = 6666 server_port = 7777
    1.3 在控制机,去找地址,配置romote_hosts = 127.0.0.1:6666,127.0.0.1:7777

    ##########################################

    分布式测试:
    怎么用:
    需求:平均分配1000个用户给执行机执行,一个执行机就是500个用户

    1,控制机编写相关脚本,
    在控制机的菜单,---运行----远程启动-----你会看到你配置的romote_hosts,有两个,
    也可以全部启动
    菜单,---运行----远程全部启动,

    2,分配任务给执行机,远程全部启动,

    3,我们开启执行机的bin目录--jmeter-server.bat 只有服务没有界面,也不需要在执行机编写脚本,
    执行机启动了,控制机就可以发送任务了,

    4,控制机编写脚本,
    搭建框架,测试计划,线程组,注意线程数是500,http请求,聚合报告,不过还是配置成50,毕竟还是本地执行,
    执行的之后不能再和以前一样执行了,
    执行,菜单,---运行----远程全部启动,这样就全部启动了,
    注意前提是执行机都是启动的,

    你会发现聚合报告就是100个用户,
    分布式就是体现了人多力量大的

    #########################################

    jmeter组件---控制器
    之前我们可以添加多个线程组,每一个线程组可以添加多个取样器,sampler,比如http请求,

    逻辑控制器
    1,是什么?
    可以控制取样器的实现顺序,的一种一种组件,一种是分支一种是循环,
    类似于编程的流程控制,

    2,为什么?
    可以实现多样的业务逻辑

    3,怎么用:
    一种是分支---if控制器,
    就是符合就执行,不符合就不执行,

    一种是循环----foreach控制器,

    #########################################

    逻辑控制器使用-------
    
    需求1,访问百度,京东,淘宝,定义一个变量,如果是百度就访问百度,如果是京东就访问京东,如果是淘宝就访问淘宝,需要判断,
    
    实现:
    1,搭建框架,测试计划,线程组,http请求,结果树,
    
    2,用户定义变量值,百度,京东,淘宝
    在测试计划右键--添加---配置元件---用户定义的变量
    添加:
    名称:name
    值:百度
    
    3,添加一个分支组件,有选择的执行
    在线程组右键--添加--逻辑控制器---if控制器,
    一个字段:条件:"${name}" = "百度"
    
    4,在if控制器右键,添加---sampler---http请求
    当执行的之后,就会去比对你定义的变量和if控制器的条件,如果匹配就执行
    否则不执行

    #######################################

    逻辑控制器------循环控制器
    
    查询学生结果10次
    使用之前的方法已经可以实现了,现在讲解循环控制器的使用,
    
    1,搭建框架,测试计划,线程组,查看结果树,
    2,线程组,添加-逻辑控制器,循环控制器,
    设置,循环10次,
    
    3,在循环控制器添加http请求,
    
    执行,就会把这个http请求循环执行10次,
    
    那么这个循环控制器有什么特别的,
    1,线程组的循环次数是作用组内的所有的http 请求,
    2,循环控制器,更加的灵活,可以控制某一个请求,

    #########################################

    逻辑控制器-------foreach控制器
    
    需求:
    有一组关键字,Python,java,...
    依次取出,然后去百度搜索
    
    1,搭建框架,测试计划,线程组,结果树,
    
    2,保存关键字,可以使用用户定义的变量,来保存关键字,
    测试计划,添加--配置元件---用户定义的变量, 名字,和值, name_1 python name_2 java name_3 C
    ++ 3,在线程组添加一个foreach控制器, 遍历步骤2中的数据, 线程组,添加-----逻辑控制器----foreach控制器, 输入前缀,name, 勾选,下滑线,add_ before number 开始索引值:0 结束索引值:3 这是左闭右开的,所以是0-3, 输出变量名称,myname 4,在foreach添加http请求 ip : baidu url /?wd = ${myname} 5,查看结果树,

    #######################################

    jmeter组件  ----- QPS
    
    query per  second,每秒查询多少次,
    20QPS,就是每秒访问20次,
    
    一个用户:以20QPS的频率访问服务器,持续10秒,查看服务器的平均响应时间,
    
    就是每秒访问20次,持续10秒,看服务器的平均响应时间,
    
    每秒钟20次,怎么实现????
    之前学习的集合点不行,
    循环次数不行,
    
    要使用新的组件,QPS,在定时器里面,
    添加-- --定制器----常量吞吐定时器,constant  throughout timer
    
    怎么使用
    1,搭建框架,测试计划,线程组,http请求,聚合报告,
    线程组设置一个线程,因为是一个用户,
    循环次数,200,因为10秒,每秒20次,
    
    
    2,是给http请求右键 ,添加一个常量吞吐定时器,
    有一个字段是每分钟执行的次数,需要把QPS换算成每分钟,每秒20次,60秒,就是1200次,
    输入1200,
    3,查看聚合报告,
    你会发现throughout字段就是20/s,但是这个值会根据步骤2的值,上下波动,

    ########################################

    jmeter---作用域
    
    1,这不是一个组件,但是是一个概念,
    你把一个组件放到不同的级别,比如测试计划,线程组,http请求,等,
    
    2,所以这些组件是非常的灵活的,

    #######################################

    jmeter组件的执行顺序
    组件:jmeter内置的功能,每一个功能都是一个组件,
    元件:元件存储的都是性质相似的组件,是对组件的分类管理

    各元件之间的执行顺序:
    1,配置元件:存储了程序的全局性数据
    2,前置处理程序,,取样器执行之前执行的数据,可以cucnu批量执行的数据
    3,定时器,集合点,吞吐量,等,在取样器之前执行,
    4,取样器,访问服务器,这是最为核心的,
    5,后置处理器,xpath处理,正则处理器,都是响应之后处理的,
    6,断言,这也是有结果了才会有断言,
    7,监听器,这是断言之后才会有结果树,等,

    这个要理解,

     

    #####################################

    jmeter扩展组件,图形监视器,
    
    1,是什么?
    jmeter可以做二次开发,
    也是使用组件的方式,就是扩展组件,
    
    这是开发人员自己设计的,不是jmeter官方提供的,
    
    图形监视器,是监视服务器的,比如内存,cpu,磁盘,网络等运行的情况,
    
    2,为什么使用这个?
    模拟生产环境下,服务器运行状态的测试
    
    3,怎么用的?
    实现思想:
    明确场景:
    工作中,可能需要远程连接服务器
    
    服务器上部署我们的程序,是不具备返回服务器内存,cpu,磁盘,网络等功能的
    但是我们jmeter里面需要看到这个运行状态,
    怎么办?
    首先在服务器安装一个小程序,可以获取到系统的相关接口,比如服务器内存,cpu,磁盘,网络等,然后返回测试机,
    测试机也安装一个小程序,然后接受这些信息,然后整合到jmeter就可以显示服务器内存,cpu,磁盘,网络等信息了,



    实现流程:

    ########################################

  • 相关阅读:
    Android的selector,背景选择器
    JAVA静态和非静态内部类
    Android应用资源--之属性(Attribute)资源
    contentprovider的学习实例总结
    转:Android 2.3 代码混淆proguard技术介绍
    忘掉旋转,利用2-3-4树,学习红黑树
    ios 定位获取当前位置信息
    地图相关
    mac下,svn配置
    NimBus一个好的开发框架
  • 原文地址:https://www.cnblogs.com/andy0816/p/12541637.html
Copyright © 2020-2023  润新知