(1)确定问题

根据测试结果,确定系统是否存在问题,对问题进行正确定位,重点是发现系统的瓶颈。通常,确定系统问题从下面几个方面入手:

  • 应用程序代码:很多程序的性能问题是写出来的,因此先做代码review
  • 数据库配置:数据库配置经常会引起整个系统运行缓慢,一些诸如Oracle的大型数据库,都需要DBA进行正确的参数调整才能投产
  • 操作系统配置:操作系统配置不合理也可能引起系统瓶颈
  • 硬件设置:磁盘速度、内存大小等都是容易引起瓶颈的原因,因此这些都是分析重点
  • 网络:网络负载过重会导致网络冲突和网络延迟

(2)确定原因

确定原因很大程度上靠的是个人经验,涉及的知识有操作系统、数据库、网络、程序开发等

  • 问题的影响是什么,响应时间还是吞吐量,或者其他问题
  • 是大多数用户还是少数用户遇到了问题?如果是少数用户,这几个用户与其他用户的操作有什么不同
  • 系统资源监控的结果是否正常,CPU的使用是否到了极限?I/O情况如何?
  • 问题是否集中在某一类模块中?
  • 是客户端还是服务器出现问题?
  • 系统硬件配置是否够用?
  • 是否实际负载超过了系统的负载能力?
  • 是否未对系统进行优化?

通过这些分析以及一些具体系统相关的问题,可以对系统瓶颈有更深入的了解,进而分析出真正的原因。

(3)确定调整目标和解决方案

在分析出问题的原因后,首先要确定调整目标,然后设计解决方案,确定调整目标的主要作用是明确何时停止调整系统,否则工作将永无尽头。

每个系统都有不同的特点,因此调整目标可能不同。例如,下面这些都是系统的调整目标:

  • 提高系统吞吐量
  • 缩短响应时间
  • 更好的支持并发

设计解决方案的主要依据就是这些调整目标,有了明确的方案和目标,就可以进行后见面的工作。

(4)测试解决方案

实施解决方案后,就要对方案进行测试。可以使用以前的测试用例来进行测试,验证系统是否解决了性能问题。测试解决方案尽量在仿真环境下进行,因为再生产环境下可能带来破坏,除非充分估计了测试风险,并且准备了充分的补救方案。

(5)分析调整结果

性能调整的最后一步是分析调整结果,如果没有解决问题,则要重复前面的工作。在测试系统调整方案过程中,要经常分析所做的工作,例如没能准确定位问题或者调整方案不正确,预期目标可能不会达到,尽早发现这些错误可以使工作早些回到正确的轨道上来。

分析调整结果主要考虑下面问题:

  • 系统调整是否达到或者超出了预定目标?
  • 系统是整体性能得到了改善,还是以牺牲某部分性能来解决问题的?
  • 调整是否可以结束了?

最后,如果达到了预期目标,调整工作就基本结束了。

 

要想做好性能测试,一定不要拘泥于压力测试、负载测试、强度测试等名词。应该重点关注如何通过性能测试来发现系统的性能问题,关注系统的性能目标与节约成本。