自定义取样器
许多测试人员迟早会面临下面这个问题:假如必须要创建测试计划,而JMeter没有提供必需的取样器或监听器。例如,用户需要测试Enterprise JavaBeans应用程序。用户仍然可以使用JMeter的Java Request,它实质上是Java类,可以向其添加需要的任何逻辑。我们创建一个样本Java取样器,它将向应用程序服务器发送请求并调用会话bean。首先,我们创建package mytest和称为JBTest.javaJava的Java类:
为了使用该代码,要对它进行编译以创建jar文件myEJBTest.jar,将jar复制到JMeter classpath(如lib目录),或者将classpath位置添加到jmeter.properties 文件——其形式为:
重新启动JMeter,向测试计划添加Java Request元件,并从下拉菜单中选择mytest.EJBTest。缺省情况下,JMeter提供的是“SleepTest”和“JavaTest”。现在,我们可以向测试计划添加线程组、循环和监听器并运行测试计划。
测试数据库
Jmeter所支持的另一个功能是评价数据库服务器的性能。用户可以使用软件提供的JDBC Request元件,也可以使用脚本或Java类来创建自己的测试。例如,使用一些与前面类似的示例可以测试存储过程的调用。许多数据库优化技术都可以使用,包括使用特定供应商优化(如查询的并行处理),使用联结或索引。此外,当用多个boolean评价创建查询时,数据组织知识很有用。在处理大量数据时,应用程序中的数据库和查询优化是特别关键的,JMeter是一个可以在这类评价中提供某些评测的工具。例如,可以在数据或查询优化前后执行性能或负载测试并对结果进行比较。
我们通过创建MySQL实例的测试计划来演示样本数据库性能测量计划是如何工作的。首先,从MySQL网站下载JDBC驱动程序,并复制到/lib目录以便JMeter可以访问数据库。现在启动JMeter,创建线程组,并设置循环数和相应的线程数。添加JDBC Connection Configuration、JDBC Query Defaults和JDBC Request元件。在这些对话框中,我们需要配置数据库连接和查询。输入数据库URL值,它们的形式类似于:jdbc:mysql://hostname/databaseName,然后为JDBC Driver Class输入com.mysql.jdbc.Driver。针对这个试验,我们创建了数据库customers,它带有包含下列三个字段的customer表格:名称、地址和帐户。在Query框中键入查询,例如,从客户中选择名称。
为了使结果可视化,可以添加带有响应时间的图表,或者,如果要检验响应是否匹配特定模式,可以添加响应断言。例如,在Response Assertion中添加文本模式“Smith”。在Assertion Result窗口将显示如“Test failed, text expected to contain /Smith/”之类的错误,或者,如果由于设置错误而没有连接,则显示“Response was null”。如果测试成功,将不返回任何内容。除了图表和断言监听器,我们还可以使用Aggregate Report,它以表格的形式显示样本数、平均值、中间值和吞吐量的摘要。
结束语
JMeter是一个十分灵活的工具,它不仅能够测试HTTP服务器,而且还能够对Web services进行负载测试。有经验的开发人员可以编写自己的脚本来模拟或自定义客户端请求,或者为测试结果添加自定义的可视化效果。Web Services和SOAP取样器是JMeter的新功能,希望它们能够随着Web services而发展,在行业和开发人员中获得更广泛的认可。
使用JMeter现有的功能和它所提供的用户界面,可以模拟5个并发线程,以10和5 ms延迟点击服务器。本教程说明了该工具能够用于对Web services的响应时间进行测量的原理。例如,利用JMeter脚本,可以查找客户端的身份认证和授权。所测试的应用程序服务器和JMeter客户端都本地安装在同一个工作站,然而同样的设置也可以用于测试远程服务器。
所得到的结果和图表还不能提供有价值的性能报告;它们只能说明WebLogic Server对Web Services请求响应时间的简单分布。要了解是否实现了优化,应当在优化前后针对两个不同的服务器,或针对客户端线程变量数的不同负载来运行相同的负载测试。换句话说,只有比较的结果才具有实用价值,它能够帮助了解服务器性能,进而基于这些评测做出判断。
参考资料
查看Jakarta Apache JMeter —— 二进制发行版下载和指南。
在Dev2Dev中的产品中心访问 WebLogic Server (中文版)。
有关创建Web services的详细信息,请阅读 Programming Web Services for WebLogic Server 指南(产品文档)。
Matt Maccaux撰写的 Approaches to Performance Testing (中文版,Dev2Dev,2005年12月)对测试作了全面介绍。