隨心蕓蕓 @ JPeanut(舊版)

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

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            43 Posts :: 0 Stories :: 54 Comments :: 0 Trackbacks

          作者:陳市明/Slipper Feng 摘自:http://www.aygfsteel.com/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 陳市明 閱讀(1622) 評論(0)  編輯  收藏 所屬分類: 基于j2ee單元測試框架介紹
          主站蜘蛛池模板: 古浪县| 建阳市| 翼城县| 甘孜| 寿宁县| 武威市| 广灵县| 延吉市| 武清区| 汪清县| 育儿| 乐都县| 平果县| 仙桃市| 长汀县| 宣化县| 昭苏县| 泸西县| 上林县| 周宁县| 盐山县| 定安县| 资溪县| 桐乡市| 阿克苏市| 镇巴县| 河东区| 临桂县| 修文县| 双城市| 辽源市| 博罗县| 汝州市| 疏勒县| 泰来县| 怀仁县| 红桥区| 宜兴市| 桐城市| 新巴尔虎左旗| 彭水|