1.1.1 本文全面的讲述了 IBM Rational 最新的性能测试与优化方案。
1 性能测试的挑战
性能测试是为描述测试对象与性能相关的特征,并对其进行评价而实施和执行的一类测试,如描述和评价测试对象的响应时间、吞吐量,以及操作的可靠性和限制等特征。一般可以使用被测系统的动态监测报告、响应时间及吞吐量报告、百分位图报告和各种性能比较报告,对被测对象进行性能评测。
一般来说,在性能测试员进行系统性能测试的过程中主要面临以下挑战:
性能测试脚本的能力:它包括性能测试员构造各种复杂性能测试场景的能力和测试脚本的扩展和维护能力。
测试脚本的参数化能力:性能测试总是要模拟大批量虚拟用户对被测系统进行各种操作,因此测试脚本的参数化能力和上下文数据的关联能力,便成了性能测试员进行性能测试时要解决的基本问题。
构建各种负载模型的能力:准确模拟被测系统的真实负载情况,是确保性能测试有效、准确的前提。
被测对象的性能监控能力:它为性能测试员进行各种性能分析、定位问题和解决问题提供保证。
性能测试结果的分析能力:性能测试员需要使用各种报告和报表,对性能测试过程中的各种性能数据进行有效分析,做到正确认识被测系统的各项性能指标。
因此,优秀的性能测试工具,一定要满足以上各种性能测试能力要求,使得性能测试员在测试工具的帮助下,能够轻松完成各种性能测试。IBM最新推出的性能测试解决方案:IBM Rational Performance Tester(简称RPT),正是很多性能测试员梦寐以求的,能够为其提供以上各种能力,帮助其轻松完成各种WEB应用系统性能测试的优秀测试工具之一。
2 IBM最新自动化性能测试解决方案:Rational Performance Tester
IBM Rational Performance Tester(简称RPT)是IBM基于Eclipse平台及开源的测试及监控框架Hyades,开发出来的最新性能测试解决方案,总体架构如图一所示。它可以有效地帮助测试人员和性能工程师验证系统的性能,识别和解决各种性能问题。它适用于性能测试人员和性能优化人员,用于开发团队在部署基于HTTP和HTTPs通信协议的Web应用程序前,验证其可扩展性、性能和可靠性。在为性能测试员和性能优化人员提供了前面所提到的各种性能测试能力以外,它还提供了可视化编辑器,一方面可以使新的测试人员可以在无需培训和编程的情况下,即可快速上手完成性能测试;另一方面,也为需要高级分析和自定义选项的专家级测试人员,提供了对丰富的测试信息的访问和定制能力、自定义 Java 代码插入执行能力、自动检测和处理可变数据的能力。
图一、IBM Rational Performance Tester体系架构示意图
此外,通过和IBM Rational的整个软件平台的完美集成,它第一次为基于Eclipse的Web和J2EE应用系统的性能测试人员,提供了和开发人员同样的操作平台,真正实现了一个平台、统一软件开发团队和性能测试团队的能力。
3 使用IBM RPT轻松完成自动化性能测试
3.1 基于与开发人员同样的平台进行性能测试脚本录制
基于开发人员的同一开发平台(Eclipse),如图二所示,性能测试人员使用RPT进行软件性能测试时,只要在开发人员工作的Eclipse环境中建立性能测试项目(其实它也是一种Java项目),就会自动打开测试透视图,立即拥有专业的自动化性能测试工具所拥有的全部功能。
图二、IBM Rational Performance Test工作界面
在RPT的测试脚本的实现过程中,使用了基于录制的脚本生成技术。当完成性能测试的测试计划和测试设计以后,如图三所示,性能测试员只要在性能测试工具条上选择测试脚本录制按钮,在弹出的"HTTP代理记录器"窗口输入测试脚本名称,就会自动启动测试脚本录制过程。
图三、进行性能测试脚本录制
如图四所示,性能测试工具RPT会自动打开浏览器(支持的浏览器包括IE,Netscape,Mozilla)。此时,性能测试员应根据提示,首先删除临时文件,然后在浏览器中输入被测Web应用的网址,按照测试用例的设计步骤浏览Web应用程序,完成测试脚本录制。
图四、性能测试脚本录制的注意事项
脚本录制和生成架构
如上图所示,RPT使用位于代理控制器上的记录器,完成性能测试过程原始协议数据的录制工作,并将其存在跟踪记录文件(.recmodel和.rec文件)中。然后,RPT测试生成器会对跟踪记录文件进行分析,生成测试脚本(.testsuite文件)。RPT提供了图形化的测试脚本编辑器,如图五所示,性能测试员可以通过图形界面,显示测试脚本录制过程中浏览器和Web应用服务器间所有的HTTP/HTTPs协议信息。在可视化的测试脚本编辑器中,性能测试员可以察看具体的消息协议数据,包括请求内容、响应头和响应内容,帮助测试人员理解测试脚本;也可以对指定的消息进行编辑、修改,添加定制的数据关联或进行脚本参数化;还可以加入定制的Java脚本,进行动态验证或控制测试执行逻辑。
图五、测试脚本显示窗口
3.2 使用RPT轻松实现性能测试脚本的高级定制能力
RPT提供了灵活的测试脚本编辑能力、数据驱动的性能测试能力和上下文数据智能关联及定制能力。
3.2.1 测试脚本编辑和定制能力
在性能测试脚本的录制完成后,如图六所示,基于测试脚本的图形化界面,测试员可以轻松完成以下各种定制工作:
选取测试消息,通过更改其详细的标题,建立更易于理解和重用的测试脚本;
通过在测试脚本中添加自定义的HTTP请求,循环和条件语句,测试员可以随意控制测试脚本的执行过程。循环语句可以控制指定消息的执行次数,条件语句(IF/ELSE语句块)可以实现根据上一消息的响应内容,决定测试脚本的执行路径;
通过在测试脚本中添加自定义的Java代码,测试员可以实现对消息返回内容的验证、为后面的消息构造动态消息数据或执行各种特殊任务;
通过将一些消息组织成相应的事务,使得整个测试脚本更加容易理解,同时可以更方便的对测试结果进行分析;
通过启用页面标题验证点、响应代码验证点和响应包大小验证点,RPT会自动完成对测试执行过程中的页面标题、消息响应代码和数据包大小的验证,生成各种测试验证报告。
图六、PRT测试脚本的能力
通过以上内容,我们可以充分领略到RPT为性能测试员提供的强大性能测试脚本能力。更难得的是,几乎所有这些能力都可以通过图形界面,在轻松的鼠标点击声中得以实现。
3.2.2 数据驱动的性能测试能力及测试数据的智能关联能力
性能测试的主要任务就是模拟一定数量的虚拟用户,按造指定的负载模型对被测系统进行各种操作,完成测试。因此,性能测试脚本的参数化能力和消息上下文数据的智能关联能力,就会成为性能测试员工作中的一个重要任务。
RPT在测试脚本录制和生成过程中,能够按照最佳实践经验,自动完成测试数据在不同消息间的智能关联(关联数据用紫色标识)。如图七所示,为了性能测试员更好的理解测试数据的来源,还可以选择指定的测试关联数据,右键菜单转至指定关联的数据源。此外,测试员还可以通过图形界面,自己建立数据关联关系,实现各种动态数据关联需求。
图六、PRT测试脚本的能力
图七、测试脚本中消息上下文中数据的智能关联 RPT会自动标识可能进行参数化的动态数据(用绿色标识),测试员可以通过右键选取指定的数据,如图八所示,选择用数据池变量替换,从而实现测试脚本的参数化任务。RPT使用绿的底色标识指定的变量由数据池中读取。当然,在测试员可以使用数据池之前,如图九所示,首先必须在性能测试项目中创建所需的数据池,数据池中的数据可以从外部文件中导入,也可以在数据池的数据编辑窗口中进行编辑。
图八、测试脚本参数化
更多精彩内容请访问 www.17testing.com