當(dāng)前位置:首頁(yè) > 百科知識(shí) > 工控 > 正文

白盒測(cè)試

白盒測(cè)試[1] 又稱結(jié)構(gòu)測(cè)試、透明盒測(cè)試、邏輯驅(qū)動(dòng)測(cè)試或基于代碼的測(cè)試。白盒測(cè)試是一種測(cè)試用例設(shè)計(jì)方法,盒子指的是被測(cè)試的軟件,白盒指的是盒子是可視的,你清楚盒子內(nèi)部的東西以及里面是如何運(yùn)作的。"白盒"法全面了解程序內(nèi)部邏輯結(jié)構(gòu)、對(duì)所有邏輯路徑進(jìn)行測(cè)試。"白盒"法是窮舉路徑測(cè)試。在使用這一方案時(shí),測(cè)試者必須檢查程序的內(nèi)部結(jié)構(gòu),從檢查程序的邏輯著手,得出測(cè)試數(shù)據(jù)。貫穿程序的獨(dú)立路徑數(shù)是天文數(shù)字。 采用什么方法對(duì)軟件進(jìn)行測(cè)試呢?常用的軟件測(cè)試方法有兩大類:靜態(tài)測(cè)試方法和動(dòng)態(tài)測(cè)試方法。其中軟件的靜態(tài)測(cè)試不要求在計(jì)算機(jī)上實(shí)際執(zhí)行所測(cè)程序,主要以一些人工的模擬技術(shù)對(duì)軟件進(jìn)行分析和測(cè)試;而軟件的動(dòng)態(tài)測(cè)試是通過(guò)輸入一組預(yù)先按照一定的測(cè)試準(zhǔn)則構(gòu)造的實(shí)例數(shù)據(jù)來(lái)動(dòng)態(tài)運(yùn)行程序,而達(dá)到發(fā)現(xiàn)程序錯(cuò)誤的過(guò)程。在動(dòng)態(tài)分析技術(shù)中,最重要的技術(shù)是路徑和分支測(cè)試。下面要介紹的六種覆蓋測(cè)試方法屬于動(dòng)態(tài)分析方法。

  測(cè)試方法

  白盒測(cè)試的測(cè)試方法有代碼檢查法、靜態(tài)結(jié)構(gòu)分析法、靜態(tài)質(zhì)量度量法、邏輯覆蓋法、基本路徑測(cè)試法、域測(cè)試、符號(hào)測(cè)試、路徑覆蓋和程序變異。

  白盒測(cè)試法的覆蓋標(biāo)準(zhǔn)有邏輯覆蓋、循環(huán)覆蓋和基本路徑測(cè)試。其中邏輯覆蓋包括語(yǔ)句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋。六種覆蓋標(biāo)準(zhǔn)發(fā)現(xiàn)錯(cuò)誤的能力呈由弱到強(qiáng)的變化:

  1.語(yǔ)句覆蓋每條語(yǔ)句至少執(zhí)行一次。

  2.判定覆蓋每個(gè)判定的每個(gè)分支至少執(zhí)行一次。

  3.條件覆蓋每個(gè)判定的每個(gè)條件應(yīng)取到各種可能的值。

  4.判定/條件覆蓋同時(shí)滿足判定覆蓋條件覆蓋。

  5.條件組合覆蓋每個(gè)判定中各條件的每一種組合至少出現(xiàn)一次。

  6.路徑覆蓋使程序中每一條可能的路徑至少執(zhí)行一次。

  要求

  1.保證一個(gè)模塊中的所有獨(dú)立路徑至少被使用一次。

  2.對(duì)所有邏輯值均需測(cè)試true和false。

  3.在上下邊界及可操作范圍內(nèi)運(yùn)行所有循環(huán)。

  4.檢查內(nèi)部數(shù)據(jù)結(jié)構(gòu)以確保其有效性。

  目的

  通過(guò)檢查軟件內(nèi)部的邏輯結(jié)構(gòu),對(duì)軟件中的邏輯路徑進(jìn)行覆蓋測(cè)試;在程序不同地方設(shè)立檢查點(diǎn),檢查程序的狀態(tài),以確定實(shí)際運(yùn)行狀態(tài)與預(yù)期狀態(tài)是否一致。

  特點(diǎn)

  依據(jù)軟件設(shè)計(jì)說(shuō)明書(shū)進(jìn)行測(cè)試、對(duì)程序內(nèi)部細(xì)節(jié)的嚴(yán)密檢驗(yàn)、針對(duì)特定條件設(shè)計(jì)測(cè)試用例、對(duì)軟件的邏輯路徑進(jìn)行覆蓋測(cè)試。

  實(shí)施步驟

  1.測(cè)試計(jì)劃階段:根據(jù)需求說(shuō)明書(shū),制定測(cè)試進(jìn)度。

  2.測(cè)試設(shè)計(jì)階段:依據(jù)程序設(shè)計(jì)說(shuō)明書(shū),按照一定規(guī)范化的方法進(jìn)行軟件結(jié)構(gòu)劃分和設(shè)計(jì)測(cè)試用例。

  3.測(cè)試執(zhí)行階段:輸入測(cè)試用例,得到測(cè)試結(jié)果。

  4.測(cè)試總結(jié)階段:對(duì)比測(cè)試的結(jié)果和代碼的預(yù)期結(jié)果,分析錯(cuò)誤原因,找到并解決錯(cuò)誤。

  優(yōu)缺點(diǎn)

  優(yōu)點(diǎn)

  1.迫使測(cè)試人員去仔細(xì)思考軟件的實(shí)現(xiàn)

  2.可以檢測(cè)代碼中的每條分支和路徑

  3.揭示隱藏在代碼中的錯(cuò)誤

  4.對(duì)代碼的測(cè)試比較徹底

  5.最優(yōu)化

  缺點(diǎn)

  1.昂貴

  2.無(wú)法檢測(cè)代碼中遺漏的路徑和數(shù)據(jù)敏感性錯(cuò)誤

  3.不驗(yàn)證規(guī)格的正確性

  局限編輯

  但即使每條路徑都測(cè)試了仍然可能有錯(cuò)誤??赡艹霈F(xiàn)的情況如下:

  窮舉路徑測(cè)試決不能查出程序違反了設(shè)計(jì)規(guī)范,即程序本身是個(gè)錯(cuò)誤的程序。

  窮舉路徑測(cè)試不可能查出程序中因遺漏路徑而出錯(cuò)。

  窮舉路徑測(cè)試可能發(fā)現(xiàn)不了一些與數(shù)據(jù)相關(guān)的錯(cuò)誤。

  工具挑選

  白盒測(cè)試

  白盒測(cè)試

  白盒測(cè)試主要用在具有高可靠性要求的軟件領(lǐng)域,例如:軍工軟件、航天航空軟件、工業(yè)控制軟件等等。白盒測(cè)試工具在選購(gòu)時(shí)應(yīng)當(dāng)主要是對(duì)開(kāi)發(fā)語(yǔ)言的支持、代碼覆蓋的深度、嵌入式軟件的測(cè)試和測(cè)試的可視化等。

  語(yǔ)言支持

  白盒測(cè)試工具是對(duì)源代碼進(jìn)行的測(cè)試,測(cè)試的主要內(nèi)容包括詞法分析與語(yǔ)法分析、靜態(tài)錯(cuò)誤分析、動(dòng)態(tài)檢測(cè)等。但是對(duì)于不同的開(kāi)發(fā)語(yǔ)言,測(cè)試工具實(shí)現(xiàn)的方式和內(nèi)容差別是較大的。測(cè)試工具主要支持的開(kāi)發(fā)語(yǔ)言包括:標(biāo)準(zhǔn)C、C++、VisualC++、Java和VisualJ++等。

  覆蓋深度

  從覆蓋源程序語(yǔ)句的詳盡程度分析,邏輯覆蓋標(biāo)準(zhǔn)包括以下不同的覆蓋標(biāo)準(zhǔn):語(yǔ)句覆蓋、判定覆蓋、條件覆蓋、條件判定組合覆蓋、多條件覆蓋和修正判定條件覆蓋。

  1.語(yǔ)句覆蓋為了暴露程序中的錯(cuò)誤,程序中的每條語(yǔ)句至少應(yīng)該執(zhí)行一次。因此語(yǔ)句覆蓋(StatementCoverage)的含義是:選擇足夠多的測(cè)試數(shù)據(jù),使被測(cè)程序中每條語(yǔ)句至少執(zhí)行一次。語(yǔ)句覆蓋是很弱的邏輯覆蓋。

  2.判定覆蓋比語(yǔ)句覆蓋稍強(qiáng)的覆蓋標(biāo)準(zhǔn)是判定覆蓋(DecisionCoverage)。判定覆蓋的含義是:設(shè)計(jì)足夠的測(cè)試用例,使得程序中的每個(gè)判定至少都獲得一次“真值”或“假值”,或者說(shuō)使得程序中的每一個(gè)取“真”分支和取“假”分支至少經(jīng)歷一次,因此判定覆蓋又稱為分支覆蓋。

  3.條件覆蓋在設(shè)計(jì)程序中,一個(gè)判定語(yǔ)句是由多個(gè)條件組合而成的復(fù)合判定。為了更徹底地實(shí)現(xiàn)邏輯覆蓋,可以采用條件覆蓋(ConditionCoverage)的標(biāo)準(zhǔn)。條件覆蓋的含義是:構(gòu)造一組測(cè)試用例,使得每一判定語(yǔ)句中每個(gè)邏輯條件的可能值至少滿足一次。

  4.多條件覆蓋。多條件覆蓋也稱條件組合覆蓋,它的含義是:設(shè)計(jì)足夠的測(cè)試用例,使得每個(gè)判定中條件的各種可能組合都至少出現(xiàn)一次。顯然滿足多條件覆蓋的測(cè)試用例是一定滿足判定覆蓋、條件覆蓋和條件判定組合覆蓋的。

  5.修正條件判定覆蓋。修正條件判定覆蓋是由歐美的航空/航天制造廠商和使用單位聯(lián)合制定的“航空運(yùn)輸和裝備系統(tǒng)軟件認(rèn)證標(biāo)準(zhǔn)”,在國(guó)外的國(guó)防、航空航天領(lǐng)域應(yīng)用廣泛。這個(gè)覆蓋度量需要足夠的測(cè)試用例來(lái)確定各個(gè)條件能夠影響到包含的判定的結(jié)果。它要求滿足兩個(gè)條件:首先,每一個(gè)程序模塊的入口和出口點(diǎn)都要考慮至少要被調(diào)用一次,每個(gè)程序的判定到所有可能的結(jié)果值要至少轉(zhuǎn)換一次;其次,程序的判定被分解為通過(guò)邏輯操作符(and、or)連接的布爾條件,每個(gè)條件對(duì)于判定的結(jié)果值是獨(dú)立的。

  不同的測(cè)試工具對(duì)于代碼的覆蓋能力也是不同的,通常能夠支持修正條件判定覆蓋的測(cè)試工具價(jià)格是極其昂貴的。

  嵌入式測(cè)試

  對(duì)于嵌入式軟件的測(cè)試,我們還需要一方面進(jìn)一步考慮測(cè)試工具對(duì)于嵌入式操作系統(tǒng)的支持能力,例如DOS、Vxworks、Neculeus、Linux和WindowsCE等;另一方面還需要考慮測(cè)試工具對(duì)于硬件平臺(tái)的支持能力,包括是否支持所有64/32/16位CPUMCU,是否可以支持PCI/VME/CPCI總線

  可視化

  白盒測(cè)試是工作量巨大并且枯燥的工作,可視化的設(shè)計(jì)對(duì)于測(cè)試來(lái)說(shuō)是十分重要的。在選購(gòu)白盒測(cè)試工具時(shí),應(yīng)當(dāng)考慮該款測(cè)試工具的可視化是否良好,例如:測(cè)試過(guò)程中是否可以顯示覆蓋率的函數(shù)分布圖和上升趨勢(shì)圖,是否使用不同的顏色區(qū)分已執(zhí)行和未執(zhí)行的代碼段顯示分配內(nèi)存情況實(shí)時(shí)圖表等,這些對(duì)于測(cè)試效率和測(cè)試質(zhì)量的提高是具有很大的作用的。

  測(cè)試方法

  白盒測(cè)試的測(cè)試方法中運(yùn)用最為廣泛的是基本路徑測(cè)試法。

  基本路徑測(cè)試法是在程序控制流圖的基礎(chǔ)上,通過(guò)分析控制構(gòu)造的環(huán)路復(fù)雜性,導(dǎo)出基本可執(zhí)行路徑集合,從而設(shè)計(jì)測(cè)試用例的方法。設(shè)計(jì)出的測(cè)試用例要保證在測(cè)試中程序的每個(gè)可執(zhí)行語(yǔ)句至少執(zhí)行一次。

  在程序控制流圖的基礎(chǔ)上,通過(guò)分析控制構(gòu)造的環(huán)路復(fù)雜性,導(dǎo)出基本可執(zhí)行路徑集合,從而設(shè)計(jì)測(cè)試用例。包括以下4個(gè)步驟和一個(gè)工具方法:

  1.程序的控制流圖:描述程序控制流的一種圖示方法。

  2.程序圈復(fù)雜度:McCabe復(fù)雜性度量。從程序的環(huán)路復(fù)雜性可導(dǎo)出程序基本路徑集合中的獨(dú)立路徑條數(shù),這是確定程序中每個(gè)可執(zhí)行語(yǔ)句至少執(zhí)行一次所必須的測(cè)試用例數(shù)目的上界。

  3.導(dǎo)出測(cè)試用例:根據(jù)圈復(fù)雜度和程序結(jié)構(gòu)設(shè)計(jì)用例數(shù)據(jù)輸入和預(yù)期結(jié)果。

  4.準(zhǔn)備測(cè)試用例:確?;韭窂郊械拿恳粭l路徑的執(zhí)行。

  工具方法

  1.圖形矩陣:是在基本路徑測(cè)試中起輔助作用的軟件工具,利用它可以實(shí)現(xiàn)自動(dòng)地確定一個(gè)基本路徑集。

  2.程序的控制流圖:描述程序控制流的一種圖示方法。

  3.圓圈稱為控制流圖的一個(gè)結(jié)點(diǎn),表示一個(gè)或多個(gè)無(wú)分支的語(yǔ)句或源程序語(yǔ)句。

  流圖只有二種圖形符號(hào):

  1.圖中的每一個(gè)圓稱為流圖的結(jié)點(diǎn),代表一條或多條語(yǔ)句。

  2.流圖中的箭頭稱為邊或連接,代表控制流,任何過(guò)程設(shè)計(jì)都要被翻譯成控制流圖。

  在將程序流程圖簡(jiǎn)化成控制流圖時(shí),應(yīng)注意:

  1.在選擇或多分支結(jié)構(gòu)中,分支的匯聚處應(yīng)有一個(gè)匯聚結(jié)點(diǎn)。

  2.邊和結(jié)點(diǎn)圈定的區(qū)域叫做區(qū)域,當(dāng)對(duì)區(qū)域計(jì)數(shù)時(shí),圖形外的區(qū)域也應(yīng)記為一個(gè)區(qū)域。

  步驟

  基本路徑測(cè)試法的步驟:

  第一步:畫(huà)出控制流圖

  流程圖用來(lái)描述程序控制結(jié)構(gòu)??蓪⒘鞒虉D映射到一個(gè)相應(yīng)的流圖(假設(shè)流程圖的菱形決定框中不包含復(fù)合條件)。在流圖中,每一個(gè)圓,稱為流圖的結(jié)點(diǎn),代表一個(gè)或多個(gè)語(yǔ)句。一個(gè)處理方框序列和一個(gè)菱形決測(cè)框可被映射為一個(gè)結(jié)點(diǎn),流圖中的箭頭,稱為邊或連接,代表控制流,類似于流程圖中的箭頭。一條邊必須終止于一個(gè)結(jié)點(diǎn),即使該結(jié)點(diǎn)并不代表任何語(yǔ)句(例如:if-else-then結(jié)構(gòu))。由邊和結(jié)點(diǎn)限定的范圍稱為區(qū)域。計(jì)算區(qū)域時(shí)應(yīng)包括圖外部的范圍。

  第二步:計(jì)算圈復(fù)雜度

  圈復(fù)雜度是一種為程序邏輯復(fù)雜性提供定量測(cè)度的軟件度量,將該度量用于計(jì)算程序的基本的獨(dú)立路徑數(shù)目,為確保所有語(yǔ)句至少執(zhí)行一次的測(cè)試數(shù)量的上界。獨(dú)立路徑必須包含一條在定義之前不曾用到的邊。

  有以下三種方法計(jì)算圈復(fù)雜度:

  流圖中區(qū)域的數(shù)量對(duì)應(yīng)于環(huán)型的復(fù)雜性;

  給定流圖G的圈復(fù)雜度V(G),定義為V(G)=E-N+2,E是流圖中邊的數(shù)量,N是流圖中結(jié)點(diǎn)的數(shù)量;

  給定流圖G的圈復(fù)雜度V(G),定義為V(G)=P+1,P是流圖G中判定結(jié)點(diǎn)的數(shù)量。

  第三步:導(dǎo)出測(cè)試用例根據(jù)上面的計(jì)算方法,可得出四個(gè)獨(dú)立的路徑。(一條獨(dú)立路徑是指,和其他的獨(dú)立路徑相比,至少引入一個(gè)新處理語(yǔ)句或一個(gè)新判斷的程序通路。V(G)值正好等于該程序的獨(dú)立路徑的條數(shù)。)

  路徑1:4-14

  路徑2:4-6-7-14

  路徑3:4-6-8-10-13-4-14

  路徑4:4-6-8-11-13-4-14

  根據(jù)上面的獨(dú)立路徑,去設(shè)計(jì)輸入數(shù)據(jù),使程序分別執(zhí)行到上面四條路徑。

  相關(guān)區(qū)別

  黑盒測(cè)試概述

  黑盒測(cè)試也稱功能測(cè)試或數(shù)據(jù)驅(qū)動(dòng)測(cè)試,它是在已知產(chǎn)品所應(yīng)具有的功能,通過(guò)測(cè)試來(lái)檢測(cè)每個(gè)功能是否都能正常使用,在測(cè)試時(shí),把程序看作一個(gè)不能打開(kāi)的黑盒子,在完全不考慮程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性的情況下,測(cè)試者在程序接口進(jìn)行測(cè)試,它只檢查程序功能是否按照需求規(guī)格說(shuō)明書(shū)的規(guī)定正常使用,程序是否能適當(dāng)?shù)亟邮蛰斎霐?shù)據(jù)而產(chǎn)生正確的輸出信息,并且保持外部信息(如數(shù)據(jù)庫(kù)或文件)的完整性。黑盒測(cè)試方法主要有等價(jià)類劃分、邊值分析、因—果圖、錯(cuò)誤推測(cè)等,主要用于軟件確認(rèn)測(cè)試。“黑盒”法著眼于程序外部結(jié)構(gòu)、不考慮內(nèi)部邏輯結(jié)構(gòu)、針對(duì)軟件界面和軟件功能進(jìn)行測(cè)試。“黑盒”法是窮舉輸入測(cè)試,只有把所有可能的輸入都作為測(cè)試情況使用,才能以這種方法查出程序中所有的錯(cuò)誤。實(shí)際上測(cè)試情況有無(wú)窮多個(gè),人們不僅要測(cè)試所有合法的輸入,而且還要對(duì)那些不合法但是可能的輸入進(jìn)行測(cè)試。

  白盒測(cè)試也稱結(jié)構(gòu)測(cè)試或邏輯驅(qū)動(dòng)測(cè)試,它是知道產(chǎn)品內(nèi)部工作過(guò)程,可通過(guò)測(cè)試來(lái)檢測(cè)產(chǎn)品內(nèi)部動(dòng)作是否按照規(guī)格說(shuō)明書(shū)的規(guī)定正常進(jìn)行,按照程序內(nèi)部的結(jié)構(gòu)測(cè)試程序,檢驗(yàn)程序中的每條通路是否都有能按預(yù)定要求正確工作,而不顧它的功能,白盒測(cè)試的主要方法有邏輯驅(qū)動(dòng)、基路測(cè)試等,主要用于軟件驗(yàn)證。

  “白盒”法全面了解程序內(nèi)部邏輯結(jié)構(gòu)、對(duì)所有邏輯路徑進(jìn)行測(cè)試。“白盒”法是窮舉路徑測(cè)試。軟件人員使用白盒測(cè)試方法,主要想對(duì)程序模塊進(jìn)行如下的檢查:

  1.對(duì)程序模塊的所有獨(dú)立的執(zhí)行路徑至少測(cè)試一次;

  2.對(duì)所有的邏輯判定,取“真”與取“假”的兩種情況都至少測(cè)試一次;

  3.在循環(huán)的邊界和運(yùn)行界限內(nèi)執(zhí)行循環(huán)體;

  4.測(cè)試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性,等。

  具體包含的邏輯覆蓋有:–語(yǔ)句覆蓋–判定覆蓋–條件覆蓋–判定-條件覆蓋–條件組合覆蓋–路徑覆蓋。

  區(qū)別

  白盒測(cè)試技術(shù)(WhiteBoxTesting):深入到代碼一級(jí)的測(cè)試,使用這種技術(shù)發(fā)現(xiàn)問(wèn)題最早,效果也是最好的。該技術(shù)主要的特征是測(cè)試對(duì)象進(jìn)入了代碼內(nèi)部,根據(jù)開(kāi)發(fā)人員對(duì)代碼和對(duì)程序的熟悉程度,對(duì)有需要的部分進(jìn)行在軟件編碼階段,開(kāi)發(fā)人員根據(jù)自己對(duì)代碼的理解和接觸所進(jìn)行的軟件測(cè)試叫做白盒測(cè)試。這一階段測(cè)試以軟件開(kāi)發(fā)人員為主,在JAVA平臺(tái)使用Xunit系列工具進(jìn)行測(cè)試,Xunit測(cè)試工具是類一級(jí)的測(cè)試工具對(duì)每一個(gè)類和該類的方法進(jìn)行測(cè)試。

  黑盒測(cè)試技術(shù)(BlackBoxTesting):黑盒測(cè)試的內(nèi)容主要有以下幾個(gè)方面,但是主要還是功能部分。主要是覆蓋全部的功能,可以結(jié)合兼容,性能測(cè)試等方面進(jìn)行,根據(jù)軟件需求,設(shè)計(jì)文檔,模擬客戶場(chǎng)景隨系統(tǒng)進(jìn)行實(shí)際的測(cè)試,這種測(cè)試技術(shù)是使用最多的測(cè)試技術(shù)涵蓋了測(cè)試的方方面面,可以考慮以下方面:

  1.正確性(Correctness):計(jì)算結(jié)果,命名等方面。

  2.可用性(Usability):是否可以滿足軟件的需求說(shuō)明。

  3.邊界條件(BoundaryCondition):輸入部分的邊界值,就是使用一般書(shū)中說(shuō)的等價(jià)類劃分,試試最大最小和非法數(shù)據(jù)等等。

  4.性能(Performance):正常使用的時(shí)間內(nèi)系統(tǒng)完成一個(gè)任務(wù)需要的時(shí)間,多人同時(shí)使用的時(shí)候響應(yīng)時(shí)間在可以接受范圍內(nèi)。J2EE技術(shù)實(shí)現(xiàn)的系統(tǒng)在性能方面更是需要照顧的,一般原則是3秒以下接受,3-5秒可以接受,5秒以上就影響易用性了。如果在測(cè)試過(guò)程中發(fā)現(xiàn)性能問(wèn)題,修復(fù)起來(lái)是非常艱難的,因?yàn)檫@常常意味著程序的算法不好,結(jié)構(gòu)不好,或者設(shè)計(jì)有問(wèn)題。因此在產(chǎn)品開(kāi)發(fā)的開(kāi)始階段,就要考慮到軟件的性能問(wèn)題

  5.壓力測(cè)試(Stress):多用戶情況可以考慮使用壓力測(cè)試工具,建議將壓力和性能測(cè)試結(jié)合起來(lái)進(jìn)行。如果有負(fù)載平衡的話還要在服務(wù)器端打開(kāi)監(jiān)測(cè)工具,查看服務(wù)器CPU使用率,內(nèi)存占用情況,如果有必要可以模擬大量數(shù)據(jù)輸入,對(duì)硬盤(pán)的影響等等信息。如果有必要的話必須進(jìn)行性能優(yōu)化(軟硬件都可以)。這里的壓力測(cè)試針對(duì)的是某幾項(xiàng)功能。

  6.錯(cuò)誤恢復(fù)(ErrorRecovery):錯(cuò)誤處理,頁(yè)面數(shù)據(jù)驗(yàn)證,包括突然間斷電,輸入臟數(shù)據(jù)等。

  7.安全性測(cè)試(Security):這個(gè)領(lǐng)域正在研究中,防火墻、補(bǔ)丁包、殺毒軟件等的就不必說(shuō)了,不過(guò)可以考慮。破壞性測(cè)試時(shí)任意看了一些資料后得知,這里面涉及到的知識(shí)、內(nèi)容可以寫(xiě)本書(shū)了,不是一兩句可以說(shuō)清的,特別是一些商務(wù)網(wǎng)站,或者跟錢(qián)有關(guān),或者和公司秘密有關(guān)的web更是需要這方面的測(cè)試,在外國(guó)有一種專門(mén)干這一行的人叫安全顧問(wèn),可以審核代碼,提出安全建議,出現(xiàn)緊急事件時(shí)的處理辦法等,在國(guó)內(nèi)沒(méi)有聽(tīng)說(shuō)哪里有專門(mén)搞安全技術(shù)測(cè)試的內(nèi)容。

  8.兼容性(Compatibility):不同瀏覽器,不同應(yīng)用程序版本在實(shí)現(xiàn)功能時(shí)的表現(xiàn)不同的上網(wǎng)方式,如果你測(cè)試的是一個(gè)公共網(wǎng)站的話。

  三步法

  1.根據(jù)代碼的功能,人工設(shè)計(jì)測(cè)試用例進(jìn)行基本功能測(cè)試;

  2.統(tǒng)計(jì)白盒覆蓋率,為未覆蓋的白盒單位設(shè)計(jì)測(cè)試用例,實(shí)現(xiàn)完整的白盒覆蓋,比較理想的覆蓋率是實(shí)現(xiàn)100%語(yǔ)句、條件、分支、路徑覆蓋;

  3.自動(dòng)生成大量的測(cè)試用例,捕捉"程序員未處理某些特殊輸入"形成的錯(cuò)誤。

  第1步的測(cè)試用例通常是現(xiàn)成的,因?yàn)樵敿?xì)設(shè)計(jì)文檔會(huì)規(guī)定程序的基本功能,沒(méi)有文檔的,程序員在編程時(shí)也要想清楚程序的功能,這些基本功能就是基本測(cè)試用例;

  第2步是在第1步的基礎(chǔ)上,檢查未覆蓋的白盒單位,由于未覆蓋的邏輯單位通常對(duì)應(yīng)未測(cè)試的等價(jià)類,因此第2步可以找出第1步所遺漏的測(cè)試用例;

  第3步用自動(dòng)動(dòng)態(tài)測(cè)試彌補(bǔ)第2步的固有缺陷。

  "三步法"盡量避免重復(fù)工作,白盒方法和黑盒方法相結(jié)合,人工方法和自動(dòng)方法相補(bǔ)充,如果第2步的覆蓋率比較理想,那么基本上可以保證找出所有等價(jià)類。在開(kāi)發(fā)過(guò)程允許的限度內(nèi),"三步法"已接近極限,當(dāng)?shù)闷?quot;徹底測(cè)試"四個(gè)字。


內(nèi)容來(lái)自百科網(wǎng)