Java多线程以IMS Connect V13组件自动化测试案例

本文以一个实际的项目为例,介绍了如何使用 Java 多线程编程来模拟多个用户的随机或有规律的行为。利用 Java 的多线程编程,能较好的测试产品,更早的暴露潜在的问题。

随着">信息系统的结构的日益复杂和规模的不断扩大,交易中间件在复杂系统的应用也越来越广。交易中间件作为一个中间层的系统,在接收客户端请求时,通常需要做一些负载控制和用户缓存的一些功能。对于软件测试人员来说,测试交易中间件时,避免不了模拟客户端在高负载情况下的一些有规律或随机的行为。这些测试有时是功能性验证测试 (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. 交易中间件通信过程

交易中间件端通常有侦听方法在监听客户端的连接请求,返回一个连接后并生成一个相应的客户服务进程。在接收到客户端的数据后,对数据进行分割、加密、封装成消息包。然后做分发、入队、发送等操作。

时间: 2025-01-26 22:36:42

Java多线程以IMS Connect V13组件自动化测试案例的相关文章

简介Java多线程在交易中间件测试中的应用

引言 随着信息系统的结构的日益复杂和规模的不断扩大,交易中间件在复杂系统的应用也越来越广.交易中间件 作为一个中间层的系统,在接收客户端请求时,通常需要做一些负载控制和用户缓存的一些功能.对于软件测试人员来说, 测试交易中间件时,避免不了模拟客户端在高负载情况下的一些有规律或随机的行为.这些测试有时是功能性验证测试 (Functional Verification Test),有时也涉及到性能测试 (Performance Test). 本文将介绍如何使用 Java 语言 编写多线程的自动化测试

Java多线程知识小抄集(一)

本文主要整理博主遇到的Java多线程的相关知识点,适合速记,故命名为"小抄集".本文没有特别重点,每一项针对一个多线程知识做一个概要性总结,也有一些会带一点例子,习题方便理解和记忆. 1. interrupted与isInterrupted的区别 interrupted():测试当前线程是否已经是中断状态,执行后具有状态标志清除为false的功能. isInterrupted():测试线程Thread对象是否已经是中断状态,但不清除状态标志. 方法: public static boo

Java多线程与并发库高级应用

想快速精通多线程?看这里  http://blog.chinaunix.net/uid-540802-id-4431193.html 什么是线程         线程,是程序执行流的最小单元.是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可以与同属一个进程的其他线程共享进程所拥有的全部资源,一个线程可以创建和撤销另一个线程,同一进程中的多个线程之间可以并发执行.在单个程序中同时运行多个线程完成不同的工作,称为多线程.当自己想

权威发布15个顶级Java多线程面试题及回答

在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分.如果你想获得任何股票投资银行的前台资讯职位,那么你应该准备很多关于多线程的问题.在投资银行业务中多线程和并发是一个非常受欢迎的话题,特别是电子交易发展方面相关的.他们会问面试者很多令人混淆的Java线程问题.面试官只是想确信面试者有足够的Java线程与并发方面的知识,因为候选人中有很多只浮于表面.用于直接面向市场交易的高容量和低延时的电子交易系统在本质上是并发的.下面这些是我在不同时间不同地点喜欢问的Java线程问题.我没有提供答

关于java多线程中的join方法

问题描述 关于java多线程中的join方法 1.主线程可能在子线程结束之前 结束吗?如果可能的话 举一个例子 2.如何理解join方法, 结合实际应用. 非常感谢非常感谢!!! 解决方案 关于join,参考:http://www.blogjava.net/jnbzwm/articles/330549.html 解决方案二: 主线程可能在子线程结束之前 结束吗 一般来说不可以,但是也不一定,如果子线程在执行finally中的代码,应该会等它执行完了才退出. 晕,join方法和什么"让主线程等子线

java的setlayout(null),选项卡组件不显示

问题描述 java的setlayout(null),选项卡组件不显示 我这里有一个继承jpanel的类 其中setlayout(null),我添加了一个跑马灯的组件和一个选项卡组件,并且我都用了setbounds,可是我的跑马灯能够正常显示而选项卡不能显示如果把setlayout删除则跑马灯和选项卡都能显示出来,可是这时候的位置是固定的无法进行修改我把代码拷贝一下请大神们修改一下,谢谢 package gui.logon; import gui.frame.SystemFrame; import

实战Java多线程编程之不提倡的方法

编程|多线程 不提倡使用的方法是为支持向后兼容性而保留的那些方法,它们在以后的版本中可能出现,也可能不出现.Java 多线程支持在版本 1.1 和版本 1.2 中做了重大修订,stop().suspend() 和 resume() 函数已不提倡使用.这些函数在 JVM 中可能引入微妙的错误.虽然函数名可能听起来很诱人,但请抵制诱惑不要使用它们. 调试线程化的程序 在线程化的程序中,可能发生的某些常见而讨厌的情况是死锁.活锁.内存损坏和资源耗尽. 死锁 死锁可能是多线程程序最常见的问题.当一个线程

Java多线程编程详解

编程|多线程|详解 一:理解多线程多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立. 线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单.多个线程的执行是并发的,也就是在逻辑上"同时",而不管是否是物理上的"同时".如果系统只有一个CPU,那么真正的"同时"是不可

Java多线程程序设计

程序|多线程|设计 一:理解多线程 多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立. 线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单. 多个线程的执行是并发的,也就是在逻辑上"同时",而不管是否是物理上的"同时".如果系统只有一个CPU,那么真正的"同时"是