測(cè)試設(shè)計(jì)和實(shí)現(xiàn)
測(cè)試人員的一項(xiàng)主要任務(wù)是測(cè)試腳本的設(shè)計(jì)和實(shí)現(xiàn)。在迭代開(kāi)發(fā)中,這是由為當(dāng)前迭代安排的場(chǎng)景所驅(qū)動(dòng)的。測(cè)試腳本必須開(kāi)發(fā)成能夠?qū)?yīng)用程序推到正確的“屏幕”或其他應(yīng)用程序模式。測(cè)試數(shù)據(jù)必須開(kāi)發(fā)成可以在此處執(zhí)行應(yīng)用程序,并且驗(yàn)證必須設(shè)計(jì)成可以核對(duì)應(yīng)用程序的行為。
如果使用了自動(dòng)化的測(cè)試工具,那么此時(shí)會(huì)提出某種考慮,關(guān)于該測(cè)試用例是否是好的自動(dòng)化候選或者是否應(yīng)該手動(dòng)執(zhí)行。
測(cè)試執(zhí)行
執(zhí)行測(cè)試來(lái)確定每個(gè)驗(yàn)證點(diǎn)的通過(guò)或失敗狀態(tài)。執(zhí)行手動(dòng)測(cè)試意味著有方法地遵守測(cè)試實(shí)現(xiàn)提示并適當(dāng)?shù)赜^察和注意結(jié)果。
執(zhí)行自動(dòng)化的測(cè)試意味著安排正確的系統(tǒng)初始條件,然后調(diào)用腳本回放工具。在控制初始條件時(shí),我們希望管理測(cè)試過(guò)程中什么數(shù)據(jù)處于什么狀態(tài)。該需求也適用于手動(dòng)測(cè)試,區(qū)別在于測(cè)試人員可以“照顧”交互并且經(jīng)常讓測(cè)試不工作來(lái)工作于未初始化的開(kāi)始條件周?chē)?BR> 回歸和測(cè)試腳本維護(hù)
迭代開(kāi)發(fā)的一個(gè)明確的任務(wù)是需要為每個(gè)新的迭代再次運(yùn)行舊的測(cè)試。這種對(duì)現(xiàn)有測(cè)試集的重復(fù)執(zhí)行稱(chēng)為回歸測(cè)試,是一個(gè)顯露出自動(dòng)化測(cè)試的好處和負(fù)擔(dān)的活動(dòng)。好處:因?yàn)榱硪环N是手動(dòng)測(cè)試,很明顯的耗費(fèi)時(shí)間的活動(dòng)。負(fù)擔(dān):因?yàn)樽詣?dòng)化的腳本經(jīng)常需要仔細(xì)的修改來(lái)服務(wù)于下一個(gè)構(gòu)建。測(cè)試腳本維護(hù),和腳本回放調(diào)試器,對(duì)測(cè)試人員來(lái)說(shuō)將會(huì)是非常熟悉的。測(cè)試人員將會(huì)及早并且使用減少腳本退化的測(cè)試工具,了解如何減少維護(hù)工作。
缺陷跟蹤和分辨
缺陷跟蹤和分辨活動(dòng)是測(cè)試人員都知道的。測(cè)試行為總是揭示缺陷或問(wèn)題,并且必須勤奮地跟蹤每個(gè)事故來(lái)進(jìn)行分辨。首先,分辨通常需要在實(shí)驗(yàn)室中復(fù)制的錯(cuò)誤,但至少是處于這個(gè)原因,即 SEI Capability Maturity Model Integration (CMMI) 要求項(xiàng)目團(tuán)隊(duì)實(shí)現(xiàn)配置管理以達(dá)到有威信的“可重復(fù)級(jí)別, 級(jí)別 2”。只有通過(guò)將所有開(kāi)發(fā)文件置于該控制下,并且用材料清單描述每個(gè)構(gòu)建,開(kāi)發(fā)人員才可能有許多機(jī)會(huì)重復(fù)所有已知的事件并因此能夠滿(mǎn)足該標(biāo)準(zhǔn)。
為了提高項(xiàng)目角色之間缺陷信息的共享,用開(kāi)發(fā)人員使用的同樣的配置管理和缺陷跟蹤環(huán)境來(lái)裝備測(cè)試人員是合理的。
針對(duì)進(jìn)展的量度
我們已經(jīng)回顧了測(cè)試人員在構(gòu)建階段所做的事情。我們?nèi)绾螌⑵滢D(zhuǎn)化為進(jìn)展的量度呢?有多種描述恰當(dāng)?shù)募夹g(shù), 3 以下的處理是可以借鑒的。
完成百分比
度量進(jìn)展的一個(gè)過(guò)分簡(jiǎn)單但特別實(shí)際的方法是利用“完成百分比”作為量度。如果有人考慮通過(guò)測(cè)試的場(chǎng)景的流程,我們可以考慮構(gòu)造一組檢查點(diǎn),表 1 中所顯示的一個(gè)實(shí)例。
表 1:測(cè)試流中的檢查點(diǎn) 檢查點(diǎn) 描述
被識(shí)別的場(chǎng)景 放棄用例分析。被識(shí)別的可選流和例外流的有趣的組合。在精化階段的末尾完成 80%。
詳細(xì)的場(chǎng)景 使對(duì)象與所描述的事件順序協(xié)作。
被識(shí)別的測(cè)試用例的數(shù)量 該數(shù)字經(jīng)常是 1,但是每個(gè)場(chǎng)景有多個(gè)測(cè)試用例是可能的。應(yīng)該包含每個(gè)測(cè)試用例的原因或目的。
定義的測(cè)試用例 測(cè)試用例與相關(guān)的文當(dāng)工作一起產(chǎn)生。這包括到驅(qū)動(dòng)需求的鏈接、測(cè)試方法、前置和后置條件、測(cè)試數(shù)據(jù)及可觀察的結(jié)果。
實(shí)現(xiàn)的測(cè)試腳本 特定的初始條件,將應(yīng)用程序?qū)Ш降綔y(cè)試位置的指導(dǎo),輸入測(cè)試數(shù)據(jù)的順序,觀察結(jié)果的方法,結(jié)果值的設(shè)置。
執(zhí)行的測(cè)試 至少已經(jīng)執(zhí)行一次測(cè)試腳本。
曾經(jīng)通過(guò)的測(cè)試 先前測(cè)試執(zhí)行已經(jīng)通過(guò)了所有構(gòu)建??蛇x擇地,最近通過(guò)的時(shí)期。
通過(guò)的測(cè)試 測(cè)試執(zhí)行通過(guò)了最近的迭代。
我們確定表 1 中每個(gè)場(chǎng)景和測(cè)試中所描述的每個(gè)檢查點(diǎn)。不論完成或是沒(méi)完成,它們的值都嚴(yán)格地報(bào)告為是或不是的值。我們合計(jì)每一層并將其表示為前一個(gè)層的某個(gè)百分比。目標(biāo)是達(dá)到每一層的 100% 覆蓋??偟慕Y(jié)果相當(dāng)粗略,但針對(duì)達(dá)到百分比的工作帶來(lái)了提前測(cè)試工作的非常有意義的副加作用。
缺陷趨勢(shì)
每個(gè)迭代將擁有一個(gè)開(kāi)發(fā)包,一些新的特性或場(chǎng)景加入其中并且根據(jù)現(xiàn)有場(chǎng)景的缺陷也得到修復(fù)。當(dāng)然有一個(gè)趨勢(shì),即實(shí)現(xiàn)新的而不修復(fù)老的,但是明智的項(xiàng)目經(jīng)理將注意缺陷趨勢(shì)并強(qiáng)調(diào),至多一兩個(gè)以缺陷形式的未解決的迭代工作的價(jià)值將保留。
無(wú)論如何,分辨缺陷無(wú)疑可以看作進(jìn)展。與缺陷相關(guān)的量度也能夠以有趣的方式得來(lái),包括:
每個(gè)缺陷的工作、每行源代碼的缺陷、每個(gè)模塊或組件的缺陷、按照注入點(diǎn)的缺陷、按照時(shí)間的缺陷、按照狀態(tài)的缺陷。
使用時(shí)間圖表 —— 根據(jù)時(shí)間所有這些量度都可以畫(huà)為圖表趨勢(shì),例如,應(yīng)該積極地調(diào)查表示修復(fù)缺陷工作穩(wěn)定增長(zhǎng)的趨勢(shì)。
我們還能夠通過(guò)余下的迭代的數(shù)量和平均的缺陷分辨工作來(lái)增加每個(gè)迭代的預(yù)期缺陷。這指示了顯著的缺陷負(fù)擔(dān),包括在還沒(méi)撰寫(xiě)的代碼中沒(méi)有發(fā)現(xiàn)的缺陷!這些是粗略的數(shù)字,但是是要求全部的完成百分比的重要基礎(chǔ)。
對(duì)于測(cè)試人員的缺陷趨勢(shì)
雖然上面的缺陷趨勢(shì)不是具體到測(cè)試規(guī)程的,但是存在重要的缺陷量度來(lái)指導(dǎo)測(cè)試人員,包括每個(gè)找到的缺陷的測(cè)試工作、每個(gè)測(cè)試用例的缺陷、每個(gè)場(chǎng)景的缺陷,及每個(gè)迭代的缺陷。
這樣的量度是有效的,不僅從歷史的觀察,還從預(yù)言能力上講。例如,如果我們的測(cè)試揭示了一個(gè)突然的且出乎意料的缺陷密度,我們可能宣稱(chēng)該構(gòu)建是不健全的,放棄測(cè)試,并讓架構(gòu)團(tuán)隊(duì)檢查此構(gòu)建。測(cè)試一個(gè)糟糕的構(gòu)建以致精疲力盡,從中得不到一點(diǎn)好處。
MTBF
平均故障時(shí)間(mean time between failure,MTBF)是重要的“人造”量度 —— 也就是,我們不得不捏造定義,為了能夠生成受控條件下的客觀度量。MTBF 通常作為非功能需求出現(xiàn)。為了驗(yàn)證我們的系統(tǒng),我們必須在實(shí)驗(yàn)室設(shè)置在測(cè)的應(yīng)用程序,利用事件進(jìn)行干擾,并且當(dāng)不能適當(dāng)處理事件時(shí)進(jìn)行監(jiān)測(cè)。我們將其記錄為一個(gè)失敗,并且繼續(xù)測(cè)試或者(如果不幸的話)重新啟動(dòng)應(yīng)用程序。我們能夠以快于真實(shí)情況的節(jié)奏來(lái)生成事件流。這些手段的凈效應(yīng)是能夠在幾個(gè)星期內(nèi)生成幾年中才能度量出的 MTBF 數(shù)字。 因?yàn)槊黠@的理由,可以將其認(rèn)為是人造的量度。
這些量度證明測(cè)試人員應(yīng)該看作是項(xiàng)目經(jīng)理重要的數(shù)據(jù)來(lái)源。
測(cè)試人員的一項(xiàng)主要任務(wù)是測(cè)試腳本的設(shè)計(jì)和實(shí)現(xiàn)。在迭代開(kāi)發(fā)中,這是由為當(dāng)前迭代安排的場(chǎng)景所驅(qū)動(dòng)的。測(cè)試腳本必須開(kāi)發(fā)成能夠?qū)?yīng)用程序推到正確的“屏幕”或其他應(yīng)用程序模式。測(cè)試數(shù)據(jù)必須開(kāi)發(fā)成可以在此處執(zhí)行應(yīng)用程序,并且驗(yàn)證必須設(shè)計(jì)成可以核對(duì)應(yīng)用程序的行為。
如果使用了自動(dòng)化的測(cè)試工具,那么此時(shí)會(huì)提出某種考慮,關(guān)于該測(cè)試用例是否是好的自動(dòng)化候選或者是否應(yīng)該手動(dòng)執(zhí)行。
測(cè)試執(zhí)行
執(zhí)行測(cè)試來(lái)確定每個(gè)驗(yàn)證點(diǎn)的通過(guò)或失敗狀態(tài)。執(zhí)行手動(dòng)測(cè)試意味著有方法地遵守測(cè)試實(shí)現(xiàn)提示并適當(dāng)?shù)赜^察和注意結(jié)果。
執(zhí)行自動(dòng)化的測(cè)試意味著安排正確的系統(tǒng)初始條件,然后調(diào)用腳本回放工具。在控制初始條件時(shí),我們希望管理測(cè)試過(guò)程中什么數(shù)據(jù)處于什么狀態(tài)。該需求也適用于手動(dòng)測(cè)試,區(qū)別在于測(cè)試人員可以“照顧”交互并且經(jīng)常讓測(cè)試不工作來(lái)工作于未初始化的開(kāi)始條件周?chē)?BR> 回歸和測(cè)試腳本維護(hù)
迭代開(kāi)發(fā)的一個(gè)明確的任務(wù)是需要為每個(gè)新的迭代再次運(yùn)行舊的測(cè)試。這種對(duì)現(xiàn)有測(cè)試集的重復(fù)執(zhí)行稱(chēng)為回歸測(cè)試,是一個(gè)顯露出自動(dòng)化測(cè)試的好處和負(fù)擔(dān)的活動(dòng)。好處:因?yàn)榱硪环N是手動(dòng)測(cè)試,很明顯的耗費(fèi)時(shí)間的活動(dòng)。負(fù)擔(dān):因?yàn)樽詣?dòng)化的腳本經(jīng)常需要仔細(xì)的修改來(lái)服務(wù)于下一個(gè)構(gòu)建。測(cè)試腳本維護(hù),和腳本回放調(diào)試器,對(duì)測(cè)試人員來(lái)說(shuō)將會(huì)是非常熟悉的。測(cè)試人員將會(huì)及早并且使用減少腳本退化的測(cè)試工具,了解如何減少維護(hù)工作。
缺陷跟蹤和分辨
缺陷跟蹤和分辨活動(dòng)是測(cè)試人員都知道的。測(cè)試行為總是揭示缺陷或問(wèn)題,并且必須勤奮地跟蹤每個(gè)事故來(lái)進(jìn)行分辨。首先,分辨通常需要在實(shí)驗(yàn)室中復(fù)制的錯(cuò)誤,但至少是處于這個(gè)原因,即 SEI Capability Maturity Model Integration (CMMI) 要求項(xiàng)目團(tuán)隊(duì)實(shí)現(xiàn)配置管理以達(dá)到有威信的“可重復(fù)級(jí)別, 級(jí)別 2”。只有通過(guò)將所有開(kāi)發(fā)文件置于該控制下,并且用材料清單描述每個(gè)構(gòu)建,開(kāi)發(fā)人員才可能有許多機(jī)會(huì)重復(fù)所有已知的事件并因此能夠滿(mǎn)足該標(biāo)準(zhǔn)。
為了提高項(xiàng)目角色之間缺陷信息的共享,用開(kāi)發(fā)人員使用的同樣的配置管理和缺陷跟蹤環(huán)境來(lái)裝備測(cè)試人員是合理的。
針對(duì)進(jìn)展的量度
我們已經(jīng)回顧了測(cè)試人員在構(gòu)建階段所做的事情。我們?nèi)绾螌⑵滢D(zhuǎn)化為進(jìn)展的量度呢?有多種描述恰當(dāng)?shù)募夹g(shù), 3 以下的處理是可以借鑒的。
完成百分比
度量進(jìn)展的一個(gè)過(guò)分簡(jiǎn)單但特別實(shí)際的方法是利用“完成百分比”作為量度。如果有人考慮通過(guò)測(cè)試的場(chǎng)景的流程,我們可以考慮構(gòu)造一組檢查點(diǎn),表 1 中所顯示的一個(gè)實(shí)例。
表 1:測(cè)試流中的檢查點(diǎn) 檢查點(diǎn) 描述
被識(shí)別的場(chǎng)景 放棄用例分析。被識(shí)別的可選流和例外流的有趣的組合。在精化階段的末尾完成 80%。
詳細(xì)的場(chǎng)景 使對(duì)象與所描述的事件順序協(xié)作。
被識(shí)別的測(cè)試用例的數(shù)量 該數(shù)字經(jīng)常是 1,但是每個(gè)場(chǎng)景有多個(gè)測(cè)試用例是可能的。應(yīng)該包含每個(gè)測(cè)試用例的原因或目的。
定義的測(cè)試用例 測(cè)試用例與相關(guān)的文當(dāng)工作一起產(chǎn)生。這包括到驅(qū)動(dòng)需求的鏈接、測(cè)試方法、前置和后置條件、測(cè)試數(shù)據(jù)及可觀察的結(jié)果。
實(shí)現(xiàn)的測(cè)試腳本 特定的初始條件,將應(yīng)用程序?qū)Ш降綔y(cè)試位置的指導(dǎo),輸入測(cè)試數(shù)據(jù)的順序,觀察結(jié)果的方法,結(jié)果值的設(shè)置。
執(zhí)行的測(cè)試 至少已經(jīng)執(zhí)行一次測(cè)試腳本。
曾經(jīng)通過(guò)的測(cè)試 先前測(cè)試執(zhí)行已經(jīng)通過(guò)了所有構(gòu)建??蛇x擇地,最近通過(guò)的時(shí)期。
通過(guò)的測(cè)試 測(cè)試執(zhí)行通過(guò)了最近的迭代。
我們確定表 1 中每個(gè)場(chǎng)景和測(cè)試中所描述的每個(gè)檢查點(diǎn)。不論完成或是沒(méi)完成,它們的值都嚴(yán)格地報(bào)告為是或不是的值。我們合計(jì)每一層并將其表示為前一個(gè)層的某個(gè)百分比。目標(biāo)是達(dá)到每一層的 100% 覆蓋??偟慕Y(jié)果相當(dāng)粗略,但針對(duì)達(dá)到百分比的工作帶來(lái)了提前測(cè)試工作的非常有意義的副加作用。
缺陷趨勢(shì)
每個(gè)迭代將擁有一個(gè)開(kāi)發(fā)包,一些新的特性或場(chǎng)景加入其中并且根據(jù)現(xiàn)有場(chǎng)景的缺陷也得到修復(fù)。當(dāng)然有一個(gè)趨勢(shì),即實(shí)現(xiàn)新的而不修復(fù)老的,但是明智的項(xiàng)目經(jīng)理將注意缺陷趨勢(shì)并強(qiáng)調(diào),至多一兩個(gè)以缺陷形式的未解決的迭代工作的價(jià)值將保留。
無(wú)論如何,分辨缺陷無(wú)疑可以看作進(jìn)展。與缺陷相關(guān)的量度也能夠以有趣的方式得來(lái),包括:
每個(gè)缺陷的工作、每行源代碼的缺陷、每個(gè)模塊或組件的缺陷、按照注入點(diǎn)的缺陷、按照時(shí)間的缺陷、按照狀態(tài)的缺陷。
使用時(shí)間圖表 —— 根據(jù)時(shí)間所有這些量度都可以畫(huà)為圖表趨勢(shì),例如,應(yīng)該積極地調(diào)查表示修復(fù)缺陷工作穩(wěn)定增長(zhǎng)的趨勢(shì)。
我們還能夠通過(guò)余下的迭代的數(shù)量和平均的缺陷分辨工作來(lái)增加每個(gè)迭代的預(yù)期缺陷。這指示了顯著的缺陷負(fù)擔(dān),包括在還沒(méi)撰寫(xiě)的代碼中沒(méi)有發(fā)現(xiàn)的缺陷!這些是粗略的數(shù)字,但是是要求全部的完成百分比的重要基礎(chǔ)。
對(duì)于測(cè)試人員的缺陷趨勢(shì)
雖然上面的缺陷趨勢(shì)不是具體到測(cè)試規(guī)程的,但是存在重要的缺陷量度來(lái)指導(dǎo)測(cè)試人員,包括每個(gè)找到的缺陷的測(cè)試工作、每個(gè)測(cè)試用例的缺陷、每個(gè)場(chǎng)景的缺陷,及每個(gè)迭代的缺陷。
這樣的量度是有效的,不僅從歷史的觀察,還從預(yù)言能力上講。例如,如果我們的測(cè)試揭示了一個(gè)突然的且出乎意料的缺陷密度,我們可能宣稱(chēng)該構(gòu)建是不健全的,放棄測(cè)試,并讓架構(gòu)團(tuán)隊(duì)檢查此構(gòu)建。測(cè)試一個(gè)糟糕的構(gòu)建以致精疲力盡,從中得不到一點(diǎn)好處。
MTBF
平均故障時(shí)間(mean time between failure,MTBF)是重要的“人造”量度 —— 也就是,我們不得不捏造定義,為了能夠生成受控條件下的客觀度量。MTBF 通常作為非功能需求出現(xiàn)。為了驗(yàn)證我們的系統(tǒng),我們必須在實(shí)驗(yàn)室設(shè)置在測(cè)的應(yīng)用程序,利用事件進(jìn)行干擾,并且當(dāng)不能適當(dāng)處理事件時(shí)進(jìn)行監(jiān)測(cè)。我們將其記錄為一個(gè)失敗,并且繼續(xù)測(cè)試或者(如果不幸的話)重新啟動(dòng)應(yīng)用程序。我們能夠以快于真實(shí)情況的節(jié)奏來(lái)生成事件流。這些手段的凈效應(yīng)是能夠在幾個(gè)星期內(nèi)生成幾年中才能度量出的 MTBF 數(shù)字。 因?yàn)槊黠@的理由,可以將其認(rèn)為是人造的量度。
這些量度證明測(cè)試人員應(yīng)該看作是項(xiàng)目經(jīng)理重要的數(shù)據(jù)來(lái)源。