问题
在工作中,如何开展性能测试?性能测试的流程是什么样子?
考察点
面试官想了解:
-
是否做过性能测试
-
是否了解性能测试流程及规范
技术点
涉及的技术点:
- 性能测试的流程
回答
一个公司在业务初期可能不太重视对应的性能要求,当用户量上来,并发数增多对应服务器扩容无法按倍数扩容时,领导可能会强推要求进行产品的性能测试。
应该如何开展进行性能测试呢?首先要知道对应的流程及其规范,从大的方向了解再具体细说每个小的阶段。在这里给大家把性能测试的流程大概分为以下几个阶段,分别是【需求调研】→【测试准备】→【测试执行】→【测试报告】。
需求调研阶段
首先,来看一下对应的需求调研阶段。一个产品会有多条业务线及其复杂的后端调用的交互。所以,在做性能测试之前,需要把对应的业务进行明确,并且分析该业务需求。最好能画出对应的业务流程图及后端的调用链路图,这样在测试准备阶段大大节省我们编写压测脚本的时间。
在需求调研阶段还需要确定对应的性能测试范围,有可能当前的业务有多个请求调用,但是在性能测试时肯定是对某几种场景或链路进行特定的压测。根据压测业务需求来确定对应的压测请求。
在需求分析阶段需要明确当前项目的压测需求,对应的链路调用模型及定制压测计划。
在压测计划文档中需要明确列出该项目的测试范围、投入的人力、持续的时间及对应的工作内容等等。
需求调研是由性能测试工程师负责,对应的该业务的产品、研发、DBA及运维工程师配合完成。
需要了解该需求的系统线上环境的性能需求,比如:服务器信息「线上环境硬件、参数配置、部署方式、关联系统部署等」、业务流程模型、业务技术架构模型等。
- 根据需求调研的信息,将性能需求转换为具体的性能需求指标值;
- 根据测试环境与线上环境的差异分析,将线上环境条件下的性能需求指标值转换为测试环境条件下的性能需求指标值;
经过以上分析后汇总为压测指标,写入压测计划中。
测试准备
测试准备阶段,是压测中重要的阶段。在准备压测开始之前,需要把压测环境准备好、压测过程中所需要使用到的压测数据准备好,以及对应的压测过程中需要用到的测试数据也准备好。准备好后,就可以根据对应的场景进行压测脚本的开发。
准备测试环境,包括被压测的服务器与负载机两部分。服务器是被测系统的运行平台,负载机是用来产生负载的机器,运行压测脚本。
准备测试数据,根据数据模型来准备被测系统相关的业务数据,其中包括保证业务能正常调用的基础数据及运行压测相关业务需要使用到的前置数据,比如订单,订单在出库之前需要有相对应的订单数据及库存数据,这些也是业务数据。
开发脚本,可以录制脚本也可以直接编写性能脚本,在开发脚本时,如果业务需要调用第三方此时需要开发对应的挡板程序,如果业务需要相关的加解密需要开发对应功能插件。
测试执行
测试执行主要是根据压测脚本获取服务器处理能力的相关指标,并发现对应性能测试缺陷。测试执行阶段需要使用各类监控工具,等执行结束后进行压测结果的统一收集。收集到的结果进行对应的数据分析,分析指标后判断当前压测是否通过,一般根据响应时间、吞吐量、事务成功率、硬件指标、稳定性、内存有无泄漏、其他(数据库、中间件、缓存、JVM)等等进行衡量性能指标。
如果符合对应指标则进行压测报告的编写,如果不符合对应指标需要相关系统进行调优,调优完成后再次进行脚本执行测试,收集指标进行再次确认。
测试报告
测试报告是性能测试的重要交付件,是对测试结果进行报告,主要包括常见的性能指标的说明及在压测过程中发现的问题等等。