jmeter使用汇总

jmeter元件的执行顺序

1、配置元件(Config Elements)

2、前置处理器(Pro-processors)

3、定时器(Timers)

4、取样器(Sampler)

5、后置处理器(Post-processors)

6、断言(Assertions)

7、监听器(Listeners)

注:1,前置处理器、后置处理器和断言等元件功能对取样器作用。因此,如果在它们的作用域内没有任何取样器,则不会被执行;

2,如果在同一作用域范围内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序依次执行

jmeter目录结构

Jmeter断言

响应的json数据

响应断言(判断是否包含内容)

断言失败的话显示

大小断言(判断字节数)

Json断言

Xpath断言(后面会写xpath的简单用法)

断言持续时间(判断响应的时间)

Xpath基本语法

符号

描述

/

从根节点选取

//

从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置

.

选取当前节点

*

匹配任何元素节点

@*

匹配任何属性节点

node()

匹配任何类型节点

..

选取当前节点的父节点

@

选取属性

/div[1]

选取div元素的第一个

/div[last()]

选取div元素的最后一个

/div[position()<3]

选取div元素的前俩个当然也有=,!=,<,>

//input[@length>256]

选取input的lenght元素大于256的

//div[@class="wd"]

选取div元素的class属性等于wd的

//div[@name='rn'] | //div[@name='oq']

选取div元素的name属性等于rn和oq的

//p[@id="cp"]/text()

选取元素下所有的文本当然不包括标签内部的文本

XPath轴(XPath Axes)可定义某个相对于当前节点的节点集:

1、child 选取当前节点的所有子元素

2、parent 选取当前节点的父节点

3、descendant 选取当前节点的所有后代元素(子、孙等)

4、ancestor 选取当前节点的所有先辈(父、祖父等)

5、descendant-or-self 选取当前节点的所有后代元素(子、孙等)以及当前节点本身

6、ancestor-or-self 选取当前节点的所有先辈(父、祖父等)以及当前节点本身

7、preceding-sibling 选取当前节点之前的所有同级节点

8、following-sibling 选取当前节点之后的所有同级节点

9、preceding 选取文档中当前节点的开始标签之前的所有节点

10、following 选取文档中当前节点的结束标签之后的所有节点

11、self 选取当前节点

12、attribute 选取当前节点的所有属性

13、namespace 选取当前节点的所有命名空间节点

实例::要定位当前td同级后的一个td

//td[@id='dw']/following-sibling::td

Jmeter参数化的常用方式

jmeter参数化__函数助手_csvRead

1,点击1位置弹出函数助手的弹窗

2,点击2位置选择功能函数

3,点击3位置输入csv文件的路径如:C:\Users\Administrator.USER-20181127ZE\Desktop\1.csv

4,点击4位置输入0的话表示从第一列开始

5,点击5位置自动生成引用名

6,引用方法如图

jmeter参数化__用户参数

1,前置管理器——用户参数

2,如图设置参数

3,直接引用就可以了 用户1的下面的俩个参数都是对应的

jmeter参数化__csv数据文件设置

(所有参数化涉及到的csv文件的文本都是这样的)

1,配置元件——csv数据文件设置

2,文件名选择文件

3,文件编码一般都是utf-8

4,自定义引用名 一行有俩列话就俩个引用名以,(英文的)分割

由于我没有的表格没有设置首行为表头所以不用忽略首行

5,csv文件的默认分隔符就是,

6,带引号根据自己的情选择 剩下的都写的很明白不用细说

7,引用方法和上边的一样

jmeter参数化__函数助手__random string(随机函数)

1,如图第一个输入框填写选取的个数

2,第二个输入框输入待选择的文本

3,第三个输入框输入引用名

4,点击生成 其实就是生成了一个函数表达式(你可以不用这么麻烦的设置函数助手什么的可以直接在引用名上如数该函数)

Jmeter参数化__JDBC

1,前提是安装mysql数据库后查看版本下载对应的数据库驱动

2,点击TestPlan在图中位置导入数据库驱动

3,添加-配置元件-JDBC Connection Configuration

Variable Name: 变量名称

Max Number of Connection: 数据库最大链接数

PoolTimeout: 数据库链接超时,单位ms

Idle Cleanup Interval (ms): 数据库空闲清理的间隔时间,单位ms

Auto Commit:自动提交。有三个选项,true、false、编辑(自己通过jmeter提供的函数设置)

Transaction Isolation:

事务间隔级别设置,主要有如下几个选项:

【TRANSACTION_NODE 事务节点 、

TRANSACTION_READ_UNCOMMITTED 事务未提交读、

TRANSACTION_READ_COMMITTED 事务已提交读 、

TRANSACTION_SERIALIZABLE 事务序列化 、

DEFAULT 默认、

TRANSACTION_REPEATABLE_READ 事务重复读、

编辑】

Database URL:如jdbc:mysql://localhost:3306/test 表示本地数据库,3306端口,数据库名称为test后面还有参数稍后补充

?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC

JDBCDriver Class: JDBC的类,如org.gjt.mm.mysql.Driver

4,添加取样器-JDBC Request

第一个空和前面的对应

Varivble names:对应的应用名 多个以逗号分隔

Result Varivble name:对应的查询全部集合的引用名

5,正常引用变量就可以了

向数据库中插入数据

jmeter定时器

固定定时器

1,定时器——固定定时器

2,设置线程延迟时间

3,即表示在执行改该请求的时候每个请求之间的间隔是10000毫秒(第一个请求也是10000毫秒之后执行的)

同步定时器

1,定时器--同步定时器

2,当线程数设置为100的时候

3,等到50个,未超时,继续等待,等到时间到了 一起并发(此时的线程数可能大于50)

4,未等到50个线程。时间到了 此时等待到多少个线程并发多少个线程

1,设置线程数为100

2,等带到60个的时候并发一次,继续等待等待到40达不到60所以一直等待不运行(只会运行一次等待到60的时候)

高斯随机定时器

如需要每个线程在请求前按随机时间停顿选取高斯随机定时器

统一随机定时器

和高斯随机定时器的作用差异不大,区别在于延时时间在指定范围内且每个时间的取值概率相同,每个时间间隔都有相同的概率发生,总的延迟时间就是随机值和偏移值之和。

泊松随机定时器

这个定时器在每个线程请求之前按随机的时间停顿,大部分的时间间隔出现在一个特定的值,总的延迟就是泊松分布值和偏移值之和

常数吞吐量定时器

精准吞吐量定时器

jmeter逻辑控制器

一、简单控制器(Simple Controller)

作用:这是Jmeter里最简单的一个控制器,它可以让我们组织我们的采样器和其它的逻辑控制器(分组功能),提供一个块的结构和控制,并不具有任何的逻辑控制或运行时的功能。

二、循环控制器(Loop Controller):

作用:指定其子节点运行的次数,可以使用具体的数值(如下图,设置为5次),也可以使用变量

1、Forever选项:勾选上这一项表示一直循环下去

2、如果同时设置了线程组的循环次数和循环控制器的循环次数,那循环控制器的子节点运行的次数只根据循环控制器的次数进行,不和线程组的循环次数有关系,这点要记住。(注:这个本人实测结果相反

注意:要用循环控制器,那么需要控制器下面有请求才能使用

三、仅一次控制器(Once Only Controller):

如图设置一个循环控制器 在循环控制器中创建一个仅一次控制器,无论循环控制器执行多少次,仅一次控制器就执行一次

作用:在测试计划执行期间,该控制器下的子结点对每个线程只执行一次,登录场景经常会使用到这个控制器。

注意:将Once Only Controller作为Loop Controller的子节点,Once Only Controller在每次循环的第一次迭代时均会被执行。

四、ForEach控制器(ForEach Controller):

作用:ForEach控制器一般和用户自定义变量一起使用,其在用户自定义变量中读取一系列相关的变量。该控制器下的采样器或控制器都会被执行一次或多次,每次读取不同的变量值。如下图:

参数:

Input Variable Prefix:输入变量前缀

Output variable name:输出变量名称

Start index for loop(exclusive):循环开始的索引(这里如果不填写,默认从1开始,如果没有1开始的变量,执行时会报错)

End index for loop(inclusive):循环结束的索引

Add”_”before number:输入变量名称中是否使用“_”进行间隔。

用户自定义变量:

变量名前缀为ForEach Controller中Input variable prefix定义的name + 下划线(上图中我们勾选了下划线)+数字编号

执行结果:

总共执行了3次,每次执行时会把获取到的变量值赋值给输出变量outNmae,其它地方可以通过${outNmae}进行调用。

五、事务控制器(Transaction Controller):

这个多应用在性能测试中,当多个api进行性能测试的时候,我们在使用聚合报告查看的时候数据比较杂乱,这个时候我们就可以把这些api看做一个事物,进行聚合报告查看

作用: 事务控制器会生产一个额外的采样器,用来统计该控制器子结点的所有时间。

参数:

Generate parent sample:(选中这个参数结果展示如下图红框,否则显示为下图蓝框)

Include duration of timer and pre-post processors in generated sample:选中这一项会统计定时器(timer)的时间,否则只统计采样器(sample)的时间

六、If 控制器(If Controller):

作用:根据给定表达式的值决定是否执行该节点下的子节点,默认使用javascript的语法进行判断(如下图红框内的文字)。

参数:

Interpret Condition as Variable Expression?:选中这一项时表示:判断变量值是否等于字符串true(不区分大小写)

Evaluate for all children:如果选中这一项,在每个子结点执行前都会计算表达式

示例一:使用变量的方式进行判断:

说明:${test}获取的值判断是否等于tom,如果等于即执行if控制器,不等于则跳过if控制器

注意:条件需要增加“”

示例二:选中Interpret Condition as Variable Expression?

七、Switch控制器(Switch Controller):

  作用:Switch控制器通过给该控制器中的Value赋值,来指定运行哪个采样器。有两种赋值方式:

第一种是数值,Switch控制器下的子节点从0开始计数,通过指定子节点所在的数值来确定执行哪个元素。

第二种是直接指定子元素的名称,比如采样器的Name来进行匹配。当指定的名称不存在时,不执行任何元素。

当Value为空时,默认执行第1个子节点元素。

八、吞吐量控制器(Throughput Controller):

  作用:控制其下的子节点的执行次数与负载比例分配,也有两种方式:

Total Executions:设置运行次数

Percent Executions:设置运行比例(1~100之间)

示例:

1、设置线程组循环5次:

2、Throughput Controller1的子结点执行3次:

3、Throughput Controller2的子结点执行(40% * 线程组循环次数5)= 2次:

执行结果:

九、随机控制器(Random Controller):

作用:随机执行随机控制器下面的某一个请求

十、随机顺序控制器(Random Order Controller):

全部执行随机顺序控制器中的请求,只是顺序是随机的

十一、while控制器

框中的值为true则退出循环,否则值为false则一直循环

十二、临界部分控制器

业务逻辑:

根据锁名来控制并发,同一个锁名之下,在同一时间点只能存在一个运行中,适用于控制并发的场景

锁名类型:

锁名为空,认为每个锁为不同的锁

锁名相同,多个锁认为是同一个锁,同一个时间点只能存在一个运行中

锁名为变量,根据变量值来判断是不是属于同一个锁,变量值为相同时,则认为是同一个锁

十三、include(包含)控制器

引入的必须是测试片段

执行结果入下图

十四、交替控制器

10个线程执行结果如下

十四、交替控制器

十五、录制控制器

咱也不敢说咱也不敢问估计是个没有用的控制器吧

十六、Runtime控制器

表示该控制器下面的请求会执行5秒

jmeter中常用函数

${__TestPanName},返回当前测试计划的名称

${__threadGroupName},返回当前线程组的名称

${__threadNum},返回当前正在执行的线程的编号,而且不依赖于线程组

${__samplerName},返回当前请求的名称

${__machineName},返回本机的主机名

${__random},随机生成数字

${__randomstring},随机生成字符串

${__time},多种格式返回当前时间

${__time()} 返回'1548133155699'

${__time(YMD,)} 返回'20190122'

${__time(dd/MM/yyyy,)} 返回'22/01/2019'

${__time(yyyy-MM-dd HH:mm:ss,)} 返回2020-05-12-20-25-12

${__P(group1.threads)}:返回属性group1.threads的值。

${__P(group,wangruifeng},返回group的值没有的话返回默认值wangruifeng

${__setProperty},用于设置JMeter属性的值。

${__counter(FALSE,num)},计数器从1开始

Jmeter正则表达式提取器的使用

正则语法

符号

描述

.

匹配除换行符 \n 之外的任何单字符。要匹配 . ,请使用 \. 

*

匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*

\d

表示任意一个数字

\s

匹配任意的空白符,包括空格,换行符,制表符(tab)

\w

匹配字母,数字,下划线或汉字

 ^

匹配字符串的开始

\S

匹配任意不是空白符的字符

\D

匹配任意非数字的字符

\B

匹配不是单词开头或结尾的位置

匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。

注意:*、+限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。

Apply to:应用范围

要检查的响应字段:样本数据源。

引用名称:其他地方引用时的变量名称,我这里写的phone,可自定义设置,引用方法:${引用名称}

正则表达式:数据提取器,()括号里为你要获取的的值。"mobilephone":"( 相当于LR左边界, )","leaveamount"相当于LR右边界。而括号里\d+为正则表达式,用来匹配所需要获取的数据,何谓正则表达式文章末尾会附上说明

模板:$$对应正则表达式提取器类型。-1全部,0 随机,1第一个2第二个,以此类推,若只有一个正则一般就填写$1$

匹配数字:正则表达式匹配数据的所有结果可以看做一个数组,匹配数字即可看做是数组的第几个元素。-1表示全部,0随机,1第一个,2第二个,以此类推。若只要获取到匹配的第一个值,则填写1

缺省值:匹配失败时的默认值。可以不写。若需用于后续逻辑判断,可简单写为 ERROR。

实例:

如图一个正则匹配多个值 取值的时候 引用名_(第几个)_g1

g1表示只去匹配到的值 g0表示去值和匹配表达式(一般用(.*?)匹配任意字符)

正则表达式中也可以引用变量用${变量名}格式

jmeter常见乱码问题

1,修改图中文件的sampleresult.default.encoding=UTF-8

jmeter设置全局变量

(例如登录获取cookie后面的操作都语言验证就可以使用全局变量)

1,点击函数助手

2,如图复制函数的表达式 取样器——beanshell取样器 粘贴函数表达式

3,引用的时候 ${__P(name)}

jmeter函数助手中常用的函数

${__jexl3(${name}==1,)} 表示当name=1的时候返回值为true,否则为false(注意常用在if循环中,循环控制器)

$(__groovy(${name}==1,)) 效果和上面的一样

注:==等于 !=不等于 >大于等于 >大于 &&且 ||或

jmeter接口测试之上传文件

1、from-data就是http请求中得multipart/form-data,它会姜表单得数据处理未一条

消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以是上传文件。当

上传得字段是文件时,会有content-type来表明文件类型;content-disposition,用

来说明字段得一些信息;

由于有boundary隔离,所有multipart/form-data既可以上传文件,也可以上传键值

对,它采用了键值对得方式,所以可以上传多个文件

2、x-www-form-urlencoded:就是application/x-www-from-urlencoded,会姜表单内得数据转换为键值对,比如,name=java&age = 23

3、raw:可以上传任意格式得文件,可以上传text,json,xml,html等

4,binary:详单与content-type:application/octet-stream,从字面意思得知,只可以上传二进制数据,通常用来上传文件。由于没有键值,所以,一次只能上传一个文件

注:multipart/form-data与x-www-form-urlencoded区别

multipart/form-data:既可以上传文件等二进制数据,也可以上传表单键值对,只是最后会转换为一条信息

x-www-form-urlencoded:只能上传键值对,并且键值对都是间隔分开得

jemter执行python脚本(我做加密)

方法1:使用bat文件去执行python脚本

os进程取样器

bat脚本如下图

执行的python文件如下图、

用正则匹配出你加密后的字符

然后正常的变量引用就ok

方法2:导入jython的jmeter插件直接调用脚本

jemter常用方法

log:写入日志文件,调试。日志目前有三个级别分别是,info、warn、error

vars:提供读取(get)和写入数据(put)

jmeter使用总常用的方法的总结

获取当前脚本的绝对路径:${__BeanShell(import org.apache.jmeter.services.FileServer;FileServer.getFileServer().getBaseDir();)}

if逻辑控制器条件不能直接写需要使用:${__jexl3(${random_num} == 1 && ${__time(/1000,)}>${s_time},)}

jemter分布式设置总结

负载机(压力机):负责执行线程

主控机:聚合报告可以在主控机上展示

  1. 主控机和负载机都要安装一样版本的java和jmeter
  2. 主控机的配置文件jmeter.properties需要修改
    1. :添加remote_hosts=10.8.88.119:1099。表示的是要控制的负载机(多个负载机,","分隔)。
    2. :#server.rmi.ssl.disable=false 修改为:server.rmi.ssl.disable=true并且将前面的#注释去掉。
    3. :将#mode=Standard前面的#注释去掉。这个操作是为了让主控机在执行后在察看结果树下能看到返回的响应信息(repsonse body)
  3. 负载机的配置文件jemter.properties需要修改
    1. :#server.rmi.ssl.disable=false 修改为:server.rmi.ssl.disable=true并且将前面的#注释去掉。
    2. :查询1099端口是否被占用 (netstat -ano | findstr "1099"
    3. :双击启动 jemter-server.bat 文件

jmeter分布式的步骤以及原理

  1. 主控机通过jmeter-server的协议将脚本分发给负载机
  2. 负载机负责执行脚本,负载机执行脚本后会将测试结果发送给主控机
  3. 主控机也可以是负载机

处理过程

主控机启动后,会拷贝本地的jmx文件分发到远程的负载机上

负载机拿到脚本以后启动命令行执行模式(无界面)去执行脚本,对于负载机拿到的基本都是一样的

执行时。负载机会把执行获得的数据结果传给主控机,主控机会手机所有的负载机的信息并汇总,这样,主控机上就存在一份所有的负载机的汇总数据的结果

常见报错

  1. 检查主控机和负载机ip是否可以ping的通,检查负载机防火墙是否关闭
  2. 检查主控机和负载机上的jmeter版本,保证版本一致
  3. 负载机(加压机)上的JMeter-server.bat没有启动,如果使用主控机127.0.0.1的话,主控机上也要启动
  4. CSV参数化文件没有复制到负载机同一位置,并且需要保证相同的文件名
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
从35个方面对Jmeter从原理到实际演示,一册在手,天下我有 1.性能测试基本概念 1.1.RT -Response time 请求响应时间 从客户端发出请求到得到响应的整个时间 一般包括网络响应时间+server的响应时间。 用户接受准则: 例如2-5-10原则,即按照正常用户体验,如果用户能够在2秒内得到响应,会感觉速度很快,如果2-5秒得到响应,用户感觉系统的响应速度还不多,在5-10秒之内得到响应时,用户会感觉系统的响应速度慢,但是可以接受,超过10秒后还没有响应,用户就会感觉不能够接受。 不同行业不同业务可接受的响应时间是不同的,一般情况,对于在线实时交易: 互联网企业:500毫秒以下,例如淘宝业务10毫秒左右。 金融企业:1秒以下为佳,部分复杂业务3秒以下。 保险企业:3秒以下为佳。 制造业:5秒以下为佳。 1.2.系统处理能力 系统处理能力是指系统在利用系统硬件平台和软件平台进行信息处理的能力。系统处理能力通过系统每秒钟能够处理的交易数量来评价,交易有两种理解: 一是业务人员角度的一笔业务过程; 二是系统角度的一次交易申请和响应过程。 前者称为业务交易过程,后者称为事务。两种交易指标都可以评价应用系统的处理能力。一般的建议与系统交易日志保持一致,以便于统计业务量或者交易量。系统处理能力指标是技术测试活动中重要指标。 1.1.1.简称 一般情况下,用以下几个指标来度量: HPS(Hits Per Second) :每秒点击次数,单位是次/秒。 TPS(Transaction per Second):系统每秒处理事务数,单位是笔/秒。吞吐量。 不可分割的。要么完全成功,要么完全失败。 QPS(Query per Second):系统每秒处理查询次数,单位是次/秒。 对于互联网业务中,如果某些业务有且仅有一个请求连接,那么TPS=QPS=HPS, 一般情况下用TPS来衡量整个业务流程,用QPS来衡量接口查询次数,用HPS来表示对服务器点击请求。 每秒钟处理完的事务次数,一般TPS是对整个系统来讲的。一个应用系统1s能完成多少事务处理,一个事务在分布式处理中,可能会对应多个请求,对于衡量单个接口服务的处理能力,用QPS比较多。 1.1.2.标准 无论TPS、QPS、HPS,此指标是衡量系统处理能力非常重要的指标,越大越好,根据经验,一般情况下: 金融行业:1000TPS~9000TPS,不包括互联网化的活动 保险行业:100TPS~1000TPS,不包括互联网化的活动 制造行业:10TPS~50TPS 互联网电子商务:10000TPS~100000TPS,例如天猫5万TPS 互联网中型网站:100TPS~500TPS 互联网小型网站: 50TPS~100TPS 1.3.并发用户数量 常见的错误理解: 使用系统的全部用户数量(注册用户) 使用系统的全部在线用户数量 正确理解 并发用户数指在同一时刻内,打开系统并进行业务操作的用户数量,并发用户数对于长连接(数据库连接时长连接,web请求时短连接)系统来说最大并发用户数即是系统的并发接入能力。对于短连接系统而言最大并发用户数并不等于系统的并发接入能力,而是与系统架构、系统处理能力等各种情况相关 http:请求只能由客户端发出,服务端被动响应。 1.1.3. 简称 Virtual User: VU 1.1.4.标准 一般情况下,性能测试是将系统处理能力容量测出来,而不是测试并发用户数,除了服务器长连接可能影响并发用户数外,系统处理能力不完全受并发用户数影响,可以用最小的用户数将系统处理能力容量测试出来,也可以用更多的用户将系统处理能力容量测试出来。 并发用户数量: 并发用户多少为好? 中小企业:5000用户 1.4.错误率 1.1.5. 定义及解释 错误率指系统在负载情况下,失败交易的概率。错误率=(失败交易数/交易总数)*100%。稳定性较好的系统,其错误率应该由超时引起,即为超时率。 1.1.6.标准 不同系统对错误率的要求不同,但一般不超出千分之六,即成功率不低于99.4% 1.5.CPU 定义及解释 中央处理器是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。CPU Load: 系统正在干活的多少的度量,队列长度。系统平均负载。 CPU指标主要指的CPU利用率,包括用户态(user)、系统态(sys)、等待态(wait)、空闲态(idle)。CPU 利用率要低于业界警戒值范围之内,即小于或者等于75%;CPU sys%小于或者等于30%, CPU wait%小于或者等于5%。单核CPU也需遵循上述指标要求。 7*24不允许宕机 1.6. Memory 内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。 现代的操作系统为了最大利用内存,在内存中存放了缓存,因此内存利用率100%并不代表内存有瓶颈,衡量系统内有有瓶颈主要靠SWAP(与虚拟内存交换)交换空间利用率,一般情况下,SWAP交换空间利用率要低于70%,太多的交换将会引起系统性能低下。 Swap解释: 当物理内存接近崩溃时,将物理内存中最近一段时间最少频率使用到的页框移出物理内存,放进该存储空间,这段存储空间我们称之为交换空间(Swap) 1.7.磁盘吞吐量 Disk Throughput. 磁盘吞吐量是指在无磁盘故障的情况下单位时间内通过磁盘的数据量。 磁盘指标主要有每秒读写多少兆,磁盘繁忙率,磁盘队列数,平均服务时间,平均等待时间,空间利用率。其中磁盘繁忙率是直接反映磁盘是否有瓶颈的的重要依据,一般情况下,磁盘繁忙率要低于70%。 1.8.网络吞吐量 Network Throughput 10Mbit带宽,每秒传输的字节数1.25MBytes 网络吞吐量是指在无网络故障的情况下单位时间内通过的网络的数据数量。单位为Byte/s。网络吞吐量指标用于衡量系统对于网络设备或链路传输能力的需求。当网络吞吐量指标接近网络设备或链路最大传输能力时,则需要考虑升级网络设备。 网络吞吐量指标主要有每秒有多少兆流量进出,一般情况下不能超过设备或链路最大传输能力的70%。 2.性能测试基本流程 性能测试需求: 1)最终用户体验,例如2-5-10原则,即按照正常用户体验,如果用户能够在2秒内得到响应,会感觉速度很快,如果2-5秒得到响应,用户感觉系统的响应速度还不多,在5-10秒之内得到响应时,用户会感觉系统的响应速度慢,但是可以接受,超过10秒后还没有响应,用户就会感觉不能够接受。 2)技术需求, cpu,内存,网络吞吐量,磁盘吞吐量 3)标准要求: 竞品分析- 响应时间 互联网企业:500毫秒以下,例如淘宝业务10毫秒左右。 金融企业:1秒以下为佳,部分复杂业务3秒以下。 保险企业:3秒以下为佳。 制造业:5秒以下为佳。 TPS 金融行业:1000TPS~9000TPS,不包括互联网化的活动 保险行业:100TPS~1000TPS,不包括互联网化的活动 制造行业:10TPS~50TPS 互联网电子商务:10000TPS~100000TPS,例如天猫5万TPS 互联网中型网站:100TPS~500TPS 互联网小型网站: 50TPS~100TPS 性能测试计划 测试环境,测试需求,测试方法,测试时间表,测试组织架构,测试风险,输入输出文档 性能测试步骤: 性能测试执行 3.性能测试工具 4.Jmeter简介 4.1.Jmeter的基本概念 Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言 4.2.我们为什么使用Jmeter 开源免费还很好用,基于Java编写,可集成到其他系统可拓展各个功能插件 支持接口测试,压力(负载和压力)测试等多种功能,支持录制回放,入门简单 相较于自己编写框架活其他开源工具,有较为完善的UI界面,便于接口调试 多平台支持,可在Linux,Windows,Mac上运行 5.Jmeter安装配置及目录结构 5.1.Windows下Jmeter下载安装 登录 http://jmeter.apache.org/download_jmeter.cgi ,根据自己平台,下载对应文件 安装JDK,配置环境变量(具体步骤不做介绍) 将下载Jmeter文件解压,打开/bin/jmeter.bat 5.2.Jmeter的目录结构 /bin 目录(常用文件介绍) examples:目录下包含Jmeter使用实例 ApacheJMeter.jar:JMeter源码包 jmeter.bat:windows下启动文件 jmeter.sh:Linux下启动文件 jmeter.log:Jmeter运行日志文件 jmeter.properties:Jmeter配置文件 jmeter-server.bat:windows下启动负载生成器服务文件 jmeter-server:Linux下启动负载生成器文件 /docs目录——Jmeter帮助文档 /extras目录——提供了对Ant的支持文件,可也用于持续集成 /lib目录——存放Jmeter依赖的jar包,同时安装插件也放于此目录 /licenses目录——软件许可文件,不用管 /printable_docs目录——Jmeter用户手册 6.Jmeter简单入门 6.1.修改语言 6.2.创建测试计划 6.3.添加线程组 6.4.添加sampler设置http请求 6.5.添加结果树 6.6.查看结果 7.测试计划 独立运行每个线程组: 再每一组运行结束后启动下一个 Run tearDown Thread Groups after shutdown of main threads:   主线程关闭运行后拆除线程组, 8.线程组 Delay Thread creation until needed                延迟创建线程,直到该线程开始采样,即之后的任何线程组延迟和加速时间为线程本身。这样可以支持更多的线程,但不会有太多是同时处于活动状态。  持续时间(秒):测试计划持续多长时间,会覆盖结束时间。  启动延迟(秒):测试计划延迟多长时间启动,会覆盖启动时间。 9.Sampler --HTTP请求 请求方式 请求路径 请求ip 请求协议 请求编码 重定向之前的和之后的请求都会在结果树中显示出来 自动重定向,只会显示重定向之后的地址。 10.结果收集 10.1.查看结果树 10.2.表格查看结果 偏离表示服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布。 10.3.聚合报告 10.4.Summary Report 11.Jmeter参数化 11.1.用户定义的变量 使用配置原件中用户定义的变量可以进行参数化 11.2.用户参数 使用前置管理器设置用户参数 11.3.使用csv配置原件 配置元件(Config E

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值