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