目录
一、性能测试概念
性能测试:通过自动化的测试工具模拟多种正常、峰值以及异常负载条件,来对系统的各项性能指标进行测试。
对软件系统而言, 系统性能包括:执行效率、资源占用、稳定性、安全性、兼容性、可扩展性、可靠性等等。
性能指标:可能包括系统各个方面的能力,如系统并发处理能力,系统响应时间,批量业务处理能
力等等。
常见的性能问题:
资源泄露、系统的内存泄露、线程阻塞、死锁、查询速度越来越慢,列表展示越来越多、CPU占用达到100%(最多只能占用70%)
1.1为什么进行性能测试:
- 进行基准的性能测试,获取系统性能的基准性能指标
- 测试系统是否满足了系统的性能需求(用户期望的性能)
- 系统是否可以处理预期的并发用户数量并且又盈余能力
- 系统是否可以达到要求的性能指标
- 系统是否可以处理预期的事务(数据库中的事务)数量(事务的特性:一致性、原子性、隔离性、持久性)
- 在预期和非预期的用户数量下,都可以稳定运行
- 系统在任何情况下都可以有良好的体验
- 当系统出现性能测试时,可以找出系统的瓶颈(如内存泄漏等)
- 系统正常工作情况下的最大容量
- 帮助系统运维部门更好的规划硬件配置
1.2系统性能测试流程
- 了解系统性能测试的需求
- 根据系统性能需求,分析系统性能指标要求(必须量化出来)
- 根据系统性能需求,分析出进行性能测试的类型,确定性能测试场景(一般在Loadrunner中完成)
- 运行性能测试场景,得出性能测试报告
- 根据性能测试报告,找出系统性能瓶颈
1.3如何确定性能测试需求——>确定性能测试指标
1) 关键性能指标分析
量化分析:
- 同一时刻支持200w用户同时在线,支持至少200w用户的并发量(增删查改操作),响应时间低于1s
- 每天支持2000w次交易(早八晚2),推出每秒支持309次交易
- 高峰期:支持600w用户同时在线,响应时间3s内,
- 交易成功率:HTTP请求的成功率
2)关键业务分析
- 用户频繁使用的业务:如淘宝APP(首页搜索功能、收藏加购操作)
- 计算量大的业务:支付功能
二、衡量软件性能的四个维度:
(1)软件开发人员
系统架构(框架是否合理,是否有利于后续开发)、算法效率、系统资源分配不合理的问题、并发设计是否合理、数据库设计是否合理
(2)运维人员
系统的容量、系统长期稳定运行、服务器及各种资源分配是否合理
(3)用户
用户体验:响应时间快、稳定
(4)性能测试人员
以上问题全都考虑
性能测试不是独立于功能测试之外的,在功能测试稳定之后进行系统性能测试
三、性能测试指标
3.1并发数
- 系统用户数:该系统的注册用户数。例如,BestTest论坛里存在6666个注册用户,他们可以是活跃的,也可以是僵尸的。
- 在线用户数:登录系统的用户。例如,其中有666个用户的状态为在线,但在线用户并不一定都会对服务器产生压力,因为有的用户登录后什么都不干。
- 并发用户数:对服务器产生压力的用户。例如,可能在线的666个用户中,只有20%的用户对服务器产生了压力,这20%的用户数就是并发用户数。
- 业务层的并发数:同一时刻向服务器发送请求的用户数量
- 后端服务层的并发数:同一时刻向后台服务发送请求的数量
严格意义的并发用户数:同一时间进行同一个操作的用户数
(1)并发数的估算
1)平均并发用户数: C = nL/T
2)并发用户数峰值: C' = C + 3*根号C
C是平均并发用户数,n是login session的数量,L是login session的平均长度,T是值考察的时间长度C'是并发用户数峰值
举例1:假设系统A,该系统有3000个用户,平均每天大概有400个用户要访问该系统(可以从系统日志从获得),对于一个典型用户来说,一天之内用户从登陆到退出的平均时间为4小时,而在一天之内,用户只有在8小时之内会使用该系统。那么:
平均并发用户数为:C = 400*4/8 = 200
并发用户数峰值为:C' = 200 + 3*根号200 = 243
3.2响应时间
响应时间分为:前端展示时间、系统响应时间
前端展示时间:用户发出请求,到前端页面所耗费的时间
系统响应时间:分为web服务器、应用服务器、数据库服务器等各种服务器之间通信和处理请求的时间
(1)事务的响应时间
服务器处理完一个事务所需要的平均时间
(2)平均每秒处理的事务数
服务器平均每秒处理多少个事务,衡量系统关键性能指标(TPS:Transaction Per Second)
(3)点击率(HTTP Per Second)
每秒处理的HTTP请求个数
(4)吞吐量:服务器单位时间处理的信息(HPS TPS bytes/s)
(5)思考时间
(6)资源利用率:系统运行时,占用资源的情况(CPU、内存、硬盘、网络等)
四、性能测试方法介绍
(1)基准测试
对于一个全新的系统,需要了解系统的性能,就需基准测试,获取系统的性能指标;提高系统的性能指标。或者评估新开发的功能对系统的影响的时候,需要基准性能指标做参考
(2)并发测试
同一时刻向系统服务器发送请求,看在并发情况下系统的性能表现:是否出现资源竞争不合理、内存泄漏、死锁等性能问题
(3)压力测试
一般指后端服务器压力,不断给服务器施加压力(增加请求数量),看系统处于临界饱和情况下,服务器中各个性能指标是否在正常范围内,是否出现性能测试问题。超过系统实际并发数
(4)配置测试
测试系统在不同软硬件环境的配置下,系统的性能表现,找出适合系统运行的软硬件环境配置,常见的如:操作系统、JVM版本、服务器指标、数据库、网络、内存等配置。
(5)可靠性测试
并发情况下,长时间运行系统(24h、一周、一月),看系统指标是否稳定、是否出现性能问题。此处考虑的是系统实际并发数的60%~70%
五、Loaderunner安装及使用
5.1基本概念
LoadRunner是一种适用于许多软件体系架构的自动负载测试工具,从用户关注的响应时间、吞吐量,并发用户和性能计数器等方面来衡量系统的性能表现,辅助用户进行系统性能的优化。
- Scenatio:性能测试场景,可以录制脚本。在每一个测试过程中发生的事件。
- Vusers:虚拟用户 。LoadRunner使用多线程或多进程来模拟用户对应用程序操作时产生的压力。一个场景可能包括多个虚拟用户,甚至成千上万个虚拟用户。
- Vuser Script:脚本。描述Vuser在场景中执行的动作
- Transactions:事务。事务代表了用户的某个业务过程,需要衡量这些业务过程的性能。
- rendevous:集合 并发要求多用户同一时刻开始执行某一操作
5.2Loaderunner性能测试过程