阅读 100

Jmeter

jmeter的工具:性能测试

负载和压力的区别:

负载测试:在一定的工作负荷下,给系统造成du的负zhi荷及系统响应的时间。

压力测试:在一定的负荷条件下,长时间连续运行系统给系统性能造成的影响

TPS和QPS的区别:

 tps可以理解为是每秒对事务的处理的能力  qps是每秒对服务器的查询能力

性能测试  web端和app端测试

web端的性能指标:

https://www.cnblogs.com/flyr/p/5509451.html

响应时间(客户端向服务端的请求时间,服务端对数据库的请求时间,服务端将结果展现到页面的时间)

响应时间 2 5 8原则  

吞吐量:指的是在一次性能测试过程中网络上传输的数据量的总和.吞吐量/传输时间,就是吞吐率.

TPS:每秒处理事务能力

并发数:  单用户的多次操作

多用户的单次操作

  点击率:每秒钟用户向WEB服务器提交的HTTP请求数.

  资源使用率:cpu  <80%  内存  <80%  io <40   网络<30%

app端的性能指标



App端的性能指标:

Cpu  内存  流量  电量启动时间  帧率

cpu<80%          内存<80%

电量的损耗:      

流量的损耗:


线程和进程区别:

接口测试:postman jmeter


Jmeter的接口测试:

1.首先,打开jmeter



2.测试计划中添加线程租

  2.1所有的测试工作都是从新建一个线程组开始的


  2.2设置线程组参数。这里配置为:10个线程,同时启动,循环一次。

        其中线程数代表访问的并发数,默认是1。

        Ramp-UpPeriod表示多长时间内容启动所有线程,如果时间很短,会造成网站的瞬间高并发,默认值是1秒。

        循环次数是表示执行多少次,默认值为1,表示执行一次结束,这里可以勾选永远,让其一直运行下去。


4.添加要压测的http请求。

图第一个红框内的协议、IP、端口不需要设置,会使用步骤c中设置的默认值,只需设置请求路径Path即可


5.在线程中添加查看结果树,在线程组中进行添加聚合报告/表格查看结果/图形结果







Jmetere的断言:

断言用来判断接口的返回值是否匹配

在线程租中进行添加断言--响应断言并将json放入到响应结果中在察看结果树中来


Jmeter的参数化关联

    都是用${变量名}

A:用户变量     一个变量对应一个变量值


B:用户参数     一个变量对应多个变量值


C:可以使用csv文件方式


  1.用txt文件或者是excel,csv文件

  2.书写参数化值  一个http请求的所有参数以行为单位  多个值用,隔开   

                  多个http请求对应是多行    


3. 在线程组中添加csvDataconfig 匹配对应的文件和参数名


D:可以使用函数助手的方式来随机生成${}参数变量

https://blog.csdn.net/qq_34659777/article/details/86005723

Jmeter的对数据库链接(对数据库进行压力测试)

测试数据的来源:A.复用开发的原有数据 b.复用线上的真实数据c.直接使用线上数据 d.测试人员手动添加E:产品或者是运营提供数据

在线程中添加配置原件jdbconection config


在线程租中添加取样器中的jdbc request


注意:query type类型不同则写sql语句不同

https://blog.csdn.net/vikeyyyy/article/details/80367135

Jmeter的对数据库链接(对数据库进行压力测试):

测试数据的来源:

a.复用开发的原有数据 b.复用线上的真实数据c.直接使用线上数据 

d.测试人员手动添加 e.产品或者是运营提供数据

JDBC驱动包链接:

链接:https://pan.baidu.com/s/1P_jAt2C0lMnITjcRd5OeFg

提取码:ab12

Jmeter需要使用JDBC功能时,把解压好的jar包放在(jmeter的lib路径)即可。

1.打开jmeter,先创建线程组。

2.测试计划->添加->配置元件->JDBC Connection Configuration

3.然后第一个红框随便写,第二个红框配置JDBC数据库连接

Database URL:  jdbc:mysql://替换ip地址:3306/数据库名

配置完成就可以执行数据库了。

4.线程组下面添加JDBC sample,在红框里输入第三步里的输入的值

5.查看结果树,显示这样就已经连接数据库,可以操作数据库数据了

****注意:query type类型不同则写sql语句不同****

Jemter的二种录制方法:

一,Badboy(PC端)

Badboy下载地址:链接:https://pan.baidu.com/s/1UNDfT8btdyHt3EE6gKCjzg

提取码:ab12

Badboy是一款不错web自动化测试工具,利用它来录制脚本,并且录制的脚本可以直接保存为JMeter文件来使用。

Badboy  version 2.0.5

通过Badboy来录制脚本

1.打开badboy ,点击红色按钮,在地址栏输入被测项目地址。

录制完后,点击旁边的黑色按钮结束录制。

2.选择文件,Export to Jmeter 保存.jmx类型文件

3.打开Jmter,打开“文件”->‘打开’选择刚保存的.jmx类型文件。

Badboy下载完成打开页面如下:


二,使用Jmeter自身的代理录制脚本(移动端)

录制脚本—Web端

打开Badboy


运行网址获取数据

在Jmeter中打开刚刚保存的文件

补充数据

运行查看结果

Jemter提取器:

一、正则表达式提取器

步骤:右键“HTTP请求”->添加->后置处理器->正则表达式提取

正则表达式

创建正则表达式

填入数据

引用名称:在HTTP请求中引用此数据,需要用到的名称

正则表达式:用于将需要的数据提取出来

():括起来的部分就是要提取的

. :匹配任何字符

+ :一次或者多次

* :所有字符串

? :在找到第一个匹配项后停止

模板:表示使用提取到的第几个值

$ 1 $:表示取第一个

$ 2 $:表示取第二个

以此类推: $ n $:表示取第 n 个

匹配数字(0表示随机): 0表示随机,1代表全部取值

缺省值:如果正则表达式没有找到值,则使用此缺省值

运行结果

正则正则表达式的格式:字符串形式"token":"(.+?)" 数字形式 “taken”:[(0-9)+]

( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 ( 和 )。

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

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

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

二、JSON提取器

步骤:右键“HTTP请求”->添加->后置处理器->JSON提取器


Variable names:保存的变量名,后面使用${Variable names}引用

JSON Path  expressions:调试通过的json path表达式

Match Numbers:匹配数字(0代表随机,1代表第一个,-1代表所有)

Default Values:找不到时默认值,一般设置为NOT FOUND

Compute concatenation var(suffix_ALL):是否统计所有,即将匹配到的所有值保存,名为“变量名_ALL”

*****用 变量名_N 取第N个值

下面是JSON提取器各参数值的含义:

1.引用名称:在HTTP等请求中,引用此数据,需要用到的名称

2.提取格式:$data[0].name

3.匹配数值:0代表随机取值,1代表第一值,n代表第n个值

4.缺省值:如果正则表达式没有搜到值,则使用此缺省值

json提取格式json讲解:

1.json串 []表示对象组成的数组,{}表示对象。

2.对象里包含多个 “属性”:属性值。属性值可以是值,或数组,或对象。

3.JSON Extractor使用json path表达式匹配,可以一次取多个变量值。$表示响应的根对象。取子对象或对象的属性用. 取数组里的对象用[],数组索引从0开始。

Jemter定时器:

 一,固定定时器


如果你需要让每个线程在请求之前按相同的指定时间停顿,那么可以使用这个定时器;需要注意的是,固定定时器的延时不会计入单个sampler的响应时间,但会计入事务控制器的时间。

对于“java请求”这个sampler来说,定时器相当于loadrunner中的pacing(两次迭代之间的间隔时间);

对于“事务控制器”来说,定时器相当于loadrunner中的think time(思考时间:实际操作中,模拟真实用户在操作过程中的等待时间)。

如果你需要让每个线程在请求之前按相同的指定时间停顿,那么可以使用这个定时器;需要注意的是,固定定时器的延时不会计入单个sampler的响应时间,但会计入事务控制器的时间。

二,高斯随机定时器

如需要每个线程在请求前按随机时间停顿,那么使用这个定时器,下图表示暂停时间会分布在100到400之间,计算公式参考:Math.abs((this.random.nextGaussian() * 300) + 100)


Jmeter的正则提取器面试题:

在一个线程组中,B请求需要使用A请求返回的数据,也就是常说的关联,将上一个请求的响应结果作为下一个请求的参数,则需要对A请求的响应报文使用后置处理器,其中最方便最常用的就是正则表达式提取器了。

作者:gaoaoaoao

原文链接:https://www.jianshu.com/p/10e77e4ca4f8

文章分类
后端
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐