性能分析&性能工作流程

本篇内容

  • 持续集成

解决方案

jenkins + ant + jmeter:

  • jenkins:持续集成的领导者
  • ant:代码的编译、测试、部署 (maven之前用的是ant)
  • jmeter:性能工具、脚本

主机启动:

  • 运行 -> 远程启动 远程启动所有
  • 远程启动错误查看

持续集成

ant安装配置

  • 下载、解压
  • 配置环境变量:ANT_HOME PATH=%ANT_HOME%\bin
  • 修改jmeter.properties jmeter.save.saveservice.output_format=xml
  • 拷贝:jmeter的extras中的ant-jmeter.**.jar放到ant的lib文件夹中(用于邮件)。
    验证:在jmeter的extras文件夹中cmd,输入ant.bat -file build.xml -Dtest=Test
  • 修改build.xml:进入jmeter的extras文件夹,找到build.xml文件(难点,也是最重要的一个地方)

把ant的压缩包解压后,如下图所示:
在这里插入图片描述
默认为csv,修改成xml
在这里插入图片描述

jenkins安装配置

  • 到https://www.jenkins.io下载msi、解压。下载一个tomcat,解压以后,把jenkins.war包放到tomcat webapps的文件夹下面,接下来到tomcat bin文件夹下面找到startup.bat启动tomcat,就可以启动本机的tomcat。
  • 安装完成后,浏览器中打开localhost:8080/jenkins。如果是解压在ROOT文件夹下面,就不需要路径带上jenkins。
  • 修改密码、安装推荐插件
  • 登陆jenkins->进入系统管理->pluginManager管理插件安装AntPlugin和PerformancePlugin是否已经安装
  • 系统管理->GlobalTool Configuration 配置Ant路径
  • 新建一个任务,选择freestyle project
  • 在任务的“构建”中,选择invoke ant,targets要填写build.xml中的antcall的值,保存应用。

在这里插入图片描述
在这里插入图片描述
如下为第一次安装完成后,打开jenkins的页面。
在这里插入图片描述
在路径下,找到密码,直接把密码复制粘贴到这边来。
在这里插入图片描述
在这里插入图片描述
选定Ant插件安装
在这里插入图片描述
插件安装完成之后,会进入到创建第一个管理员用户的界面。
在这里插入图片描述
这个Jenkins URL地址不要去修改
在这里插入图片描述
Jenkins安装配置完成。
在这里插入图片描述
点击开始使用Jenkins,会打开如下画面。
如果安装了中文插件,Jenkins是可以中文汉化的。
在这里插入图片描述
左侧菜单栏中点击Manage Jenkins,出现如下System Configuration:

在这里插入图片描述
点击上图中右上角的Manage Plugins,会进入到如下界面:
可以在可更新/可选插件/已安装里面搜索Ant Plugin

在这里插入图片描述
在这里插入图片描述
点击Global Tool Configuration
在这里插入图片描述
全局配置:
在这里插入图片描述
若未安装Ant插件,是看不到该配置入口的。
在这里插入图片描述
点击Ant安装…,默认就会有一个。然后保存&应用。那么jenkins中就已经配置好Ant了
在这里插入图片描述
点击新建Item,创建Jenkins job。
在这里插入图片描述
会打开一个新建Jenkins job的界面:
在这里插入图片描述
输入一个任务名称,选择Freestyle project,点击确定。
在这里插入图片描述
配置方式只需要在构建这里,点击增加构建步骤,选择Invoke Ant。
在这里插入图片描述
选择刚才在全局配置里面添加的Ant名称,如刚才配置的是ANT-1.9
在这里插入图片描述
只需要把build.xml文件的路径复制过来,点击保存并应用。
在这里插入图片描述
build.xml文件修改

  • project
  • target
  • property
  • mail配置
    在这里插入图片描述
    折叠起来后,只有一个project。
    在这里插入图片描述
    Jenkins中Ant Target如果没有填写的话,会默认用build.xml的default的值,目前defalut值为all,当target为all的时候,默认情况下会做三件事情,第一件test进行测试,第二件report生成报告,第三件mail邮件发送报告。
    target name为test
    在这里插入图片描述
    target name为report
    在这里插入图片描述
    target name为mail
    在这里插入图片描述
    需要修改jmeter.home
    在这里插入图片描述
    时间变量的格式:
    在这里插入图片描述
    testplans
    在这里插入图片描述
    如下为要用的jar包,无需更改。
    在这里插入图片描述
    生成报告
    在这里插入图片描述
    如下两个皆为样式文件,选择哪个样式文件可以在report的style处进行修改。
    在这里插入图片描述
    在这里插入图片描述
    mail的部分,smtp服务默认端口25,发送者的邮箱需要去开通smtp服务,例如qq邮箱默认smtp服务可能没有开启的。
    在这里插入图片描述
    填写授权码,不是密码。
    在这里插入图片描述
    把报告给删了,如果不想删除报告,那么就把这句注释掉。
    在这里插入图片描述
    注释如下:
    在这里插入图片描述
    点击Build Now运行任务
    在这里插入图片描述
    可以查看控制台输出,第一件事先做测试:
    在这里插入图片描述
    此处就是一个聚合报告
    在这里插入图片描述
    第二件事report
    在这里插入图片描述
    打开html文件查看性能测试报告
    在这里插入图片描述
    点击右上角的+号,把性能测试报告展开显示。
    在这里插入图片描述
    每一次请求的实际情况
    在这里插入图片描述
    第三件事情mail,就是把生成的报告发送出来。发送的邮箱用户名和密码是错误的,所以发送测试报告报错了,邮件没有发出来。
    在这里插入图片描述
    jmeter持续集成邮件发送失败,可能因为缺jar包,jar包丢到lib文件夹下面去。
    在这里插入图片描述

无界面运行

无图形界面可以更节约资源,可以让服务器的资源更可能多的用于性能测试。
不需要打开jmeter,只需要运行写好的脚本。图形界面用于脚本的编写和调试。真正做性能测试的人,一般不会用图形界面来做测试,一般用的是无图形界面的方式做测试。用无图形界面的方式,监听器都可以不用,disable掉。
在这里插入图片描述
命令如下所示:
在这里插入图片描述

在这里插入图片描述
总共请求了2831次
在这里插入图片描述
打开nongui001文件夹下面的index.html文件
在这里插入图片描述
测试报告如下所示:
在这里插入图片描述
Response Times Over Time
在这里插入图片描述
随着响应时间的变化,最大才397ms,响应时间还是非常快的。如下为随着时间变化,并发用户图。在这里插入图片描述
如下为Throughput下每秒点击次数Hits Per Second
在这里插入图片描述
Throughput下面还有Transactions Per Second的图,与Hits Per Second的图完全一致,说明现在还没有性能问题。
在这里插入图片描述
还有Response Time Percentiles的图,时间主要集中在400-500ms以内,响应时间还可以。
在这里插入图片描述
需要注意:
**注意点一:**每次运行该命令时,这边保存的文件名每次都需要不一样。不能重复,没有所谓的覆盖
在这里插入图片描述
没有修改文件名,会报如下错误:
在这里插入图片描述
**注意点二:**如下的文件夹,一定要是全空文件夹,或者不存在的文件夹。
在这里插入图片描述
若同一个命令执行两遍,会报如下错误。
在这里插入图片描述

性能测试分析

数据

场景设计、监视图表:

  • 设计场景:阶梯式、波浪式
  • 监视器:用于收集用于性能分析的数据
    TPS图标、聚合报告/汇总报告、查看结果树、响应时间、吞吐量
    服务器资源监控:cpu、内存、磁盘io
  • 分析思路: 硬件分析->软件分析
    服务器硬件瓶颈 -> 网络瓶颈 -> 服务器操作系统瓶颈(参数配置、数据库、web服务器)->应用瓶颈(sql语句、数据库设计、业务逻辑、算法)【由外而内、由表及里、层层深入】

分析

  • cpu问题:有上下文和使用率的分析。在使用的时候,会进行来回的切换,就会出现中断,中断有软中断和硬中断两大类型,就会涉及到上下文。
  • 内存问题分析:内存跟CPU进行数据交换,从磁盘读取数据,发送到CPU里面去,相当于过桥,有内存溢出或者内存泄漏等问题。
  • 数据库问题分析
  • 网络问题分析
  • nginx问题分析
  • 负载均衡问题分析

性能测试流程

  • 测试准备
  • 搭建环境
  • 测试脚本开发
  • 测试执行
  • 结果分析与调优
  • 测试报告与结果跟踪

1. 测试准备

  • 需求分析——熟悉业务,性能测试人员很多情况下,是不参与功能测试的。需要理解构架,需要接口调得通,熟悉数据业务流走向,需要熟悉整体业务。通过熟悉业务,来熟悉软件的功能和架构。
  • 明确性能测试目标,找出或验证性能指标。如果没有做过,就找出。如果做过,就对比前后两次的性能变化。需要得到哪些性能指标需要明确出来,有的企业关心TPS,有的企业关心并发用户,有的企业关心响应时间。具体看项目,不同的项目侧重点不同。
  • 了解 软件功能、架构。一个系统都是由多个服务构成的。
  • 制定 测试模型
  • 指定测试计划,做好工作量评估

2. 搭建环境

  • 工具选项与准备。协议不一样,所用的工具就会不一样。如果用的是websocket或者mq这些互联网协议,选型用loadrunner是搞不定的,只能采用jmeter,选择工具也是有关系的。
  • 被测系统环境搭建(服务器、服务版本更新、数据库数据准备)Docker之类的,mysql5或者mysql7/8数据库版本也是有差别的,性能上有明显区别。
  • 网络配置

3. 测试脚本开发

  • 协议,例如http协议
  • 制作脚本。真正性能测试人员不会去录制脚本。用户定义变量和用户参数之间的差异?
  • 调试脚本
  • 验证脚本

4. 测试执行

真正性能测试执行的时候,是用无图形界面来执行的。

5. 结果分析与调优

优化的过程,寻求一个平衡。最优性能,并不是得到某一处的最大性能。
可能这个地方调优了,又引出其他方面的问题。反反复复进行。

6. 测试结果与结果跟踪

html报告,自己截图写到word文档里面。
如果是底层问题,短期无法修复,那需要记录缺陷,长期跟踪。

课程回顾

在这里插入图片描述
jmeter里面完整的脚本会包含哪三个组成部分:

  • 线程组
  • 取样器
  • 监听器(可有可无)

面向目标场景需要重点学习和掌握:
在这里插入图片描述
在这里插入图片描述

答疑

怎么找出具体的并发用户数?
0-100的过程中,突然某一个时间点突然出现这个并发用户数在逐渐增加,原先的响应时间是平均的,但是响应时间突然一下子变得很高,变成2秒或者3秒以上,或者是说TPS值不升反而下降了,就已经到拐点区间了。还有一种情况就是报错了,发现有请求失败的情况,这种情况也是拐点区间到了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值