如果你做过性能测试,你就会知道,性能测试的时间要比功能测试时间长很多,但是,你没有做过,你可能就会问了,为什么性能测试时间要长那么多呢?今天就用一文,带大家了解性能测试工作流程。
这是一张性能测试工作流程导图。从数量上,流程环节并不多,但是,细心的人,可能会发现,这里有个性能环境搭建和性能结果分析与调优。平时,你做测试,需要自己搭建测试环境吗?你测试发现的问题,你会追究问题根源,找出解决办法吗?可能大部分都认,都不需要做这些事情。但是,性能测试,这些事情,是少不了的。
一、性能测试准备
上面这张图,罗列了一些在性能测试准备阶段需要做到事情。
-
熟悉需求与业务。这个大家都能理解,就是要了解具体需求,因为,企业中,性能测试人员一般都比较紧缺。比较少的长期跟踪一个项目,所以,在开始做性能测试时,要熟悉需求,熟悉业务。
-
确认性能需求的必要性。这个可能很多人,就理解不了了。在功能测试时,都是按照需求文档来,需要要求做就做。但是性能测试,人才难求、技术难度较大、投入成本偏高,并不是所有需求都需要做性能测试的。同时,性能需求的提出者,大多数情况下对性能测试的了解也是有限的,性能测试人员,不能完全尽信需求提出者。
-
明确性能需求、量化性能指标。做测试,要明确需求的边界,性能测试也一样,没有边界,就没有了测试范围和结束标准,这是很可怕的事情。如果不能量化性能指标,也就无法判断实际测试结果是否符合预期。
-
熟悉项目架构、通信协议。现在企业项目架构一般都比较复杂,涉及非常多的服务,服务之间的通信方式也会有差异。所以,在性能测试前,我们需要熟悉项目架构,及通信协议,这样,才能知道各个服务的主要用途,以及是如何通信的。
-
理清需求数据请求流。一个接口请求的数据,要经过哪些服务,由此构成的数据请求流需要弄清楚。对接口进行性能测试时,会因为请求流中某一个服务的请求时间偏长,导致整个请求的时间过长,出现性能瓶颈,所以,需要弄清楚数据请求经过的每一个服务。
-
掌握需求中涉及的系统核心文件与关键参数。一个接口请求,可能要经过多台服务器,多个服务,每台机器的硬件配置、操作系统核心参数,服务的配置文件、核心参数,这些都是需要事先弄明白的,因为,在性能测试过程中,需要全程监控和随时调整参数值的。
-
掌握项目各系统环境搭建。性能测试需要独立搭建环境,所以,在准备阶段,要对产品架构中使用到的各种环境、操作系统都要熟悉,掌握他们都环境搭建和核心参数。
-
负载机器准备。性能测试,一般发起方电脑都需要做特殊设置,所以,在性能测试准备阶段,要准备好几台负载机,同时,做好相关设置,以便在正式测试时,能马上使用。
-
制定性能测试计划。任何一项工作开展之前,都需要做好计划,性能测试也不例外,需要做好时间、人员、工作安排。
-
设计性能测试模型。功能测试,需要设计测试用例,性能测试也是一样,只不过这个测试用例,一般就测试模型,模型设计清楚了,后面就能快速开发出性能测试脚本。
-
评估性能测试工作量。工作量评估非常重要,能预估一段时内能完成的工作。
二、性能环境搭建
上面这张图,大致的罗列了性能测试流程的第二个环节“性能环境搭建”的相关工作:
-
申请服务器硬件资源。性能测试需要搭建独立的性能测试环境,所以,一般都要测试人员去申请服务器硬件资源。
-
申请服务器网络配套资源。搭建性能测试环境,需要连通,网络资源也需要申请。
-
检查、调试服务器操作系统参数。有了硬件资源,需要在上面安装操作系统才能部署服务,操作系统一些参数需要调整,与生产环境保持一致。
-
搭建产品服务环境。申请了硬件资源,就要搭建服务环境,确认正常运行。
-
调试产品服务间网络环境。部署了服务,服务之间能调通才能实现产品功能,需要调试通过。
-
搭建服务器监控环境。性能测试需要监控,才能收集性能测试过程中,服务器各种资源使用情况,所以,还需要搭建监控环境,监控被测服务器各种资源使用情况。
-
检查、调试性能测试机操作系统参数。性能测试,发起方的机器,需要对操作系统参数做一些定制性的优化,所以,需要检查、调试发起方的系统参数优化。
-
调试性能测试机与产品服务器间网络。性能测试发起方的机器可能会使多台,必须确保每台机器与被测服务器之间网络通信正常。
三、性能脚本开发
上图,罗列了一些在“性能脚本开发”阶段需要去做到工作:
-
编写性能测试脚本,并调试通过。做后端服务器性能测试,不是简单的接口调用,它的脚本与接口测试脚本不一样,调通了接口脚本,还需要进行性能转换,并调试通过。
-
根据性能需求,实现性能测试场景,并模拟测试通过。脚本调试通过后,就要进行性能场景设置,把性能测试模型转换为性能场景,并调试通过。
-
研究、分析性能测试脚本自身性能,并做好优化。性能测试,要向被测服务器发起大量的请求,如果自身脚本性能很差,发起的请求量就会少,对服务器造成的压力也就低,性能结果偏差就大,所以,要研究、分析和优化自身测试脚本。
-
准备或建造性能测试数据。执行性能测试,脚本中,可能需要使用大量数据,这些数据,在编写好脚本之后,就要开始准备和建造了。
-
性能脚本在多负载机上调试通过。性能测试可能需要多个负载机来产生并发用户数,所以,需要再所有的负载机上调试性能脚本通过。
四、性能测试执行
上图,罗列了一些在“性能测试执行”阶段,需要做的工作:
-
项目数据库数据建造。做性能测试,数据库需要准备一些数据,所以,在执行性能测试时,先要在被测接口关联的数据库表中建造一定量的数据。
-
性能场景的执行与调整。在性能脚本开发阶段,虽然实现了性能场景的设计,但是,在真正执行的时候,需要对执行的结果做出分析判断,然后调整性能场景。
-
性能测试过程监控与分析。性能测试执行过程中,需要根据性能执行的结果数据进行及时的调整。
-
服务器资源监控与及时分析。性能分析需要有性能监控,执行过程中,需要对服务器各个环节进行监控,并做出及时的分析。
-
网络资源监控与及时分析。性能测试,同一时间会有大量请求经过网络,如果网络有瓶颈,性能测试的结果数据就得不到真实反馈,所以,需要时刻关注网络监控,并做出及时分析。
-
负载机资源监控与及时分析。负载机是发起性能测试的机器,所以对负载机的资源也要进行监控和分析,并做出及时调整。
-
测试数据分析。性能测试执行,就会产生性能测试数据,需要对性能数据进行初步分析,以及时调整下一步执行方案。
-
性能测试过程记录。性能测试执行阶段,需要反复执行和调整,所以,对每一次的执行,都需要做好记录,以便在写测试报告的时候,真实反映测试过程。
五、性能结果分析与调优
上图,罗列了一些“性能结果分析与调优”阶段需要做的工作:
-
规整一次性能测试执行的各种数据。数据是性能分析的支撑,所以,需要规整一次性能测试执行的所有数据。
-
对一次执行结果的数据进行整体分析。对规整的数据进行分析,分析一次执行的数据,调整到下一次执行过程中。
-
对多次执行结果数据进行综合分析。规整整个测试过程的所有数据,才能在整体上做出问题定位。
-
分析、定位、调优性能问题,再执行。对于规整好的数据,进行全面的分析,才能深入分析、定位和调优发现的性能问题。
六、编写测试报告与跟踪
编辑切换为居中
添加图片注释,不超过 140 字(可选)
上图,罗列了一些在“编写测试报告和跟踪”阶段的工作:
-
规整整个测试过程和测试数据,编写性能测试报告。编写性能测试要汇总各方面都数据,其中,整个测试过程所有测试相关的数据也是报告中重要的组成部分。
-
调优性能测试问题。性能测试过程中发现的问题,要经过反复调优和再测试。
-
记录、跟踪、再验证性能问题。性能测试过程中的问题,不是所有的都能在短时间内解决的,不能解决的问题,需要记录和持续跟踪,待修复的时候再次通过测试的检验。
这就是性能测试流程各个环节及要做的工作,虽然,不能代表所有,但是,囊括大部分性能测试工作。