性能 测试

性能测试学习

记录一下

1 性能测试流程

1.分析性能需求
2、制定性能测试计划,明确测试时间、测试环境、测试工具
3、编写测试用例
4、搭建测试环境,准备好测试数据
5.编写性能测试脚本
6.性能测试脚本调优(脚本增强)。
设置检查点、参数化、关联、集合点、事务,调整思考时间,删除冗余脚本
7.设计测试场景,运行测试脚本,监控服务器
8.分析测试结果,收集相关的日志,提单给开发
9.回归性能测试
10.编写测试报告

2 性能测试指标

1、响应时间:
在2秒之内给客户响应,被用户认为是“非常有吸引力”的用户体验。​​
在5秒之内给客户响应,被用户认为是“比较不错”的用户体验。​
在10秒之内给客户响应,被用户认为是“糟糕”的用户体验。​
如果超过10秒还没有得到响应,那么大多数用户会认为这次请求是失败的.
2、吞吐量:一般来说,吞吐率越大,单位时间内处理的数据就越多,系统的负载能力也强。
3、cpu:cpu不超过80%
4、磁盘io:不超过40%
5、应用磁盘限制 :不超过70%
6、网络:小于30%

3 性能测试需求和分析如何分析性能测试结果

性能测试需求从哪里来?
1:客户提供需求
2:运维提供需求(负责服务器的稳定性)
3:开发提供需求

怎么分析性能测试结果?
首先查看事物通过率(错误率),然后分析其他性能指标,比如,确认响应时间,事务通过率,CPU等指标是否满足需求;如果测试结果不可信,要分析异常的原因,修改后重新测试(复测)。
在确定性能测试结果可信后,如果发现以下问题,按下面的思路来定位问题

  • 问题一:响应时间不达标

查看事务所消耗的时间主要在网络传输还是服务器,如果是网络,就结合Throughput(网络吞吐量)图,计算带宽是否存在瓶颈,如果存在瓶颈,就要考虑增加带宽,或对数据的传输进行压缩处理;如果不存在瓶颈,那么,可能是网路不稳定导致。如果主要时间是消耗在服务器上,就要分别查看web服务器和数据库服务器的CPU,内存的使用率是否过高,因为过高的CPU,内存必定会造成响应时间过长,如果是web服务器的问题,就把web服务器对应上对应的用户操作日志取下来,发给开发定位;如果是数据库的问题,就把数据库服务器对应上对应的日志取下来,发给开发定位。

  • 问题二:服务器CPU指标异常

分析思路:就把web服务器对应上对应的用户操作日志取下来,发给开发定位。

  • 问题三:数据库CPU指标异常

分析思路:把数据库服务器对应上对应的日志取下来,发给开发定位。

  • 问题四:内存泄漏

分析思路:把内存的heap数据取出来,分析是哪个对象消耗内存最多,然后发给开发定位。

4 性能测试如何找到最佳平衡点

如何找到并发数、平均响应时间、tps的最佳平衡点?
先回顾下基础,性能测试常用的指标有三个:并发、响应时间、tps

  1. 并发:(这里的并发是广义的并发,即同一个时间段内对系统发起的请求数量)
  2. 响应时间:也就是平均每个事务的处理时间
  3. tps:每秒处理的事务数
    **需求指标:**分为单指标和多指标
      单指标:一般是单测试tps,或者根据并发测试响应时间,或者根据响应时间测试并发,只考虑单指标的很少
      多指标:要时考虑多个指标,比如tps + 响应时间(<1s)

这个意思就是要找到这三个指标同时最佳值的点,即:不能只追求并发数大,而忽略tps,所以,这是一个多指标性能需求,假设是这样的:要求响应时间1秒以内,并发数要尽可能的多,tps要尽可能的大。

5 jmeter插件安装

1 安装Plugins Manager插件
1.1 下载Plugins Manager插件
插件下载官方地址:https://jmeter-plugins.org/downloads/all/

将下载的plugins-manager.jar包复制到Jmeter安装目录,lib/ext下面

重启JMeter
2 Plugins Manager插件使用
2.1 Plugins Manager插件使用
启动Jmeter后选项菜单中有Plugins Manager选项

点击Plugins Manager,出现下图界面,分别显示已安装插件,可用插件(未安装),可更新插件,点击Available Plugins选项,并点击PerfMon

2.2 Plugins Manager主要插件介绍
主要插件介绍:

  1. PerfMon:监控服务器硬件,如CPU,内存,硬盘读写速度等
  2. 3 Basic Graphs:主要显示平均响应时间,活动线程数,成功/失败交易数等
  3. 5 Additional Graphs:主要显示吞吐量,连接时间,每秒的点击数等

3 安装插件
在Available Plugins页面上选中PerfMon,3 Basic Graphs,5 Additional Graphs
点击右下角的Apply Changes and Restart JMeter,JMeter自动下载,安装插件,安装完毕后会自动重启

Jmeter重启后,添加-监听器列表中有以jp@gc开头的选项时,插件安装成功

4 服务器监控
在JMeter要监控的服务器中,装插件ServerAgent-2.2.1,且解压,启动该插件 sh
startAgent.sh
4.1 下载ServerAgent
下载官方地址:https://jmeter-plugins.org/wiki/PerfMonAgent/
将下载的ServerAgent-2.2.1.zip包复制到要监控的服务器上,解压,并启动startAgent.bat(Linux系统下启动startAgent.sh)

4.2 添加监听器
在线程组中添加监听器jp@gc – PerfMon Metrics Collector并配置ip,port,监控内容等

6 服务器监控工具安装

1、下载官方地址:https://jmeter-plugins.org/wiki/PerfMonAgent/
2、将下载的ServerAgent-2.2.1.zip包复制到要监控的服务器上,解压,并启动startAgent.bat(Linux系统下启动startAgent.sh)
3、 添加监听器
4、在线程组中添加监听器jp@gc – PerfMon Metrics Collector并配置ip,port,监控内容等

jp@gc – Bytes Throughput Over Time:
不同时间吞吐量展示(图表)
聚合报告里,Throughput是按请求个数来展示的,比如说1.9/sec,就是每s发送1.9个请求;而这里的展示是按字节Bytes来展示的图表

jp@gc – Composite Graph: 混合图表
在它的Graphs里面可以设置多少个图表一起展示,它可以同时展示多个图表

jp@gc – Hits per Second:每秒点击量

jp@gc – PerfMon Metrics Collector:服务器性能监测控件,包括CPU,Memory,Network,I/O等等

jp@gc – Reponse Latencies Over Time:记录客户端发送请求完成后,服务器端返回请求之前这段时间

jp@gc – Reponse Times Distribution: 显示测试的响应时间分布,X轴显示由时间间隔分组的响应时间,Y轴包含每个区间的样本数

jp@gc – Transactions per Second: 每秒事务数,服务器每秒处理的事务数

7 fiddler工具下载安装

一、fiddler工具下载网址:http://www.telerik.com/download/fiddler
二、下载成功后,运行FiddlerSetup.exe安装程序
三、安装过程中更改存储地址
四、全部选择我同意
五、运行fiddler

8 fiddler软件配置

1、打开Fiddler Tool->Fiddler Options->HTTPS
2、选中”Decrpt HTTPS traffic”, Fiddler就可以截获HTTPS请求,第一次会弹出证书安装提示,若没有弹出提示,勾选Actions-> Trust Root Certificate
3、要监听的程序访问的 HTTPS 站点使用的是不可信的证书,则请接着把下面的 “Ignore servercertificate errors” 勾选上。
4、点击Yes,留意一下红框里面的内容,DO_NOT_TRUST_FiddlerRoot ,这个就是证书的名称
5、点击确定,这样Fiddler证书就已经添加成功了
6、查看一下证书,Actions—>open windows certificate Manager

9 fiddler抓浏览器接口

例如谷歌浏览器
1、打开谷歌浏览器
2、打开设置
3、搜索打开您的代理器设置
4、手动设置代理
5、输入IP地址(本机的IP地址)和端口号(配置的时候自己改的为主)
6、操作浏览器
7、查看fiddler抓的接口

10 fiddler抓app接口

1、fiddler监听端口默认是 8888,可以把它设置成任何你想要的端口。勾选上 “Allow remote computersto connect” ,允许远程设备连接
2、首先查看电脑的 IP 地址,确保手机和电脑在同一个局域网内
3、Android 手机上的配置
将 Fiddler 代理服务器的证书导到手机上才能抓这些 APP 的包。
导入的过程:打开浏览器,在地址栏中输入代理服务器的 IP 和端口
手机复制172.10.0.74:8888(即电脑的IP加fiddler的端口),会看到一个Fiddler 提供的页面,然后确定安装
4、打开 WiFi 设置页面,选择要连接的 wifi ,并且长按,在弹出的对话框中,选择“修改网络”。
在接下来弹出的对话框中,勾选“显示高级选项”。
在接下来显示的页面中,点击“代理”,选择“手动”。
代理服务器主机名设为 PC 的 IP ,代理服务器端口设为 Fiddler 上配置的端口 8888,点”保存”。

11 fiddler左侧页标功能

抓包工具面板功能
#HTTP Request的顺序,从1开始,按照页面加载请求的顺序递增。

  • Protocol:请求使用的协议(如HTTP/HTTPS)
  • HOST:请求地址的域名/ip
  • URL:请求的服务器路径和文件名,也包含GET参数
  • BODY:请求的大小,以byte为单位
  • Content-Type:请求响应的类型
  • Caching:请求的缓存过期时间或缓存控制header的值
  • Process:发出此请求的Windows进程及进程ID
  • Comments :用户通过脚本或者菜单给此session增加的备注
  • custom:用户可以通过脚本设置的自定义值

12 fiddler右侧页标功能

  • Statistics统计页签:

通过该页签, 用户可以通过选择多个会话来得来这几个会话的总【的信息统计】,比如多个请求和传输的字节数。选择第一个请求和最后一个请求, 可获得整个页面加载所消耗的总体时间。从条形图表中还可以分别出哪些请求耗时最多, 从而对页面的访问进行访问速度优化。

  • nspectors检查页签:

它提供headers、textview、hexview,Raw等多种方式查看【单条http请求的请求报文的信息】
它分为上下两部分:上部分为HTTP Request(请求)展示,下部分为HTTP Response(响应)展示。

  • AutoResponse:自动响应页签
  • composer:构建页签

支持手动构建和发送HTTP, HTTPS和FTP请求, 我们还可以从web session列表中拖曳session, 把它放到composer选项卡中, 当我们点击Execute按钮, 把请求发送到服务器端。
这样设置发送的请求,就不是浏览器发出的了,而是fiddler发出的,查看inspectors里面的信息便可看出
log日志页签: 打印日志

13 fiddler过滤功能的使用

  1. 选择Filters页签,勾选use Filters勾选 Request Headers 中的 Hide if url contains
    过滤项
  2. 在里面输入:REGEX:(?insx)/[^?/].(css|ico|jpg|png|gif|bmp|wav)(?.)?$
  3. 勾选 Request Headers中的show only if URL contains,在里面输入

REGEX: 表示启用正则表达式(?insx) 设置正则解释的规则,忽略大小写等。
此表达式表示过滤掉 url 中包括 css、ico、jpg 等后缀的请求

REGEX:(?insx)..?http://baidu.com/home. 只显示: http://baidu.com/Home

Fiddler过滤指定域名:
第二个选项是只监控以下网址,如只监控百度,在下面的输入框里填上http://www.baidu.com

  • “No Host Filter”不设置hosts过滤
  • “Hide The Following Hosts”隐藏过滤到的域名
  • “Show Only The Following Hosts”只显示过滤到的域名
  • “Flag The Following Hosts”标记过滤到的域名

14 Fiddler命令行工具

Fiddler的左下角有一个命令行工具叫做QuickExec,允许你直接输入命令。

  • help : 打开官方的使用页面介绍, 所有的命令都会列出来
  • cls : 清屏 (Ctrl+x 也可以清屏)
  • select : 选择会话的命令, 选择所有相应类型select image、select css、select html
  • ?sometext : 查找字符串并高亮显示查找到的会话列表的条目,?http://qq.com
  • size : 选择请求响应大小小于size字节的会话
  • =status/=method/@host:查找状态、方法、主机相对应的session会话,=504,=get,@http://www.qq.com
  • quit:退出fiddler
  • Bpafter,Bps, bpv, bpm, bpu这几个命令主要用于批量设置断点
  • Bpafter xxx: 中断 URL 包含指定字符的全部 session 响应
  • Bps xxx:中断 HTTP 响应状态为指定字符的全部session 响应。
  • Bpv xxx:中断指定请求方式的全部 session 响应
  • Bpm xxx:中断指定请求方式的全部 session 响应,等同于bpv xxx
  • Bpu xxx:与bpafter类似。
    原文作者:ability
    原文地址: https://blog.csdn.net/weixin_43995844/article/details/124374653
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞