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 测试计划中添加线程租
2 在线程租中添加http请求 在http请求中需要填入

3 在线程中添加查看结果树

Jmeter的压力测试
1 测试计划中添加线程租
2 在线程租中添加http请求 在http请求中需要填入

3.在线程租中进行修改 并发数量 (修改线程数量 修改循环次数 )
4.在线程组中进行添加聚合报告/表格查看结果/图形结果

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

在线程租中添加取样器中的jdbcrequest

注意:query type类型不同则写sql语句不同
https://blog.csdn.net/vikeyyyy/article/details/80367135
Badboy录制(web端)
借用badboy
1.打开badboy的录制按钮
2.Badboy的浏览器中输入web项目的网址 http://项目名:端口号/路径
3.停止录制并在file选项中进行导出jmeter(exceport jmeter) 生成.jmx文件
4.在jmeter中将.jmx打开并添加到线程中
Jmeter录制(app端)
在线程租中添加http代理服务器,然后修改的是
*** http代理服务器是单击测试计划中非测试原件中找
1.端口号(和移动端设备的端口号保持一直)ip地址进行保持一直
2.将录制好的http请求保存的位置可以修改(1.直接放入测试计划中,2。可以在放入到线程组中)
3.在线程组中进行添加 查看结果树/聚合报告的时候 就可以对多个接口或者是业务场景进行录制
Jmeter的正则提取器
面试题:
在一个线程组中,B请求需要使用A请求返回的数据,也就是常说的关联,将上一个请求的响应结果作为下一个请求的参数,则需要对A请求的响应报文使用后置处理器,其中最方便最常用的就是正则表达式提取器了。
Jmeter的使用
1. 启动Jmeter
找到Jmeter安装路径下的bin文件夹,双击jemeter.bat文件,进入测试计划页面
2. 添加测试计划
输入名称(订单取消),点击【添加】按钮,点击其他内容区域,名称修改成功

3. 添加线程组
线程组是用来设置要模拟的用数量,请求发送的频率,以及请求发送的次数。
右键点击计划名称->【添加】->【Threads】->【线程组】,打开线程组配置界面


4.(1) 添加HTTP请求
右键点击线程组名称【线程组】->【添加】->【Sample】->【HTTP请求】,添加HTTP类型
(2) 参数化
如果测试一台设备正常上面的serialNo号为具体的值,但是我们要测试200台机器,所以需要进行参数化
首先,Body date下以这种格式填写"serialNo": "${serialNo}"
右键点击线程组名称【线程组】->【添加】->【配置元件】->【CSV Data Set Config】
前提:在电脑某一文件夹下以dat文件形式存储参数内容,如F:\123.DAT


5. HTTP信息头管理器
因为项目是以JSON数据格式传输,所以要填写一下格式传输的形式
右键点击线程组名称【线程组】->【添加】->【配置元件】->【信息头管理器】,填写如下图

6. 察看结果数、聚合报告
这两项是为了察看性能测试结果,
【线程组】->【添加】->【监听器】->【察看结果数】,同理聚合报告,默认空白无内容功能,下图测试完成的结果作为参考,察看结果参考(内存、cpu、磁盘使用率、error数等)

7. 保存并运行
点击工具栏下的保存按钮 ,取名,最后点击运行按钮 ,如果测试1个小时,1小时后点击暂停,察看测试结果
jmeter的录制
添加代理服务器
点击 “工作台”,然后右键,根据如下图步骤,添加一个代理服务器。

添加之后,界面如下图

注意上面端口号我用红圈给标注出来,下面的步骤我们就需要利用这个端口来录制,接下来会使用端口和目标控制器来管理录制脚本。
3.浏览器设置代理
打开火狐浏览器,找到高级-网络-设置-设置代理。

下面我们设置填写 localhost 和端口8082

上面除了可以写localhost,还可以输入你机器的IP地址,端口就是随便填写一个,只要不要和系统其它程序的端口冲突就可以,这里我设置成8082,点击确定,浏览器不要关闭。
4.添加逻辑控制器
在 工作台 下点击前面添加的代理服务器,右键,点击添加,添加一个逻辑控制器下的录制控制器。

添加完是这样的,我们可以给这个录制控制器重命名下,例如我们录制百度,那么我们就写百度新闻(BaiDu_News),待会录制首页点击新闻链接。

点击HTTP代理服务器,切换到代理服务器配置界面,修改以下两处红圈位置。

第一个是端口号,和我们在火狐浏览器里面设置的端口保持一致,第二个是选择我们百度新闻这个录制控制器,也就是说,接下来我们录制的脚本都是在百度首页点击新闻。注意到这个页面还有一个启动和停止录制的按钮,接下来介绍。
5.启动录制脚本
点击代理服务器右侧里面的启动录制按钮,弹出一个根证书的弹窗,点击确定。

我们开始手动在火狐浏览器地址栏手动输入www.baidu.com,等页面加载完成,我们点击“新闻”这个链接,页面加载完成,我们选择停止录制,然后点击展开BaiDu_News这个录制控制器,可以看到以下这些请求。

上面点击根路径(/)这个请求,右侧HTTP请求页面可以显示请求的服务器是百度新闻。关于左侧这些请求编号,一般是从启动JMeter第一次录制开始计数,从1开始,上面我只记录了6个不同请求。
注意:可能在录制点击新闻过程中,出现“代理服务器拒绝连接”的错误。一般来说,因为你设置了代理,只有JMeter没有启动录制,你直接在火狐浏览器操作点击新闻,应该会报这个错误。但是录制过程中也有可能,这个就是JMeter代理录制脚本不稳定性的一面。
6.录制百度贴吧
重复以上4和5步骤,录制一个贴吧的脚本。

注意:
只要你确定不再使用JMeter进行脚本录制,那么你要记得把火狐浏览器的网络代理给设置回来,点系统默认代理。

7.测试运行录制的脚本
我们点击测试计划,然后添加线程组

然后把HTTP代理服务器下的两个录制控制器,拖拽到BaiDu这个线程组下,并且给线程组添加一个结果树监听报告。

点击 运行(会提醒你保存当前测试计划),观察结果树报告。

测试结果来看,我们录制的百度首页点击新闻和贴吧这两个动作的脚本是可以用来进行压力测试。
总结:
关于如何使用JMeter里面的配置代理实现网页脚本录制就介绍到这里。对初级的性能测试工程师来说,只要会录制脚本就可以,管它脚本质量如何。很多人说,JMeter自身带的录制方式很不稳定,有时候甚至都不用。所以接下来,我们还需要学习一点JMeter上录制的插件和第三方录制脚本并导入到JMeter的插件工具。
网友评论