性能测试基础---性能测试基础指南
·企业对于性能测试工程师的要求:
·要求熟练掌握至少一种性能测试工具,并且能够实现性能测试脚本的开发。
·能够获取、分析、提炼性能需求。
·能够根据性能需求去进行测试场景的设计和实现。
·能够根据性能的需要进行必要的监控。
·能够根据性能测试结果、集合监控、服务器日志等数据分析、定位性能瓶颈
·能够提出调优建议。
·能够根据需要编写合格的性能测试报告。
·具备良好的沟通表达能力、团队合作能力。
·掌握一些其他必要的工具。
·性能测试工程师所面临的挑战
·资源问题
人力
物力(硬件:
要有独立的测试环境,要有独立的机器(服务器在云端进行压测没有任何意义,你的压力很有可能被网络运营商,微服务商,
或者服务器对外带宽本来就不足,都是可能构成测试测试失败的要素,你会发现怎么压都压不上去,因为这是一个环境)。
人:DBA、运维、开发、测试
)
·知识面问题:
广度优于深度
技术更新
·性能:
什么是性能?
性能是指事物的性质和能效。
对于软件系统来说,性能指标、说法很多,但是性能从本质上来说,就是两点:
·how fast:是用来衡量一个系统的处理效率。
·how much:是用来衡量一个系统的处理能力。
PS:一般来说,论及一个系统的性能,必须要同时衡量这两点。
系统的性能其实没有绝对意义上的好和坏,只有是否满足或者符合需求。
·常见的性能指标:
性能指标很多,常见的一般有下列指标:
·响应时间:反应的一个系统的处理效率。
工具的解析执行-DNS解析-连接的建立时间-请求的发送-服务器的处理时间-响应的接收。
·吞吐量:反应的是一个系统的处理能力。
·TPS/QPS:每秒事务数/每秒请求数。
·Throughput:统计的是数据流量,单位是byte。统计方式可以是网络流量or磁盘流量。
·资源利用率:
事实上,资源利用率作为性能指标的意义远远小于其作为分析、定位性能瓶颈的数据的意义。
一般来说,我们监控的资源是指:系统资源、服务器资源、数据库资源等。
·系统资源:CPU、内存、磁盘IO、网络带宽
·服务器资源:CPU、内存、连接数、GC等
·数据库资源:CPU、内存、缓存命中率、热点块、慢查询、执行计划等等。
PS:通常来说,响应时间和吞吐量指标都是由性能测试工具自身来提供。而资源利用率则可以通过专业的第三方工具来实现监控。
性能问题主要是代码,数据库层面的问题。
·负载用户的分类:
性能测试的实现方式:通过性能测试工具在协议级别去模拟实现大量的虚拟用户去访问被测服务器。
·负载用户:就是指给服务器造成压力的用户,通常我们在性能测试领域,模拟测试的时候,要去设置虚拟用户数,就是所谓的负载用户数。
负载用户数根据其参考来源可以分为以下几种:
·系统最大用户数:
此“用户”不一定是真正的人。
·在线用户数:就是指长时间、大量使用系统的用户数。
·并发用户数:
并发分为两种:狭义的并发、广义的并发。
·狭义的并发:是指同时向服务器发起请求的用户数。
计算公式:服务器端并发处理能力=TPS*平均响应时间
·广义的并发:在线即并发。
一般来说,狭义的并发主要是指各种秒杀场景。
PS:一般来说,狭义并发的时候,我们只关心响应时间,不关心tps。
·性能测试的分类:
性能测试按目的可以分为以下几类:
·负载测试:测试目的就是为了得到系统的最大处理能力、最佳性能表现和最大有效负载用户数。
注意事项:
·负载用户的起点和变动。
·每一轮负载测试的环境的一致性。
·压力测试:是为了测试系统的稳定性。
实现方式:使得系统长时间在高压力情况下进行测试。
一般:7*24小时。
·容量测试:是为了测试系统在特定容量条件下的性能表现,或者通过测试去评估在特定容量条件下的性能表现。
一般来说,系统容量是指以下方面:数据库、磁盘、网络带宽、连接数、缓冲池大小等。
通常来说,数据库容量是我们在做性能测试的时候需要重点关注的。
要从以下几个角度考虑测试环境和真实线上环境的数据库的一致性:
·数据库的大小 单位是byte(GB\TB)
·数据库的级别 单位是条数。是指数据库中的记录的数量。
·数据特征
·基准测试:就是为了获取基准的性能指标。通常就是指响应时间和资源利用率
基准分为两种情况:
·同一轮次:通常来说建议取一个用户进行测试。
·不同轮次:以上一轮次为基准进行测试。
·配置测试:一般来说是为了获取系统的最低配置和推荐配置。
某些情况下,也会用于线上配置、线上环境性能的评估。
·并发测试:是为了测试系统是否存在资源争用、事务冲突、锁的升级等问题。
·性能测试工程师的自我修炼:
·了解操作系统
·了解计算机网络相关的知识。
·熟练掌握至少一种性能测试工具。
·熟练掌握至少一种服务器
·熟练掌握至少一种数据库
·熟练掌握至少一种编程语言。
·熟练文档的编写。
·具有良好的学习习惯和学习方式。