随心芸芸 @ JPeanut(旧版)

搬迁至 http://www.17m.net.cn/

BlogJava 首页 新随笔 联系 聚合 管理
  43 Posts :: 0 Stories :: 54 Comments :: 0 Trackbacks

作者:陈市明/Slipper Feng 摘自:http://www.blogjava.net/JPeanut

       现在越来越多的系统不是独立运行的,会和其他系统进行交互。交互的方式又很多,从传统的页面 post 到现在的 jms ws 等。这个就给测试带来比较大的难度,特别是互相通讯的系统不属于同一个公司。测试人员很难在一个办公室里面进行对项目完整的测试,更何况对方系统有的时候是没有测试小组的,只有开发人员兼职做测试。

       我这里主要是解决 jms 通讯的单元测试。在我们公司, jms 的传输的数据密文传输(因为历史原因被称为电文)。很多情况下我们都是通过 mock 来模拟队列和电文的,我这里是通过重新写 jms mq jms message 来实现的,所有的数据不是通过模拟的东西,而是进入真实的队列中。

   设计思想

模拟 MQ JMS 的工作原理,编写一个本地的 MQ 和消息发送接收系统

在内存中直接将替换 aop 容器中的 MQ JMS 替换为本地的 MQ 和我们的消息处理

       具体设计

       1 )电文接收

新电文系统接收电文原理.jpg

图表 1 新电文系统接收电文原理

新电文接收系统:其他系统如果要发送信息给我们的系统,是先讲电文发送给我们的 uecp 平台,然后 uecp 讲电文存放倒 MQ 中,我们项目对从 MQ 中读出电文,然后根据配据配置调用响应的 Service ,最后,一般情况, service 都是来操作数据库进行增删改动作。

新电文平台的几大特点:

Ø         电文是异步传输

Ø         电文的是有时序的

Ø         一般来说,一个应用只有一个电文接收队列


新电文接收的单元测试原理.jpg

图表 2 新电文接收的单元测试原理

针对新电文系统接收的原理和特点,可以分析出:

Ø         电文必须改成本地的的,单元测试做不到异步电文的自动化回归

Ø         应用只有一个队列,我们只需要封装下 ArrayList 就可以作为队列了

Ø         为了修改最小话, IBMMQProxy 的实现改成 JunitMessagingServerProxy ,然后,再通过 ioc 注入 junit MQ Junit JMS

Ø         因为在 uecp 中可以看到电文的明文的,所以, Test***Action 发送电文也是明码,可以直接把 uecp 中的电文 copy 到程序中


  2)电文发送
新电文系统发送电文原理.jpg

图表3新电文系统发送电文原理

新电文发送系统:我们的系统如果对其他多个系统进行交互,会对几个队列分别发送数据,uecp读取这些队列将数据准确发送到各个系统中。

新电文发送的单元测试原理.jpg

图表4新电文发送的单元测试原理

新电文发送的单元测试原理比较简单,就是Test×××Action调用会引起发送电文的代码,等运行完,就去查看队列里面是不是我们预期发送的电文。

通过这样的方式来进行对JMS的电文系统进行单元测试,可以做到自动化的回归测试。因为实现电文的测试功能是按照框架的插件协议编写,在我们的系统中只要项目TC注册一下电文插件就可以使用其功能,原来已有的测试脚本无需修改。后面还会后续开发关于socket和ws的传输方式的测试插件。
posted on 2006-04-20 19:45 陈市明 阅读(1609) 评论(0)  编辑  收藏 所属分类: 基于j2ee单元测试框架介绍

只有注册用户登录后才能发表评论。


网站导航: