性能测试方法论
1. SEI负载测试计划过程
目标:产生一个清晰、好理解、可验证的负载测试计划
内容:关注6个区域:目标、用户、用例、生产环境、测试环境、测试场景
工具:IBM、HP、OpenSource工具都支持。需有文档配合
2. RBI方法
目标:快速识别性能瓶颈
内容:重点测试“吞吐量”指标,因为RBI认定80%的系统性能瓶颈由吞吐量造成。
按照网络、硬件、数据库、应用服务器、代码的顺序自上而下分析性能
工具:IBM、HP、OpenSource工具都支持。需使用分析模块、根据Weblogic、Oracle区别有专门的工具实现RBI。
3. 性能下降曲线分析法
目标:性能随着用户数的增加而出现下降趋势的曲线分析、查看性能下降的环境点与上下文。确定性能阀值。
内容:通过单用户区域、性能平坦区域、压力区域、性能拐点进行监控和分析。
工具:IBM、HP、OpenSource工具都支持。IBM报表功能更强。
4. HP(LoadRuner)性能分析法
特点:侧重于该厂商的性能分析方法、主要体现在需求收集、VU脚本。
缺点:没有对测试计划阶段、测试设计阶段的具体行为、方法、目的进行描述。方法局限于LoadRuner产品的特性上。不能通用。
5. IBM(Rational UP)软件测试方法
特点:软件产品生命周期RUP的实现、侧重于迭代测试、宽广的方法论。可适合任意测试环境及方法、工具。
缺点:需要根据测试环境进行剪裁、难以掌握、但掌握后非常成熟、高品质。
工具:涉及到IBM Rational 测试环境的所有软件、功能强大。
6. PTGM性能测试模型
内容:一个非常适合行业用户(电力、金融、政务、制造)的性能测试过程模型。规范化的测试模型、每个环节都做到迭代测试、每一个过程的工作产品明显可察、测试流程、测试上下文方面很优秀。包括以下环节:前期准备、工具引入、测试计划、测试设计与开发、测试执行与管理、测试分析。
工具:可以使用任意商业工具全新部署测试流程、不限于任何厂商工具的局限、也可以使用部分工具即可完成整个流程、或结合自己需要基于OpenSource工具进行定制。个人倾向使用多个产品的整合、综合使用、扬长避短。
性能测试方法
1. 性能测试
性能测试方法通过模拟生产运行的业务压力量和使用场景组合测试性能是否能够满足需要。具备三个特点:
(1) 这种方法的目的是验证系统是否具有系统宣称具有的能力。
(2) 这种方法需要事先了解被测试系统典型场景、并确定性能目标。
(3) 这种方法要求在已确定的环境下运行
使用IBM Rational Performance Tester、HP Mercury LoadRuner、OpenSTA、Apache ab、Jmeter、QALoad 、TagUnit、Java Test Runner。
2. 负载测试
负载测试用来测定系统饱和状态、确定阀值。其特点有:
(1) 这种方法的目的是找到系统处理能力的极限;通过“检测、加压、阀值”手段找到如“响应时间不超过10秒”,“服务器平均CPU利用率低于65%”等指标。
(2) 这种性能测试方法需要在给定的测试环境下进行,通常也需要考虑被测系统的业务压力量和典型场景、另外HP Mercury LoadRuner在使用该方法进行“加压”的时候必须选择典型场景。
(3) 这种性能测试方法一般用来了解系统的性能容量,或者是配合性能调优的时候来使用。特别是该项目的Weblogic Server和Oracle数据库的性能调优。
3. 压力测试
压力测试方法测试目标系统在一定饱和状态下,例如CPU、内存等在饱和状态下、系统能够处理的session的能力,以及系统是否会出现错误。该方法需要在系统cache调优与pool优化方面着手。该方法具备以下特点:
(1) 该方法的目的是检查系统处于压力情况下的,应用的表现。如增加VU数量、节点数量、并发用户数量等使应用系统的资源使用保持一定的水平,这种方法的主要目的是检验此时的应用表现,重点在于有无错误信息产生,系统对应用的响应时间等。
(2) 该方法通过模拟负载在实现压力。这种模拟需要考虑的层面很多、首先、模拟必须是有效的,我的经验是需要结合业务系统和软件架构来定制模拟指标、我测试过一些国内生产的压力测试工具、他们使用通用的指标来考量、造成很多信息反馈有很大的水分。需要考虑的层面如:Oracle I/O、JVM GC、Conn Pool等。
(3) 该方法还可以测试系统的稳定性。这里的技巧在于“什么样的平台定义一个多长的压力测试时间让其稳定运行才是科学的?”