发表于: 2017-10-28 20:55:48
1 735
一.今日完成
主讲小课堂,整理压力测试相关知识点.
一、背景介绍
性能测试是通过自动化的测试工具模拟多种正常峰值和异常负载条件来对系统的各项性能指标进行测试。性能测试包括负载测试,强度测试和容量测试等.
通过负载测试,确定在各种工作负载下系统的性能,目标是当负载逐渐增加时,测试系统各项性能指标的变化的情况.压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试.
在Web性能测试领域,有两种工具广泛使用:LoadRunner和JMeter.
二、知识剖析
1.性能测试的目的
性能测试的目的是验证软件系统能否达到用户提出的性能指标,同时发现软件系统中存在的性能瓶颈,以优化软件,最后起到优化系统的目的.包括以下结构方面:
(1) 评估系统的能力;
(2) 识别系统中的弱点;
(3) 系统调优
(4) 测试软件中的问题
(5) 验证稳定性(Resilience)和可靠性(Reliability)
2.性能测试的常见指标
对于B/S架构,一般关注Web服务器性能指标:
1) avg rps:平均每秒钟的响应次数=总次数/秒数
2) avg time to last byte per terstion(mstes):平均每秒业务脚本的迭代次数
3) successful rounds:成功的请求
4) failed rounds失败的请求
5) successful hits:成功的点击次数
6) failed hits:失败的点击次数
7) hits per second:每秒点击次数
8) successful hits per second:每秒成功的点击次数
9) failed hits per second:每秒失败的点击次数
10) attempted connections:尝试连接数
11) throughput:吞吐率
C/S架构,由于后台通常为数据库,一般关注数据库的性能测试
1) user connections:数据库连接数量
2) number of deadlock:数据库死锁
3) butter cache hit数据库cache的命中情况
4) 对于B/S架构,一般关注Web服务器性能指标:
3.JMeter GUI 基本操作
1)添加/移除测试原件,其中打开,合并命令,从外部文件中加载和添加测试单元
2)加载和移除测试单元
3)配置测试树中的测试单元
4)保存测试计划(非必需)
5)运行测试计划
6)终止测试或者测试结束,查看结果
7)错误报告,JMeter会把日志信息记录到jmeter.log文件,同时也会输出到控制台.
4.JMeter常用测试单元
(1)线程组,所有测试计划的起点,所有的逻辑控制器和采样器都必须放在线程组之下.
1)设置线程数量
2)设置线程启动周期
3)设置执行测试脚本的循环次数
每个线程都会完整执行测试计划,并且相互独立运行.Ramp-Up Period(in second)告诉JMeter达到最大线程数需要多长时间.
(2)控制器
1)采样器,被JMeter用来向服务器发送请求,并等待响应;
2)逻辑控制器,控制JMeter的测试逻辑特别是何时发送请求.
(3)监听器提供了对JMeter在测试期间收集到的信息的访问方法.
(4)定时器,默认情况下,线程在发送请求之间没有间隔,添加一种定时器,一遍设定请求之间间隔多长时间.
(5)断言,检查从服务器获取的响应内容.
(6)Sample与采样器紧密相连,不发送请求,可以添加或者修改请求.
(7)前置处理器,在采样器发出请求之前做一些特殊操作;
(8)后置处理器, 在采样器发出请求之后做一些特殊操作,常用来从响应中提取数据
5.JMeter执行顺序规则
配置元件----前置处理器----定时器----采样器----后置处理器(除非服务器响应为空)-----断言(除非服务器响应为空)----监听器(除非服务器响应为空)
6.JMeter测试结果
1)label:定义HTTP请求名称
2)samples:表示这次测试中一共发出了多少个请求
3)average:平均响应时长,默认情况下是单个request的平均响应时长;
4)median:中位数,50%用户的响应时长
5)90%line:0%用户的响应时长
6)min:访问页面的最小响应时长
7)max:访问页面的最大响应时长
8)error%:错误请求数量/请求总数
9)throughput:默认情况下表示每秒完成的请求数
10)KB/sec:每秒从服务器接收到的数据量
三、常见问题
为什么常用Badboy录制Web性能测试脚本,而不是选择JMeter代理录制?
四、解决方案
JMeter代理不支持HTTPS协议,原因在于代理无法破译HTTPS通信内容,并录制请求参数或者Cookie. 只有设置密钥库后,JMeter代理才可以录制HTTPS请求。而Badboy作为一种自动化测试工具,不仅支持对HTTPS协议的录制,本身也具有许多丰富且强大的功能, 简化开发人员的测试工作.
五、扩展思考
性能测试结果分析在完成JMeter测试脚本执行后,首先要做的就是判断收集到的测试数据是否真实有效,对无效的测试数据进行分析,无端了浪费时间和精力.通常判断测试数据是否有效的方法如下:
1.分析在整个测试执行期间,测试环境是否稳定正常.(常见异常:CPU占用达到100%,内存占用很高,测试网络出现拥塞导致响应延迟,待测系统参数配置错误(JDBC连接池等))
2.检查JMeter测试脚本参数是否设置合理,建行擦JMeter运行模式是否合理,如Ramp-Up Period参数设置.
3.检查测试结果是否暴露了系统瓶颈.重点关注异常的测试结果,如果测试结果一切正常,首先需要考虑的是并发数是否足够多,压测是否足够大,或者待测系统是否存在压力屏蔽机制等.
确定测试结果有效后,需要对测试数据进行深入分析,原则是---由表及里,由内及外,抽丝剥茧从用户响应时长---网络和服务器响应时长---组件级性能
二.明日计划
继续做任务7,学习创建BeanFactory方法封装第三方接口作为工具类.
三.遇到问题
暂无.
四.收获
以上.
评论