軟件系統(tǒng)架構(gòu)對(duì)測(cè)試的影響分析
我們知道軟件系統(tǒng)的架構(gòu)會(huì)對(duì)系統(tǒng)測(cè)試產(chǎn)生影響,而到底會(huì)產(chǎn)生哪些影響呢?
首先看一下軟件系統(tǒng)架構(gòu)到底是如何定義的?
軟件系統(tǒng)架構(gòu)就是組成系統(tǒng)的主要重要模塊、過程、數(shù)據(jù)的管理和分配、用戶界面的種類和風(fēng)格,以及系統(tǒng)運(yùn)行平臺(tái)等。其中包括它們的結(jié)構(gòu)和彼此間的準(zhǔn)確關(guān)系,他們可被擴(kuò)展和修改的方式,他們依賴于某種技術(shù),是怎樣得到系統(tǒng)性能和靈活性的,又是如何確定系統(tǒng)實(shí)施或修改計(jì)劃的。
軟件架構(gòu)之所以重要是因?yàn)閮?yōu)秀的架構(gòu)是確保軟件長(zhǎng)期成功的關(guān)鍵因素。而對(duì)于我們測(cè)試來說,其軟件架構(gòu)會(huì)對(duì)測(cè)試實(shí)施產(chǎn)生哪些影響呢?
首先是穩(wěn)定性。穩(wěn)定性可以降低在版本更新時(shí)擴(kuò)展系統(tǒng)功能的重復(fù)老師,并減少實(shí)施過程的總成本。它鞏固了開發(fā)團(tuán)隊(duì)的基礎(chǔ),使其專注于開發(fā)更大價(jià)值的特性,而并非浪費(fèi)精力關(guān)注在經(jīng)常變更的問題上。對(duì)于良好的系統(tǒng)架構(gòu),會(huì)使測(cè)試設(shè)計(jì)更穩(wěn)定,減少因變更帶來的測(cè)試工作量。
對(duì)變更的度和性質(zhì)。架構(gòu)決定系統(tǒng)中發(fā)生變更的性質(zhì)。有些變更很容易被察覺,而察覺另一些則很難。在我們?yōu)槲嗫蛻舳枰岣呖蛻魸M意度或增加功能時(shí),如果能夠簡(jiǎn)單實(shí)現(xiàn)預(yù)期的變更,那么各種架構(gòu)通常被認(rèn)為是好的。系統(tǒng)的功能需求變更,使系統(tǒng)受影響的部分最小,避免大量的回歸測(cè)試。
社會(huì)架構(gòu)。優(yōu)秀的架構(gòu)為創(chuàng)建它的團(tuán)隊(duì)而工作。它可以平衡團(tuán)隊(duì)內(nèi)部的個(gè)體在實(shí)力和能力上存在的差異,而且可以彌補(bǔ)各自的弱點(diǎn)。例如團(tuán)隊(duì)對(duì)C++的內(nèi)存管理經(jīng)常使用不當(dāng),而如果使用Java、Perl或C#等系統(tǒng)自動(dòng)進(jìn)行內(nèi)容管理的開發(fā)語(yǔ)言可以減少這方面的問題。而我們測(cè)試中,則對(duì)于內(nèi)存方面的測(cè)試則可以考慮的較少一些。對(duì)我們招募測(cè)試團(tuán)隊(duì)的人員的技能也產(chǎn)生影響。
邊界的決定。在架構(gòu)的設(shè)計(jì)過程中,團(tuán)隊(duì)會(huì)就哪些應(yīng)該被加入到系統(tǒng)中,而哪些不應(yīng)該被加入到系統(tǒng)中做出很多決定。例如,是團(tuán)隊(duì)自己寫數(shù)據(jù)庫(kù)訪問層,還是購(gòu)買許可?團(tuán)隊(duì)是使用開源的Web服務(wù)器還是購(gòu)買許可?那個(gè)子團(tuán)隊(duì)?wèi)?yīng)該負(fù)責(zé)用戶界面的設(shè)計(jì)?成功的解決方案確實(shí)能夠創(chuàng)建技術(shù)邊界來支持業(yè)務(wù)的特殊需求。這些邊界選擇可直接影響我們的測(cè)試,例如,服務(wù)器監(jiān)控、服務(wù)器性能參數(shù)調(diào)優(yōu)等。
可持續(xù)的、不可替代的優(yōu)勢(shì)。這一點(diǎn)可以概括前面的幾點(diǎn),但是一個(gè)好的架構(gòu)能夠使系統(tǒng)在市場(chǎng)競(jìng)爭(zhēng)由于難于復(fù)制而占據(jù)優(yōu)勢(shì)地位。例如在性能和易用性方面獲得優(yōu)勢(shì)。這對(duì)于我們測(cè)試來說,可以減少缺陷,性能更能達(dá)到目標(biāo)而減少系統(tǒng)調(diào)優(yōu)后反復(fù)測(cè)試的過程。
創(chuàng)建系統(tǒng)架構(gòu)的實(shí)際方法就是探索多種已被文檔化的模式,所以關(guān)于開發(fā)模式的書籍比較暢銷,也正是很多研發(fā)管理人員必讀的書籍。
測(cè)試團(tuán)隊(duì)要對(duì)軟件系統(tǒng)架構(gòu)進(jìn)行理解,應(yīng)該著重分析研發(fā)團(tuán)隊(duì)提供的一些視圖,以增加對(duì)系統(tǒng)架構(gòu)的理解。
邏輯視圖:它提供了系統(tǒng)開發(fā)中對(duì)象間或?qū)嶓w間相互關(guān)系的靜態(tài)快照。這種視圖實(shí)際上可能有兩個(gè)或更多的表現(xiàn)層。一個(gè)概念模型,另一個(gè)是數(shù)據(jù)庫(kù)模式中模型的實(shí)現(xiàn)。往往現(xiàn)在數(shù)據(jù)庫(kù)架構(gòu)師使用PowerDesigner描述實(shí)體的邏輯關(guān)系,所以需要我們測(cè)試工程師學(xué)會(huì)查看數(shù)據(jù)庫(kù)實(shí)體描述,從而了解系統(tǒng)中的數(shù)據(jù)庫(kù)設(shè)計(jì),例如關(guān)鍵字,索引、表實(shí)體之間的關(guān)系等。
過程視圖:過程視圖描述設(shè)計(jì)的并發(fā)性和同步性因素。我們了解過程視圖,從而會(huì)了解系統(tǒng)中各個(gè)模塊之間的時(shí)間、空間關(guān)系。原來的結(jié)構(gòu)化編程中經(jīng)常用流程圖來表示,而現(xiàn)在面向?qū)ο蟮木幊探?jīng)常用一些建模工具描述對(duì)象實(shí)體。例如,架構(gòu)師經(jīng)常使用Rose等建模工具,建立實(shí)體的序列圖、狀態(tài)圖等來描述過程。而我們測(cè)試工程師應(yīng)該學(xué)會(huì)看懂序列圖或狀態(tài)圖等。
物理視圖:物理視圖描述軟件到硬件的映射,其中包括實(shí)現(xiàn)高可用性、可靠性、容錯(cuò)性和性能等目標(biāo)的處理部件的分布情況。常用Rose部署圖來描述物理視圖,也可以使用Visio等繪圖工具繪制系統(tǒng)架構(gòu)圖來描述。
開發(fā)視圖:開發(fā)視圖描述軟件在開發(fā)環(huán)境中的靜態(tài)組織結(jié)構(gòu)。研發(fā)團(tuán)隊(duì)通常用Rose等建模工具繪制實(shí)體關(guān)系圖,描述各個(gè)實(shí)體之間的靜態(tài)關(guān)系。
了解了系統(tǒng)的架構(gòu)之后,對(duì)于測(cè)試來說,就應(yīng)該做相應(yīng)的準(zhǔn)備工作。包括招募具有相應(yīng)技能的人員。針對(duì)特定的結(jié)構(gòu)采取相應(yīng)的測(cè)試設(shè)計(jì)。例如,對(duì)于J2EE架構(gòu),則要考慮如何集成測(cè)試,采用何種集成策略。對(duì)于性能測(cè)試,考慮哪些測(cè)試。例如研發(fā)采用Weblogic作為應(yīng)用服務(wù)器,則我們要考慮該服務(wù)器哪些配置參考會(huì)影響系統(tǒng)的性能。物理架構(gòu)中具有中間件服務(wù)器,則我們對(duì)中間件服務(wù)器如何測(cè)試。
總之,了解一些軟件系統(tǒng)架構(gòu),對(duì)于測(cè)試人員尤其是測(cè)試管理人員是非常需要的。