在完成極端的非功能目標(biāo)中可能隱含的權(quán)衡。
當(dāng)接近這些極各種架構(gòu)退化的方式。
有了此數(shù)據(jù),架構(gòu)師可以選擇最適當(dāng)?shù)募軜?gòu),并且,當(dāng)涉眾面對(duì)他們需求的所有含意時(shí),通常會(huì)更愿意調(diào)節(jié)他們的雄心,并且得到更多的回報(bào)。
因此,關(guān)鍵的評(píng)估需求是其中一個(gè)度量,并且這應(yīng)該是此階段測(cè)試人員主要的目標(biāo)。
量度方法的評(píng)估
對(duì)于每個(gè)技術(shù)問(wèn)題,架構(gòu)團(tuán)隊(duì)將建立一個(gè)或多個(gè)具體表現(xiàn)一個(gè)解決方案方法的可執(zhí)行系統(tǒng)??赡軙?huì)有若干有競(jìng)爭(zhēng)的解決方案(舉例來(lái)說(shuō),通信中的 UDP 對(duì) TCP)和大量的對(duì)于每個(gè)解決方案的可配置選擇(舉例來(lái)說(shuō),進(jìn)程架構(gòu)中的 10 線(xiàn)程 對(duì) 50 個(gè)線(xiàn)程)。測(cè)試人員執(zhí)行對(duì)生成架構(gòu)的度量所必需的步驟。
度量強(qiáng)調(diào)的是是否對(duì)解決方案有了成熟的考慮而不是功能是否被正確的實(shí)現(xiàn)了,因?yàn)闆](méi)有人會(huì)期望生命周期中早期就實(shí)現(xiàn)完全正確的功能或者甚至花費(fèi)大量的精力去雕琢還不成熟的系統(tǒng)的功能。初始階段中指定的許多實(shí)驗(yàn)室環(huán)境將在精化階段中被需要。我們將度量性能和可伸縮性,跨過(guò)通信鏈接和出自數(shù)據(jù)庫(kù)的數(shù)據(jù)速率,隨負(fù)載變化時(shí)的響應(yīng)時(shí)間,并且我們將生成需求所要求的其他度量。根據(jù)所有的架構(gòu)原型執(zhí)行這些測(cè)試,并且測(cè)試團(tuán)隊(duì)將與架構(gòu)師攜手工作,共同設(shè)計(jì)確認(rèn)或駁斥每個(gè)設(shè)計(jì)決策的測(cè)試。
當(dāng)傳統(tǒng)測(cè)試人員可能會(huì)參與整個(gè)基于文檔的活動(dòng)時(shí),測(cè)試團(tuán)隊(duì)在此階段的行為與瀑布過(guò)程中所做的驚人地不同。當(dāng)項(xiàng)目從一個(gè)危機(jī)牽絆到下一個(gè)時(shí),許多工作都不相關(guān)了。相反,在迭代的項(xiàng)目的精化階段,測(cè)試人員在起勁的行動(dòng)著,被閃光燈和不停的撥號(hào)所圍繞。測(cè)試人員贊成相關(guān)的且實(shí)際的測(cè)試,使它們與架構(gòu)師保持一致,并且評(píng)估并解釋結(jié)果。
當(dāng)然這是富有挑戰(zhàn)的工作,但同時(shí)還是要大量參與的、有價(jià)值的,并令人滿(mǎn)意的。如果對(duì)于小型的團(tuán)隊(duì)環(huán)境及上千行的代碼的情況建立這些測(cè)試都是棘手的,那么設(shè)想一下對(duì)上百萬(wàn)行的代碼項(xiàng)目的大型團(tuán)隊(duì)來(lái)說(shuō)所受到的阻礙。
雖然這個(gè)階段執(zhí)行測(cè)試設(shè)計(jì)和實(shí)現(xiàn),但是我們應(yīng)該記住,重要的是測(cè)試結(jié)果而不是測(cè)試文檔。由于將會(huì)拋棄許多架構(gòu)的提議,所以相關(guān)的測(cè)試也一樣。我們僅需要做足夠的測(cè)試設(shè)計(jì)和實(shí)現(xiàn),用以獲得必需的度量。我們不像細(xì)化提議那樣做太多測(cè)試,隨著最主要的架構(gòu)候選的出現(xiàn),我們可以添加嚴(yán)密,如可溯性和其他文檔。
測(cè)試設(shè)計(jì)
作為并行活動(dòng),精化階段表現(xiàn)出一次方便的時(shí)機(jī)來(lái)考慮技術(shù)架構(gòu)中的小變更如何能夠更好的幫助測(cè)試設(shè)計(jì)和測(cè)試自動(dòng)化。
通過(guò)測(cè)試自動(dòng)化,我的意思是使用記錄鍵盤(pán)和鼠標(biāo)事件的 GUI 記錄或回放工具,可以回放來(lái)重復(fù)測(cè)試。經(jīng)驗(yàn)豐富的測(cè)試人員知道自動(dòng)化尤其要求重要的腳本維護(hù)工作。值得考慮一下允許腳本構(gòu)造的“測(cè)試架構(gòu)”,這與設(shè)計(jì)人員創(chuàng)建“軟件架構(gòu)”來(lái)簡(jiǎn)化應(yīng)用程序構(gòu)造具有同樣意義。
測(cè)試人員應(yīng)該考慮解決方案,特別是測(cè)試可能參數(shù)化的方法或映射到需求所暗示的“組合爆炸”的結(jié)合方法的復(fù)雜性維度。例如,考慮一個(gè)指定某個(gè)需要支持的平臺(tái)組合的非功能需求。根據(jù)一個(gè)平臺(tái)撰寫(xiě)腳本,在所有平臺(tái)上“回放”是有利的。這同樣可以應(yīng)用到數(shù)據(jù)庫(kù)后端、應(yīng)用程序服務(wù)器、Web 服務(wù)器和環(huán)境基礎(chǔ)架構(gòu)的其他元素,并且特別是對(duì)于這些的排列組合。手動(dòng)測(cè)試每個(gè)組合將是不能忍受的痛苦。測(cè)試自動(dòng)化是經(jīng)濟(jì)的解決方案。
大多數(shù)應(yīng)用程序?yàn)闇y(cè)試人員的專(zhuān)長(zhǎng)提供許多應(yīng)用程序?qū)S玫臋C(jī)會(huì)。設(shè)計(jì)人員將找到“用參數(shù)表示”問(wèn)題領(lǐng)域的方法,并且這些經(jīng)常成為類(lèi)似地用參數(shù)表示測(cè)試所沿著的維度。例如,在我所工作過(guò)的一個(gè)應(yīng)用程序中,有許多看起來(lái)一樣的屏幕上的表格,因此設(shè)計(jì)人員將列參數(shù)化為通用的小部件,這給予測(cè)試人員類(lèi)似的能力來(lái)用參數(shù)表示它們的測(cè)試。
針對(duì)測(cè)試的設(shè)計(jì)在精化階段如此重要的一個(gè)原因是在構(gòu)建階段很難找出時(shí)間來(lái)適當(dāng)處理這一活動(dòng)。但是有一個(gè)甚至更好的理由:通過(guò)測(cè)試人員和設(shè)計(jì)人員之間的良好對(duì)話(huà),架構(gòu)中的小讓步可以給測(cè)試設(shè)計(jì)添加一個(gè)大好處。總而言之,精化階段是針對(duì)測(cè)試而設(shè)計(jì)的適當(dāng)時(shí)機(jī)。
構(gòu)建(Construction)階段:管理進(jìn)度風(fēng)險(xiǎn)
RUP 的構(gòu)建階段瞄準(zhǔn)進(jìn)度風(fēng)險(xiǎn)的管理。如果應(yīng)用了 RUP 首選的基于用例的方法,就可以比利用傳統(tǒng)的(瀑布)方法更快地集中于可用的(盡管不完全)系統(tǒng)。當(dāng)達(dá)到這一可用地不完全層次,剩下的路也就不遠(yuǎn)了。
該方法生成了一系列客觀(guān)的改進(jìn)的可執(zhí)行系統(tǒng),并且擁有重要的優(yōu)勢(shì):
在盡可能最早的時(shí)候給客戶(hù)展示系統(tǒng)的功能。
團(tuán)隊(duì)可以及早地獲得部署經(jīng)驗(yàn)。生成的可執(zhí)行系統(tǒng)可以轉(zhuǎn)化為產(chǎn)品化階段的子集(部分部署)。這使我們獲得產(chǎn)品化階段問(wèn)題的經(jīng)驗(yàn) —— 例如,驗(yàn)收測(cè)試所需要的是什么,如何為部署而打包,以及一百個(gè)其他的問(wèn)題(參見(jiàn)下面的產(chǎn)品化階段)。
我們收集量度,這使得在迭代開(kāi)發(fā)中可以立即看到項(xiàng)目進(jìn)展。在瀑布過(guò)程中,不太可能直接比較分析活動(dòng)量度和設(shè)計(jì)活動(dòng)量度或編碼活動(dòng)量度,因?yàn)樗鼈兪峭耆煌幕顒?dòng)。但在迭代過(guò)程中,比較迭代 1 的量度與迭代 2 的量度更加容易,因?yàn)槲覀冊(cè)谥貜?fù)同一組活動(dòng)。
在幾個(gè)星期內(nèi),我們就會(huì)完成一個(gè)分析——設(shè)計(jì)——編碼——測(cè)試的周期,這個(gè)給我們一種明顯進(jìn)展的感覺(jué)。這就是構(gòu)建階段的迭代的獨(dú)特之處。測(cè)試活動(dòng)評(píng)估進(jìn)展并驗(yàn)證確實(shí)有了進(jìn)展。
評(píng)估進(jìn)展
RUP 提到的迭代節(jié)奏到構(gòu)建階段還是活躍著的,并且該頻率與測(cè)試人員有特別的關(guān)系。測(cè)試人員的主要目標(biāo)是能夠客觀(guān)地描述系統(tǒng)的當(dāng)前狀態(tài),并且能夠?qū)⒃摖顟B(tài)與以前的狀態(tài)進(jìn)行比較。這兩個(gè)狀態(tài)之間的區(qū)別,簡(jiǎn)單地說(shuō),就是進(jìn)展。
測(cè)試人員的“節(jié)奏”源于以下活動(dòng)。
當(dāng)接近這些極各種架構(gòu)退化的方式。
有了此數(shù)據(jù),架構(gòu)師可以選擇最適當(dāng)?shù)募軜?gòu),并且,當(dāng)涉眾面對(duì)他們需求的所有含意時(shí),通常會(huì)更愿意調(diào)節(jié)他們的雄心,并且得到更多的回報(bào)。
因此,關(guān)鍵的評(píng)估需求是其中一個(gè)度量,并且這應(yīng)該是此階段測(cè)試人員主要的目標(biāo)。
量度方法的評(píng)估
對(duì)于每個(gè)技術(shù)問(wèn)題,架構(gòu)團(tuán)隊(duì)將建立一個(gè)或多個(gè)具體表現(xiàn)一個(gè)解決方案方法的可執(zhí)行系統(tǒng)??赡軙?huì)有若干有競(jìng)爭(zhēng)的解決方案(舉例來(lái)說(shuō),通信中的 UDP 對(duì) TCP)和大量的對(duì)于每個(gè)解決方案的可配置選擇(舉例來(lái)說(shuō),進(jìn)程架構(gòu)中的 10 線(xiàn)程 對(duì) 50 個(gè)線(xiàn)程)。測(cè)試人員執(zhí)行對(duì)生成架構(gòu)的度量所必需的步驟。
度量強(qiáng)調(diào)的是是否對(duì)解決方案有了成熟的考慮而不是功能是否被正確的實(shí)現(xiàn)了,因?yàn)闆](méi)有人會(huì)期望生命周期中早期就實(shí)現(xiàn)完全正確的功能或者甚至花費(fèi)大量的精力去雕琢還不成熟的系統(tǒng)的功能。初始階段中指定的許多實(shí)驗(yàn)室環(huán)境將在精化階段中被需要。我們將度量性能和可伸縮性,跨過(guò)通信鏈接和出自數(shù)據(jù)庫(kù)的數(shù)據(jù)速率,隨負(fù)載變化時(shí)的響應(yīng)時(shí)間,并且我們將生成需求所要求的其他度量。根據(jù)所有的架構(gòu)原型執(zhí)行這些測(cè)試,并且測(cè)試團(tuán)隊(duì)將與架構(gòu)師攜手工作,共同設(shè)計(jì)確認(rèn)或駁斥每個(gè)設(shè)計(jì)決策的測(cè)試。
當(dāng)傳統(tǒng)測(cè)試人員可能會(huì)參與整個(gè)基于文檔的活動(dòng)時(shí),測(cè)試團(tuán)隊(duì)在此階段的行為與瀑布過(guò)程中所做的驚人地不同。當(dāng)項(xiàng)目從一個(gè)危機(jī)牽絆到下一個(gè)時(shí),許多工作都不相關(guān)了。相反,在迭代的項(xiàng)目的精化階段,測(cè)試人員在起勁的行動(dòng)著,被閃光燈和不停的撥號(hào)所圍繞。測(cè)試人員贊成相關(guān)的且實(shí)際的測(cè)試,使它們與架構(gòu)師保持一致,并且評(píng)估并解釋結(jié)果。
當(dāng)然這是富有挑戰(zhàn)的工作,但同時(shí)還是要大量參與的、有價(jià)值的,并令人滿(mǎn)意的。如果對(duì)于小型的團(tuán)隊(duì)環(huán)境及上千行的代碼的情況建立這些測(cè)試都是棘手的,那么設(shè)想一下對(duì)上百萬(wàn)行的代碼項(xiàng)目的大型團(tuán)隊(duì)來(lái)說(shuō)所受到的阻礙。
雖然這個(gè)階段執(zhí)行測(cè)試設(shè)計(jì)和實(shí)現(xiàn),但是我們應(yīng)該記住,重要的是測(cè)試結(jié)果而不是測(cè)試文檔。由于將會(huì)拋棄許多架構(gòu)的提議,所以相關(guān)的測(cè)試也一樣。我們僅需要做足夠的測(cè)試設(shè)計(jì)和實(shí)現(xiàn),用以獲得必需的度量。我們不像細(xì)化提議那樣做太多測(cè)試,隨著最主要的架構(gòu)候選的出現(xiàn),我們可以添加嚴(yán)密,如可溯性和其他文檔。
測(cè)試設(shè)計(jì)
作為并行活動(dòng),精化階段表現(xiàn)出一次方便的時(shí)機(jī)來(lái)考慮技術(shù)架構(gòu)中的小變更如何能夠更好的幫助測(cè)試設(shè)計(jì)和測(cè)試自動(dòng)化。
通過(guò)測(cè)試自動(dòng)化,我的意思是使用記錄鍵盤(pán)和鼠標(biāo)事件的 GUI 記錄或回放工具,可以回放來(lái)重復(fù)測(cè)試。經(jīng)驗(yàn)豐富的測(cè)試人員知道自動(dòng)化尤其要求重要的腳本維護(hù)工作。值得考慮一下允許腳本構(gòu)造的“測(cè)試架構(gòu)”,這與設(shè)計(jì)人員創(chuàng)建“軟件架構(gòu)”來(lái)簡(jiǎn)化應(yīng)用程序構(gòu)造具有同樣意義。
測(cè)試人員應(yīng)該考慮解決方案,特別是測(cè)試可能參數(shù)化的方法或映射到需求所暗示的“組合爆炸”的結(jié)合方法的復(fù)雜性維度。例如,考慮一個(gè)指定某個(gè)需要支持的平臺(tái)組合的非功能需求。根據(jù)一個(gè)平臺(tái)撰寫(xiě)腳本,在所有平臺(tái)上“回放”是有利的。這同樣可以應(yīng)用到數(shù)據(jù)庫(kù)后端、應(yīng)用程序服務(wù)器、Web 服務(wù)器和環(huán)境基礎(chǔ)架構(gòu)的其他元素,并且特別是對(duì)于這些的排列組合。手動(dòng)測(cè)試每個(gè)組合將是不能忍受的痛苦。測(cè)試自動(dòng)化是經(jīng)濟(jì)的解決方案。
大多數(shù)應(yīng)用程序?yàn)闇y(cè)試人員的專(zhuān)長(zhǎng)提供許多應(yīng)用程序?qū)S玫臋C(jī)會(huì)。設(shè)計(jì)人員將找到“用參數(shù)表示”問(wèn)題領(lǐng)域的方法,并且這些經(jīng)常成為類(lèi)似地用參數(shù)表示測(cè)試所沿著的維度。例如,在我所工作過(guò)的一個(gè)應(yīng)用程序中,有許多看起來(lái)一樣的屏幕上的表格,因此設(shè)計(jì)人員將列參數(shù)化為通用的小部件,這給予測(cè)試人員類(lèi)似的能力來(lái)用參數(shù)表示它們的測(cè)試。
針對(duì)測(cè)試的設(shè)計(jì)在精化階段如此重要的一個(gè)原因是在構(gòu)建階段很難找出時(shí)間來(lái)適當(dāng)處理這一活動(dòng)。但是有一個(gè)甚至更好的理由:通過(guò)測(cè)試人員和設(shè)計(jì)人員之間的良好對(duì)話(huà),架構(gòu)中的小讓步可以給測(cè)試設(shè)計(jì)添加一個(gè)大好處。總而言之,精化階段是針對(duì)測(cè)試而設(shè)計(jì)的適當(dāng)時(shí)機(jī)。
構(gòu)建(Construction)階段:管理進(jìn)度風(fēng)險(xiǎn)
RUP 的構(gòu)建階段瞄準(zhǔn)進(jìn)度風(fēng)險(xiǎn)的管理。如果應(yīng)用了 RUP 首選的基于用例的方法,就可以比利用傳統(tǒng)的(瀑布)方法更快地集中于可用的(盡管不完全)系統(tǒng)。當(dāng)達(dá)到這一可用地不完全層次,剩下的路也就不遠(yuǎn)了。
該方法生成了一系列客觀(guān)的改進(jìn)的可執(zhí)行系統(tǒng),并且擁有重要的優(yōu)勢(shì):
在盡可能最早的時(shí)候給客戶(hù)展示系統(tǒng)的功能。
團(tuán)隊(duì)可以及早地獲得部署經(jīng)驗(yàn)。生成的可執(zhí)行系統(tǒng)可以轉(zhuǎn)化為產(chǎn)品化階段的子集(部分部署)。這使我們獲得產(chǎn)品化階段問(wèn)題的經(jīng)驗(yàn) —— 例如,驗(yàn)收測(cè)試所需要的是什么,如何為部署而打包,以及一百個(gè)其他的問(wèn)題(參見(jiàn)下面的產(chǎn)品化階段)。
我們收集量度,這使得在迭代開(kāi)發(fā)中可以立即看到項(xiàng)目進(jìn)展。在瀑布過(guò)程中,不太可能直接比較分析活動(dòng)量度和設(shè)計(jì)活動(dòng)量度或編碼活動(dòng)量度,因?yàn)樗鼈兪峭耆煌幕顒?dòng)。但在迭代過(guò)程中,比較迭代 1 的量度與迭代 2 的量度更加容易,因?yàn)槲覀冊(cè)谥貜?fù)同一組活動(dòng)。
在幾個(gè)星期內(nèi),我們就會(huì)完成一個(gè)分析——設(shè)計(jì)——編碼——測(cè)試的周期,這個(gè)給我們一種明顯進(jìn)展的感覺(jué)。這就是構(gòu)建階段的迭代的獨(dú)特之處。測(cè)試活動(dòng)評(píng)估進(jìn)展并驗(yàn)證確實(shí)有了進(jìn)展。
評(píng)估進(jìn)展
RUP 提到的迭代節(jié)奏到構(gòu)建階段還是活躍著的,并且該頻率與測(cè)試人員有特別的關(guān)系。測(cè)試人員的主要目標(biāo)是能夠客觀(guān)地描述系統(tǒng)的當(dāng)前狀態(tài),并且能夠?qū)⒃摖顟B(tài)與以前的狀態(tài)進(jìn)行比較。這兩個(gè)狀態(tài)之間的區(qū)別,簡(jiǎn)單地說(shuō),就是進(jìn)展。
測(cè)試人員的“節(jié)奏”源于以下活動(dòng)。

