什么是性能测试
Posted on Wed, 25 Dec 2024 10:36:04 +0800 by LiangMingJian
概述
性能测试是通过自动化的测试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是负载逐渐增加时,测试系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或不能接受的性能点,来获得系统能提供的最大服务级别的测试。
在计算机领域,性能测试被用来判断计算机、网络、软件程序或者驱动程序的速度和效率。这一过程会在同一试验环境下进行大量测试,以便于衡量系统功能的响应时长或者MIPS(每秒执行指令数目)等指标。其他系统特性,如可靠性、可量测性、互用性等,也可以用性能测试来衡量。性能测试通常与压力测试一起进行。
目的
- 发现系统的瓶颈,为调优指明方向;
- 发现系统承受的最大压力以及最佳压力;
- 检查系统在长时间的压力下是否能正常处理各种请求,考察系统的稳定性;
- 进行容量规划,检查系统能否在用户增加后仍满足要求;
过程
- 性能需求点获取
- 测试点的提取
- 测试环境的部署
- 测试数据的准备
- 测试进行
- 测试结果
指标
- 事务:用户某一步或几步操作的集合,它具有一个完整意义。比如用户对某一个页面的一次请求,对某系统的一次登录,对商品的一次确认支付过程。这些我们都可以看作一个事务,需要理解的是事务不等于请求,一个事务可能有一个请求,也可能有多个请求。
- 请求(PV):PV 是 Page View 的缩写。用户通过浏览器访问页面,对应用服务器发送的一次请求,记为一个 PV。
- TPS(Transaction Per second):每秒钟系统能够处理事务的数量,它是衡量系统处理能力的重要指标。一个系统的性能是由 TPS 决定,跟并发用户数没有多大关系。一般在同样的 TPS 下,可以用不同并发用户数去压测得到。
- QPS(Query Per Second):每秒查询数。QPS 基本类似于 TPS,但是不同的是,对于一个页面的一次访问,形成一个TPS;但一次页面请求,可能产生多次对服务器的请求,服务器对这些请求,会被计入QPS之中。例如:访问一个页面会请求服务器3次,产生一个 T,产生3个 Q。QPS(TPS) = 并发数 / 平均响应时间
- HPS(Hit Per Second ) / RPS(Request Per Second):点击率 / 每秒HTTP请求数。
- 响应时间(RT):网页响应请求的时间,测试时可参考 2/5/8 原则,即 2 秒之内用户觉得很快,5 秒之内用户觉得还可以,8 秒之外用户觉得系统慢,无法忍受。
- 吞吐量:在一次性能测试过程中网络上传输的数据量的总和。对于交互式应用来说,吞吐量指标反映的是服务器承受的压力,在容量规划的测试中,吞吐量是一个重点关注的指标,因为它能够说明系统级别的负载能力,另外,在性能调优过程中,吞吐量指标也有重要的价值。吞吐量是整个系统的瓶颈。但是,用吞吐量来衡量一个系统的输出能力是极其不准确的,我们要加单位时间的限制,这就引出了一个新的概念——吞吐率(单位时间内网络上传输的数据量,也可以指单位时间内处理客户请求数量,通常情况下,吞吐率用“字节数/秒”来衡量)
容量预测
在系统上线前,需要对系统的容量进行测试,预测系统能接收用户多大的访问量,即希望评估出最大日 PV 到来时,我们的系统是否能支撑。
根据已有的经验和数据,我们可以总结出了高峰 QPS 和日 PV 的关系:QPS = (( 总 PV X 80% ) / ( 24 X 60 X 60 X 40%)) / 服务器数量,这个公式代表的意思是在 40% 的时间(12小时)内产生80% 总 PV 的 QPS 均值。
这样我们就可以通过压测获取其高峰 QPS,然后根据公式算出指定高峰 QPS 下的日 PV,通过这样来进行容量预测。即:日预估 PV = 压测 QPS X (24 X 60 X 60 X 时间百分比) / 0.8 X 机器数量。