金 華, 賈怡菁, 陳懿淵
(中海信息系統(tǒng)有限公司,上海200135)
迄今,越來越多的企業(yè)開始采用分布式系統(tǒng)架構(gòu)來構(gòu)建自己的關(guān)鍵企業(yè)應(yīng)用系統(tǒng)。此趨勢(shì)是若干因素共同促進(jìn)的結(jié)果。
1.依托多年來軟件工程發(fā)展所積累的經(jīng)驗(yàn)、方法及各種架構(gòu)模式。(如OO/MDD/MDA等),飛速發(fā)展變化的企業(yè)生產(chǎn)模式需要新的方法論來促進(jìn)更加高效的應(yīng)用系統(tǒng)構(gòu)建模式。
2.互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展帶來了前所未有的分布式系統(tǒng)的交互能力,也逐漸成為了信息系統(tǒng)建設(shè)標(biāo)準(zhǔn)化的基礎(chǔ)。
分布式系統(tǒng)往往具有交互依賴復(fù)雜、交互消息協(xié)議類型眾多及消息中間件種類繁多等特點(diǎn)(見圖1)。
因此,針對(duì)采用分布式系統(tǒng)進(jìn)行集成測(cè)試時(shí)會(huì)面臨無可操作的圖形用戶界面、模塊接口關(guān)系及消息格式復(fù)雜、缺乏統(tǒng)一有效的測(cè)試手段、單元測(cè)試和集成測(cè)試之間存在鴻溝以及測(cè)試環(huán)境構(gòu)建費(fèi)時(shí)費(fèi)力難以平衡質(zhì)量和進(jìn)度等諸多問題,在分析分布式系統(tǒng)集成測(cè)試復(fù)雜性的基礎(chǔ)上,通過深入研究IBM Rational集成測(cè)試工具套件,給出了符合航運(yùn)信息系統(tǒng)應(yīng)用特點(diǎn)的系統(tǒng)解決方案。
圖1 分布式系統(tǒng)特點(diǎn)
集成測(cè)試(也叫組裝測(cè)試或聯(lián)合測(cè)試)是指在單元測(cè)試的基礎(chǔ)上,將所有模塊按照設(shè)計(jì)要求組裝成為子系統(tǒng)或系統(tǒng),進(jìn)行集成測(cè)試。實(shí)踐表明,一些模塊雖然可以單獨(dú)工作,但并不能保證連接起來也能正常工作。程序在某些局部反映不出來的問題,很可能在全局上暴露出來,影響系統(tǒng)整體功能的實(shí)現(xiàn)。與傳統(tǒng)的信息系統(tǒng)集成測(cè)試不同,采用全新的分布式體系架構(gòu)的信息系統(tǒng)在集成測(cè)試過程中通常會(huì)遇到以下問題。
與傳統(tǒng)的集成測(cè)試過程不同,分布式應(yīng)用系統(tǒng)的測(cè)試是重點(diǎn)圍繞系統(tǒng)底層各個(gè)組件、模塊及子系統(tǒng)間的接口關(guān)系進(jìn)行的,通過消息傳遞判定接口間的通信是否正確。這些接口無法直觀地通過系統(tǒng)界面的操作進(jìn)行測(cè)試。因此,如果不能對(duì)模塊接口之間復(fù)雜的接口關(guān)系進(jìn)行高覆蓋率的測(cè)試,那么測(cè)試結(jié)果所能發(fā)現(xiàn)的缺陷只是浮在問題表面的冰山一角(見圖2)。
分布式應(yīng)用系統(tǒng)的各個(gè)模塊之間通信的消息的格式復(fù)雜多樣,常見的有HTTP、X ML、SOAP、File、JSON、REST、二進(jìn)制、JMS、Base64等幾種類型。這就要求測(cè)試人員必須熟悉每種消息的格式以及針對(duì)此類消息特有的測(cè)試方法;必須為每種消息構(gòu)建獨(dú)立的測(cè)試腳本。因此,測(cè)試工作難度大、復(fù)雜性高,不利于統(tǒng)一有效的執(zhí)行和管理。
在分布式應(yīng)用系統(tǒng)的測(cè)試過程中,往往會(huì)碰到這樣的問題:各子系統(tǒng)和模塊在獨(dú)立開發(fā)與單元測(cè)試階段進(jìn)行的都十分順利,模塊本身的質(zhì)量也可以保證,但進(jìn)行到集成測(cè)試階段,由于各模塊和組件之間的消息契約十分復(fù)雜、依賴關(guān)系眾多,系統(tǒng)與系統(tǒng)之間在做聯(lián)調(diào)測(cè)試時(shí)容易出現(xiàn)各種各樣的問題,導(dǎo)致集成后的軟件系統(tǒng)質(zhì)量不可控,在運(yùn)行期間持續(xù)暴露各種各樣的缺陷。不可否認(rèn),采用傳統(tǒng)集成測(cè)試方式進(jìn)行分布式系統(tǒng)測(cè)試,會(huì)導(dǎo)致單元測(cè)試和集成測(cè)試之間存在一條不可逾越的“鴻溝”(見圖2)。
分布式應(yīng)用系統(tǒng)采用的技術(shù)種類眾多,包含各種類型的操作系統(tǒng)、中間件、數(shù)據(jù)庫(kù)、通信協(xié)議等。為了測(cè)試一個(gè)端到端的業(yè)務(wù)場(chǎng)景,往往需要耗費(fèi)大量的人力、物力和時(shí)間來重復(fù)搭建測(cè)試環(huán)境,且十分容易出錯(cuò)。據(jù)統(tǒng)計(jì),搭建測(cè)試環(huán)境一般會(huì)耗費(fèi)掉測(cè)試周期30%~50% 的 時(shí)間。
此外,針對(duì)特定條件的測(cè)試,需要定制的和額外的軟件支撐,往往花費(fèi)很多的人力、物力也很難構(gòu)建理想的測(cè)試運(yùn)行環(huán)境。這導(dǎo)致了測(cè)試工作效率低、質(zhì)量不可控,從而大大增加了應(yīng)用系統(tǒng)交付的風(fēng)險(xiǎn),系統(tǒng)的質(zhì)量也難以得到保證。
目前市場(chǎng)上流行的集成測(cè)試解決方案主要有HP Ser vice Virtualization和IBM Rational集成測(cè)試與虛擬化解決方案。
1.HP Ser vice Virt ualization服務(wù)虛擬化解決方案通過模擬生產(chǎn)環(huán)境中服務(wù)的行為,使得開發(fā)和測(cè)試團(tuán)隊(duì)能始終跟上進(jìn)度,無須考慮后端與諸多生產(chǎn)系統(tǒng)的集成,用戶將有更多的精力放在開發(fā)和測(cè)試本身之上。
2.IBM Rational是一種專門用于測(cè)試分布式復(fù)雜應(yīng)用系統(tǒng)的自動(dòng)化測(cè)試工具,無論是遺留系統(tǒng)還是現(xiàn)代應(yīng)用,其具有無需編碼的測(cè)試、測(cè)試虛擬化、豐富的可擴(kuò)展性、持續(xù)測(cè)試和驗(yàn)證、多協(xié)議支持等優(yōu)勢(shì)。
通過對(duì)HP Ser vice Virtualization解決方案和IBM Rational集成測(cè)試工具套件進(jìn)行深入研究和大量實(shí)踐,最后選取IBM Rational集成測(cè)試工具套件來進(jìn)行分布式系統(tǒng)集成測(cè)試。提出了基于Rational的分布式系統(tǒng)集成測(cè)試解決方案,該方案可以較好地解決傳統(tǒng)集成測(cè)試過程面臨的諸多問題。該測(cè)試工具套件由Rational Integration Tester和Rational Test Virtualization Server兩大產(chǎn)品構(gòu)成。
Rational Integration Tester是一種全面支持面向服務(wù)的體系架構(gòu),且具有領(lǐng)先集成技術(shù)的集成測(cè)試工具,可以在可視化的測(cè)試設(shè)計(jì)器中對(duì)數(shù)據(jù)交換進(jìn)行建模并創(chuàng)建基于服務(wù),級(jí)別的測(cè)試。其具有以下特點(diǎn):
1)功能強(qiáng)大的集成測(cè)試環(huán)境:能夠以易于理解的方式構(gòu)建系統(tǒng)之間接口的消息調(diào)用,能夠創(chuàng)建驗(yàn)證點(diǎn),并根據(jù)消息的模式對(duì)測(cè)試結(jié)果進(jìn)行判定。
2)完整的協(xié)議支持:提供了完整的協(xié)議支持,幾乎覆蓋了業(yè)界所有的協(xié)議和消息格式。
3)可持續(xù)遞增地進(jìn)行集成測(cè)試:與其在各個(gè)子系統(tǒng)開發(fā)好之后再進(jìn)行接口的聯(lián)調(diào)和集成測(cè)試,不如從一開始就根據(jù)消息契約把集成測(cè)試腳本定義好,然后在各個(gè)子系統(tǒng)的迭代實(shí)現(xiàn)過程中,持續(xù)、回歸、遞增式地執(zhí)行集成測(cè)試。這樣一來,單元測(cè)試結(jié)束之后,集成測(cè)試也基本結(jié)束了,有效地降低了系統(tǒng)集成時(shí)的復(fù)雜度以及缺陷出現(xiàn)率(見圖3)。
圖2 單元測(cè)試和集成測(cè)試的“鴻溝”
圖3 持續(xù)遞增的集成測(cè)試
Rational Test Virtualization Server是一組相關(guān)集成工具的集合,測(cè)試人員可以通過該工具為測(cè)試環(huán)境的相關(guān)依賴創(chuàng)建“樁”模塊,從而使得測(cè)試工作不會(huì)因?yàn)橄到y(tǒng)某個(gè)部分功能的不可用而停滯(見圖4)。
圖4 測(cè)試虛擬化流程
采用測(cè)試虛擬化給客戶帶來的收益包括:
(1)減少甚至消除了測(cè)試環(huán)境的基礎(chǔ)架構(gòu)的投入,包括軟件、硬件和配置的費(fèi)用;
(2)更多靈活的虛擬測(cè)試環(huán)境使在獨(dú)立的測(cè)試團(tuán)隊(duì)之間的并行開發(fā)更有效率;
(3)簡(jiǎn)化了測(cè)試數(shù)據(jù)管理:把從目標(biāo)系統(tǒng)建立和抽取測(cè)試數(shù)據(jù)的過程自動(dòng)化;
(4)減少了測(cè)試環(huán)境的對(duì)第三方系統(tǒng)的License使用。
某航運(yùn)信息系統(tǒng)開發(fā)中,有很大一部分工作是基于各個(gè)口岸的業(yè)務(wù)規(guī)則開發(fā)出相應(yīng)的接口程序,接口產(chǎn)生對(duì)應(yīng)的EDI報(bào)文并通過FTP或E-Mail的形式發(fā)送到口岸端??诎抖私邮盏綀?bào)文之后進(jìn)行業(yè)務(wù)規(guī)則校驗(yàn),如果校驗(yàn)成功,則進(jìn)行業(yè)務(wù)處理;如果校驗(yàn)失敗,將以FTP或E-Mail的形式發(fā)送回執(zhí)(EDI報(bào)文或者郵件)到航運(yùn)信息系統(tǒng),開發(fā)人員再根據(jù)回執(zhí)中的錯(cuò)誤說明修改接口程序,并重新發(fā)送(見圖5)。
圖5 航運(yùn)系統(tǒng)接口程序工作流程
通常,航運(yùn)信息系統(tǒng)需要與眾多的口岸系統(tǒng)交互,而各口岸的EDI報(bào)文格式又千差萬別,這都給開發(fā)和測(cè)試人員的日常工作帶來了極大的困難,嚴(yán)重影響了團(tuán)隊(duì)開發(fā)和測(cè)試的效率,具體表現(xiàn)在以下幾個(gè)方面:
(1)不同口岸的業(yè)務(wù)規(guī)則不同,通常規(guī)則分析需要一周;
(2)口岸的數(shù)量較多,開發(fā)工作需要二周;
(3)口岸端校驗(yàn)并回執(zhí)周期較長(zhǎng),通常需要1-2天,開發(fā)人員無法及時(shí)得到響應(yīng)并進(jìn) 行修改;
(4)開發(fā)效率較低,無法在早期對(duì)報(bào)文接口執(zhí)行驗(yàn)證;
(5)EDI報(bào)文格式復(fù)雜且冗長(zhǎng),很難依靠人工的方式逐條比對(duì),對(duì)測(cè)試人員來說耗時(shí)耗力;
(6)報(bào)文種類繁多,格式規(guī)則繁多,為自動(dòng)化的回歸測(cè)試帶來了困難;
(7)測(cè)試依賴口岸端系統(tǒng)的處理和響應(yīng),開發(fā)人員需耗費(fèi)大量的時(shí)間等待,無法持續(xù)地進(jìn)行集成測(cè)試。
針對(duì)上述分析,考慮在實(shí)際工作中引入基于IBM Rational服務(wù)虛擬化工具套件的集成測(cè)試解決方案。
通過Rational Integration Tester,可以記錄和捕獲航運(yùn)企業(yè)應(yīng)用發(fā)送給口岸的報(bào)文和響應(yīng)報(bào)文,形成報(bào)文基礎(chǔ)模板,針對(duì)不同的口岸校驗(yàn)規(guī)則開發(fā)出不同的報(bào)文“擋板”運(yùn)行在Rational Test Virtualization Ser ver上。
通過在Rational Test Virtualization Ser ver上運(yùn)行各種報(bào)文“擋板”,能夠截獲住通過航運(yùn)信息系統(tǒng)發(fā)送到口岸端系統(tǒng)的所有報(bào)文請(qǐng)求、自動(dòng)進(jìn)行規(guī)則校驗(yàn),并將校驗(yàn)結(jié)果返回給航運(yùn)信息系統(tǒng)(見圖6)。
3.3.1 創(chuàng)建報(bào)文“擋板”
Rational Integration Tester能夠支持包括EDIFACT、X12在內(nèi)各種國(guó)際標(biāo)準(zhǔn)的EDI協(xié)議,能夠創(chuàng)建報(bào)文模版并支持模版內(nèi)容的一鍵導(dǎo)入。報(bào)文模版能成為報(bào)文系統(tǒng)開發(fā)測(cè)試及構(gòu)建“擋板”的基礎(chǔ)(見圖7)。
圖6 EDI報(bào)文測(cè)試“擋板”
圖7 Rational Integration Tester對(duì)EDIFACT協(xié)議的支持
Rational Integration Tester采用規(guī)則和模版分離的方式,有效地實(shí)現(xiàn)了規(guī)則和消息直接“解耦合”;解決了無圖形用戶界面,模塊接口關(guān)系和消息格式復(fù)雜,缺乏統(tǒng)一有效的測(cè)試手段的問題。通過Rule Cache的機(jī)制,將報(bào)文的校驗(yàn)規(guī)則進(jìn)行統(tǒng)一處理(見圖8)。
圖8 通過Rule Cache實(shí)現(xiàn)校驗(yàn)規(guī)則的統(tǒng)一管理
校驗(yàn)的方式十分靈活,支持諸如比較、長(zhǎng)度驗(yàn)證、正則表達(dá)式匹配、XPath驗(yàn)證等多種常見方式。
對(duì)于不同的報(bào)文模版,只需要將Rule Cache中的規(guī)則應(yīng)用到響應(yīng)的字段就能夠?qū)崿F(xiàn)規(guī)則與模版的綁定。
3.3.2 將“報(bào)文”部署到虛擬化服務(wù)器
Rational Test Virt ualization Ser ver提供了統(tǒng)一的中央存儲(chǔ)庫(kù),用于集中管理和維護(hù)測(cè)試“擋板”。團(tuán)隊(duì)的成果能夠通過“一鍵上傳”的方式進(jìn)入到Rational Test Virtualization Server中。所有在Rational Test Virtualization Server中發(fā)布的“擋板”都可以通過統(tǒng)一的控制臺(tái)進(jìn)行維護(hù)。同時(shí),其他解決了測(cè)試環(huán)境構(gòu)建費(fèi)時(shí)費(fèi)力、難以平衡質(zhì)量和進(jìn)度的問題。
3.3.3 運(yùn)行測(cè)試
通過啟動(dòng)部署在Rational Test Virt ualization Ser ver中的各類報(bào)文“擋板”,開發(fā)和測(cè)試人員能夠以兩種方式執(zhí)行測(cè)試:
(1)通過航運(yùn)企業(yè)應(yīng)用以原始的方式發(fā)送EDI報(bào)文,報(bào)文“擋板”將自動(dòng)截獲住發(fā)送端報(bào)文,并根據(jù)定義在“擋板”中的校驗(yàn)規(guī)則將結(jié)果返回給航運(yùn)企業(yè)應(yīng)用,以供開發(fā)人員快速響應(yīng),并進(jìn)行應(yīng)用程序的修改。
(2)通過在Rational Integration Tester中定義各類自動(dòng)化測(cè)試腳本,回歸測(cè)試各類口岸的校驗(yàn)規(guī)則,并將測(cè)試結(jié)果進(jìn)行統(tǒng)一管理和缺陷提交;通過這種方式,就能在開發(fā)的更早期持續(xù)地驗(yàn)證應(yīng)用所發(fā)送的各種報(bào)文的正確性,而不必依賴后端的口岸系統(tǒng)是否正在運(yùn)行,從而能夠更好地保證應(yīng)用的質(zhì)量。
3.3.4 測(cè)試結(jié)果
運(yùn)行結(jié)束后,會(huì)顯示出驗(yàn)證成功(Log:成功)和驗(yàn)證失敗(Fail:失敗)兩種結(jié)果(見圖9)。
圖9 測(cè)試結(jié)果
3.3.5 測(cè)試總結(jié)
通過引入“擋板”這種虛擬化技術(shù),能以在本地搭建虛擬化口岸的方式有效地屏蔽掉口岸端規(guī)則校驗(yàn)的復(fù)雜性和延遲性,化被動(dòng)為主動(dòng),使測(cè)試人員不必關(guān)注于口岸端的可用性和規(guī)則的復(fù)雜性,以盡可能早地對(duì)報(bào)文接口進(jìn)行測(cè)試,從而有效提升整個(gè)信息系統(tǒng)開發(fā)的效率,并充分保證系統(tǒng)的質(zhì)量。
詳細(xì)分析了分布式應(yīng)用系統(tǒng)集成測(cè)試現(xiàn)狀和所面臨的諸多問題,通過對(duì)IBM Rational集成測(cè)試工具套件進(jìn)行深入研究和大量實(shí)踐,提出了基于Rational的分布式系統(tǒng)集成測(cè)試解決方案,并已將其成功應(yīng)用于航運(yùn)信息系統(tǒng)的集成測(cè)試中。通過虛擬口岸端的Portal系統(tǒng)進(jìn)行業(yè)務(wù)規(guī)則校驗(yàn),充分證明了Rational Integration Tester結(jié)合Rational Test Virt ualization Ser ver工具套件構(gòu)建測(cè)試“擋板”的能力,有效解決了當(dāng)前分布式系統(tǒng)集成測(cè)試中存在的問題,從而有效提高了測(cè)試工作的勞動(dòng)生產(chǎn)率,降低了成本并充分保證了系統(tǒng)的交付質(zhì)量。目前,該方案還處于使用的初期,軟件產(chǎn)品本身的購(gòu)買費(fèi)用及測(cè)試人員的學(xué)習(xí)成本相對(duì)較大。今后,隨著該方案大范圍地推廣應(yīng)用,其優(yōu)勢(shì)將會(huì)更加明顯。
[1] 于秀山,于洪敏.軟件測(cè)試新技術(shù)與實(shí)踐[M].北京:電子工業(yè)出版社,2006.
[2] 楊杰榮.軟件測(cè)試過程的研究與應(yīng)用[D].西安:西北工業(yè)大學(xué),2007.
[3] 戴希里.軟件測(cè)試過程改進(jìn)方法的研究[D].武漢:華中師范大學(xué),2006.
[4] 朱少民.軟件質(zhì)量保證和管理[M].北京:清華大學(xué)出版社,2007.
[5] 楊利.分布式系統(tǒng)測(cè)試技術(shù)研究及其應(yīng)用[D].河北:河北工業(yè)大學(xué),2007.
上海船舶運(yùn)輸科學(xué)研究所學(xué)報(bào)2014年3期