隨心蕓蕓 @ 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單元測試框架介紹
          主站蜘蛛池模板: 镇宁| 陆良县| 遵化市| 郸城县| 天峻县| 济南市| 阳信县| 清远市| 新邵县| 彰武县| 科技| 亚东县| 隆昌县| 东海县| 湘西| 霍山县| 晋中市| 德昌县| 深州市| 镇坪县| 文水县| 渝中区| 泽普县| 象山县| 渝北区| 格尔木市| 嫩江县| 济宁市| 自贡市| 宾阳县| 梓潼县| 海南省| 垣曲县| 万全县| 嘉善县| 托里县| 会理县| 绍兴市| 溧阳市| 达孜县| 扶沟县|