1 概述
面向服務(wù)架構(gòu)(Service Oriented Architecture, SOA)是一種分布式的計(jì)算架構(gòu)模式,具有天然的松耦合特性,使服務(wù)的可替換性、可復(fù)用性成為可能。而且,通過(guò)對(duì)服務(wù)的編排,企業(yè)可以輕松地開(kāi)發(fā)企業(yè)級(jí)業(yè)務(wù)流程,實(shí)現(xiàn)更加復(fù)雜的業(yè)務(wù)功能。因此,SOA被越來(lái)越多的大型企業(yè)所采用。如何對(duì)大型企業(yè)中的SOA進(jìn)行測(cè)試成為研究熱點(diǎn),為此,本文提出一種基于業(yè)務(wù)數(shù)據(jù)的大型企業(yè)SOA測(cè)試方法。
2 SOA 測(cè)試分析
2.1 SOA 測(cè)試的困難性
與傳統(tǒng)軟件系統(tǒng)相比,SOA的松耦合特性會(huì)為測(cè)試工作帶來(lái)一系列的困難,主要體現(xiàn)在以下3 個(gè)方面:
(1)對(duì)于服務(wù)的使用方來(lái)說(shuō),服務(wù)的內(nèi)部實(shí)現(xiàn)機(jī)制是不可見(jiàn)的。因此,服務(wù)的演化發(fā)展過(guò)程也超出了服務(wù)使用方可控的范圍。傳統(tǒng)的白盒測(cè)試只可能由服務(wù)提供方來(lái)實(shí)施,而服務(wù)的使用方只有在服務(wù)運(yùn)行態(tài)下才能獲知服務(wù)質(zhì)量。
(2)SOA 的另一個(gè)重要特性是服務(wù)的動(dòng)態(tài)綁定。動(dòng)態(tài)綁定會(huì)導(dǎo)致被測(cè)系統(tǒng)在運(yùn)行時(shí)發(fā)生變化,從而導(dǎo)致已有的測(cè)試結(jié)果失效,增加了回歸測(cè)試的工作量。
(3)在通過(guò)服務(wù)編排實(shí)現(xiàn)的業(yè)務(wù)流程中,集成后的流程測(cè)試是SOA 測(cè)試的最大難題。即便單個(gè)服務(wù)已經(jīng)通過(guò)了測(cè)試,串聯(lián)之后的業(yè)務(wù)流程仍有可能出現(xiàn)問(wèn)題。另一方面,流程測(cè)試的充分性也很難做到。
2.2 SOA 測(cè)試的研究現(xiàn)狀
文獻(xiàn)[2-3]將SOA 的服務(wù)測(cè)試技術(shù)的研究分為3 個(gè)階段:
(1)第1 階段:關(guān)注企業(yè)內(nèi)部的測(cè)試。主要測(cè)試服務(wù)的基本功能,如功能正確性、SOAP 消息和WSDL 描述等。
(2)第2 階段:關(guān)注面向服務(wù)的特征,主要測(cè)試服務(wù)的發(fā)布、查找和綁定3 種行為的能力,以及服務(wù)間的異步通信問(wèn)題和服務(wù)質(zhì)量問(wèn)題。
(3)第3 階段:關(guān)注服務(wù)的動(dòng)態(tài)特性和集成的總體測(cè)試,如服務(wù)組合測(cè)試和版本測(cè)試。
從國(guó)內(nèi)外的研究與應(yīng)用情況來(lái)看,目前關(guān)于SOA 測(cè)試的研究?jī)?nèi)容和研究成果可分為3 類:
(1)對(duì)服務(wù)協(xié)議、服務(wù)狀態(tài)的測(cè)試,例如文獻(xiàn)[2]對(duì)Web服務(wù)測(cè)試的理論和方法進(jìn)行了綜述。
(2)采用自動(dòng)化生成的測(cè)試用例來(lái)對(duì)SOA 系統(tǒng)進(jìn)行測(cè)試,例如,文獻(xiàn)[4]提出了基于測(cè)試用例生成器和仿真客戶端來(lái)測(cè)試SOA 系統(tǒng),文獻(xiàn)[5]提出了生成基于XML 語(yǔ)言的測(cè)試用例文檔的方法。
(3)自動(dòng)化測(cè)試工具的研究,例如文獻(xiàn)[6]提出使用自動(dòng)化測(cè)試引擎對(duì)服務(wù)進(jìn)行測(cè)試,文獻(xiàn)[7]對(duì)Web 服務(wù)注錯(cuò)測(cè)試工具進(jìn)行了研究。
從上述論述可以看出,目前SOA 測(cè)試的理論研究、應(yīng)用和測(cè)試工具多停留在對(duì)服務(wù)協(xié)議本身或單個(gè)服務(wù)測(cè)試的層面上,對(duì)集成后的業(yè)務(wù)流程測(cè)試則考慮較少。自動(dòng)化測(cè)試工具多采用某種規(guī)則生成測(cè)試用例,使用真實(shí)數(shù)據(jù)作為測(cè)試用例輸入的較少。
3 基于業(yè)務(wù)數(shù)據(jù)的大型企業(yè)SOA 測(cè)試方法
3.1 基本思想
大型企業(yè)中的SOA 系統(tǒng)更應(yīng)該注重集成測(cè)試和業(yè)務(wù)流程測(cè)試。筆者認(rèn)為,基于歷史真實(shí)業(yè)務(wù)數(shù)據(jù)的測(cè)試方法是在大型企業(yè)SOA 系統(tǒng)中行之有效的測(cè)試方法,理由如下:
(1)業(yè)務(wù)的本質(zhì)就是數(shù)據(jù)。大多數(shù)業(yè)務(wù)操作,實(shí)際上就是對(duì)業(yè)務(wù)數(shù)據(jù)的修改,因此,基于歷史真實(shí)業(yè)務(wù)數(shù)據(jù)的測(cè)試就成為測(cè)試服務(wù)功能正確性的直接入口。
(2)業(yè)務(wù)流程的分支本質(zhì)上是由數(shù)據(jù)不同造成的,因此,保證足夠的真實(shí)數(shù)據(jù)測(cè)試樣本,就能最大限度地接近全覆蓋測(cè)試。
(3)真實(shí)數(shù)據(jù)可能出現(xiàn)的問(wèn)題要遠(yuǎn)遠(yuǎn)多于測(cè)試人員主觀想象的范圍。因此,有必要使用真實(shí)數(shù)據(jù)進(jìn)行測(cè)試。
(4)在大型企業(yè)中,需要做縱向的數(shù)據(jù)一致性(即一定時(shí)間區(qū)間內(nèi)的數(shù)據(jù)總和)校驗(yàn)。使用歷史真實(shí)的數(shù)據(jù)進(jìn)行測(cè)試,可以利用歷史報(bào)表對(duì)數(shù)據(jù)進(jìn)行比對(duì)。
(5)大型企業(yè)的信息化建設(shè)起步相對(duì)較早,一般都已經(jīng)建設(shè)了信息系統(tǒng),因此,具有一定的業(yè)務(wù)數(shù)據(jù)儲(chǔ)備量,可以支持基于數(shù)據(jù)的測(cè)試。
3.2 案例分析
在基于數(shù)據(jù)的測(cè)試方法中,最重要的工作是準(zhǔn)備測(cè)試數(shù)據(jù)和測(cè)試用例,為了能較清晰地闡述基于業(yè)務(wù)數(shù)據(jù)的測(cè)試步驟,本文采用案例分析的方式加以描述。
案例說(shuō)明:某大型企業(yè)A 選擇了SOA 作為其信息化建設(shè)架構(gòu),企業(yè)系統(tǒng)架構(gòu)如圖1 所示。
圖1 企業(yè)A 的SOA 系統(tǒng)架構(gòu)
綜合統(tǒng)計(jì)系統(tǒng)是企業(yè)A 的報(bào)表處理及數(shù)據(jù)分析系統(tǒng),所有關(guān)鍵的業(yè)務(wù)數(shù)據(jù)都會(huì)準(zhǔn)實(shí)時(shí)地同步到綜合統(tǒng)計(jì)系統(tǒng)中,以便為企業(yè)管理者提供決策支持服務(wù)。企業(yè)A 開(kāi)發(fā)了一個(gè)大宗訂單處理流程,如圖2 所示。
圖2 企業(yè)A 的大宗訂單處理流程
該流程是一個(gè)進(jìn)存銷類企業(yè)中常見(jiàn)的業(yè)務(wù)流程,涉及到合同管理系統(tǒng)、庫(kù)存管理系統(tǒng)、采購(gòu)管理系統(tǒng)、財(cái)務(wù)系統(tǒng)等。該業(yè)務(wù)流程的起點(diǎn)是合同錄入,后續(xù)環(huán)節(jié)根據(jù)起點(diǎn)環(huán)節(jié)輸入的數(shù)據(jù)自動(dòng)流轉(zhuǎn),非常適合使用基于歷史真實(shí)數(shù)據(jù)的測(cè)試方法進(jìn)行測(cè)試。本案例中的一個(gè)測(cè)試用例如表1 所示。
表1 服務(wù)流程測(cè)試用例
操作步驟如下:
(1)明確業(yè)務(wù)場(chǎng)景。場(chǎng)景是對(duì)用戶行為的描述,大多數(shù)業(yè)務(wù)可以由若干個(gè)場(chǎng)景來(lái)描述;趫(chǎng)景組織測(cè)試用例,可以提高測(cè)試用例的覆蓋程度,也是常規(guī)測(cè)試中的必要步驟。
在理想情況下,應(yīng)該根據(jù)被測(cè)試對(duì)象(單個(gè)服務(wù)或是業(yè)務(wù)流程)的業(yè)務(wù)特征枚舉出所有的場(chǎng)景。但在復(fù)雜的業(yè)務(wù)流程中,業(yè)務(wù)場(chǎng)景的數(shù)量有時(shí)會(huì)出現(xiàn)組合爆炸的情況。此時(shí),應(yīng)按照出現(xiàn)概率對(duì)業(yè)務(wù)場(chǎng)景進(jìn)行排序,選出主要的業(yè)務(wù)場(chǎng)景進(jìn)行優(yōu)先處理。
(2)準(zhǔn)備測(cè)試數(shù)據(jù)。針對(duì)上一個(gè)步驟分析出的主要業(yè)務(wù)場(chǎng)景列表,可以從歷史真實(shí)數(shù)據(jù)中為每種場(chǎng)景找出數(shù)據(jù)樣本。數(shù)據(jù)樣本從舊系統(tǒng)的數(shù)據(jù)庫(kù)中根據(jù)條件查詢可得。需要注意的是,由于企業(yè)中的新舊系統(tǒng)交替,歷史數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)以及質(zhì)量可能不完全滿足新系統(tǒng)輸入的需要,需要一些SQL語(yǔ)句對(duì)數(shù)據(jù)的結(jié)構(gòu)進(jìn)行轉(zhuǎn)換,并進(jìn)行去空格、去亂碼等數(shù)據(jù)清洗工作。樣本的選擇還應(yīng)該具有普遍的統(tǒng)計(jì)性。如果歷史庫(kù)中有2006 年、2007 年、2008 年這3 年的數(shù)據(jù),則應(yīng)該從每一年的數(shù)據(jù)中選擇一些。避免集中在某個(gè)時(shí)間段中選取樣本,以提高缺陷暴露的可能性。
對(duì)于不屬于主要業(yè)務(wù)場(chǎng)景的小概率業(yè)務(wù)場(chǎng)景,可采用時(shí)間覆蓋的方式,即從歷史數(shù)據(jù)庫(kù)中選擇一段連續(xù)時(shí)間內(nèi)的數(shù)據(jù)作為輸入樣本(例如可選擇連續(xù)3 個(gè)月的數(shù)據(jù)),以提高測(cè)試的覆蓋度。
另外,在流程集成測(cè)試和壓力測(cè)試的過(guò)程中,還需要做縱向數(shù)據(jù)一致性校驗(yàn)。在本案例中,可以選擇某一個(gè)歷史統(tǒng)計(jì)月份的所有訂單數(shù)據(jù)作為輸入,將綜合統(tǒng)計(jì)系統(tǒng)生成的訂單月報(bào)表和訂單財(cái)務(wù)報(bào)表與歷史已有報(bào)表進(jìn)行比對(duì)。
(3)編制輸入/輸出表。本步驟的主要工作是根據(jù)每組測(cè)試數(shù)據(jù)樣本,編制輸入/輸出對(duì)比表,以便能夠校驗(yàn)測(cè)試用例的輸出結(jié)果是否正確。在通過(guò)服務(wù)編排實(shí)現(xiàn)的業(yè)務(wù)流程中,需要對(duì)每個(gè)服務(wù)執(zhí)行后的數(shù)據(jù)結(jié)果進(jìn)行檢查。
編制輸入/輸出表的工作可以交給客戶,或者在客戶監(jiān)督下完成。具體操作是:針對(duì)每組業(yè)務(wù)輸入數(shù)據(jù),按照業(yè)務(wù)邏輯進(jìn)行轉(zhuǎn)換,得出其應(yīng)該輸出的結(jié)果。在實(shí)際測(cè)試過(guò)程中可以借助Excel 宏等編程工具,來(lái)減少數(shù)據(jù)計(jì)算中的工作量。
(4)編寫自動(dòng)化腳本。自動(dòng)化腳本主要有3 個(gè)功能:1)根據(jù)輸入數(shù)據(jù)列表,模擬客戶端發(fā)起服務(wù)請(qǐng)求;2)自動(dòng)獲取服務(wù)輸出以及測(cè)試用例中的輸入/輸出列表,并自動(dòng)對(duì)比測(cè)試結(jié)果;3)如果發(fā)現(xiàn)不一致,自動(dòng)報(bào)告問(wèn)題。
(5)運(yùn)行測(cè)試用例。上述步驟都準(zhǔn)備完成之后,就可以使用自動(dòng)化測(cè)試腳本完成測(cè)試了。如果系統(tǒng)的狀態(tài)發(fā)生了改變,使用自動(dòng)化測(cè)試腳本進(jìn)行回歸測(cè)試即可。
3.3 測(cè)試方法評(píng)價(jià)
基于歷史真實(shí)業(yè)務(wù)數(shù)據(jù)的測(cè)試方法具有如下優(yōu)點(diǎn):(1)易操作。在復(fù)雜業(yè)務(wù)環(huán)境的測(cè)試過(guò)程中,由于業(yè)務(wù)數(shù)據(jù)的內(nèi)在關(guān)聯(lián)性,編制模擬測(cè)試數(shù)據(jù)往往具有很高的難度。本測(cè)試方法的步驟具有較強(qiáng)的可操作性,適合于在大型企業(yè)的SOA 系統(tǒng)實(shí)施項(xiàng)目中應(yīng)用。
(2)測(cè)試覆蓋度高。使用模擬數(shù)據(jù)的測(cè)試方法中,由于測(cè)試人員對(duì)于業(yè)務(wù)過(guò)程的主觀認(rèn)識(shí)的局限性,制造的數(shù)據(jù)往往千篇一律,很難覆蓋到所有方面;而使用真實(shí)業(yè)務(wù)數(shù)據(jù)的測(cè)試則使測(cè)試過(guò)程最大限度地接近系統(tǒng)真實(shí)運(yùn)行環(huán)境,測(cè)試覆蓋度高。
(3)缺陷暴露率高。在使用模擬數(shù)據(jù)的測(cè)試方法中,由于模擬數(shù)據(jù)本身的業(yè)務(wù)性差,因此測(cè)試人員很難得知服務(wù)處理業(yè)務(wù)數(shù)據(jù)的過(guò)程是否正確。而在使用真實(shí)數(shù)據(jù)的測(cè)試方法中,由于輸入/輸出對(duì)比表中的輸出都是已有而合理的,因此可以反向暴露出更多的服務(wù)處理邏輯缺陷。
但本文測(cè)試方法的局限性也較為明顯,例如:
(1)需要對(duì)歷史的真實(shí)業(yè)務(wù)數(shù)據(jù)進(jìn)行提取和處理,對(duì)測(cè)試人員的業(yè)務(wù)能力要求較高。
(2)沒(méi)有解決SOA 測(cè)試中缺陷定位的難題。
(3)不適用于需要人工參與的業(yè)務(wù)流程測(cè)試,例如審批類型的業(yè)務(wù)流程。為了對(duì)人機(jī)交互類型的服務(wù)實(shí)現(xiàn)自動(dòng)測(cè)試,還需要額外開(kāi)發(fā)模擬人工處理的功能。
4 結(jié)束語(yǔ)
本文在分析現(xiàn)有SOA 測(cè)試方法的基礎(chǔ)上,提出一種面向業(yè)務(wù)數(shù)據(jù)的大型企業(yè)SOA 測(cè)試方法,在企業(yè)級(jí)SOA 系統(tǒng)開(kāi)發(fā)中具有較高的可操作性。由于本文方法需要?dú)v史真實(shí)數(shù)據(jù)的支撐,因此更適用于大型企業(yè)的信息系統(tǒng)升級(jí)改造過(guò)程。下一步將對(duì)自動(dòng)化測(cè)試工具、自動(dòng)化數(shù)據(jù)比對(duì)工具、測(cè)試缺陷自動(dòng)定位等問(wèn)題進(jìn)行研究。
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://m.vmgcyvh.cn/
本文標(biāo)題:基于業(yè)務(wù)數(shù)據(jù)的大型企業(yè)SOA測(cè)試方法