上期我们讲到LoaRunner性能测试场景设计实践之负载均衡技术,这期我们讲LoaRunner性能测试场景设计实践之功能测试脚本。
LoadRunner能够将GUIVuser脚本形式的功能测试脚本集成到负载测试场景中。这样就可以使用LoadRunner来测试和监控负载对应用程序功能的影响。LoadRunner可以将GUIVuser脚本形式的这些功能测试脚本集成到负载测试场景中,在QuickTest或WinRunner中设计并调试过的这些脚本可用作负载测试的基础。
在LoadRunner中运行功能测试脚本主要有以下几个优点:
1.可检查高负载对应用程序的功能带来的影响。
2.可以度量应用程序在负载下运行时,典型用户在客户端等待的响应时间(端到端的响应时间)。
3.通过GUIVuser可以度量并监控客户端/服务器系统在负载下端到端的用户响应时间。端到端的响应时间表示用户在提交请求后等待响应的总时间。端到端的响应时间包括GUI响应时间、网络和服务器响应时间,如图所示。
在QuickTest中创建用于LoadRunner测试场景中的GUI Vuser脚本时,需要遵循特定的准则以确保能够平衡集成脚本。QuickTest具有多项与LoadRunner集成设计的功能。但部分QuickTest功能可能在与LoadRunner集成时不可用。QuickTest与LoadRunner集成要注意以下几个方面。
1.事务
在一些时候为了知道服务器对某一个业务的处理能力,需要定义事务。在Vuser脚本中可以通过嵌入适当的开始和结束事务语句脚本段来定义事务。但要注意的是LoadRunner仅提供事务中数据性能信息。因此,QuickTest测试必须包括LoadRunner要使用的事务。通常在QuickTest中也使用插入开始事务和插入结束事务来插入事务。这样可以确保事务被正确地集成到LoadRunner中。
2.将集成数据与测试一起保存
QuickTest为了能与LoadRunner虚拟用户技术集成,必须生成特殊的集成文件。在默认情况下,生成这些数据的选项都是处于开启状态,但有时为了保留磁盘空间而禁用该选项。这样在录制时就要确保该选项处于开启状态。
在QuickTest中,选择Tools→Options对话框,打开Run选项卡,如图所示。在这里一定要保证Allow other Mercury products to run tests and components选项处于选中的状态,如果没有选中,则将其选中并保存设置。
3.添加语句
可以使用Services对象及其相关方法来插入与性能测试相关的语句,主要包括:
AbortGetEnvironmentAttributeLogMessageSetTransactionStatus,ThinkTime,UserDataPointStartTransaction
及EndTransaction。
4.为LoadRunner设计测试
在设计要用于LoadRunner的测试时,需要考虑以下设计准则:
LoadRunner中使用的QuickTest测试应该简单,并专门针对特定的操作。
LoadRunner无法运行嵌入式操作迭代。
请勿引用外部操作或其他外部资源,如外部数据表文件、环境变量文件和共享对象库等。
WinRunner是一个基于Windows平台,用于创建、编辑和调试GUIVuser脚本的完整开发环境。通过WinRunner可记录真实用户在应用程序中的操作。
WinRunner的GUIVuser脚本是使用TSL(MercuryInteractive的测试脚本语言)编写的。TSL是一种与C类似的高级编程语言。它结合了传统编程语言的功能和灵活性以及专为测试设计的功能。但是WinRunner中创建的Vuser脚本是不能在UNIX计算机上运行的。
同样,使用WinRunner创建GUIVuser脚本时,要注意以下几个方面:
1.插入事务和集合点
插入事务和QuickTest一样,直接使用事务函数插入开始事务与结束事务,集合点方面将Rendezvous语句插入到Vuser脚本中即可。
2.向Controller发送消息
运行场景时,Controller的“输出”窗口显示有关脚本执行情况的重要信息。除了WinRunner自动发送的消息外,还可以在每个脚本中插入向Controller发送错误消息和通知消息的语句。
error_message函数用于向Controller的“输出”窗口或Console发送错误消息。此函数的语法为:
error_message(message);
其中message为文本字符串。
output_message函数用于发送不是错误消息的特殊通知。此函数的语法为:
output_message(message);
其中message为文本字符串。
在执行场景或会话步骤间,可以识别以下对象:
某特定时刻在场景中执行任务的Vuser。
执行脚本的负载发生器。
运行Controller的计算机。
而有关Vuser和负载发生器的信息可以通过以下函数来获取:
lr_whoami:返回Vuser名称及其所属的Vuser组。
get_host_name:返回执行脚本的计算机名称。
get_master_host_name:返回运行Controller或Console的计算机名称。
在QuickTest或WinRunner中创建GUIVuser脚本后,便可以将该脚本集成到LoadRunner场景中。在将GUIVuser脚本添加到LoadRunner场景前,要注意以下几个问题:
1.每台计算机上每次只能运行一个GUIVuser。
2.请确保在运行场景前关闭QuickTest或WinRunner。
3.在Run-timeSettingsforscript设置对话框中,只有General类中的RunLogic和ThinkTime与QuickTest和WinRunner测试有关,如图所示。
接下来就是要将GUIVuser添加到LoadRunner场景中,在控制器界面,选择File→Open,在弹出的对话框中选择要添加的GUIVuser脚本。也可以选择File→New,在弹出的NewScenario对话框中点击按钮,弹出OpenTest对话框,选择要添加的GUIVuser脚本。这里有一个“文件类型”框,如图所示。对于WinRunner来说,选择“GUIScripts”文件类型。对于QuickTest来说,选择“AstraTests”文件类型。确定文件类型后,选择合适的脚本并进行添加即可。
介绍场景设计的相关内容,介绍了集合点的使用和集合点与事务的关系;IP欺骗技术在实际测试过程中的使用,特别是跨局域网的IP欺骗技术;负载均衡技术,确保测试机不出现瓶颈的情况;RTS设置技术主要需要注意每个场景都必须设置其相应的RTS设置项,不能使用缺省设置;最后介绍了路径转换技术和功能测试脚本在性能测试中的使用。