在開發(fā)面向服務(wù)的體系結(jié)構(gòu)(Service-Oriented Architecture,SOA)應(yīng)用程序時(shí),您的組織很可能會(huì)存在需要進(jìn)行大量的實(shí)現(xiàn)和測(cè)試工作的非功能需求(NonFunctional Requirement,NFR)。Shiv Asthana 在本文中介紹了在測(cè)試作為 SOA 環(huán)境的一部分構(gòu)建的應(yīng)用程序的非功能需求時(shí)需要遵循的最佳實(shí)踐。
SOA 是一種 IT 體系結(jié)構(gòu)風(fēng)格,支持將您的業(yè)務(wù)轉(zhuǎn)換為一組相互鏈接的服務(wù)或可重復(fù)業(yè)務(wù)任務(wù),可在需要時(shí)通過網(wǎng)絡(luò)訪問這些服務(wù)和任務(wù)。這個(gè)網(wǎng)絡(luò)可以是局域網(wǎng)、Internet,或者一組不同位置提供的分散各處且采用多種技術(shù),但以類似于安裝在本地桌面的方式交互的服務(wù)。可以對(duì)這些服務(wù)進(jìn)行結(jié)合,以完成特定的業(yè)務(wù)任務(wù),從而讓您的業(yè)務(wù)快速適應(yīng)不斷變化的客觀條件和需求。也就是說,SOA 遵循查找、綁定并執(zhí)行的關(guān)鍵原則工作,非常適合用于滿足請(qǐng)求/響應(yīng)類型的業(yè)務(wù)需求。
當(dāng)由能夠解決難點(diǎn)或?qū)崿F(xiàn)特定手動(dòng)任務(wù)的自動(dòng)化的策略業(yè)務(wù)目標(biāo)和需求對(duì) SOA 實(shí)現(xiàn)進(jìn)行引導(dǎo)時(shí),就可以實(shí)現(xiàn)業(yè)務(wù)轉(zhuǎn)換。這樣能夠帶來諸多好處,包括:
不過,只有在將功能需求和非功能需求包含到應(yīng)用程序中并無縫集成到生產(chǎn)環(huán)境中,才能夠?qū)崿F(xiàn) SOA 承諾的好處。因此,理想的實(shí)現(xiàn)和測(cè)試在關(guān)鍵時(shí)刻是必不可少的。
NFR 測(cè)試的主要挑戰(zhàn)出現(xiàn)在 SOA 應(yīng)用程序在實(shí)驗(yàn)室環(huán)境中開發(fā)或作為軟件供應(yīng)商的新產(chǎn)品投資組合的一部分開發(fā)時(shí),在這些情況下,大多數(shù)時(shí)候生產(chǎn)環(huán)境都不可用。其他的挑戰(zhàn)包括:
雖然沒有測(cè)試軟件的最佳萬能方法,但可以參考下面根據(jù)我的經(jīng)驗(yàn)給出的列表。除了應(yīng)對(duì)上面的一些挑戰(zhàn)外,這些建議還可能會(huì)帶來其他優(yōu)勢(shì):
測(cè)試類型 | 測(cè)試定義 |
---|---|
可訪問性 | 驗(yàn)證訪問應(yīng)用程序功能的能力。 |
審核與控制 | 驗(yàn)證檢查歷史工作流和審核記錄的便利性。 |
可用性 | 驗(yàn)證應(yīng)用程序是否能提供服務(wù)水平協(xié)議(Service Level Agreement,SLA)中規(guī)定的高正常運(yùn)行時(shí)間。 |
兼容性 | 驗(yàn)證應(yīng)用程序是否適合之前已有(較舊)的環(huán)境。 |
文檔 | 驗(yàn)證用戶指南是否提供了正確的說明。 |
安裝 | 驗(yàn)證應(yīng)用程序是否能在所定義的中間件堆棧上工作。 |
互操作性 | 驗(yàn)證在更改環(huán)境中的重要組件后應(yīng)用程序是否能正常工作。 |
負(fù)載/容量 | 驗(yàn)證給定時(shí)間應(yīng)用程序是否能完成所需處理的事務(wù)數(shù)量。 |
可維護(hù)性 | 驗(yàn)證在應(yīng)用程序投入生產(chǎn)環(huán)境中后進(jìn)行維護(hù)的便利性。 |
性能 | 驗(yàn)證響應(yīng)時(shí)間、吞吐量、并發(fā)性等等標(biāo)準(zhǔn)是否滿足需求。 |
可靠性 | 驗(yàn)證應(yīng)用程序在與生產(chǎn)環(huán)境類似的負(fù)載壓力下是否能正常工作。 |
可伸縮性 | 驗(yàn)證應(yīng)用程序是否能滿足業(yè)務(wù)不斷增長的需求。 |
安全性 | 驗(yàn)證應(yīng)用程序是否具有足夠的安全措施,能夠防止信息被盜。 |
服務(wù)能力 | 驗(yàn)證是否能夠在不對(duì)業(yè)務(wù)造成任何影響的情況下對(duì)應(yīng)用程序進(jìn)行調(diào)試。 |
可用性 | 從最終用戶的角度驗(yàn)證應(yīng)用程序是否可用。 |
工具 | 功能 |
---|---|
IBM Rational AppScan | 支持以集中方式進(jìn)行 SOA 應(yīng)用程序安全性評(píng)估,并提供了完全集成的解決方案集。Rational AppScan 能夠隨著企業(yè)體系結(jié)構(gòu)伸縮,支持同時(shí)掃描多個(gè)應(yīng)用程序。 |
IBM Rational Functional Tester | 為測(cè)試人員提供用于功能和非功能測(cè)試、回歸測(cè)試、GUI 測(cè)試和數(shù)據(jù)驅(qū)動(dòng)測(cè)試的自動(dòng)化測(cè)試功能。工具的測(cè)試自動(dòng)化功能也允許進(jìn)行負(fù)載和壓力測(cè)試。 |
IBM Rational Performance Tester | 捕獲響應(yīng)時(shí)間、頁面吞吐量和并發(fā)性。此性能測(cè)試創(chuàng)建、執(zhí)行和分析工具供團(tuán)隊(duì)用于在部署前驗(yàn)證復(fù)雜 SOA 應(yīng)用程序的可伸縮性和可靠性。 |
IBM Rational Performance Tester Extension for SOA Quality | 擴(kuò)展 SOA 應(yīng)用程序的性能和可伸縮性測(cè)試。這是負(fù)載和性能測(cè)試與問題分析工具,除了 Rational Performance Tester 的標(biāo)準(zhǔn)功能外,還能夠幫助尋找性能瓶頸。它支持進(jìn)行 SOA 效率問題確定,并為支持部署的 Web 服務(wù)提供了廣泛的平臺(tái)監(jiān)視支持部署,且支持服務(wù)器資源數(shù)據(jù)的收集和可視化。 |
注意: IBM Rational RequisitePro、IBM Rational Test Manager 和 IBM Rational ClearQuest® 可分別用于進(jìn)行需求管理、測(cè)試用例管理和缺陷管理。
標(biāo)識(shí)為測(cè)試創(chuàng)建存根和模擬器的需求
正如前面提到的,SOA 測(cè)試中的一個(gè)挑戰(zhàn)是創(chuàng)建存根和模擬器。存根和模擬器替代生產(chǎn)環(huán)境中的遺留應(yīng)用程序和其他外部應(yīng)用程序(在生產(chǎn)中作為后端系統(tǒng))。除了業(yè)務(wù)領(lǐng)域的知識(shí)外,還可以通過分析所開發(fā)的應(yīng)用程序的系統(tǒng)上下文來創(chuàng)建存根和模擬器(請(qǐng)參見圖 2)。
在圖 2 中,需要模擬遺留生產(chǎn)系統(tǒng)(藍(lán)色)和外部系統(tǒng)(粉紅色)作為存根,以測(cè)試新應(yīng)用程序(功能和非功能測(cè)試都需要)。
測(cè)試團(tuán)隊(duì)可以首先從了解這些系統(tǒng)的功能入手,然后尋找模擬這些系統(tǒng)進(jìn)行測(cè)試的簡單方法。在大多數(shù)情況下,一個(gè)簡單的數(shù)據(jù)庫就可以幫助解決問題,但其中應(yīng)該包括支持所要測(cè)試的業(yè)務(wù)事務(wù)的所有表格和示例數(shù)據(jù)。
![]() ![]() |
這些最佳實(shí)踐在實(shí)際工作中的應(yīng)用
IBM 名為 Global Business Solutions Center (GBSC) 的團(tuán)隊(duì)開發(fā)并測(cè)試了名為組合業(yè)務(wù)服務(wù)(Composite Business Service,CBS)的 SOA 應(yīng)用程序,此類應(yīng)用程序在 IBM SOA Foundation 和中間件堆棧(如 IBM WebSphere® Process Server、IBM WebSphere Application Server、IBM WebSphere Business Services Fabric、IBM WebSphere MQ 和 IBM DB2® 產(chǎn)品)上運(yùn)行。CBS 是相關(guān)的集成業(yè)務(wù)服務(wù)的集合,能提供特定的業(yè)務(wù)解決方案,并支持在 SOA 上構(gòu)建的業(yè)務(wù)流程。
通常,CBS 與客戶環(huán)境中的其他應(yīng)用程序和/或服務(wù)集成,從而為客戶提供所需的業(yè)務(wù)解決方案。業(yè)務(wù)解決方案由編排在一起的業(yè)務(wù)服務(wù)組成。也就是說,CBS 不是獨(dú)立解決方案,而是能夠使用一個(gè)或多個(gè) CBS 創(chuàng)建的解決方案。
使用 CBS 創(chuàng)建的端到端解決方案的客戶目標(biāo)是銀行、醫(yī)療、保險(xiǎn)和零售等行業(yè)及政府部門??紤]到這些行業(yè)的本質(zhì)和規(guī)模,您可以發(fā)現(xiàn),SOA 的角色是支持大容量和任務(wù)關(guān)鍵型業(yè)務(wù)事務(wù)的處理,以及支持異類環(huán)境中的持續(xù)業(yè)務(wù)更改。
這就是 NFR 為何在對(duì)客戶的業(yè)務(wù)進(jìn)行轉(zhuǎn)換的過程中如此重要的原因。目前在 GBSC 中開發(fā)的 CBS 已經(jīng)針對(duì)上面建議的大部分需求進(jìn)行了測(cè)試,在某些情況下具有出眾的性能基準(zhǔn),如在單個(gè)批處理提交中能處理超過 2 百萬個(gè)事務(wù)的能力,以及所報(bào)告的各種任務(wù)關(guān)鍵型流程的卓越吞吐量和響應(yīng)時(shí)間。
測(cè)試人員使用 Rational Performance Tester、IBM Tivoli® Composite Application Manager 以及自主構(gòu)建的實(shí)用工具程序等工具來創(chuàng)建測(cè)試數(shù)據(jù)和實(shí)現(xiàn)特定測(cè)試用例的自動(dòng)化。我在這個(gè)列表中忽略了常規(guī)的測(cè)試和缺陷管理工具,如 Rational Test Manager 和 Rational ClearQuest 等,因?yàn)榇祟惓R?guī)工具用于同時(shí)支持功能和非功能測(cè)試。
圖 3 顯示,在示例應(yīng)用程序中的業(yè)務(wù)事務(wù) 1 的并發(fā)用戶數(shù)量從 1,000 增加到 1,150 時(shí),平均響應(yīng)時(shí)間從 3 秒增加到了 3.2 秒。
圖 4 顯示,在示例應(yīng)用程序中的業(yè)務(wù)事務(wù) 2 的并發(fā)用戶數(shù)量從 1,000 增加到 1,150 時(shí),平均響應(yīng)時(shí)間從 7.9 秒增加到了 10.7 秒。
回顧與 NFR 關(guān)聯(lián)的表格時(shí),請(qǐng)注意參考數(shù)據(jù)極為關(guān)鍵。如果沒有這些數(shù)字,就沒有意義。例如,如果收集并發(fā)布性能相關(guān)的基準(zhǔn),至少應(yīng)該提供以下參考數(shù)據(jù):
![]() ![]() |
雖然測(cè)試 NFR 是成功采用 SOA 應(yīng)用程序所必不可少的步驟,但請(qǐng)記住,如果沒有具體的量化要求(在可能的情況下),則可能會(huì)遇到麻煩。在實(shí)驗(yàn)室環(huán)境中進(jìn)行測(cè)試和開發(fā)時(shí),如果并發(fā)性和容量/負(fù)載需求之類的非功能標(biāo)準(zhǔn)未量化,而測(cè)試團(tuán)隊(duì)進(jìn)入了基準(zhǔn)確定階段,則更容易出現(xiàn)這種情況。此時(shí),完成項(xiàng)目所需的時(shí)間和工作量都會(huì)大幅度增加。
不過,如果創(chuàng)建了采用計(jì)劃并與所有項(xiàng)目涉眾進(jìn)行了共享,則可以緩解這個(gè)風(fēng)險(xiǎn)。接下來讓我們了解一下如何為項(xiàng)目制定采樣計(jì)劃,您需要在其中確定 SOA 應(yīng)用程序能夠處理的最大事務(wù)量。
首先,將所有可以在測(cè)試環(huán)境中處理的事務(wù)排列和組合添加到表格中。請(qǐng)參見表 3 中的示例。
文件中的事務(wù)請(qǐng)求數(shù)量 | 上載的單個(gè)批次中的文件數(shù)量 | ||||
---|---|---|---|---|---|
100 | 10000 | 20000 | 30000 | 40000 | 50000 |
1000 | 1000 | 2000 | 3000 | 4000 | 5000 |
10000 | 100 | 200 | 300 | 400 | 500 |
100000 | 10 | 20 | 30 | 40 | 50 |
1000000 | 1 | 2 | 3 | 4 | 5 |
隨后,進(jìn)行了應(yīng)用程序開發(fā)之后,處理少量的文件,并根據(jù)得到的數(shù)據(jù)進(jìn)行推斷??梢陨陷d 100 個(gè)批次,每個(gè)文件中包含 100 個(gè)請(qǐng)求,根據(jù)其處理此數(shù)目所需的時(shí)間,可以評(píng)估處理表 3 中所示的文件排列和組合所需的時(shí)間。
根據(jù)可用時(shí)間和資源以及確信度,您可以決定基準(zhǔn)確定工作的開始和結(jié)束時(shí)機(jī)。檢查根據(jù)表 3 創(chuàng)建的采樣計(jì)劃(請(qǐng)參見表 4)。
文件中的事務(wù)請(qǐng)求數(shù)量 | 上載的單個(gè)批次中的文件數(shù)量 | ||||
---|---|---|---|---|---|
100 | 10000 | 20000 | 30000 | 40000 | 50000 |
1000 | 1000 | 2000 | 3000 | 4000 | 5000 |
10000 | 100 | 200 | 300 | 400 | 500 |
100000 | 10 | 20 | 30 | 40 | 50 |
1000000 | 1 | 2 | 3 | 4 | 5 |
盡管這些目標(biāo)值可能會(huì)在確定基準(zhǔn)的過程中失效,但可以幫助規(guī)劃這個(gè)級(jí)別本身的測(cè)試方法。例如,如果采用 100*40000 個(gè)文件的測(cè)試用例失敗,那么如何進(jìn)行相關(guān)工作呢?可行且實(shí)際的做法是,僅僅以預(yù)先規(guī)劃的方式進(jìn)行處理;例如,如果 100*40000 失敗,則嘗試 100*37500,然后 100*35000,以此類推。請(qǐng)參見表 5 中給出的更多示例。
文件中的事務(wù)請(qǐng)求數(shù)量 | 上載的單個(gè)批次中的文件數(shù)量 | ||||
---|---|---|---|---|---|
嘗試-1 | 嘗試-2 | 嘗試-3 | 嘗試-4 | 嘗試-5 | |
100 | 40000 | 37500 | 35000 | 32500 | 30000 |
1000 | 3000 | 2750 | 2500 | 2250 | 2000 |
10000 | 300 | 275 | 250 | 225 | 200 |
100000 | 20 | 18 | 16 | 14 | 12 |
1000000 | 2 | 1 | - | - | - |
在實(shí)現(xiàn)較高級(jí)別的非功能能力方面的限制
在采用 SOA 的過程中,完全有可能發(fā)掘出現(xiàn)有 IT 系統(tǒng)的全部潛力。但中間件堆棧中使用的各個(gè)組件可能會(huì)造成一些限制,而在運(yùn)行生產(chǎn)環(huán)境中的 SOA 應(yīng)用程序和遺留應(yīng)用程序時(shí)需要中間件堆棧。為了便于理解,讓我們以使用規(guī)則引擎為例,該引擎在給定時(shí)間只能處理 X 個(gè)事務(wù)。如果此規(guī)則引擎掛鉤到 SOA 應(yīng)用程序,就會(huì)造成約束,使性能級(jí)別不高于 X。
![]() ![]() |
希望通過本文能夠給您組織的 SOA 采用之旅帶來一定的幫助。雖然這些最佳實(shí)踐的應(yīng)用取決于您當(dāng)前的 SOA 成熟度級(jí)別和改進(jìn)機(jī)會(huì),但上面列表中給出的挑戰(zhàn)、非功能特征、工具、實(shí)際實(shí)現(xiàn)示例能夠幫助您確定如何著手進(jìn)行此工作。而且,NFR 的成功實(shí)現(xiàn)最終將在 IT 和業(yè)務(wù)流程之間形成一個(gè)關(guān)聯(lián)關(guān)系,而這就是我們的主要目標(biāo)。
![]() | ||
![]() | ![]() | Shiv Asthana 在位于印度海德拉巴的 IBM GBSC 測(cè)試管理團(tuán)隊(duì)任職,該團(tuán)隊(duì)負(fù)責(zé)對(duì)基于 SOA 的資產(chǎn)進(jìn)行測(cè)試。Shiv 擁有 Birla Institute of Technology and Science, Pilani (BITS, Pilani) 的質(zhì)量管理碩士學(xué)位,有 8 年 IT 行業(yè)從業(yè)經(jīng)驗(yàn)。 |
聯(lián)系客服