一、 什么是性能测试
作为测试同学,日常工作中我们接触最多的是业务功能测试,功能测试顾名思义即验证某个需求功能是否符合预期,而性能测试不同于功能测试的点在于,它验证的的是某个或某些性能指标是否达成预期。如果把业务的功能测试定义为全集 U 的话,那么业务的性能测试就是全集 U 的子集【不需要性能测试,或者某些需求需要做性能测试,或者全部功能都需要做性能测试】
做验证【度量】需要指标,如度量 CPU 性能:通过 CPU 使用率 - 均值,CPU 使用率 - 最高值等;度量内存性能:通过内存使用率等;度量网络性能:通过网卡入出口流量,网卡入出口错误等;度量磁盘性能:通过磁盘利用率,磁盘读写等。
上面说的都是在服务器硬件指标维度进行的度量与验证,如果某块做的不好,直接提交缺陷给相关的同学去优化,而用户实际感知的是真实的业务场景,比如打开页面卡不卡,使用操作是否流畅等。通过实际的场景压测,来验证当前服务端性能的优劣,通过做好性能测试,才能建立信心,做好性能分析,才能知道哪里薄弱,做好性能调优,才能确保业务无忧!
二、 如何做性能测试
性能测试不只是测试执行,实际上还需要考虑很多,比如:
1)用什么工具验证?测试的完备性如何保证;
2)性能测试如何设计?如何有针对性的设计,以符合预期;
3)压测过程中收集到的数据如何分析,重点关注什么;
4)执行结果会不会有差异?为什么有差异?是什么原因导致的;
5)如何去分析异常的性能数据?如何定位导致数据异常的原因?如何进行调优来解决问题。
三、 问题与挑战
比如在接口功能测试时候,我们只需要关注响应时间的最大值、最小值、平均值即可。但在性能测试过程中,我们更应关注的是 99 分位及波动率。这些与功能测试的差异,是每个立志做好性能测试测试,前期需要准备的基础知识。
在性能测试流程上,测试仅仅是一个环节,前置的需求分析与测试设计,后置的性能分析与性能调优都是不可或缺的关键。
综上所述,性能测试,是测试工程师的锐变之路,对个人的能力要求远远高于业务测试,是测试架构师的看家本领。正如优秀的射手是用子弹喂出来的一样,好的测试架构师是历经各种性能问题,一个个案例锻炼出来的~
PS:对服务端性能测试感兴趣的小伙伴,可以关注下 MTSC7 月 22 日下午服务端专场的议题分享~