一个金融机构的近期项目需要交付一个中间件基础设施,用于支持增长的应用程序列表,这些应用程序需要访问企业的核心金融系统。该体系结构的方向是要求所有的核心金融系统请求都经由该中间件解决方案,该方案使用基于 XML 的 IFX 消息标准。图 1 显示了与第一个应用程序有关的中间件基础设施(以粗体显示),以及未来的应用程序和后端系统(以灰色显示)。
要使得该高可见性项目获得认可,必须演示在各种负载之下的最佳性能。这对于响应时间敏感的客户来说尤为重要,例如联络中心的 CRM 应用程序。另一个需要考虑的问题是,当新的应用程序出现在中间件的“前面”和“后面”时(图 1 中显示了一个位于中间件“后面”的企业和消费者信用卡服务系统的未来实现),需要重用已选择的性能测试方法。
无用户接口
指定使用中间件基础设施的第一个应用程序是存款处理应用程序,它预定在中间件项目完成之后实现。这意味着测试团队不得不在没有用户接口可以准备和提交中间件请求的情况下模拟生产负载。
有限预算
金融机构并没有合适的工具集来支持中间件性能测试。因此,这里的挑战是确信地报告已观察到的中间件性能特性,同时将用于工具和准备工作的预算保持最小。
使用 JMeter 救急
通过研究各种可用的开放源代码测试工具,发现 Apache JMeter 可以支持中间件性能测试需求。 JMeter 提供一个基于 GUI 的应用程序,用于设计和执行多种可重用的测试计划。JMeter 还支持以 XML 格式捕捉测试结果,用于测试后的统计分析。这两个特性帮助测试团队开发和文档化可重复的测试结果,从而满足“高可见性”的挑战。
许多开放源代码的测试工具是设计用于测试 Web 站点的,并期望测试能够模拟用户与一个或者多个页面或表单的交互。因为在测试中间件解决方案时,应用程序的 Web 接口并不可用,所以已选择的工具必须在没有浏览器交互的情况下支持基于 XML 的消息。JMeter 的 SOAP/XML 请求组件满足该要求。
最后,由于 JMeter 是 Apache 软件基金会的产品,这个事实意味着该项目并不要求支付商业测试工具的许可证费用,从而满足“有限预算”的条件。
设计测试脚本
性能测试的目标是,在各种并发负载条件下提交随机选择的、预先定义的、IFX 编码的请求消息,并记录接收到 IFX 编码的响应的耗用时间(elapsed time)。下面五个 JMeter 测试计划组件用于准备性能测试脚本。
测试计划
这是用于测试的主要组件。在这里,测试名是根据项目的命名约定指定的。同时,选择 Functional Test Mode,以便在由 View Results Tree 管理的测试结果中捕获完整的 IFX 编码的响应。
HTTP Header Manager
该组件用于指定中间件所需要的 HTTP 头的值。发送到中间件的每个 IFX 编码的请求都将包括这些 HTTP 头的值。
Thread Group
该组件按照测试计划的要求进行重复,以模拟一个特定数目的并发用户。例如,模拟 5 个并发用户,需要指定 5 个 Thread Group。