隨心蕓蕓 @ JPeanut(舊版)

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

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

          作者:陳市明/Slipper Feng 摘自:http://www.aygfsteel.com/JPeanut

          ?????? 現(xiàn)在越來越多的系統(tǒng)不是獨(dú)立運(yùn)行的,會(huì)和其他系統(tǒng)進(jìn)行交互。交互的方式又很多,從傳統(tǒng)的頁面 post 到現(xiàn)在的 jms ws 等。這個(gè)就給測(cè)試帶來比較大的難度,特別是互相通訊的系統(tǒng)不屬于同一個(gè)公司。測(cè)試人員很難在一個(gè)辦公室里面進(jìn)行對(duì)項(xiàng)目完整的測(cè)試,更何況對(duì)方系統(tǒng)有的時(shí)候是沒有測(cè)試小組的,只有開發(fā)人員兼職做測(cè)試。

          ?????? 我這里主要是解決 jms 通訊的單元測(cè)試。在我們公司, jms 的傳輸?shù)臄?shù)據(jù)密文傳輸(因?yàn)闅v史原因被稱為電文)。很多情況下我們都是通過 mock 來模擬隊(duì)列和電文的,我這里是通過重新寫 jms mq jms message 來實(shí)現(xiàn)的,所有的數(shù)據(jù)不是通過模擬的東西,而是進(jìn)入真實(shí)的隊(duì)列中。

          ?? 設(shè)計(jì)思想

          模擬 MQ JMS 的工作原理,編寫一個(gè)本地的 MQ 和消息發(fā)送接收系統(tǒng)

          在內(nèi)存中直接將替換 aop 容器中的 MQ JMS 替換為本地的 MQ 和我們的消息處理

          ?????? 具體設(shè)計(jì)

          ?????? 1 )電文接收

          新電文系統(tǒng)接收電文原理.jpg

          圖表 1 新電文系統(tǒng)接收電文原理

          新電文接收系統(tǒng):其他系統(tǒng)如果要發(fā)送信息給我們的系統(tǒng),是先講電文發(fā)送給我們的 uecp 平臺(tái),然后 uecp 講電文存放倒 MQ 中,我們項(xiàng)目對(duì)從 MQ 中讀出電文,然后根據(jù)配據(jù)配置調(diào)用響應(yīng)的 Service ,最后,一般情況, service 都是來操作數(shù)據(jù)庫進(jìn)行增刪改動(dòng)作。

          新電文平臺(tái)的幾大特點(diǎn):

          ????????? 電文是異步傳輸

          ????????? 電文的是有時(shí)序的

          ????????? 一般來說,一個(gè)應(yīng)用只有一個(gè)電文接收隊(duì)列


          新電文接收的單元測(cè)試原理.jpg

          圖表 2 新電文接收的單元測(cè)試原理

          針對(duì)新電文系統(tǒng)接收的原理和特點(diǎn),可以分析出:

          ????????? 電文必須改成本地的的,單元測(cè)試做不到異步電文的自動(dòng)化回歸

          ????????? 應(yīng)用只有一個(gè)隊(duì)列,我們只需要封裝下 ArrayList 就可以作為隊(duì)列了

          ????????? 為了修改最小話, IBMMQProxy 的實(shí)現(xiàn)改成 JunitMessagingServerProxy ,然后,再通過 ioc 注入 junit MQ Junit JMS

          ????????? 因?yàn)樵?/span> uecp 中可以看到電文的明文的,所以, Test***Action 發(fā)送電文也是明碼,可以直接把 uecp 中的電文 copy 到程序中


          ? 2)電文發(fā)送
          新電文系統(tǒng)發(fā)送電文原理.jpg

          圖表3新電文系統(tǒng)發(fā)送電文原理

          新電文發(fā)送系統(tǒng):我們的系統(tǒng)如果對(duì)其他多個(gè)系統(tǒng)進(jìn)行交互,會(huì)對(duì)幾個(gè)隊(duì)列分別發(fā)送數(shù)據(jù),uecp讀取這些隊(duì)列將數(shù)據(jù)準(zhǔn)確發(fā)送到各個(gè)系統(tǒng)中。

          新電文發(fā)送的單元測(cè)試原理.jpg

          圖表4新電文發(fā)送的單元測(cè)試原理

          新電文發(fā)送的單元測(cè)試原理比較簡單,就是Test×××Action調(diào)用會(huì)引起發(fā)送電文的代碼,等運(yùn)行完,就去查看隊(duì)列里面是不是我們預(yù)期發(fā)送的電文。

          通過這樣的方式來進(jìn)行對(duì)JMS的電文系統(tǒng)進(jìn)行單元測(cè)試,可以做到自動(dòng)化的回歸測(cè)試。因?yàn)閷?shí)現(xiàn)電文的測(cè)試功能是按照框架的插件協(xié)議編寫,在我們的系統(tǒng)中只要項(xiàng)目TC注冊(cè)一下電文插件就可以使用其功能,原來已有的測(cè)試腳本無需修改。后面還會(huì)后續(xù)開發(fā)關(guān)于socket和ws的傳輸方式的測(cè)試插件。
          posted on 2006-04-20 19:45 陳市明 閱讀(1628) 評(píng)論(0)  編輯  收藏 所屬分類: 基于j2ee單元測(cè)試框架介紹
          主站蜘蛛池模板: 贺兰县| 明光市| 永靖县| 施秉县| 湘潭市| 铁岭市| 象州县| 江阴市| 阜康市| 黄山市| 四会市| 忻城县| 古蔺县| 台山市| 巨野县| 焦作市| 高唐县| 高密市| 监利县| 丹阳市| 历史| 华池县| 修文县| 谷城县| 诸暨市| 宜兰县| 昌都县| 通山县| 荃湾区| 桓台县| 军事| 通榆县| 阆中市| 西青区| 南京市| 勃利县| 南部县| 万山特区| 邮箱| 平阳县| 龙南县|