有同学问了我这样一个问题:开展了一次压测,但不知道如何筛选性能测试报告中的性能指标。需求里没有提到明确的技术指标,测试报告中需要说明被测服务的CPU、内存使用率数据吗?压测机集群的负载情况,是否需要说明?
毫无疑问,性能指标很重要。相比于功能测试或者业务测试来说,性能测试更具有技术属性,即对结果的评估目的性更明确。功能测试如果出现BUG,原因可能是需求描述不清晰,设计的交互逻辑不合理,或者开发和测试同学对需求实现理解有差异。但性能测试的结果是更精确,更容易用数值衡量的。比如:响应时间2秒和200ms,是特别大的差异。如果系统的访问量稍高一些,则可能带来更大的影响。
从我的角度来看,性能指标是一个相对概念,如果没有参考或者技术目标,那性能测试活动开展是很难拿到好结果的。就像打靶射箭一样,在子弹出膛之前,需要知道子弹射向哪里,然后根据距离、风向等因素调整射击角度。性能技术指标就是那个靶子,告诉我们目标是什么。同样,性能技术指标是一个滞后的参考值,它只有在有测试结果之后才能发挥真正的作用。
至于性能测试的结果和性能指标之间的关系,我认为性能指标是一个参考值。与之相比更重要的是,最终的性能测试结构是否能被团队或项目中其他角色认可和接受。在性能测试开展之前要确定性能测试指标,这是按照比较标准的模版或者套路往下走,更适合初学者或者没太多实践的同学。但对于技术能力强有丰富实践经验的同学来说,遇到问题解决问题从来都是因地制宜的,而不是纯粹的参考或者遵循模版或套路。
作为测试同学特别是专职的性能测试同学,有责任也有义务在需求不明确时,牵头搞定这个问题。需求不明确,那就找相关干系人(产品/研发/运维)沟通确认,帮他们捋清思路,确认需求。作为专业的性能测试人员,你要自信在性能测试领域,绝大多数业务开发和运维,是不如你专业的,术业有专攻。
以上述问题为例:提出需求的人最关心的是系统上线后的能否承载用户访问并正常提供服务。从这里入手,你可以通过沟通获得一些基本信息,比如注册用户数,日活数,或者业务峰值的网关QPS。没有具体数值也没事,重点在于通过获得的信息来评估出几个性能技术指标,并说明背后的逻辑,和对方达成一致。
按照核心链路之间的依赖调用关系,借助trace追踪,可得到大促期间所有核心应用及核心链路的QPS数值。