引言
随着信息系统的结构的日益复杂和规模的不断扩大,交易中间件在复杂系统的应用也越来越广。交易中间件 作为一个中间层的系统,在接收客户端请求时,通常需要做一些负载控制和用户缓存的一些功能。对于软件测试人员来说, 测试交易中间件时,避免不了模拟客户端在高负载情况下的一些有规律或随机的行为。这些测试有时是功能性验证测试 (Functional Verification Test),有时也涉及到性能测试 (Performance Test)。
本文将介绍如何使用 Java 语言 编写多线程的自动化测试脚本,并且使用线程池模拟一些特殊的有规律的测试场景。
本文首先会简单的介绍交易中 间件及 Java 多线程编程的概念。接着提出项目中遇到的问题。然后就碰到的问题,使用 Java 多线程技术模拟测试场景。 解决这个问题后,就类似的问题提出推广的思路。
本示例的必备条件
Java 的多线程应用范围很广,交易中 间件的种类也有许多。本文 JDK 的版本是 JDK5,原因是 JDK5 中加入了比较丰富的多线程并发工具。目前,JDK 的最新版 本是 JDK7,其中又增加了许多工具包括 Phaser、ThreadLocalRandom、ForkJoinPool、以及 TransferQueue 等,但是如果 掌握了 JDK5 的多线程工具,对 JDK7 的工具也一定不会陌生了。
本文的交易中间件是以 IBM Information Management System(IMS)的 TM 为示例,这个示例是为您创建一个学习的场景,当然 Java 的多线程应用的范围非常广泛 ,不限于这一种交易中间件。在本文的推广部分,也另外假设了一个场景,并加以实现。
如果您也需要以 IMS TM 来测试,请确保提供以下的测试环境。
需要在 Windows 上安装的软件:
JDK 1.5(或者更新的版本)
Rational Functional Tester V7.0(或者更新的版本)
需要在 IBM z/OS 上安装的环境:
IMS Version 9 (或者更新的版本)
IMS Connect Version 9 (或者 更新的版本)
OTMA
TCP/IP
概念介绍
交易中间件
中间件的产品种类很多,根据中间件 在系统中所起的作用和采用的技术不同,大致划分为五大类:数据库中间件 (Database Middleware,DM)、远程过程调用中 间件 (Remote Procedure Call, RPC)、基于对象请求代理 (Object Request Broker, ORB)、中间件与交易中间件 ( Transaction Processing Monitor, TPM, 也称事务处理中间件 )。
交易中间件是一种复杂的中间件产品,通常是在 负载的环境下运用分布式应用的速度和可靠性来实现的。交易中间件向用户提供一系列的服务,包括通信服务、日志服务、 系统服务和交易服务等。
交易中间件的通信主要是基于 TCP/IP 的 socket 技术和基于消息传递与排队机制实现的 ,其通信的过程如图 1 所示:
图 1. 交易中间件通信过程
交易中间件端通常有侦听方法在监听客户端 的连接请求,返回一个连接后并生成一个相应的客户服务进程。在接收到客户端的数据后,对数据进行分割、加密、封装成 消息包。然后做分发、入队、发送等操作。