相比于普通的功能测试,性能测试对测试工程师的技能要求更高,一般来说,也只有中高级测试工程师才会有机会做性能测试。
本文通过下面三个部分来介绍
- 性能测试报告的目的
- 性能测试过程中的关注点有哪些?
- 如何做一份精致的报告
一、性能测试报告的目的
报告的目的是总结过程,呈现结论。 性能测试做完了,怎么做的,各项指标怎么样,是否符合预期,我们需要通过一份报告来呈现。 在做性能测试的过程中,很多时候是要研发工程师协助一起完成的,所以最终的报告不仅是我们自己要看,同时也要给研发工程师及架构师看。因此,我们在撰写报告的时候要把各个角色关注的指标有效地呈现出来。 同时,性能测试报告也是一份留档,在下次业务扩容进行压测的时候可以作为基线参考,可以更好地评估压测指标。
二、性能测试过程中的关注点
性能测试分别要关注施压端和服务端。 施压端即我们用来模拟压力发出请求的服务器,常用的工具有jmeter、loadrunner等,模拟较大压力时通常采用多台机器组成的集群。 服务端即服务程序所在的机器,一般是多台服务器组成的集群,在性能测试过程中是被压测的对象。
在施压过程中,施压端一般要关注三个指标 qps(请求量)、rt(响应时间)、error(错误率)。 服务端(或服务集群)一般关注下面几个指标:qps(处理的请求量)、rt(响应时间)、cup(cpu使用率)、mem(内存占用情况)、load(负载)、traffic(网络速率)
下面是上述指标的具体含义:
qps QPS(Query Per Second),每秒钟能够处理的请求的数量,是衡量一个系统性能的重要指标。
rt RT(Response Time),响应时间(一般单位为ms),是指从客户端发一个请求开始计时,到客户端接收到从服务器端返回的响应结 果结束所经历的时间,响应时间由请求发送时间、网络传输时间和服务器处理时间三部分组成。一般情况下,响应时间还会细分为:最小响应时间、平均响应时间、最大响应时间。
error error请求错误率,一个请求预期正常的返回code为200,其它code(比如302、404、500等)均为非预期的,记为错误。错误率是指在施压机发送的所有请求中,返回code非200的占比。
cpu CPU(%) 是指测试任务运行的这个时间段内,应用服务系统的 CPU 资源占用率。这是对一个时间段内CPU使用状况的统计,通过这个指标可以看出在某一个时间段内CPU被占用的情况,如果被占用时间很高,那么就需要考虑CPU是否已经处于超负荷运作,长期超负荷运作对于机器本身来说是一种损害,因此必须将CPU的利用率控制在一定的比例下,以保证机器的正常运作。
mem Memory (%) 指的是当前系统内存的使用量占总内存大小的比率,反应当前机器配置情况对应用的内存的一个承载能力,判断扩容等重要指标。
load Load 就是一定时间内,计算机的任务执行队列的长度,cpu计算的队列。 平均Load是指,在特定的一段时间内统计的正在CPU中运行的(R状态)、正在等待CPU运行的、处于不可中断睡眠的(D状态)的任务数量的平均值。平均Load是最常用的指标。
traffic Traffic (kb/s) 指的是网络传输的速率,反应了当前应用所属服务器带宽的使用情况。可以细分为 in(入) 和 out(出),一般会统计 最大值、最小值、平均值等。
三、如何做一份精致的报告
压测结束,最后要输出测试报告,一份精致的报告不仅能够很好地展示测试结果,同时也是体现自己的专业性的机会。 下面通过几个问题的分解来说明
1、用什么文档写?
如果自己所在公司没有规定,建议紧跟在线协作的趋势,使用在线文档编写,比如腾讯文档、钉钉文档、飞书文档等,功能都很丰富好用。 如果自己的所在公司有内部协作平台,就在指定平台上写,最终成稿之后复制到邮件正文发送即可。
2、用什么语言?
根据自己公司的类型来,一般国内公司就用中文,没必要用英文,花里胡哨反而不好。如果是在国际化企业,有不同籍员工,那就要用公司规定的语种。
`3、报告内容用图标还是文字?
我们可以参考优秀的报告模板,总结下来就是字要少,图表要丰富,能用图说明的绝不用文字。 相比于文字,图表显得专业、高级,而且压测数据一般都是是变化的,只有图表才能够准确直观地展示压测过程的各项指标。 压测数据的图表一般在压测工具(jmeter可以使用第三方插件)中会自动生成,需要我们截图并整理。图表有了,接下来就该整理撰写报告了
4、关键内容有哪些?
一份完整的报告应该包含以下关键内容: ○ 压测信息(包含任务名称、压测时间、相关责任人等) ○ 施压机信息(包含机房信息、机器配置等) ○ 服务端信息(包含机房信息、机器配置等) ○ 压测结果(包含平均qps、最大最小耗时、cpu平均使用率、内存平均使用率、总的请求数、错误率等) ○ 压测详情(单个接口时该内容可省略,多个接口时,则将第4项内容按接口拆分展示) ○ 压测指标(三大指标qps、rt、error的图表放在这里) ○ 服务监控指标(服务器或集群的指标图表放在这里)
5、排版格式注意什么?
报告中字体要协调统一,缩进换行等基本排版要美观。
6、报告附件补充什么?
○ 测试方案 ○ 测试测数据
7、发送报告的注意事项
○ 使用公司指定的邮箱发送 ○ 收件人应包含相关的各个角色
下面给出一份测试报告的样例,可以作为参考。
作为程序员,大家都普遍都低调含蓄,但是该展现自己专业性的时候一定要积极表现。
对于测试工程师来说不仅要掌握专业的测试技能,同时也要提升各种文档的撰写能力,让自己的技能得到全面的展现。