黑盒和白盒測試方法_第1頁
黑盒和白盒測試方法_第2頁
黑盒和白盒測試方法_第3頁
黑盒和白盒測試方法_第4頁
黑盒和白盒測試方法_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

8/8黑盒和白盒測試方法黑盒測試介紹黑盒測試(black—boxtesting)又稱功能測試、數(shù)據(jù)驅(qū)動測試或基于規(guī)范的測試.用這種方法進行測試時,被測程序被當作看不見內(nèi)部的黑盒。在完全不考慮程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性的情況下,測試者僅依據(jù)程序功能的需求規(guī)范考慮確定測試用例和推斷測試結(jié)果的正確性.因此黑盒測試是從用戶觀點出發(fā)的測試,黑盒測試直觀的想法就是既然程序被規(guī)定做某些事,那我們就看看它是不是在任何情況下都做的對。完整的“任何情況”是無法驗證的,為此黑盒測試也有一套產(chǎn)生測試用例的方法,以產(chǎn)生有限的測試用例而覆蓋足夠多的“任何情況”。由于黑盒測試不需要了解程序內(nèi)部結(jié)構(gòu),所以許多高層的測試如確認測試、系統(tǒng)測試、驗收測試都采用黑盒測試。?

黑盒測試首先是程序通常的功能性測試。要求:

每個軟件特性必須被一個測試用例或一個被認可的異常所覆蓋;用數(shù)據(jù)類型和數(shù)據(jù)值的最小集測試;用一系列真實的數(shù)據(jù)類型和數(shù)據(jù)值運行,測試超負荷、飽和及其他“最壞情況”的結(jié)果;用假想的數(shù)據(jù)類型和數(shù)據(jù)值運行,測試排斥不規(guī)則輸入的能力;對影響性能的關鍵模塊,如基本算法、應測試單元性能(包括精度、時間、容量等)。

不僅要考核“程序是否做了該做的?”還要考察“程序是否沒做不該做的2”同時還要考察程序在其他一些情況下是否正常.這些情況包括數(shù)據(jù)類型和數(shù)據(jù)值的異常等等。下述幾種方法:(a)等價類劃分,(b)因果圖方法,(c)邊值分析法,(d)猜錯法,(e)隨機數(shù)法,就是從更廣泛的角度來進行黑盒測試。每一個方法都力圖能涵蓋更多的“任何情況",但又各有長處,綜合使用這些方法,會得到一個較好的測試用例集。1。等價類劃分?

等價類劃分是一種典型的黑盒測試方法。等價類是指某個輸入域的集合。它表示對揭露程序中的錯誤來說,集合中的每個輸入條件是等效的。因此我們只要在一個集合中選取一個測試數(shù)據(jù)即可。等價類劃分的辦法是把程序的輸入域劃分成若干等價類,然后從每個部分中選取少數(shù)代表性數(shù)據(jù)當作測試用例。這樣就可使用少數(shù)測試用例檢驗程序在一大類情況下的反映。

在考慮等價類時,應該注意區(qū)別以下兩種不同的情況:

有效等價類:有效等價類指的是對程序的規(guī)范是有意義的、合理的輸入數(shù)據(jù)所構(gòu)成的集合。在具體問題中,有效等價類可以是一個,也可以是多個。?

無效等價類:無效等價類指對程序的規(guī)范是不合理的或無意義的輸入數(shù)據(jù)所構(gòu)成的集合。對于具體的問題,無效等價類至少應有一個,也可能有多個。

確定等價類有以下幾條原則:?

如果輸入條件規(guī)定了取值范圍或值的個數(shù),則可確定一個有效等價類和兩個無效等價類。例如,程序的規(guī)范中提到的輸入條包括“……項數(shù)可以從1到999……”,則可取有效等價類為“l(fā)考項數(shù)<999",無效等價類為“項數(shù)〈l,,及“項數(shù)>999”。?

輸入條件規(guī)定了輸入值的集合,或是規(guī)定了“必須如何”的條件,則可確定一個有效等價類和一個無效等價類.如某程序涉及標識符,其輸入條件規(guī)定“標識符應以字母開頭……"則“以字母開頭者"作為有效等價類,“以非字母開頭"作為無效等價類.

如果我們確知,已劃分的等價類中各元素在程序中的處理方式是不同的,則應將此等價類進一步劃分成更小等價類。

輸入條件有效等價類無效等價類

。.。。。。

.。.。。。..。。。。

.。。。。。。。.。。。?

。。。.。。?

根據(jù)已列出的等價類表,按以下步驟確定測試用例:?

為每個等價類規(guī)定一個唯一的編號;

設計一個測試用例,使其盡可能多地覆蓋尚未覆蓋的有效等價類。重復這一步,最后使得所有有效等價類均被測試用例所覆蓋;?

設計一個新的測試用例,使其只覆蓋一個無效等價類。重復這一步,使所有無效等價類均被覆蓋。這里強調(diào)每次只覆蓋一個無效等價類.這是因為一個測試用例中如果含有多個缺陷,有可能在測試中只發(fā)現(xiàn)其中的一個,另一些被忽視。等價類劃分法能夠全面、系統(tǒng)地考慮黑盒測試的測試用例設計問題,但是沒有注意選用一些“高效的”、“有針對性的”測試用例。后面介紹的邊值分析法可以彌補這一缺點。2.因果圖

等價類劃分法并沒有考慮到輸入情況的各種組合。這樣雖然各個輸入條件單獨可能出錯的情況已經(jīng)看到了,但多個輸入情況組合起來可能出錯的情況卻被忽略。采用因果圖方法能幫助我們按一定步驟選擇一組高效的測試用例,同時,還能為我們指出程序規(guī)范的描述中存在什么問題。?

利用因果圖導出測試用例需要經(jīng)過以下幾個步驟:

分析程序規(guī)范的描述中哪些是原因,哪些是結(jié)果.原因常常是輸入條件或是輸入條件的等價類。結(jié)果是輸出條件.

分析程序規(guī)范的描述中語義的內(nèi)容,并將其表示成連接各個原因與各個結(jié)果的“因果圖”.?

由于語法或環(huán)境的限制,有些原因和結(jié)果的組合情況是不可能出現(xiàn)的。為表明這些特定的情況,在因果圖上使用持殊的符號標明約束條件。把因果圖轉(zhuǎn)換成判定表。把判定表的每一列寫成一個測試用例。3.邊值分析法?

邊值分析法是列出單元功能、輸入、狀態(tài)及控制的合法邊界值和非法邊界值,設計測試用例,包含全部邊界值的方法。典型地包括IF語句中的判別值,定義域、值域邊界,空或畸形輸入,末受控狀態(tài)等。邊值分析法不是一類找一個例子的方法,而是以邊界情況的處理作為主要目標專門設計測試用例的方法。另外,邊值分析不僅考查輸入的邊值,也要考慮輸出的邊值。這是從人們的經(jīng)驗得出的一種有效方法。人們發(fā)現(xiàn)許多軟件錯誤只是在下標、數(shù)據(jù)結(jié)構(gòu)和標量值的邊界值及其上、下出現(xiàn),運行這個區(qū)域的測試用例發(fā)現(xiàn)錯誤的概率很高.

用邊值分析法設計測試用例時,有以下幾條原則:

如果輸入條件規(guī)定了取值范圍,或是規(guī)定了值的個數(shù),則應以該范圍的邊界內(nèi)及剛剛超出范圍的邊界外的值,或是分別對最大、最小及稍小于最小、稍大于最大個數(shù)作為測試用例。如有規(guī)范“某文件可包含l至255"個記錄……“,則測試用例可選1和255及0和256等。

針對規(guī)范的每個輸出條件使用原則〔a〕.

如果程序規(guī)范中提到的輸入或輸出域是個有序的集合(如順序文件、表格等)就應注意選取有序集的第一個和最后一個元素作為測試用例。?

分析規(guī)范,盡可能找出可能的邊界條件。一個典型的邊值分析例子是三角形分類程序。選取a,b,c構(gòu)成三角形三邊,“任意兩邊之和大于第三邊”為邊界條件。邊值分析相等價類劃分側(cè)重不同,對等價類劃分是一個補充。如上述三角形問題,選?。幔?,b=4,c=5,a=2,b=4,c=7則覆蓋有效和無效等價類。如果能在等價類劃分中注入邊值分析的思想。在每個等價類中不只選取一個覆蓋用例,而是進而選取該等價類的邊界值等價類劃分法將更有效,最后可以用邊值分析法再補充一些測試用例.4.猜錯法

猜錯法在很大程度上是憑經(jīng)驗進行的,是憑人們對過去所作的測試工作結(jié)果的分析,對所揭示的缺陷的規(guī)律性作直覺的推測來發(fā)現(xiàn)缺陷的.

一個采用兩分法的檢索程序,典型地可以列出下面幾種測試情況:

被檢索的表只有一項或為空表;?

表的項數(shù)恰好是2的冪次;?

表的項數(shù)比2的冪次多1等。?

猜錯法充分發(fā)揮人的經(jīng)驗,在一個測試小組中集思廣益,方便實用,特別在軟件測試基礎較差的情況下,很好地組織測試小組(也可以有外來人員)進行錯誤猜測,是有效的測試方法。5.隨機數(shù)法?

即測試用例的參數(shù)是隨機數(shù)。它可以自動生成,因此自動化程度高。使用大量隨機測試用例測試通過的程序會提高用戶對程序的信心。但其關鍵在于隨機白盒測試中的六種覆蓋方法六種覆蓋方法首先為了下文的舉例描述方便,這里先給出一張程序流程圖.(本文以1995年軟件設計師考試的一道考試題目為例,圖中紅色字母代表程序執(zhí)行路徑).1、語句覆蓋1)主要特點:語句覆蓋是最起碼的結(jié)構(gòu)覆蓋要求,語句覆蓋要求設計足夠多的測試用例,使得程序中每條語句至少被執(zhí)行一次。2)用例設計:(如果此時將A路徑上的語句1—〉T去掉,那么用例如下)XY路徑15050OBDE29070OBCE3)優(yōu)點:可以很直觀地從源代碼得到測試用例,無須細分每條判定表達式.4)缺點:由于這種測試方法僅僅針對程序邏輯中顯式存在的語句,但對于隱藏的條件和可能到達的隱式邏輯分支,是無法測試的.在本例中去掉了語句1->T去掉,那么就少了一條測試路徑。在if結(jié)構(gòu)中若源代碼沒有給出else后面的執(zhí)行分支,那么語句覆蓋測試就不會考慮這種情況。但是我們不能排除這種以外的分支不會被執(zhí)行,而往往這種錯誤會經(jīng)常出現(xiàn)。再如,在Do-While結(jié)構(gòu)中,語句覆蓋執(zhí)行其中某一個條件分支。那么顯然,語句覆蓋對于多分支的邏輯運算是無法全面反映的,它只在乎運行一次,而不考慮其他情況.2、判定覆蓋1)主要特點:判定覆蓋又稱為分支覆蓋,它要求設計足夠多的測試用例,使得程序中每個判定至少有一次為真值,有一次為假值,即:程序中的每個分支至少執(zhí)行一次。每個判斷的取真、取假至少執(zhí)行一次。2)用例設計:XY路徑19090OAE25050OBDE39070OBCE3)優(yōu)點:判定覆蓋比語句覆蓋要多幾乎一倍的測試路徑,當然也就具有比語句覆蓋更強的測試能力。同樣判定覆蓋也具有和語句覆蓋一樣的簡單性,無須細分每個判定就可以得到測試用例。4)缺點:往往大部分的判定語句是由多個邏輯條件組合而成(如,判定語句中包含AND、OR、CASE),若僅僅判斷其整個最終結(jié)果,而忽略每個條件的取值情況,必然會遺漏部分測試路徑。3、條件覆蓋1)主要特點:條件覆蓋要求設計足夠多的測試用例,使得判定中的每個條件獲得各種可能的結(jié)果,即每個條件至少有一次為真值,有一次為假值.2)用例設計:XY路徑19070OBC240OBD3)優(yōu)點:顯然條件覆蓋比判定覆蓋,增加了對符合判定情況的測試,增加了測試路徑。4)缺點:要達到條件覆蓋,需要足夠多的測試用例,但條件覆蓋并不能保證判定覆蓋。條件覆蓋只能保證每個條件至少有一次為真,而不考慮所有的判定結(jié)果。4、判定/條件覆蓋1)主要特點:設計足夠多的測試用例,使得判定中每個條件的所有可能結(jié)果至少出現(xiàn)一次,每個判定本身所有可能結(jié)果也至少出現(xiàn)一次。2)用例設計:XY路徑19090OAE25050OBDE39070OBCE47090OBCE3)優(yōu)點:判定/條件覆蓋滿足判定覆蓋準則和條件覆蓋準則,彌補了二者的不足。4)缺點:判定/條件覆蓋準則的缺點是未考慮條件的組合情況.5、組合覆蓋1)主要特點:要求設計足夠多的測試用例,使得每個判定中條件結(jié)果的所有可能組合至少出現(xiàn)一次。2)用例設計:XY路徑19090OAE29070OBCE39030OBDE47090OBCE53090OBDE67070OBDE75050OBDE3)優(yōu)點:多重條件覆蓋準則滿足判定覆蓋、條件覆蓋和判定/條件覆蓋準則。更改的判定/條件覆蓋要求設計足夠多的測試用例,使得判定中每個條件的所有可能結(jié)果至少出現(xiàn)一次,每個判定本身的所有可能結(jié)果也至少出現(xiàn)一次。并且每個條件都顯示能單獨影響判定結(jié)果。4)缺點:線性地增加了測試用例的數(shù)量。6、路徑覆蓋1)主要特點:設計足夠的測試用例,覆蓋程序中所有可能的路徑。2)用例設計:XY路徑19090OAE25050OBDE39070OBCE47090OBCE3)優(yōu)點:這種測試方法可以對程序進行徹底的測試,比前面五種的覆蓋面都廣。4)缺點:由于路徑覆蓋需要對所有可能的路徑進行測試(包括循環(huán)、條件組合、分支選擇等),那么需要設計大量、復雜的測試用例,使得工作量呈指數(shù)級增長。而在有些情況下,一些執(zhí)行路徑是不可能被執(zhí)行的,如:?If(!A)B++;?If(!A)D-—;這兩個語句實際只包括了2條執(zhí)行路徑,即A為真或假時候?qū)和D的處理,真或假不可能都存在,而路徑覆蓋測試則認為是包含了真與假的4條執(zhí)行路徑。這樣不僅降低了測試效率,而且大量的測試結(jié)果的累積,也為排錯帶來麻煩.任何工程產(chǎn)品(注意是任何工程產(chǎn)品)都可以使用以下兩種方法之一進行測試。黑盒測試:已知產(chǎn)品的功能設計規(guī)格,可以進行測試證明每個實現(xiàn)了的功能是否符合要求。白盒測試:已知產(chǎn)品的內(nèi)部工作過程,可以通過測試證明每種內(nèi)部操作是否符合設計規(guī)格要求,所有內(nèi)部成分是否以經(jīng)過檢查。軟件的黑盒測試意味著測試要在軟件的接口處進行。這種方法是把測試對象看做一個黑盒子,測試人員完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,只依據(jù)程序的需求規(guī)格說明書,檢查程序的功能是否符合它的功能說明。因此黑盒測試又叫功能測試或數(shù)據(jù)驅(qū)動測試.黑盒測試主要是為了發(fā)現(xiàn)以下幾類錯誤:1、是否有不正確或遺漏的功能?2、在接口上,輸入是否能正確的接受?能否輸出正確的結(jié)果?3、是否有數(shù)據(jù)結(jié)構(gòu)錯誤或外部信息(例如數(shù)據(jù)文件)訪問錯誤?4、性能上是否能夠滿足要求?5、是否有初始化或終止性錯誤?軟件的白盒測試是對軟件的過程性細節(jié)做細致的檢查。這種方法是把測試對象看做一個打開的盒子,它允許測試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及有關信息,設計或選擇測試用例,對程序所有邏輯

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論