白盒測(cè)試
白盒測(cè)試又稱結(jié)構(gòu)測(cè)試、邏輯驅(qū)動(dòng)測(cè)試或基于程序的測(cè)試,是軟件測(cè)試的一種重要方法。根據(jù)軟件產(chǎn)品的內(nèi)部工作過(guò)程,它在計(jì)算機(jī)上進(jìn)行測(cè)試,以確認(rèn)每個(gè)內(nèi)部操作是否符合設(shè)計(jì)規(guī)范,以及是否所有內(nèi)部組件都已檢查完畢。其目的是發(fā)現(xiàn)程序編碼過(guò)程中的錯(cuò)誤。
白盒測(cè)試從測(cè)試重點(diǎn)可以分為控制流分析技術(shù)和數(shù)據(jù)流分析技術(shù)。從是否執(zhí)行程序的角度來(lái)看,可以分為靜態(tài)測(cè)試方法和動(dòng)態(tài)測(cè)試方法。靜態(tài)測(cè)試方法主要是程序結(jié)構(gòu)分析,可分為代碼走查、代碼審查、控制流分析、數(shù)據(jù)流分析、信息流分析等。動(dòng)態(tài)測(cè)試方法主要分為邏輯覆蓋法和路徑測(cè)試法,其中路徑測(cè)試法應(yīng)用最為廣泛。
白盒測(cè)試的靜態(tài)測(cè)試工具主要包括Logiscope、PRQA軟件,動(dòng)態(tài)測(cè)試工具主要包括DevPartner軟件和Pure series,可以幫助軟件測(cè)試人員增加代碼覆蓋率、提高代碼質(zhì)量并發(fā)現(xiàn)代碼中隱藏的問(wèn)題。
基本概念
白盒測(cè)試基于對(duì)產(chǎn)品內(nèi)部工作的了解,測(cè)試用于檢查產(chǎn)品的內(nèi)部動(dòng)作是否按照規(guī)范的規(guī)定進(jìn)行。無(wú)論系統(tǒng)的功能如何,它都根據(jù)程序的內(nèi)部結(jié)構(gòu)對(duì)程序進(jìn)行測(cè)試,以檢查每個(gè)程序是否能按照預(yù)定的要求正常工作。它通常用于分析程序的內(nèi)部結(jié)構(gòu)。程序的結(jié)構(gòu)和處理像白盒一樣透明,允許測(cè)試人員使用程序的內(nèi)部邏輯結(jié)構(gòu)和相關(guān)信息來(lái)設(shè)計(jì)或選擇測(cè)試用例并測(cè)試程序的所有邏輯路徑。白盒測(cè)試主要用于單元測(cè)試和集成測(cè)試,但通常不適用于系統(tǒng)測(cè)試。但在涉及動(dòng)態(tài)描述的系統(tǒng)描述部分,仍可借鑒一些白盒測(cè)試方法。因此,白盒測(cè)試不限于單元測(cè)試和集成測(cè)試。
宗旨原則
白盒測(cè)試的主要目的是檢查程序模塊,在檢查過(guò)程中應(yīng)遵循以下原則:
確保程序模塊的所有獨(dú)立執(zhí)行路徑至少測(cè)試一次;
在取“真”和“假”的兩種情況下,所有邏輯判斷都可以至少測(cè)試一次;
在上下限和操作范圍內(nèi)運(yùn)行所有循環(huán);
檢查程序的內(nèi)部數(shù)據(jù)結(jié)構(gòu)以確保其結(jié)構(gòu)的有效性。
測(cè)試方法
動(dòng)態(tài)測(cè)試是在程序運(yùn)行狀態(tài)下進(jìn)行的測(cè)試,即通過(guò)輸入預(yù)先設(shè)計(jì)的數(shù)據(jù),根據(jù)程序運(yùn)行計(jì)算的結(jié)果將其與實(shí)際輸出結(jié)果進(jìn)行比較,然后發(fā)現(xiàn)程序中的錯(cuò)誤。在程序運(yùn)行過(guò)程中,通過(guò)動(dòng)態(tài)測(cè)試,測(cè)試人員可以判斷基本模塊、執(zhí)行過(guò)程、子系統(tǒng)以及整個(gè)系統(tǒng)的運(yùn)行結(jié)果是否存在缺陷。動(dòng)態(tài)測(cè)試方法分為三個(gè)步驟。首先設(shè)置待測(cè)配置,然后對(duì)相關(guān)源程序進(jìn)行插樁、編譯和鏈接生成可執(zhí)行文件,最后插樁程序系統(tǒng)自動(dòng)記錄執(zhí)行路徑并獲得覆蓋率。動(dòng)態(tài)測(cè)試方法分為邏輯覆蓋法和路徑測(cè)試法,其中路徑測(cè)試法應(yīng)用最為廣泛。
邏輯覆蓋方法
邏輯覆蓋是一系列測(cè)試的通用術(shù)語(yǔ)。這種方法要求測(cè)試人員對(duì)程序的邏輯結(jié)構(gòu)有清晰的理解。根據(jù)覆蓋對(duì)象的不同和源程序句子的詳細(xì)覆蓋情況,常見的邏輯覆蓋可分為六種類型:句子覆蓋、決策覆蓋、條件覆蓋、決策-條件覆蓋、條件組合覆蓋和路徑覆蓋。
報(bào)表覆蓋范圍
語(yǔ)句覆蓋是設(shè)計(jì)幾個(gè)測(cè)試用例,然后運(yùn)行被測(cè)程序,使每個(gè)可執(zhí)行語(yǔ)句至少執(zhí)行一次。這種覆蓋使程序中的每個(gè)可執(zhí)行語(yǔ)句都能被執(zhí)行,但它是最弱的邏輯覆蓋標(biāo)準(zhǔn),效果有限,必須與其他方法交互使用。
決策覆蓋范圍
判斷覆蓋是指設(shè)計(jì)幾個(gè)測(cè)試用例,然后運(yùn)行被測(cè)試的程序,使程序中每個(gè)被判斷的真分支和假分支至少經(jīng)歷一次。判斷覆蓋率略好于句子覆蓋率,但不能保證能找出判斷條件中的錯(cuò)誤。因此,需要更強(qiáng)的邏輯覆蓋標(biāo)準(zhǔn)來(lái)測(cè)試和判斷內(nèi)部條件。
條件覆蓋:條件覆蓋是設(shè)計(jì)幾個(gè)測(cè)試用例,然后運(yùn)行被測(cè)程序,使程序中判斷的每個(gè)條件的可能值至少執(zhí)行一次。路徑覆蓋:路徑覆蓋就是設(shè)計(jì)足夠多的測(cè)試用例,執(zhí)行程序所有可能的路徑,這是一種覆蓋率最高的覆蓋技術(shù)。
z路徑覆蓋范圍:路徑覆蓋由于路徑太多而不便于使用,因此人們放棄了路徑覆蓋的一些次要因素并簡(jiǎn)化了循環(huán)機(jī)制,這大大減少了路徑的數(shù)量,使覆蓋這些有限的路徑成為可能。這種覆蓋方法稱為Z路徑覆蓋。循環(huán)簡(jiǎn)化是指限制循環(huán)次數(shù),只考慮循環(huán)執(zhí)行一次和零次。用Z-路徑覆蓋法簡(jiǎn)化程序中的循環(huán)后,程序中只剩下兩種結(jié)構(gòu):序列結(jié)構(gòu)和分支結(jié)構(gòu)。
路徑測(cè)試方法:白盒測(cè)試有兩種常用技術(shù),一種是覆蓋測(cè)試,另一種是路徑測(cè)試。從流程圖來(lái)看,程序的一次執(zhí)行對(duì)應(yīng)于從入口到出口的一條路徑,對(duì)這條路徑的測(cè)試就是路徑測(cè)試。從廣義上講,任何與路徑分析相關(guān)的測(cè)試都可以稱為路徑測(cè)試。路徑測(cè)試基于程序控制流圖,通過(guò)分析控制結(jié)構(gòu)的循環(huán)復(fù)雜度,導(dǎo)出基本可執(zhí)行路徑集,進(jìn)而設(shè)計(jì)測(cè)試用例。
程序路徑表達(dá)式:在分析路徑時(shí),首先要解決的是確定每條路徑和路徑的數(shù)量。為了更直觀形象地表達(dá)每條路徑,我們可以使用弧序列或節(jié)點(diǎn)序列并引入兩種運(yùn)算:加法和乘法。弧A和弧B的相加表示為a+b,表示兩條弧為“或”,為平行路徑;弧A和弧B的乘積表示為ab,表示路徑首先經(jīng)過(guò)弧A,然后經(jīng)過(guò)弧B,弧A和弧B依次相連。
基本路徑測(cè)試:如果覆蓋的路徑數(shù)量被壓縮到一定限度,它就變成了基本路徑測(cè)試。基本路徑測(cè)試是在程序控制流程圖的基礎(chǔ)上,通過(guò)分析控制結(jié)構(gòu)的循環(huán)復(fù)雜性并導(dǎo)出基本可執(zhí)行路徑集來(lái)設(shè)計(jì)測(cè)試用例的方法。設(shè)計(jì)的測(cè)試用例應(yīng)該確保程序的每個(gè)可執(zhí)行路徑在測(cè)試期間至少執(zhí)行一次。基本路徑測(cè)試方法包括以下五個(gè)方面:
1.根據(jù)詳細(xì)設(shè)計(jì)或程序源代碼,繪制程序的程序流程圖;
2.根據(jù)程序流程圖,繪制程序的控制流程圖;
3.計(jì)算程序的循環(huán)復(fù)雜度。循環(huán)復(fù)雜度是一種軟件度量標(biāo)準(zhǔn),用于對(duì)程序邏輯的復(fù)雜度進(jìn)行定量測(cè)試,該度量標(biāo)準(zhǔn)用于計(jì)算程序的基本獨(dú)立路徑的數(shù)量。
4.找到一條獨(dú)立的道路。通過(guò)程序的程序流程圖導(dǎo)出設(shè)置的基本路徑,并列出程序的獨(dú)立路徑;
5.設(shè)計(jì)測(cè)試用例。根據(jù)程序結(jié)構(gòu)和程序循環(huán)復(fù)雜性,設(shè)計(jì)用例的輸入數(shù)據(jù)和預(yù)期結(jié)果,以確保基本路徑集中每條路徑的執(zhí)行。
每個(gè)測(cè)試用例執(zhí)行后,都會(huì)與預(yù)期結(jié)果進(jìn)行比較。如果所有的測(cè)試用例都被執(zhí)行了,你可以確定程序中所有的可執(zhí)行語(yǔ)句都至少被執(zhí)行了一次。但是一些獨(dú)立路徑通常不是完全隔離的,有時(shí)它們是程序正常控制流的一部分,因此對(duì)這些路徑的測(cè)試可以是對(duì)另一條路徑的測(cè)試的一部分。
循環(huán)試驗(yàn)
循環(huán)測(cè)試專門用于測(cè)試程序中的循環(huán),可以進(jìn)一步提高測(cè)試覆蓋率。本質(zhì)上,循環(huán)測(cè)試的目的是檢查循環(huán)結(jié)構(gòu)的有效性。通常,循環(huán)可分為簡(jiǎn)單循環(huán)、嵌套循環(huán)、鏈?zhǔn)窖h(huán)和非結(jié)構(gòu)化循環(huán)。
靜態(tài)測(cè)試方法:靜態(tài)測(cè)試方法主要是程序結(jié)構(gòu)分析,可分為代碼審查、代碼遍歷、控制流分析、數(shù)據(jù)流分析、信息流分析等。
代碼審查
代碼審查是由若干程序員和測(cè)試人員組成的審查小組通過(guò)閱讀、討論和爭(zhēng)論對(duì)程序進(jìn)行靜態(tài)分析的過(guò)程。代碼評(píng)審分為兩步:第一步,組長(zhǎng)提前將設(shè)計(jì)說(shuō)明書、控制流程圖、程序文本、相關(guān)需求和規(guī)范分發(fā)給組員,作為評(píng)審的依據(jù)。團(tuán)隊(duì)成員在充分閱讀這些材料后進(jìn)行審查的第二步是召開程序?qū)彶闀?huì)議。在會(huì)議上,程序員首先解釋程序的邏輯,程序員和其他團(tuán)隊(duì)成員可以提出問(wèn)題,討論并檢查是否有錯(cuò)誤。例如,在對(duì)一個(gè)局部小問(wèn)題的修改方法的討論中,可能會(huì)發(fā)現(xiàn)牽連其中的其他問(wèn)題,甚至是設(shè)計(jì)模塊的功能描述、模塊之間的接口和系統(tǒng)整體結(jié)構(gòu)中的重大問(wèn)題,從而導(dǎo)致需求的重新定義、重新設(shè)計(jì)和重新驗(yàn)證,從而大大提高軟件質(zhì)量。
代碼走查
代碼演練與代碼審查基本相同,其過(guò)程分為兩步。第一步是先把材料發(fā)給檢查組的每個(gè)成員,仔細(xì)研究后再開會(huì)。會(huì)議評(píng)審的過(guò)程不同于代碼評(píng)審。參與者不是簡(jiǎn)單地閱讀程序并對(duì)照錯(cuò)誤清單進(jìn)行檢查,而是被允許充當(dāng)計(jì)算機(jī),也就是說(shuō),首先,測(cè)試團(tuán)隊(duì)的成員為被測(cè)試的程序準(zhǔn)備許多有代表性的測(cè)試用例,并將其提交給走查團(tuán)隊(duì)。演練團(tuán)隊(duì)開會(huì)并集體充當(dāng)計(jì)算機(jī),這樣測(cè)試用例就可以根據(jù)程序邏輯運(yùn)行,并且可以隨時(shí)記錄程序的痕跡以供分析和討論。
控制流分析
控制流分析是指檢查程序的控制結(jié)構(gòu),以驗(yàn)證在編程過(guò)程中是否遵循了程序結(jié)構(gòu)的某些規(guī)則,并在此基礎(chǔ)上獲得相關(guān)結(jié)構(gòu)組件的語(yǔ)法樹并揭示控制結(jié)構(gòu)的缺陷。控制流關(guān)系圖稱為控制流圖。圖上的每個(gè)節(jié)點(diǎn)對(duì)應(yīng)一個(gè)程序元素,兩個(gè)節(jié)點(diǎn)之間有一條直接的弧線,這表明對(duì)應(yīng)的兩個(gè)元素在控制流關(guān)系中形成了一個(gè)序列對(duì)。控制流程圖中的路徑對(duì)應(yīng)于潛在可執(zhí)行程序元素的序列。執(zhí)行路徑意味著執(zhí)行相應(yīng)的程序元素序列。如果輸入導(dǎo)致路徑的執(zhí)行,那么路徑是可達(dá)的,否則是不可達(dá)的。通常,有許多具有周期的無(wú)線路徑。即使沒有循環(huán),程序也可能有許多路徑要分析。它有五種基本程序結(jié)構(gòu):線性結(jié)構(gòu)、基本條件判斷、多分支條件判斷、while-do循環(huán)和do-while循環(huán)。控制流分析主要從三個(gè)方面分析程序結(jié)構(gòu):條件決策節(jié)點(diǎn)本身的復(fù)雜性;條件決策節(jié)點(diǎn)和循環(huán)節(jié)點(diǎn)對(duì)執(zhí)行路徑的影響;周期本身的復(fù)雜性。
數(shù)據(jù)流分析
數(shù)據(jù)流分析最早出現(xiàn)在生成有效目標(biāo)代碼的編譯系統(tǒng)中,這種方法主要用于優(yōu)化代碼。數(shù)據(jù)流測(cè)試是一種基于程序控制流的結(jié)構(gòu)化測(cè)試方法,從已建立的數(shù)據(jù)目標(biāo)狀態(tài)序列中發(fā)現(xiàn)異常。它的基本思想是變量的定義,通過(guò)重復(fù)引用和定義可以影響另一個(gè)變量的值或路徑的選擇。在測(cè)試數(shù)據(jù)流時(shí),根據(jù)變量在被測(cè)程序中的定義和引用位置來(lái)選擇測(cè)試路徑。
信息流分析
信息流分析主要用于驗(yàn)證程序變量之間的信息傳輸是否遵循保密性要求,并通過(guò)分析輸入數(shù)據(jù)、輸出數(shù)據(jù)和語(yǔ)句之間的關(guān)系來(lái)檢查程序錯(cuò)誤。信息流分析主要用于分析是否存在無(wú)用語(yǔ)句。信息流分析可以列出對(duì)輸入變量的所有可能的引用,檢查程序的執(zhí)行是否在任何指定點(diǎn)影響輸出變量值的語(yǔ)句,并提供對(duì)輸入-輸出關(guān)系的檢查,以查看每個(gè)輸出值是否來(lái)自相應(yīng)的輸入值。
檢測(cè)方法
程序儀表
程序插裝使被測(cè)程序在保持原有邏輯完整性的基礎(chǔ)上向程序中插入一些探針,并通過(guò)探針的執(zhí)行拋出程序的運(yùn)行特征數(shù)據(jù)。基于對(duì)這些特征數(shù)據(jù)的分析,可以得到程序的控制流和數(shù)據(jù)流信息,進(jìn)而得到邏輯覆蓋等動(dòng)態(tài)信息。在程序中何處設(shè)置探針,如何設(shè)計(jì)探針以及如何對(duì)探針函數(shù)捕獲的數(shù)據(jù)進(jìn)行編碼和解碼。
程序插裝在實(shí)踐中應(yīng)用廣泛,可用于捕獲程序執(zhí)行過(guò)程中變量值的變化,也可用于檢測(cè)程序的分支覆蓋和語(yǔ)句覆蓋。程序插裝的關(guān)鍵技術(shù)包括檢測(cè)什么信息、在程序中何處設(shè)置探針、如何設(shè)計(jì)探針以及探針函數(shù)捕獲的數(shù)據(jù)的編碼和解碼。
領(lǐng)域測(cè)試
領(lǐng)域測(cè)試的“領(lǐng)域”是指程序的輸入空間。領(lǐng)域測(cè)試方法基于對(duì)輸入空間的分析,其理想結(jié)果是檢查輸入空間中的每個(gè)輸入元素是否產(chǎn)生正確的結(jié)果。輸入空間可以分成不同的子空間,每個(gè)子空間對(duì)應(yīng)不同的計(jì)算。在調(diào)查了被測(cè)程序的結(jié)構(gòu)后發(fā)現(xiàn),子空間的劃分是由程序中分支語(yǔ)句的謂詞決定的,輸入空間的一個(gè)元素以程序中某些特定語(yǔ)句的執(zhí)行結(jié)束。領(lǐng)域測(cè)試基于對(duì)輸入領(lǐng)域的分析,并選擇適當(dāng)?shù)臏y(cè)試點(diǎn)進(jìn)行測(cè)試。
符號(hào)測(cè)試
符號(hào)測(cè)試遵循傳統(tǒng)的程序測(cè)試方法,通過(guò)運(yùn)行被測(cè)程序來(lái)驗(yàn)證其可靠性。此外,由于符號(hào)測(cè)試的結(jié)果代表了一大類普通測(cè)試的運(yùn)行結(jié)果,因此它實(shí)際上是為了證明程序是否接受這樣的輸入以及輸出結(jié)果是否正確。從符號(hào)測(cè)試的使用情況來(lái)看,問(wèn)題的關(guān)鍵是開發(fā)一個(gè)比傳統(tǒng)編譯器更強(qiáng)大的編譯器。能夠處理符號(hào)操作的編譯器和解釋器。
程序變異
程序變異測(cè)試是一種錯(cuò)誤驅(qū)動(dòng)的測(cè)試,針對(duì)的是特定的程序錯(cuò)誤。由于人們無(wú)法找出程序中的所有錯(cuò)誤,因此更現(xiàn)實(shí)的方法是盡可能縮小錯(cuò)誤的范圍,從而有助于測(cè)試某一類型的錯(cuò)誤是否存在。這樣可以很容易地關(guān)注對(duì)軟件最有害的可能錯(cuò)誤,實(shí)現(xiàn)更高的測(cè)試效率并降低測(cè)試成本。
覆蓋標(biāo)準(zhǔn)
測(cè)試覆蓋標(biāo)準(zhǔn)包括K.A.Foster的ESTCA覆蓋標(biāo)準(zhǔn)和Woodward的分級(jí)LCSAJ覆蓋標(biāo)準(zhǔn)。福斯特的經(jīng)驗(yàn)覆蓋率標(biāo)準(zhǔn)受到早期硬件測(cè)試方法的啟發(fā)。通過(guò)大量實(shí)驗(yàn),確定了程序中最容易出錯(cuò)的謂詞部分,并得到了一組錯(cuò)誤敏感測(cè)試用例分析(ESTCA)規(guī)則。Woodward等人提出了一種分層的LCSAJ覆蓋準(zhǔn)則。LCSAJ(線性碼序列和跳轉(zhuǎn))的意思是線性碼序列和跳轉(zhuǎn)。LC SAJ是一組順序執(zhí)行的代碼,以控制流跳轉(zhuǎn)作為其終點(diǎn)。它表明覆蓋率標(biāo)準(zhǔn)越高,就越難滿足。
ESTCA覆蓋標(biāo)準(zhǔn):ESTCA coverage criterion也稱為錯(cuò)誤敏感測(cè)試用例分析規(guī)則,是基于程序中最容易出錯(cuò)的謂詞部分的規(guī)則,屬于大數(shù)據(jù)的范疇。ESTCA覆蓋率準(zhǔn)則針對(duì)的是程序員容易犯的錯(cuò)誤,或者是圍繞錯(cuò)誤發(fā)生頻繁的區(qū)域,從而提高發(fā)現(xiàn)錯(cuò)誤的概率。它有三個(gè)規(guī)則。
規(guī)則1:對(duì)于A rel B(rel可以是)的分支謂詞,應(yīng)該適當(dāng)選擇A和B的值,以便當(dāng)測(cè)試執(zhí)行到分支語(yǔ)句時(shí),A《B、A=B和A》B的情況分別出現(xiàn)一次。
規(guī)則2:對(duì)于類型為rel1 C的分支謂詞(rel1可以》或
規(guī)則3:為外部輸入變量賦值,使它們?cè)诿總€(gè)測(cè)試用例中具有不同的值和符號(hào),這些值和符號(hào)與同一組測(cè)試用例中其他變量的值和符號(hào)不一致。
LCSAJ覆蓋標(biāo)準(zhǔn):LCSAJ覆蓋準(zhǔn)則也稱為線性碼序列和跳轉(zhuǎn)。LCSAJ是一組按順序執(zhí)行的代碼,以控制流的跳轉(zhuǎn)作為其終點(diǎn)。LCSAJ的起點(diǎn)是程序第一行的入口點(diǎn)或控制流可以到達(dá)的點(diǎn)。幾個(gè)LCSAJ字符串首尾相連,最后一個(gè)LCSAJ端點(diǎn)就是程序的終點(diǎn),構(gòu)成了程序的一條路徑。LCSAJ覆蓋準(zhǔn)則是一種分層覆蓋準(zhǔn)則;
第一層是語(yǔ)句;
第二層是分支覆蓋;
第三層是一段LCSAJ覆蓋,即程序的每個(gè)LCSAJ至少測(cè)試一次;
第四層是兩個(gè)LCSAJ蓋的任意連接,即程序中每?jī)蓚€(gè)首尾相連的LCSAJ將被測(cè)試一次;
第五層為任意連接的三層LCSAJ蓋;
n+2層是每n個(gè)端到端LCSAJ組合測(cè)試一次,以此類推。
方法選擇
白盒測(cè)試中測(cè)試方法的選擇策略如下:
1.在測(cè)試中,首先分析了靜態(tài)結(jié)構(gòu)。
2.采用靜態(tài)和動(dòng)態(tài)相結(jié)合的方法。在靜態(tài)結(jié)構(gòu)分析、代碼檢查和靜態(tài)質(zhì)量度量之后,進(jìn)行覆蓋測(cè)試。
3.利用靜態(tài)分析的結(jié)果,通過(guò)代碼檢查和動(dòng)態(tài)測(cè)試進(jìn)一步確認(rèn)結(jié)果,使測(cè)試工作更加有效。
4.覆蓋測(cè)試是白盒測(cè)試的重點(diǎn),基本路徑測(cè)試用于達(dá)到語(yǔ)句覆蓋標(biāo)準(zhǔn)。對(duì)于關(guān)鍵模塊,應(yīng)該使用多個(gè)覆蓋標(biāo)準(zhǔn)來(lái)衡量代碼覆蓋率。
5.不同的測(cè)試階段有不同的側(cè)重點(diǎn)。
應(yīng)用領(lǐng)域
白盒測(cè)試適用于單元測(cè)試、集成測(cè)試和回歸測(cè)試。單元測(cè)試是指檢查和驗(yàn)證軟件中最小的可測(cè)試單元。單元是一個(gè)軟件組件,不能再細(xì)分為其他組件。軟件工程師編寫白盒測(cè)試用例來(lái)檢查單元編碼是否正確。
集成測(cè)試測(cè)試軟件組件、硬件組件或兩者來(lái)評(píng)估它們的交互。測(cè)試人員可以編寫白盒測(cè)試用例以及黑盒測(cè)試用例來(lái)清楚地檢查各個(gè)單元之間的接口。
回歸測(cè)試,即系統(tǒng)或組件的選擇性重新測(cè)試,以驗(yàn)證修改不會(huì)導(dǎo)致意外影響,并且系統(tǒng)或組件仍符合其指定要求。回歸測(cè)試可以通過(guò)黑盒測(cè)試用例、白盒測(cè)試用例或兩者的結(jié)合來(lái)完成。白盒測(cè)試用例以及集成測(cè)試用例可以被保存并允許作為回歸測(cè)試的一部分。