性能基础入门篇
1、企业对性能测试工程师的要求
- 要求能够使用至少一种性能测试工具开展性能测试活动。
- 能够收集、分析性能测试需求,根据需求设计性能测试场景。
- 能够根据需求去监控相关的性能指标,收集测试和监控数据。
- 能够根据统计学相关的知识,对性能测试结果进行分析、定位性能测试瓶颈。
- 能够根据分析结果、提出调优建议,帮助架构or开发完成最终的性能优化工作。
- 能够编写合格的性能测试报告。
- 具备良好的沟通交流、团队合作能力。
2、性能测试工程师的挑战
资源:
- 硬件:要有独立的测试环境,要有独立的机器(服务器在云端进行压测没有任何意义,你的压力很有可能被网络运营商,微服务商,
或者服务器对外带宽本来就不足,都是可能构成测试测试失败的要素,你会发现怎么压都压不上去,因为这是一个环境)。 - 人(测试、DBA,运维,开发)
- 时间
知识广度
- 性能测试是一个对知识广度要求比深度高的工种。
3、什么是性能
性能是指事物的性质和能效。
从本质上来说,一个软件系统的性能最终一定是体现在下列两个方面:
- how fast:反应一个系统的处理效率的。
- how much:反应一个系统的处理能力。
PS:在有限的资源限定条件下,我们衡量一个系统的性能的好坏,必须同时从这两个方面着手。
性能并没有绝对的好坏,只是看是否符合需求。
性能问题主要是代码,数据库层面的问题。
4、常见的性能指标
响应时间:是指从发送请求到接收到服务器的返回的这一段时间。(一定和服务器有关)衡量的是一个系统的处理效率。
吞吐量:吞吐量衡量的是一个系统的处理能力。对于吞吐量来说,相关的指标有很多
- tps/qps/hps等。
- throughput:一般就是指数据流量(带宽、磁盘IO、总线等)。
- pv(page view)
- 资源利用率:一般来说主要是指系统资源利用率:比如说:CPU、内存、磁盘、带宽等。该类型指标作为性能指标的意义是远远小于其作为分析、定位瓶颈的支撑数据的意义的。
5、负载用户的分类
- 负载用户:就是指给服务器造成压力的用户,通常我们在性能测试领域,模拟测试的时候,要去设置虚拟用户数,就是所谓的负载用户数。
负载用户数根据其参考来源可以分为以下几种:
系统最大用户数:此“用户”不一定是真正的人。
在线用户数:就是指长时间、大量使用系统的用户数。
并发用户数:并发分为两种:狭义的并发、广义的并发。
狭义的并发:是指同时向服务器发起请求的用户数。
广义的并发:在线即并发。
一般来说,狭义的并发主要是指各种秒杀场景。
PS:一般来说,狭义并发的时候,我们只关心响应时间,不关心tps。
6、性能测试
就是指通过模拟负载用户,测试系统的各项性能指标是否达标的一个活动。
7、性能测试分类
是了解性能测试的各种目的。
- 负载测试:是为了测试系统的最大处理能力、最大有效负载用户数、最佳的性能表现点。
在不同的负载级别下进行测试。
PS:要保证在不同的负载级别下,除了负载用户数以外的其他所有因素的一致性。
- 压力测试:测试系统在极限的压力情况下的性能表现。
测试目的是测试系统的稳定性。
一般是进行7×24小时的校验。
负载用户数的选择原则:要使得系统不超过最大处理能力,但是又不能使得系统立即崩溃。
PS:压力测试会采取浪涌测试的方式。
- 容量测试:测试系统在不同容量级别下的性能表现或者预估系统在特定容量级别下的性能表现。
容量:在软件系统中,一般和容量有关的有:数据库、带宽、连接数、线程池
数据库容量的规划:
数据量:单位是byte。
数据级别:单位是 条。
数据特征
- 基准测试:分为两种:
同一轮次:目的是获取系统的响应时间的基准值。
不同轮次:是以上一轮次的测试作为基准。
- 配置测试:获取系统的最低配置和推荐配置。
推荐配置:是指能够使得各项性能指标达到用户需求,允许存在一定的偏差。
也可以用来进行测试环境和生产环境的对比评估。
- 并发测试:测试系统是否存在资源争用、事务冲突、锁的升级(死锁)等现象。
一般都是采用严格狭义的并发的方式来进行。
8、性能测试工程师的技能构成
- 至少熟练掌握一种性能测试工具。
- 了解掌握计算机硬件、软件及相关的基础知识。
- 理解计算机网络相关知识:通信模型、协议等。
- 掌握至少一种编程语言。
- 熟练掌握至少一种服务器产品。
- 熟练掌握至少一种数据库。
- 具有良好的逻辑思维能力、掌握必要的统计学知识。
- 掌握必要的监控工具。
- 具有良好的文档编写能力。