性能测试系列(2)-性能测试依赖的环境及其步骤
性能测试的前提
必要性,是否有做性能测试的必要(评估)
- 主管部门要求
- 大型新系统
- 核心系统
- 服务架构调整
- 业务量剧增
- 重大的bug修复
可测性,可量化为性能指标值
- 一般有需求文档,根据需求,需求的内容量化为性能指标值,这是我们的性能指标预期结果
- 如果无话量化,我们就没有预期性能指标值,在性能测试中测出的性能指标值,没有可对比的值,那就不知道是否满足需求的需要
开展性能测试必备条件
独立网络
- 独立的网络(为啥要独立的网络:如果性能测试时会向服务器发送大量的请求,会有大量的网络传输,可能会出现网络堵塞)
- 建议使用直连的局域网
独立环境
功能测试不能和性能测试共用环境(测试环境)
- 在做负载测试的时候,会短时间内占用大量的系统资源,如果此时有功能测试正在进行中,很可能会导致功能的不稳定或异常
- 在做压力测试的时候,会长期占用系统的资源,导致一段时间内无法稳定进行功能测试
在做性能时,需要有单独的环境,且硬件最好是和生产环境是一致的
这样性能测试最终得到系统所能承受的最大负载量会更接近在生产环境中,系统所能承受的最大负载量
性能测试步骤
性能测试准备
- 需求分析,熟悉业务:确定需要重点关注的点,如TPS、响应时间(确定需要收集的性能测试指标值)
- 明确性能测试目标(预期性能指标值)和测试范围
- 了解软件功能、架构
- 制定测试方案、测试计划,做好工作量评估
- 制定测试模型(编辑测试用例):比如负载测试,场景要如何设计
一个系统老板说去压测,但是这个系统有几百个接口
- 但是这个系统有几百个接口,你不能每个接口去压测吧,时间不允许
- 那么应该怎么去处理呢:个人理解是 先梳理业务场景,先保证核心业务,并发用户数高的业务,然后梳理业务会涉及到的接口,然后对这些接口,根据业务场景进行单接口,多接口的负载测试,压力测试(压力测试是测试稳定性的看具体情况是否需要)
搭建性能测试环境
- 技术准备:选择性能测试工具;测试方案中涉及到的技术问题;测试数据的收集方案实现;如何监控系统资源
- 被测系统环境搭建(服务器、服务版本更新、数据库数据准备)
- 网络配置
- 创建初始数据,如:测试账号(预估并发量)
性能测试的脚本
- 技术准备:选择性能测试工具;测试方案中涉及到的技术问题;测试数据的收集方案实现;如何监控系统资源
- 被测系统环境搭建(服务器、服务版本更新、数据库数据准备)
- 网络配置
- 创建初始数据,如:测试账号(预估并发量)
性能测试执行
真正开始对服务器进行性能测试
- 试运行
- 场景执行
- 收集并整理测试数据
性能测试结果分析和调优
- 分析依据:结果图表
- 分析思路:服务器硬件瓶颈>网络瓶颈>服务器os瓶颈(参数配置、数据库、web服务器)>应用瓶颈(sql语句、数据库设计、业务逻辑、算法)
- 调优
- 修改脚本或场景
- 性能回归,和之前的测试数据进行对比,是否有优化
服务器硬件瓶颈
如果性能测试环境和生产环境的硬件相差甚远,那么硬件很大程度造成了性能瓶颈,也不用去分析后面可能会导致性能瓶颈的其他原因了
性能测试报告和结果追踪
- 性能测试报告:整理调优前后的测试数据
- 性能测试问题跟踪
- 构建持久化的性能监听平台,监听线上服务器的系统资源