8性能测试

性能测试  jmeter  (大量用户)
效率分为   时间 (处理请求)  资源(占用cpu  内存  磁盘)

性能测试概念:使用自动化工具,模拟不同的场景,对软件各项性能指标进行测试和评估的过程


性能测试的目的是什么?
1评估当前系统能力
- 例如: 验收第三方提供的软件
2.寻找性能瓶颈,优化性能
评估软件是否能够满足未来的需要


基准测试 单用户              平均(基准线)
负载测试  (如电梯最大承载量) 增加负载  看最大负载
稳定性测试   平常用户量  长时间测试(一天到一周)  看出问题不
关系       绿色 资源                 紫色   处理能力      最后面处理能力不行了                 蓝色  响应时间       最后面响应时间升高不行了
压力测试(分为极限负载系统崩溃 破坏性压力测试    和    长时间高负载  稳定性压力测试)   用户量超过预期   系统会咋样     有啥隐患   系统恢复能力 
并发测试  极端时间 发送多个请求如双十一  抢红包秒杀

性能测试指标
响应时间
并发数   同一时间  很多个人(具体)在请求!
吞吐量QPS  每秒最多处理多少个请求       
点击数(请求数)
错误率   在负载情况下    (和正确率相对)
资源利用率  (可用/总的) 

根据经验,资源指标通常要求:(1) CPU不高于75%-85%(2)内存不高于80%(3)磁盘IO不高于96号(4)网络不高于80%

性能测试流程
需求  计划   用例   执行   分析   总结

-------------------------------------------------------------------------------------------
主流性能测试工具  loadrunner   jmeter
jmter安装    安装jdk    安装jmter  

jdk文件目录  bin目录     bat启动文件       properties配置文件   
                      docs目录   jmter  api文档
                       lib     依赖的jar包(第三方包)

设置汉化、

各个元件的意思 取样器   逻辑控制器  前置  后置   配置元件  监听器
元件的作用域   作用域原则!!!!!!

   取样器无作用域   逻辑控制器对儿子取样器和逻辑控制器起作用
   其他    父亲是取样器    只对父亲生效                  否则  对这个父亲的其他子子孙孙都生效


元件的执行顺序!!!!

配置   前  取样  后    断言     监听   有多个 就从上到下

---------------------------------------------------------

jmeter参数化(重点)
本质:使用参数的方式来替代脚本中的固定的测试数据


jmeter组成部分
--------------------------------------------
  jmeter 参数化  
            定义变量  路径/S  文件定义   数据库   函数 
         csv  counter
某支付系统,需要用1000个不同的用户登录,并使用添加不同的测试金额数据访问支付接口?
登录用csv的数据     支付用counter函数传不同金额

---------------------------------------------------------
jmeter断言   返回和预期结果是否一样
(响应断言  json断言   时间断言)
---------------------------------------------------------
jmeter关联
方法有  正则表达式提取器(提取任意格式的响应数据)   xpath提取器(html)    json提取器

jmeter属性(跨线程组之间数据传递)   类似于全局变量  setproperty  property
线程组1: 请求获取天气的接口,!
http://www.weather.com.cn/data/sk/101010100.html
获取返回结果中的城市名称“北京”
线程组2: 请求: https://www.baidu.com/s?wd=北京 ,把获取到的城市名称作为请求参数  debug sampler 独立运行先程序
----------------------------------------------------
jmeter录制脚本(用的很少)
什么时候需要使用JMeter录制脚本?
在没有接口文档的旧项目当中,通过录制http接口请求的方式,来快速编写接口测试脚本。
--------------------------------------------------------
jmeter直连数据库   数据库断言(重要)
直连数据库的使用场景
用作请求的参数化
清理垃圾数据
用作结果的断言

例如:登录时需要的用户名,可以从
数据库中查询获取
例如:添加购物车下订单,检查接口返回的订单号,是否与数据库中生成的订单号一致
准备测试数据

配置:添加mysql的jar包   jdbc connection configuration      jdbc request

----------------------------------------------------------------------------------------------------------------
jmeter逻辑控制器

if (只有if  没有else)  循环  forEach、
使用用户定义的变量定义一个变量name
name的值可以是baidu'或itcast2、根据name的变量值实现对应网站的访问


思考: 线程组属性可以控制循环次数,那么循环控制器有什么用?
控制的作用域不同: 线程组控制是线程组下的所有请求,循环控制器控制逻辑控制器下的所有请求
如果线程组循环次数为M,循环控制器循环次数为N:循环控制器下的HTTP请求运行: M*N次
。线程组下的其他HTTP请求运行: M次

forEach与正则表达式一起使用
访问传智播客首页http://www.itcast.cn,
获取首页中的地址信息,并全部保存下来
2、要依次取出地址关键字,并在百度搜索,
例如: https://www.baidu.com/s?wd=地t
----------------------------------------------------------------------------------------------------------------
jmeter定时器

同步定时器(并发)
如何模拟1w人同时进行电商网站中的抢购活动/秒杀活动?
synchronizing  timer  模拟100个人  线程数100    并发分别设置20/30  看聚合报告

常数吞吐量定时器(稳定性)
作用: 让JMeter按指定的吞吐量执行,以每分钟为单位
constant throughput   timer
模拟用户真实的业务场景要求: 20 QPS
如果线程数设置为1,则目标吞吐量设置为 20 * 60 = 1200如果线程数设置为2,则目标吞吐量设置为 20 * 60/2   600


固定定时器
(1)IHRM系统登录错误3次后,锁定1分钟,等待1分钟后重新输入正确的用户名密码登录成功
-----------------------------------------------------------------------------------------------------------------------
jmeter 分布式
在使用JMeter进行性能测试时
如果项目需要支持一万用户并发
但是单台电脑只能支持一千个用户并发该怎么处理?
JMeter分布式测试
  JMeter分布式测试时,选择其中一台作为控制机(Controller),其它机器做为代理机(Agent)。
  执行时,控制机会把脚本发送到每台代理机上
  代理机拿到脚本后就开始执行,代理机执行时不需要启动JMeter界面,可以理解它是通过命令行模式执行的。
  执行完成后,代理机会把结果回传给控制机,控制机会收集所有代理机的信息并汇总。
-----------------------------------------------------------------------------------------------------------------------
jmeter聚合报告
作用:收集性能测试结束后,系统的各项性能指标。如:响应时间、并发数、吞吐量、错误率等

还可以生成html报告
-----------------------------------------------------------------------------------------------------------------------
jmeter并发数计算方法
稳定性测试时需要模拟用户真实负载量,真实负载量是多少?
压力测试时需要模拟高负载验证系统的容错能力,高负载有多高?


并发  二八原则   运营数据(稳定性)   峰值(早晚  压力测试)
-----------------------------------------------------------------------------------------------------------------------
jmeter性能监控

第三方插件下载  
可以阶梯加压
perfmon服务器资源监控
------------------------------------------------------------------------------------------------------


实战
设置请求默认值 协议 域名 端口 编码格式
http信息头   content-type
响应断言200
json断言成功


加入购物车提取token    json提取器
1脚本的编写
2构造环境  构造测试用户数据   准备sql语句(用pycharm):主要导入用户数据  导入商品数据
3  登录脚本 - 监控性能指标

---------------
性能调优分析:硬件         中cpu使用:用户使用的us(应用程序)     系统使用sy(操作系统)   空闲id
CPU高时,需要确认是用户CPU高还是系统CPU高。如果是用户CPU高,需要进一步分析对应的应用程序的执行效率是否有问题如果是系统CPU高,需要进一步观察其他的资源 (内存、)是否存在问题
mem(memory内存)  vmstat  虚拟vm status(  swap交换  si  import    so  output   交换写入  交换写出)

磁盘IO   iostat -x 1 1  磁盘的读写速度input  ouput     


网络带宽和宽带   1000M(bit)的宽带      /8   等于125M的带宽(Byte)   技术中用带宽来描述速率

  


 

  • 19
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值