當前位置:首頁 » 操作系統 » 源碼黑盒測試

源碼黑盒測試

發布時間: 2022-09-19 13:53:25

Ⅰ 黑盒測試與白盒測試的區別有哪些

白盒測試和黑盒測試是軟體測試的兩種不同方法,任何工程產品(注意是任何工程產品)都可以使用二者之一進行測試:
白盒測試:是通過程序的源代碼進行測試而不使用用戶界面。這種類型的測試需要從代碼句法發現內部代碼在演算法,溢出,路徑,條件等等中的缺點或者錯誤,進而加以修正。
黑盒測試:是通過使用整個軟體或某種軟體功能來嚴格地測試, 而並沒有通過檢查程序的源代碼或者很清楚地了解該軟體的源代碼程序具體是怎樣設計的。測試人員通過輸入他們的數據然後看輸出的結果從而了解軟體怎樣工作。在測試時,把程序看作一個不能打開的黑盆子,在完全不考慮程序內部結構和內部特性的情況下,測試者在程序介面進行測試,它只檢查程序功能是否按照需求規格說明書的規定正常使用,程序是否能適當地接收和正確的輸出。

二者最大的區別應該就是測試對象不一樣,白盒測試主要針對的是程序代碼邏輯,黑盒測試主要針對的是程序所展現給用戶的功能,簡單的說就是前者測試後台程序後者測試前台展示功能。

Ⅱ 黑盒測試與白盒測試的區別

一、測試方式不同

1、黑盒測試:功能測試,是通過測試來檢測每個功能是否都能正常使用。

2、白盒測試:稱結構測試、透明盒測試、邏輯驅動測試或基於代碼的測試。

二、測試目的不同

1、黑盒測試:把程序看作一個不能打開的黑盒子,在完全不考慮程序內部結構和內部特性的情況下,在程序介面進行測試,只檢查程序功能是否按照需求規格說明書的規定正常使用,程序是否能適當地接收輸入數據而產生正確的輸出信息。

2、白盒測試:通過檢查軟體內部的邏輯結構,對軟體中的邏輯路徑進行覆蓋測試。在程序不同地方設立檢查點,檢查程序的狀態,以確定實際運行狀態與預期狀態是否一致。


三、測試原則不同

1、黑盒測試:以用戶的角度,從輸入數據與輸出數據的對應關系出發進行測試的。很明顯,如果外部特性本身設計有問題或規格說明的規定有誤,用黑盒測試方法是發現不了的。

2、白盒測試:一個模塊中的所有獨立路徑至少被測試一次。所有邏輯值均需測試true和false兩種情況。


Ⅲ 軟體測試中的黑盒測試和白盒測試有什麼區別嗎

白盒測試:
是指實際運行被測程序,通過程序的源代碼進行測試而不使用用戶界面。這種類型的測試需要從代碼句法發現內部代碼在演算法、溢出、路徑和條件等方面的缺點或者錯誤,進而加以修正。
黑盒測試:
又稱功能測試、數據驅動測試或基於規格說明的測試,是通過使用整個軟體或某種軟體功能來嚴格地測試,,而並沒有通過檢查程序的源代碼,或者很清楚地了解該軟體的源代碼程序具體是怎樣設計的。測試人員通過輸入他們的數據看輸出的結果,從而了解軟體怎樣工作。應該更適合測試網頁游戲。
區別一:從定義上
白盒測試需要從代碼句法發現內部代碼在演算法,溢出,路徑,條件等等中的缺點或者錯誤,進而加以修正。而黑盒測試著重測試軟體功能,它並不涉及程序的內部結構和內容特性。黑盒測試並不能取代白盒測試,它與白盒是互補的測試方法,它很可能發現白盒測試不易發現的其他類型錯誤。
區別二:從測試目的上
黑盒測試的目的是檢測是否有不正確或遺漏的功能;數據或者參數上,輸入能否正確接收;是否有數據結構錯誤或外部信息訪問錯誤;性能上是否能夠滿足要求;是否有初始化或終止性錯誤。而白盒測試的目的是通過在不同點檢查程序的狀態,確定實際的狀態是否與預期的狀態一致,而不顧它的功能。
區別三:檢測方式上
白盒測試是窮舉路徑測試,黑盒測試是窮舉輸入測試,這兩種方法是基於完全不同的觀點,反應了事物的兩個極端,它們各有側重和優勢,但不能彼此替代。在現代的測試理念中,這兩種測試方法不是截然分開的,而是交叉使用。

Ⅳ 簡述什麼是黑盒測試、白盒測試,他們之間的聯系

白盒測試和黑盒測試是軟體測試的兩種不同方法,任何工程產品(注意是任何工程產品)都可以使用二者之一進行測試:
白盒測試:是通過程序的源代碼進行測試而不使用用戶界面。這種類型的測試需要從代碼句法發現內部代碼在演算法,溢出,路徑,條件等等中的缺點或者錯誤,進而加以修正。
黑盒測試:是通過使用整個軟體或某種軟體功能來嚴格地測試, 而並沒有通過檢查程序的源代碼或者很清楚地了解該軟體的源代碼程序具體是怎樣設計的。測試人員通過輸入他們的數據然後看輸出的結果從而了解軟體怎樣工作。在測試時,把程序看作一個不能打開的黑盆子,在完全不考慮程序內部結構和內部特性的情況下,測試者在程序介面進行測試,它只檢查程序功能是否按照需求規格說明書的規定正常使用,程序是否能適當地接收和正確的輸出。

二者最大的區別應該就是測試對象不一樣,白盒測試主要針對的是程序代碼邏輯,黑盒測試主要針對的是程序所展現給用戶的功能,簡單的說就是前者測試後台程序後者測試前台展示功能

Ⅳ 白盒測試與黑盒測試的優缺點是什麼

白盒測試也稱結構測試或邏輯驅動測試,它是按照程序內部的結構測試程序,通過測試來檢測產品內部動作是否按照設計規格說明書的規定正常進行,檢驗程序中的每條通路是否都能按預定要求正確工作。

這一方法是把測試對象看作一個打開的盒子,測試人員依據程序內部邏輯結構相關信息,設計或選擇測試用例,對程序所有邏輯路徑進行測試,通過在不同點檢查程序的狀態,確定實際的狀態是否與預期的狀態一致。

採用什麼方法對軟體進行測試呢?常用的軟體測試方法有兩大類:靜態測試方法和動態測試方法。其中軟體的靜態測試不要求在計算機上實際執行所測程序,主要以一些人工的模擬技術對軟體進行分析和測試;而軟體的動態測試是通過輸入一組預先按照一定的測試准則構造的實例數據來動態運行程序,而達到發現程序錯誤的過程。

白盒測試的測試方法有代碼檢查法、靜態結構分析法、靜態質量度量法、邏輯覆蓋法、基本路徑測試法、域測試、符號測試、Z路徑覆蓋、程序變異。

白盒測試法的覆蓋標准有邏輯覆蓋、循環覆蓋和基本路徑測試。其中邏輯覆蓋包括語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋。

六種覆蓋標准:語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋發現錯誤的能力呈由弱至強的變化。語句覆蓋每條語句至少執行一次。判定覆蓋每個判定的每個分支至少執行一次。條件覆蓋每個判定的每個條件應取到各種可能的值。判定/條件覆蓋同時滿足判定覆蓋條件覆蓋。條件組合覆蓋每個判定中各條件的每一種組合至少出現一次。路徑覆蓋使程序中每一條可能的路徑至少執行一次。

"白盒"法全面了解程序內部邏輯結構、對所有邏輯路徑進行測試。"白盒"法是窮舉路徑測試。在使用這一方案時,測試者必須檢查程序的內部結構,從檢查程序的邏輯著手,得出測試數據。貫穿程序的獨立路徑數是天文數字。但即使每條路徑都測試了仍然可能有錯誤。第一,窮舉路徑測試決不能查出程序違反了設計規范,即程序本身是個錯誤的程序。第二,窮舉路徑測試不可能查出程序中因遺漏路徑而出錯。第三,窮舉路徑測試可能發現不了一些與數據相關的錯誤。

如何挑選白盒測試工具

白盒測試目前主要用在具有高可靠性要求的軟體領域,例如:軍工軟體、航天航空軟體、工業控制軟體等等。白盒測試工具在選購時應當主要是對開發語言的支持、代碼覆蓋的深度、嵌入式軟體的測試、測試的可視化等。

對開發語言的支持:白盒測試工具是對源代碼進行的測試,測試的主要內容包括詞法分析與語法分析、靜態錯誤分析、動態檢測等。但是對於不同的開發語言,測試工具實現的方式和內容差別是較大的。目前測試工具主要支持的開發語言包括:標准C、C++、Visual C++、Java、Visual J++等。

代碼的覆蓋深度:從覆蓋源程序語句的詳盡程度分析,邏輯覆蓋標准包括以下不同的覆蓋標准:語句覆蓋、判定覆蓋、條件覆蓋、條件判定組合覆蓋、多條件覆蓋和修正判定條件覆蓋。

·語句覆蓋 為了暴露程序中的錯誤,程序中的每條語句至少應該執行一次。因此語句覆蓋(Statement Coverage)的含義是:選擇足夠多的測試數據,使被測程序中每條語句至少執行一次。語句覆蓋是很弱的邏輯覆蓋。

·判定覆蓋 比語句覆蓋稍強的覆蓋標準是判定覆蓋(Decision Coverage)。判定覆蓋的含義是:設計足夠的測試用例,使得程序中的每個判定至少都獲得一次「真值」或「假值」,或者說使得程序中的每一個取「真」分支和取「假」分支至少經歷一次,因此判定覆蓋又稱為分支覆蓋。

·條件覆蓋 在設計程序中,一個判定語句是由多個條件組合而成的復合判定。為了更徹底地實現邏輯覆蓋,可以採用條件覆蓋(Condition Coverage)的標准。條件覆蓋的含義是:構造一組測試用例,使得每一判定語句中每個邏輯條件的可能值至少滿足一次。

·多條件覆蓋 多條件覆蓋也稱條件組合覆蓋,它的含義是:設計足夠的測試用例,使得每個判定中條件的各種可能組合都至少出現一次。顯然滿足多條件覆蓋的測試用例是一定滿足判定覆蓋、條件覆蓋和條件判定組合覆蓋的。

·修正條件判定覆蓋 修正條件判定覆蓋是由歐美的航空/航天製造廠商和使用單位聯合制定的「航空運輸和裝備系統軟體認證標准」,目前在國外的國防、航空航天領域應用廣泛。這個覆蓋度量需要足夠的測試用例來確定各個條件能夠影響到包含的判定的結果。它要求滿足兩個條件:首先,每一個程序模塊的入口和出口點都要考慮至少要被調用一次,每個程序的判定到所有可能的結果值要至少轉換一次;其次,程序的判定被分解為通過邏輯操作符(and、or)連接的布爾條件,每個條件對於判定的結果值是獨立的。

不同的測試工具對於代碼的覆蓋能力也是不同的,通常能夠支持修正條件判定覆蓋的測試工具價格是極其昂貴的。

嵌入式軟體的測試:對於嵌入式軟體的測試,我們還需要一方面進一步考慮測試工具對於嵌入式操作系統的支持能力,例如DOS、Vxworks、Neculeus、Linux和Windows CE等;另一方面還需要考慮測試工具對於硬體平台的支持能力,包括是否支持所有64/32/16位CPU 和 MCU,是否可以支持 PCI/VME/CPCI 匯流排。

測試的可視化:白盒測試是工作量巨大並且枯燥的工作,可視化的設計對於測試來說是十分重要的。在選購白盒測試工具時,應當考慮該款測試工具的可視化是否良好,例如:測試過程中是否可以顯示覆蓋率的函數分布圖和上升趨勢圖,是否使用不同的顏色區分已執行和未執行的代碼段顯示分配內存情況實時圖表等,這些對於測試效率和測試質量的提高是具有很大的作用的。

白盒測試之基本路徑測試法

白盒測試的測試方法有代碼檢查法、靜態結構分析法、靜態質量度量法、邏輯覆蓋法、基本路徑測試法、域測試、符號測試、Z路徑覆蓋、程序變異。

其中運用最為廣泛的是基本路徑測試法。

基本路徑測試法是在程序控制流圖的基礎上,通過分析控制構造的環路復雜性,導出基本可執行路徑集合,從而設計測試用例的方法。

設計出的測試用例要保證在測試中程序的每個可執行語句至少執行一次。

在程序控制流圖的基礎上,通過分析控制構造的環路復雜性,導出基本可執行路徑集合,從而設計測試用例。包括以下4個步驟和一個工具方法:

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

2. 程序圈復雜度:McCabe復雜性度量。從程序的環路復雜性可導出程序基本路徑集合中的獨立路徑條數,這是確定程序中每個可執行語句至少執行一次所必須的測試用例數目的上界。

3. 導出測試用例:根據圈復雜度和程序結構設計用例數據輸入和預期結果。

4. 准備測試用例:確保基本路徑集中的每一條路徑的執行。

工具方法:

圖形矩陣:是在基本路徑測試中起輔助作用的軟體工具,利用它可以實現自動地確定一個基本路徑集。

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

圓圈稱為控制流圖的一個結點,表示一個或多個無分支的語句或源程序語句

流圖只有二種圖形符號:

圖中的每一個圓稱為流圖的結點,代表一條或多條語句。

流圖中的箭頭稱為邊或連接,代表控制流

任何過程設計都要被翻譯成控制流圖。

如何根據程序流程圖畫出控制流程圖?

在將程序流程圖簡化成控制流圖時,應注意:

在選擇或多分支結構中,分支的匯聚處應有一個匯聚結點。

邊和結點圈定的區域叫做區域,當對區域計數時,圖形外的區域也應記為一個區域。

基本路徑測試法的步驟:

第一步:畫出控制流圖

流程圖用來描述程序控制結構。可將流程圖映射到一個相應的流圖(假設流程圖的菱形決定框中不包含復合條件)。在流圖中,每一個圓,稱為流圖的結點,代表一個或多個語句。一個處理方框序列和一個菱形決測框可被映射為一個結點,流圖中的箭頭,稱為邊或連接,代表控制流,類似於流程圖中的箭頭。一條邊必須終止於一個結點,即使該結點並不代表任何語句(例如:if-else-then結構)。由邊和結點限定的范圍稱為區域。計算區域時應包括圖外部的范圍。

第二步:計算圈復雜度

圈復雜度是一種為程序邏輯復雜性提供定量測度的軟體度量,將該度量用於計算程序的基本的獨立路徑數目,為確保所有語句至少執行一次的測試數量的上界。獨立路徑必須包含一條在定義之前不曾用到的邊。

有以下三種方法計算圈復雜度:

流圖中區域的數量對應於環型的復雜性;

給定流圖G的圈復雜度V(G),定義為V(G)=E-N+2,E是流圖中邊的數量,N是流圖中結點的數量;

給定流圖G的圈復雜度V(G),定義為V(G)=P+1,P是流圖G中判定結點的數量。

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

路徑1:4-14

路徑2:4-6-7-14

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

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

根據上面的獨立路徑,去設計輸入數據,使程序分別執行到上面四條路徑。

白盒測試三步法

1) 根據代碼的功能,人工設計測試用例進行基本功能測試;

2) 統計白盒覆蓋率,為未覆蓋的白盒單位設計測試用例,實現完整的白盒覆蓋,比較理想的覆蓋率是實現100%語句、條件、分支、路徑覆蓋;

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

第1步的測試用例通常是現成的,因為詳細設計文檔會規定程序的基本功能,沒有文檔的,程序員在編程時也要想清楚程序的功能,這些基本功能就是基本測試用例;

第2步是在第1步的基礎上,檢查未覆蓋的白盒單位,由於未覆蓋的邏輯單位通常對應未測試的等價類,因此第2步可以找出第1步所遺漏的測試用例;

第3步用自動動態測試彌補第2步的固有缺陷。

"三步法"盡量避免重復工作,白盒方法和黑盒方法相結合,人工方法和自動方法相補充,如果第2步的覆蓋率比較理想,那麼基本上可以保證找出所有等價類。在開發過程允許的限度內,"三步法"已接近極限,當得起"徹底測試"四個字。

黑盒測試也稱功能測試,它是通過測試來檢測每個功能是否都能正常使用。在測試地,把程序看作一個不能打開的黑盒子,在完全不考慮程序內部結構和內部特性的情況下,在程序介面進行測試,它只檢查程序功能是否按照需求規格說明書的規定正常使用,程序是否能適當地接收輸入數據而產生正確的輸出信息。黑盒測試著眼於程序外部結構,不考慮內部邏輯結構,主要針對軟體界面和軟體功能進行測試。

黑盒測試是以用戶的角度,從輸入數據與輸出數據的對應關系出發進行測試的。很明顯,如果外部特性本身有問題或規格說明的規定有誤,用墨盒測試方法是發現不了的。

黑盒測試法注重於測試軟體的功能需求,主要試圖發現下列幾類錯誤。

功能不正確或遺漏;

界面錯誤;

資料庫訪問錯誤;

性能錯誤;

初始化和終止錯誤等。

從理論上講,黑盒測試只有採用窮舉輸入測試,把所有可能的輸入都作為測試情況考慮,才能查出程序中所有的錯誤。實際上測試情況有無窮多個,人們不僅要測試所有合法的輸入,而且還要對那些不合法但可能的輸入進行測試。這樣看來,完全測試是不可能的,所以我們要進行有針對性的測試,通過制定測試案例指導測試的實施,保證軟體測試有組織、按步驟,以及有計劃地進行。黑盒測試行為必須能夠加以量化,才能真正保證軟體質量,而測試用例就是將測試行為具體量化的方法之一。具體的黑盒測試用例設計方法包括等價類劃分法、邊界值分析法、錯誤推測法、因果圖法、判定表驅動法、正交試驗設計法、功能圖法等。

等價類劃分的辦法是把程序的輸入域劃分成若幹部分(子集),然後從每個部分中選取少數代表性數據作為測試用例。每一類的代表性數據在測試中的作用等價於這一類中的其他值。該方法是一種重要的,常用的黑盒測試用例設計方法。

1) 劃分等價類: 等價類是指某個輸入域的子集合。在該子集合中,各個輸入數據對於揭露程序中的錯誤都是等效的,並合理地假定:測試某等價類的代表值就等於對這一類其它值的測試.因此,可以把全部輸入數據合理劃分為若乾等價類,在每一個等價類中取一個數據作為測試的輸入條件,就可以用少量代表性的測試數據.取得較好的測試結果.等價類劃分可有兩種不同的情況:有效等價類和無效等價類.

有效等價類:是指對於程序的規格說明來說是合理的,有意義的輸入數據構成的集合.利用有效等價類可檢驗程序是否實現了規格說明中所規定的功能和性能.

無效等價類:與有效等價類的定義恰巧相反.

設計測試用例時,要同時考慮這兩種等價類.因為,軟體不僅要能接收合理的數據,也要能經受意外的考驗.這樣的測試才能確保軟體具有更高的可靠性.

2)劃分等價類的方法:下面給出六條確定等價類的原則.

①在輸入條件規定了取值范圍或值的個數的情況下,則可以確立一個有效等價類和兩個無效等價類.

②在輸入條件規定了輸入值的集合或者規定了「必須如何」的條件的情況下,可確立一個有效等價類和一個無效等價類.

③在輸入條件是一個布爾量的情況下,可確定一個有效等價類和一個無效等價類.

④在規定了輸入數據的一組值(假定n個),並且程序要對每一個輸入值分別處理的情況下,可確立n個有效等價類和一個無效等價類.

⑤在規定了輸入數據必須遵守的規則的情況下,可確立一個有效等價類(符合規則)和若干個無效等價類(從不同角度違反規則).

⑥在確知已劃分的等價類中各元素在程序處理中的方式不同的情況下,則應再將該等價類進一步的劃分為更小的等價類.

3)設計測試用例:在確立了等價類後,可建立等價類表,列出所有劃分出的等價類:

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

... ... ...

... ... ...

然後從劃分出的等價類中按以下三個原則設計測試用例:

①為每一個等價類規定一個唯一的編號.

②設計一個新的測試用例,使其盡可能多地覆蓋尚未被覆蓋地有效等價類,重復這一步.直到所有的有效等價類都被覆蓋為止.

③設計一個新的測試用例,使其僅覆蓋一個尚未被覆蓋的無效等價類,重復這一步.直到所有的無效等價類都被覆蓋為止.

邊界值分析是通過選擇等價類邊界的測試用例。邊界值分析法不僅重視輸入條件邊界,而且也必須考慮輸出域邊界。它是對等價類劃分方法的補充.

(1)邊界值分析方法的考慮:

長期的測試工作經驗告訴我們,大量的錯誤是發生在輸入或輸出范圍的邊界上,而不是發生在輸入輸出范圍的內部.因此針對各種邊界情況設計測試用例,可以查出更多的錯誤.

使用邊界值分析方法設計測試用例,首先應確定邊界情況.通常輸入和輸出等價類的邊界,就是應著重測試的邊界情況.應當選取正好等於,剛剛大於或剛剛小於邊界的值作為測試數據,而不是選取等價類中的典型值或任意值作為測試數據.

(2)基於邊界值分析方法選擇測試用例的原則:

1)如果輸入條件規定了值的范圍,則應取剛達到這個范圍的邊界的值,以及剛剛超越這個范圍邊界的值作為測試輸入數據.

2)如果輸入條件規定了值的個數,則用最大個數,最小個數,比最小個數少一,比最大個數多一的數作為測試數據.

3)根據規格說明的每個輸出條件,使用前面的原則1).

4)根據規格說明的每個輸出條件,應用前面的原則2).

5)如果程序的規格說明給出的輸入域或輸出域是有序集合,則應選取集合的第一個元素和最後一個元素作為測試用例.

6)如果程序中使用了一個內部數據結構,則應當選擇這個內部數據結構的邊界上的值作為測試用例.

7)分析規格說明,找出其它可能的邊界條件.

錯誤推測法是基於經驗和直覺推測程序中所有可能存在的各種錯誤, 從而有針對性的設計測試用例的方法.

錯誤推測方法的基本思想: 列舉出程序中所有可能有的錯誤和容易發生錯誤的特殊情況,根據他們選擇測試用例. 例如, 在單元測試時曾列出的許多在模塊中常見的錯誤. 以前產品測試中曾經發現的錯誤等, 這些就是經驗的總結. 還有, 輸入數據和輸出數據為0的情況. 輸入表格為空格或輸入表格只有一行. 這些都是容易發生錯誤的情況. 可選擇這些情況下的例子作為測試用例.

因果圖法:

前面介紹的等價類劃分方法和邊界值分析方法,都是著重考慮輸入條件,但未考慮輸入條件之間的聯系, 相互組合等. 考慮輸入條件之間的相互組合,可能會產生一些新的情況. 但要檢查輸入條件的組合不是一件容易的事情, 即使把所有輸入條件劃分成等價類,他們之間的組合情況也相當多. 因此必須考慮採用一種適合於描述對於多種條件的組合,相應產生多個動作的形式來考慮設計測試用例. 這就需要利用因果圖(邏輯模型).

因果圖方法最終生成的就是判定表. 它適合於檢查程序輸入條件的各種組合情況.

利用因果圖生成測試用例的基本步驟:

(1) 分析軟體規格說明描述中, 那些是原因(即輸入條件或輸入條件的等價類),那些是結果(即輸出條件), 並給每個原因和結果賦予一個標識符.

(2) 分析軟體規格說明描述中的語義.找出原因與結果之間, 原因與原因之間對應的關系. 根據這些關系,畫出因果圖.

(3) 由於語法或環境限制, 有些原因與原因之間,原因與結果之間的組合情況不不可能出現. 為表明這些特殊情況, 在因果圖上用一些記號表明約束或限制條件.

(4) 把因果圖轉換為判定表.

(5) 把判定表的每一列拿出來作為依據,設計測試用例.

從因果圖生成的測試用例(局部,組合關系下的)包括了所有輸入數據的取TRUE與取FALSE的情況,構成的測試用例數目達到最少,且測試用例數目隨輸入數據數目的增加而線性地增加.

前面因果圖方法中已經用到了判定表.判定表(Decision Table)是分析和表達多邏輯條件下執行不同操作的情況下的工具.在程序設計發展的初期,判定表就已被當作編寫程序的輔助工具了.由於它可以把復雜的邏輯關系和多種條件組合的情況表達得既具體又明確.

判定表通常由四個部分組成.

條件樁(Condition Stub):列出了問題得所有條件.通常認為列出得條件的次序無關緊要.

動作樁(Action Stub):列出了問題規定可能採取的操作.這些操作的排列順序沒有約束.

條件項(Condition Entry):列出針對它左列條件的取值.在所有可能情況下的真假值.

動作項(Action Entry):列出在條件項的各種取值情況下應該採取的動作.

規則:任何一個條件組合的特定取值及其相應要執行的操作.在判定表中貫穿條件項和動作項的一列就是一條規則.顯然,判定表中列出多少組條件取值,也就有多少條規則,既條件項和動作項有多少列.

判定表的建立步驟:(根據軟體規格說明)

①確定規則的個數.假如有n個條件.每個條件有兩個取值(0,1),故有 種規則.

②列出所有的條件樁和動作樁.

③填入條件項.

④填入動作項.等到初始判定表.

⑤簡化.合並相似規則(相同動作).

B. Beizer 指出了適合使用判定表設計測試用例的條件:

①規格說明以判定表形式給出,或很容易轉換成判定表.

②條件的排列順序不會也不影響執行哪些操作.

③規則的排列順序不會也不影響執行哪些操作.

④每當某一規則的條件已經滿足,並確定要執行的操作後,不必檢驗別的規則.

⑤如果某一規則得到滿足要執行多個操作,這些操作的執行順序無關緊要.

正交試驗設計法,就是使用已經造好了的正交表格來安排試驗並進行數據分析的一種方法,目的是用最少的測試用例達到最高的測試覆蓋率。

黑盒測試的優點

1. 基本上不用人管著,如果程序停止運行了一般就是被測試程序crash了

2. 設計完測試例之後,下來的工作就是爽了,當然更苦悶的是確定crash原因

黑盒測試的缺點

1. 結果取決於測試例的設計,測試例的設計部分來勢來源於經驗,OUSPG的東西很值得借鑒

2. 沒有狀態轉換的概念,目前一些成功的例子基本上都是針對PDU來做的,還做不到針對被測試程序的狀態轉換來作

3. 就沒有狀態概念的測試來說,尋找和確定造成程序crash的測試例是個麻煩事情,必須把周圍可能的測試例單獨確認一遍。而就有狀態的測試來說,就更麻煩了,尤其不是一個單獨的testcase造成的問題。這些在堆的問題中表現的更為突出。

黑盒測試(功能測試)工具的選擇

那麼,如何高效地完成功能測試?選擇一款合適的功能測試工具並培訓一支高素質的工具使用隊伍無疑是至關重要的。盡管現階段存在少數不採用任何功能測試工具,從事功能測試外包項目的軟體服務企業。短期來看,這類企業盈利狀況尚可,但長久來看,它們極有可能被自動化程度較高的軟體服務企業取代。

目前,用於功能測試的工具軟體有很多,針對不同架構軟體的工具也不斷推陳出新。這里重點介紹的是其中一個較為典型自動化測試工具,即Mercury公司的WinRunner。

WinRunner是一種用於檢驗應用程序能否如期運行的企業級軟體功能測試工具。通過自動捕獲、檢測和模擬用戶交互操作,WinRunner能識別出絕大多數軟體功能缺陷,從而確保那些跨越了多個功能點和資料庫的應用程序在發布時盡量不出現功能性故障。

WinRunner的特點在於: 與傳統的手工測試相比,它能快速、批量地完成功能點測試; 能針對相同測試腳本,執行相同的動作,從而消除人工測試所帶來的理解上的誤差; 此外,它還能重復執行相同動作,測試工作中最枯燥的部分可交由機器完成; 它支持程序風格的測試腳本,一個高素質的測試工程師能藉助它完成流程極為復雜的測試,通過使用通配符、宏、條件語句、循環語句等,還能較好地完成測試腳本的重用; 它針對於大多數編程語言和Windows技術,提供了較好的集成、支持環境,這對基於Windows平台的應用程序實施功能測試而言帶來了極大的便利。

WinRunner的工作流程大致可以分為以下六個步驟:

1.識別應用程序的GUI

在WinRunner中,我們可以使用GUI Spy來識別各種GUI對象,識別後,WinRunner會將其存儲到GUI Map File中。它提供兩種GUI Map File模式: Global GUI Map File和GUI Map File per Test。其最大區別是後者對每個測試腳本產生一個GUI文件,它能自動建立、存儲、載入,推薦初學者選用這種模式。但是,這種模式不易於描述對象的改變,其效率比較低,因此對於一個有經驗的測試人員來說前者不失為一種更好的選擇,它只產生一個共享的GUI文件,這使得測試腳本更容易維護,且效率更高。

2.建立測試腳本

在建立測試腳本時,一般先進行錄制,然後在錄制形成的腳本中手工加入需要的TSL(與C語言類似的測試腳本語言)。錄制腳本有兩種模式: Context Sensitive和Analog,選擇依據主要在於是否對滑鼠軌跡進行模擬,在需要回放時一般選用Analog。在錄制過程中這兩種模式可以通過F2鍵相互切換。

只要看看現代軟體的規模和功能點數就可以明白,功能測試早已跨越了單靠手工敲敲鍵盤、點點滑鼠就可以完成的階段。而性能測試則是控制系統性能的有效手段,在軟體的能力驗證、能力規劃、性能調優、缺陷修復等方面都發揮著重要作用。

3.對測試腳本除錯(debug)

在WinRunner中有專門一個Debug Toolbar用於測試腳本除錯。可以使用step、pause、breakpoint等來控制和跟蹤測試腳本和查看各種變數值。

4.在新版應用程序執行測試腳本

當應用程序有新版本發布時,我們會對應用程序的各種功能包括新增功能進行測試,這時當然不可能再來重新錄制和編寫所有的測試腳本。我們可以使用已有的腳本,批量運行這些測試腳本測試舊的功能點是否正常工作。可以使用一個call命令來載入各測試腳本。還可在call命令中加各種TSL腳本來增加批量能力。

5.分析測試結果

分析測試結果在整個測試過程中最重要,通過分析可以發現應用程序的各種功能性缺陷。當運行完某個測試腳本後,會產生一個測試報告,從這個測試報告中我們能發現應用程序的功能性缺陷,能看到實際結果和期望結果之間的差異,以及在測試過程中產生的各類對話框等。

6.回報缺陷(defect)

在分析完測試報告後,按照測試流程要回報應用程序的各種缺陷,然後將這些缺陷發給指定人,以便進行修改和維護。

常用的功能測試方法

功能測試就是對產品的各功能進行驗證,根據功能測試用例,逐項測試,檢查產品是否達到用戶要求的功能。

Ⅵ 什麼是黑盒測試和白盒測試

白盒測試:是通過程序的源代碼進行測試而不使用用戶界面。這種類型的測試需要從代碼句法發現內部代碼在演算法,溢出,路徑,條件等等中的缺點或者錯誤,進而加以修正。黑盒測試:是通過使用整個軟體或某種軟體功能來嚴格地測試, 而並沒有通過檢查程序的源代碼或者很清楚地了解該軟體的源代碼程序具體是怎樣設計的。

1. 測試人員通過輸入他們的數據然後看輸出的結果從而了解軟體怎樣工作。在測試時,把程序看作一個不能打開的黑盆子,在完全不考慮程序內部結構和內部特性的情況下,測試者在程序介面進行測試,它只檢查程序功能是否按照需求。

2. 二者最大的區別應該就是測試對象不一樣,白盒測試主要針對的是程序代碼邏輯,黑盒測試主要針對的是程序所展現給用戶的功能,簡單的說就是前者測試後台程序後者測試前台展示功能。

3. 白盒測試的測試方法有代碼檢查法、靜態結構分析法、靜態質量度量法、邏輯覆蓋法、基本路徑測試法、域測試、符號測試、Z路徑覆蓋、程序變異。黑盒測試是以用戶的角度,從輸入數據與輸出數據的對應關系出發進行測試的。很明顯,如果外部特性本身有問題或規格說明的規定有誤,用墨盒測試方法是發現不了的。

Ⅶ 黑盒測試和白盒測試

白盒測試:
是指實際運行被測程序,通過程序的源代碼進行測試而不使用用戶界面。這種類型的測試需要從代碼句法發現內部代碼在演算法、溢出、路徑和條件等方面的缺點或者錯誤,進而加以修正。
黑盒測試:
又稱功能測試、數據驅動測試或基於規格說明的測試,是通過使用整個軟體或某種軟體功能來嚴格地測試,,而並沒有通過檢查程序的源代碼,或者很清楚地了解該軟體的源代碼程序具體是怎樣設計的。測試人員通過輸入他們的數據看輸出的結果,從而了解軟體怎樣工作。應該更適合測試網頁游戲。
區別一:從定義上
白盒測試需要從代碼句法發現內部代碼在演算法,溢出,路徑,條件等等中的缺點或者錯誤,進而加以修正。而黑盒測試著重測試軟體功能,它並不涉及程序的內部結構和內容特性。黑盒測試並不能取代白盒測試,它與白盒是互補的測試方法,它很可能發現白盒測試不易發現的其他類型錯誤。
區別二:從測試目的上
黑盒測試的目的是檢測是否有不正確或遺漏的功能;數據或者參數上,輸入能否正確接收;是否有數據結構錯誤或外部信息訪問錯誤;性能上是否能夠滿足要求;是否有初始化或終止性錯誤。而白盒測試的目的是通過在不同點檢查程序的狀態,確定實際的狀態是否與預期的狀態一致,而不顧它的功能。
區別三:檢測方式上
白盒測試是窮舉路徑測試,黑盒測試是窮舉輸入測試,這兩種方法是基於完全不同的觀點,反應了事物的兩個極端,它們各有側重和優勢,但不能彼此替代。在現代的測試理念中,這兩種測試方法不是截然分開的,而是交叉使用。
(7)源碼黑盒測試擴展閱讀
白盒測試的優點:
1.能仔細考慮軟體的實現
2.可檢測代碼中的每條分支和路徑
3.揭示隱藏在代碼中的錯誤
4.對代碼的測試比較徹底
白盒測試的缺點:
1.昂貴
2.無法檢測代碼中遺漏的路徑和數據敏感性錯誤
3.不驗證規格的正確性
黑盒測試的優點:
1.對於子系統甚至系統效率要比白盒測試高
2.測試人員不需要了解實現的細節(特定編程語言)
3.測試人員和編程人員彼此獨立
4.從用戶的角度進行測試很容易理解和接受
5.有助於暴露規格的不一致或有歧義的問題
6.測試用例可以在規格完成後馬上進行
黑盒測試的缺點:
1.只有一小部分輸入被測試到,要測試每個可能的輸入幾乎不可能。
2.沒有清晰、簡明的規格,測試用例很難設計。
3.如果測試人員不被告知開發人員已經執行過的用例,在測試數據上會存在不必要的重復。
4.有很多程序路徑沒有被測試到。
5.不能直接針對特定程序段測試,而這些程序段可能很復雜,有可能隱藏更多的問題。
6.大部分和研究相關的測試都是直接針對白盒測試的。

Ⅷ 怎麼樣做白盒,黑盒測試

(一)等價類劃分法
等價類劃分法是一種典型的、重要的黑盒測試方法,它將程序所有可能的輸入數據劃分為若干個等價類。然後從每個部分中選取具有代表性的數據當做測試用例。測試用例由有效等價類和無效等價類的代表數據組成,從而保證測試用例具有完整性和代表性。使用該方法設計測試用例主要有兩個步驟:(1)確定等價類;(2)生成測試用例。
(二)邊界值分析法
邊界值分析法是對程序輸入或輸出的邊界值進行測試的一種黑盒測試方法。實際的測試工作證明,考慮了邊界條件的測試用例比那些沒有考慮邊界條件的測試用例具有更高的測試回報率。這里所說的邊界條件,是指輸入和輸入等價類中那些恰好處於邊界、或超過邊界、或在邊界以下的狀態。
(三)因果圖法
因果圖法也是較常用的一種黑盒測試方法,是一種簡化了的邏輯圖。因果圖能直觀地表明輸入條件和輸出動作之間的因果關系,能幫助測試人員把注意力集中到與程序功能有關的輸入組合上。因果圖法是一種適合於描述對於多種輸入條件組合的測試方法,根據輸入條件的組合、約束關系和輸出條件的因果關系,分析輸入條件的各種組合情況,從而設計測試用例的方法,它適合於檢查程序輸入條件的各種組合情況
(四)錯誤推測法
錯誤推測法是基於以往的經驗和直覺,參照以往的軟體系統出現的錯誤,推測當前被測程序中可能存在的缺陷和錯誤,有針對性地設計測試用例。
用錯誤推測法設計測試用例的基本思想是:列舉出程序中可能犯出現的錯誤或容易發生錯誤的特殊情況的清單,然後根據清單和已經設計好的測試用例來編寫特定的測試用例。例如,程序中出現的輸入數據為「0」或者字元為空就是一種錯誤易發情況;在出現輸入或輸出的數量不定的地方,數量為「沒有」和「一個」也是錯誤易發情況。特別需要注意的是,在閱讀規格說明時聯系程序員可能做的假設確定

Ⅸ 什麼是軟體的白盒和黑盒測試法

1. 黑盒測試
黑盒測試也稱功能測試或數據驅動測試,它是在已知產品所應具有的功能,通過測試來檢測每個功能是否都能正常使用,在測試時,把程序看作一個不能打開的黑盆子,在完全不考慮程序內部結構和內部特性的情況下,測試者在程序介面進行測試,它只檢查程序功能是否按照需求規格說明書的規定正常使用,程序是否能適當地接收輸入數鋸而產生正確的輸出信息,並且保持外部信息(如資料庫或文件)的完整性。

黑盒測試方法主要有等價類劃分、邊值分析、因—果圖、錯誤推測等,主要用於軟體確認測試。「黑盒」法著眼於程序外部結構、不考慮內部邏輯結構、針對軟體界面和軟體功能進行測試。「黑盒」法是窮舉輸入測試,只有把所有可能的輸入都作為測試情況使用,才能以這種方法查出程序中所有的錯誤。實際上測試情況有無窮多個,人們不僅要測試所有合法的輸入,而且還要對那些不合法但是可能的輸入進行測試。

2. 白盒測試
白盒測試也稱結構測試或邏輯驅動測試,它是知道產品內部工作過程,可通過測試來檢測產品內部動作是否按照規格說明書的規定正常進行,按照程序內部的結構測試程序,檢驗程序中的每條通路是否都有能按預定要求正確工作,而不顧它的功能,白盒測試的主要方法有邏輯驅動、基路測試等,主要用於軟體驗證。
「白盒」法全面了解程序內部邏輯結構、對所有邏輯路徑進行測試。「白盒」法是窮舉路徑測試。在使用這一方案時,測試者必須檢查程序的內部結構,從檢查程序的邏輯著手,得出測試數據。貫穿程序的獨立路徑數是天文數字。但即使每條路徑都測試了仍然可能有錯誤。第一,窮舉路徑測試決不能查出程序違反了設計規范,即程序本身是個錯誤的程序。第二,窮舉路徑測試不可能查出程序中因遺漏路徑而出錯。第三,窮舉路徑測試可能發現不了一些與數據相關的錯誤。

3.灰盒測試
灰盒測試,確實是介於二者之間的,可以這樣理解,灰盒測試關注輸出對於輸入的正確性,同時也關注內部表現,但這種關注不象白盒那樣詳細、完整,只是通過一些表徵性的現象、事件、標志來判斷內部的運行狀態,有時候輸出是正確的,但內部其實已經錯誤了,這種情況非常多,如果每次都通過白盒測試來操作,效率會很低,因此需要採取這樣的一種灰盒的方法。

灰盒測試結合了白盒測試盒黑盒測試的要素。它考慮了用戶端、特定的系統知識和操作環境。它在系統組件的協同性環境中評價應用軟體的設計。

灰盒測試由方法和工具組成,這些方法和工具取材於應用程序的內部知識盒與之交互的環境,能夠用於黑盒測試以增強測試效率、錯誤發現和錯誤分析的效率。

灰盒測試涉及輸入和輸出,但使用關於代碼和程序操作等通常在測試人員視野之外的信息設計測試。

↖(^ω^)↗

Ⅹ 軟體測試中什麼是白盒測試 黑盒測試

白盒測試也稱結構測試或邏輯驅動測試,它是按照程序內部的結構測試程序,通過測試來檢測產品內部動作是否按照設計規格說明書的規定正常進行,檢驗程序中的每條通路是否都能按預定要求正確工作。

這一方法是把測試對象看作一個打開的盒子,測試人員依據程序內部邏輯結構相關信息,設計或選擇測試用例,對程序所有邏輯路徑進行測試,通過在不同點檢查程序的狀態,確定實際的狀態是否與預期的狀態一致。

採用什麼方法對軟體進行測試呢?常用的軟體測試方法有兩大類:靜態測試方法和動態測試方法。其中軟體的靜態測試不要求在計算機上實際執行所測程序,主要以一些人工的模擬技術對軟體進行分析和測試;而軟體的動態測試是通過輸入一組預先按照一定的測試准則構造的實例數據來動態運行程序,而達到發現程序錯誤的過程。

白盒測試的測試方法有代碼檢查法、靜態結構分析法、靜態質量度量法、邏輯覆蓋法、基本路徑測試法、域測試、符號測試、Z路徑覆蓋、程序變異。

白盒測試法的覆蓋標准有邏輯覆蓋、循環覆蓋和基本路徑測試。其中邏輯覆蓋包括語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋。
六種覆蓋標准:語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋發現錯誤的能力呈由弱至強的變化。語句覆蓋每條語句至少執行一次。判定覆蓋每個判定的每個分支至少執行一次。條件覆蓋每個判定的每個條件應取到各種可能的值。判定/條件覆蓋同時滿足判定覆蓋條件覆蓋。條件組合覆蓋每個判定中各條件的每一種組合至少出現一次。路徑覆蓋使程序中每一條可能的路徑至少執行一次。

"白盒"法全面了解程序內部邏輯結構、對所有邏輯路徑進行測試。"白盒"法是窮舉路徑測試。在使用這一方案時,測試者必須檢查程序的內部結構,從檢查程序的邏輯著手,得出測試數據。貫穿程序的獨立路徑數是天文數字。但即使每條路徑都測試了仍然可能有錯誤。第一,窮舉路徑測試決不能查出程序違反了設計規范,即程序本身是個錯誤的程序。第二,窮舉路徑測試不可能查出程序中因遺漏路徑而出錯。第三,窮舉路徑測試可能發現不了一些與數據相關的錯誤。

如何挑選白盒測試工具

白盒測試目前主要用在具有高可靠性要求的軟體領域,例如:軍工軟體、航天航空軟體、工業控制軟體等等。白盒測試工具在選購時應當主要是對開發語言的支持、代碼覆蓋的深度、嵌入式軟體的測試、測試的可視化等。
對開發語言的支持:白盒測試工具是對源代碼進行的測試,測試的主要內容包括詞法分析與語法分析、靜態錯誤分析、動態檢測等。但是對於不同的開發語言,測試工具實現的方式和內容差別是較大的。目前測試工具主要支持的開發語言包括:標准C、C++、Visual C++、Java、Visual J++等。
代碼的覆蓋深度:從覆蓋源程序語句的詳盡程度分析,邏輯覆蓋標准包括以下不同的覆蓋標准:語句覆蓋、判定覆蓋、條件覆蓋、條件判定組合覆蓋、多條件覆蓋和修正判定條件覆蓋。
·語句覆蓋 為了暴露程序中的錯誤,程序中的每條語句至少應該執行一次。因此語句覆蓋(Statement Coverage)的含義是:選擇足夠多的測試數據,使被測程序中每條語句至少執行一次。語句覆蓋是很弱的邏輯覆蓋。
·判定覆蓋 比語句覆蓋稍強的覆蓋標準是判定覆蓋(Decision Coverage)。判定覆蓋的含義是:設計足夠的測試用例,使得程序中的每個判定至少都獲得一次「真值」或「假值」,或者說使得程序中的每一個取「真」分支和取「假」分支至少經歷一次,因此判定覆蓋又稱為分支覆蓋。
·條件覆蓋 在設計程序中,一個判定語句是由多個條件組合而成的復合判定。為了更徹底地實現邏輯覆蓋,可以採用條件覆蓋(Condition Coverage)的標准。條件覆蓋的含義是:構造一組測試用例,使得每一判定語句中每個邏輯條件的可能值至少滿足一次。
·多條件覆蓋 多條件覆蓋也稱條件組合覆蓋,它的含義是:設計足夠的測試用例,使得每個判定中條件的各種可能組合都至少出現一次。顯然滿足多條件覆蓋的測試用例是一定滿足判定覆蓋、條件覆蓋和條件判定組合覆蓋的。
·修正條件判定覆蓋 修正條件判定覆蓋是由歐美的航空/航天製造廠商和使用單位聯合制定的「航空運輸和裝備系統軟體認證標准」,目前在國外的國防、航空航天領域應用廣泛。這個覆蓋度量需要足夠的測試用例來確定各個條件能夠影響到包含的判定的結果。它要求滿足兩個條件:首先,每一個程序模塊的入口和出口點都要考慮至少要被調用一次,每個程序的判定到所有可能的結果值要至少轉換一次;其次,程序的判定被分解為通過邏輯操作符(and、or)連接的布爾條件,每個條件對於判定的結果值是獨立的。
不同的測試工具對於代碼的覆蓋能力也是不同的,通常能夠支持修正條件判定覆蓋的測試工具價格是極其昂貴的。
嵌入式軟體的測試:對於嵌入式軟體的測試,我們還需要一方面進一步考慮測試工具對於嵌入式操作系統的支持能力,例如DOS、Vxworks、Neculeus、Linux和Windows CE等;另一方面還需要考慮測試工具對於硬體平台的支持能力,包括是否支持所有64/32/16位CPU 和 MCU,是否可以支持 PCI/VME/CPCI 匯流排。
測試的可視化:白盒測試是工作量巨大並且枯燥的工作,可視化的設計對於測試來說是十分重要的。在選購白盒測試工具時,應當考慮該款測試工具的可視化是否良好,例如:測試過程中是否可以顯示覆蓋率的函數分布圖和上升趨勢圖,是否使用不同的顏色區分已執行和未執行的代碼段顯示分配內存情況實時圖表等,這些對於測試效率和測試質量的提高是具有很大的作用的。

白盒測試之基本路徑測試法

白盒測試的測試方法有代碼檢查法、靜態結構分析法、靜態質量度量法、邏輯覆蓋法、基本路徑測試法、域測試、符號測試、Z路徑覆蓋、程序變異。
其中運用最為廣泛的是基本路徑測試法。
基本路徑測試法是在程序控制流圖的基礎上,通過分析控制構造的環路復雜性,導出基本可執行路徑集合,從而設計測試用例的方法。
設計出的測試用例要保證在測試中程序的每個可執行語句至少執行一次。
在程序控制流圖的基礎上,通過分析控制構造的環路復雜性,導出基本可執行路徑集合,從而設計測試用例。包括以下4個步驟和一個工具方法:
1. 程序的控制流圖:描述程序控制流的一種圖示方法。
2. 程序圈復雜度:McCabe復雜性度量。從程序的環路復雜性可導出程序基本路徑集合中的獨立路徑條數,這是確定程序中每個可執行語句至少執行一次所必須的測試用例數目的上界。
3. 導出測試用例:根據圈復雜度和程序結構設計用例數據輸入和預期結果。
4. 准備測試用例:確保基本路徑集中的每一條路徑的執行。
工具方法:
圖形矩陣:是在基本路徑測試中起輔助作用的軟體工具,利用它可以實現自動地確定一個基本路徑集。
程序的控制流圖:描述程序控制流的一種圖示方法。
圓圈稱為控制流圖的一個結點,表示一個或多個無分支的語句或源程序語句
流圖只有二種圖形符號:
圖中的每一個圓稱為流圖的結點,代表一條或多條語句。
流圖中的箭頭稱為邊或連接,代表控制流
任何過程設計都要被翻譯成控制流圖。
如何根據程序流程圖畫出控制流程圖?
在將程序流程圖簡化成控制流圖時,應注意:
在選擇或多分支結構中,分支的匯聚處應有一個匯聚結點。
邊和結點圈定的區域叫做區域,當對區域計數時,圖形外的區域也應記為一個區域。
基本路徑測試法的步驟:
第一步:畫出控制流圖
流程圖用來描述程序控制結構。可將流程圖映射到一個相應的流圖(假設流程圖的菱形決定框中不包含復合條件)。在流圖中,每一個圓,稱為流圖的結點,代表一個或多個語句。一個處理方框序列和一個菱形決測框可被映射為一個結點,流圖中的箭頭,稱為邊或連接,代表控制流,類似於流程圖中的箭頭。一條邊必須終止於一個結點,即使該結點並不代表任何語句(例如:if-else-then結構)。由邊和結點限定的范圍稱為區域。計算區域時應包括圖外部的范圍。

第二步:計算圈復雜度
圈復雜度是一種為程序邏輯復雜性提供定量測度的軟體度量,將該度量用於計算程序的基本的獨立路徑數目,為確保所有語句至少執行一次的測試數量的上界。獨立路徑必須包含一條在定義之前不曾用到的邊。
有以下三種方法計算圈復雜度:
流圖中區域的數量對應於環型的復雜性;
給定流圖G的圈復雜度V(G),定義為V(G)=E-N+2,E是流圖中邊的數量,N是流圖中結點的數量;
給定流圖G的圈復雜度V(G),定義為V(G)=P+1,P是流圖G中判定結點的數量。
第三步:導出測試用例 根據上面的計算方法,可得出四個獨立的路徑。(一條獨立路徑是指,和其他的獨立路徑相比,至少引入一個新處理語句或一個新判斷的程序通路。V(G)值正好等於該程序的獨立路徑的條數。)
路徑1:4-14
路徑2:4-6-7-14
路徑3:4-6-8-10-13-4-14
路徑4:4-6-8-11-13-4-14
根據上面的獨立路徑,去設計輸入數據,使程序分別執行到上面四條路徑。

白盒測試三步法
1) 根據代碼的功能,人工設計測試用例進行基本功能測試;
2) 統計白盒覆蓋率,為未覆蓋的白盒單位設計測試用例,實現完整的白盒覆蓋,比較理想的覆蓋率是實現100%語句、條件、分支、路徑覆蓋;
3) 自動生成大量的測試用例,捕捉"程序員未處理某些特殊輸入"形成的錯誤。

第1步的測試用例通常是現成的,因為詳細設計文檔會規定程序的基本功能,沒有文檔的,程序員在編程時也要想清楚程序的功能,這些基本功能就是基本測試用例;
第2步是在第1步的基礎上,檢查未覆蓋的白盒單位,由於未覆蓋的邏輯單位通常對應未測試的等價類,因此第2步可以找出第1步所遺漏的測試用例;
第3步用自動動態測試彌補第2步的固有缺陷。
"三步法"盡量避免重復工作,白盒方法和黑盒方法相結合,人工方法和自動方法相補充,如果第2步的覆蓋率比較理想,那麼基本上可以保證找出所有等價類。在開發過程允許的限度內,"三步法"已接近極限,當得起"徹底測試"四個字。
黑盒測試也稱功能測試,它是通過測試來檢測每個功能是否都能正常使用。在測試地,把程序看作一個不能打開的黑盒子,在完全不考慮程序內部結構和內部特性的情況下,在程序介面進行測試,它只檢查程序功能是否按照需求規格說明書的規定正常使用,程序是否能適當地接收輸入數據而產生正確的輸出信息。黑盒測試著眼於程序外部結構,不考慮內部邏輯結構,主要針對軟體界面和軟體功能進行測試。

黑盒測試是以用戶的角度,從輸入數據與輸出數據的對應關系出發進行測試的。很明顯,如果外部特性本身有問題或規格說明的規定有誤,用墨盒測試方法是發現不了的。

黑盒測試法注重於測試軟體的功能需求,主要試圖發現下列幾類錯誤。

功能不正確或遺漏;

界面錯誤;

資料庫訪問錯誤;

性能錯誤;

初始化和終止錯誤等。

從理論上講,黑盒測試只有採用窮舉輸入測試,把所有可能的輸入都作為測試情況考慮,才能查出程序中所有的錯誤。實際上測試情況有無窮多個,人們不僅要測試所有合法的輸入,而且還要對那些不合法但可能的輸入進行測試。這樣看來,完全測試是不可能的,所以我們要進行有針對性的測試,通過制定測試案例指導測試的實施,保證軟體測試有組織、按步驟,以及有計劃地進行。黑盒測試行為必須能夠加以量化,才能真正保證軟體質量,而測試用例就是將測試行為具體量化的方法之一。具體的黑盒測試用例設計方法包括等價類劃分法、邊界值分析法、錯誤推測法、因果圖法、判定表驅動法、正交試驗設計法、功能圖法等。

等價類劃分的辦法是把程序的輸入域劃分成若幹部分(子集),然後從每個部分中選取少數代表性數據作為測試用例。每一類的代表性數據在測試中的作用等價於這一類中的其他值。該方法是一種重要的,常用的黑盒測試用例設計方法。
1) 劃分等價類: 等價類是指某個輸入域的子集合。在該子集合中,各個輸入數據對於揭露程序中的錯誤都是等效的,並合理地假定:測試某等價類的代表值就等於對這一類其它值的測試.因此,可以把全部輸入數據合理劃分為若乾等價類,在每一個等價類中取一個數據作為測試的輸入條件,就可以用少量代表性的測試數據.取得較好的測試結果.等價類劃分可有兩種不同的情況:有效等價類和無效等價類.
有效等價類:是指對於程序的規格說明來說是合理的,有意義的輸入數據構成的集合.利用有效等價類可檢驗程序是否實現了規格說明中所規定的功能和性能.
無效等價類:與有效等價類的定義恰巧相反.
設計測試用例時,要同時考慮這兩種等價類.因為,軟體不僅要能接收合理的數據,也要能經受意外的考驗.這樣的測試才能確保軟體具有更高的可靠性.
2)劃分等價類的方法:下面給出六條確定等價類的原則.
①在輸入條件規定了取值范圍或值的個數的情況下,則可以確立一個有效等價類和兩個無效等價類.
②在輸入條件規定了輸入值的集合或者規定了「必須如何」的條件的情況下,可確立一個有效等價類和一個無效等價類.
③在輸入條件是一個布爾量的情況下,可確定一個有效等價類和一個無效等價類.
④在規定了輸入數據的一組值(假定n個),並且程序要對每一個輸入值分別處理的情況下,可確立n個有效等價類和一個無效等價類.
⑤在規定了輸入數據必須遵守的規則的情況下,可確立一個有效等價類(符合規則)和若干個無效等價類(從不同角度違反規則).
⑥在確知已劃分的等價類中各元素在程序處理中的方式不同的情況下,則應再將該等價類進一步的劃分為更小的等價類.
3)設計測試用例:在確立了等價類後,可建立等價類表,列出所有劃分出的等價類:
輸入條件 有效等價類 無效等價類
... ... ...
... ... ...
然後從劃分出的等價類中按以下三個原則設計測試用例:
①為每一個等價類規定一個唯一的編號.
②設計一個新的測試用例,使其盡可能多地覆蓋尚未被覆蓋地有效等價類,重復這一步.直到所有的有效等價類都被覆蓋為止.
③設計一個新的測試用例,使其僅覆蓋一個尚未被覆蓋的無效等價類,重復這一步.直到所有的無效等價類都被覆蓋為止.

邊界值分析是通過選擇等價類邊界的測試用例。邊界值分析法不僅重視輸入條件邊界,而且也必須考慮輸出域邊界。它是對等價類劃分方法的補充.
(1)邊界值分析方法的考慮:
長期的測試工作經驗告訴我們,大量的錯誤是發生在輸入或輸出范圍的邊界上,而不是發生在輸入輸出范圍的內部.因此針對各種邊界情況設計測試用例,可以查出更多的錯誤.
使用邊界值分析方法設計測試用例,首先應確定邊界情況.通常輸入和輸出等價類的邊界,就是應著重測試的邊界情況.應當選取正好等於,剛剛大於或剛剛小於邊界的值作為測試數據,而不是選取等價類中的典型值或任意值作為測試數據.
(2)基於邊界值分析方法選擇測試用例的原則:
1)如果輸入條件規定了值的范圍,則應取剛達到這個范圍的邊界的值,以及剛剛超越這個范圍邊界的值作為測試輸入數據.
2)如果輸入條件規定了值的個數,則用最大個數,最小個數,比最小個數少一,比最大個數多一的數作為測試數據.
3)根據規格說明的每個輸出條件,使用前面的原則1).
4)根據規格說明的每個輸出條件,應用前面的原則2).
5)如果程序的規格說明給出的輸入域或輸出域是有序集合,則應選取集合的第一個元素和最後一個元素作為測試用例.
6)如果程序中使用了一個內部數據結構,則應當選擇這個內部數據結構的邊界上的值作為測試用例.
7)分析規格說明,找出其它可能的邊界條件.

錯誤推測法是基於經驗和直覺推測程序中所有可能存在的各種錯誤, 從而有針對性的設計測試用例的方法.
錯誤推測方法的基本思想: 列舉出程序中所有可能有的錯誤和容易發生錯誤的特殊情況,根據他們選擇測試用例. 例如, 在單元測試時曾列出的許多在模塊中常見的錯誤. 以前產品測試中曾經發現的錯誤等, 這些就是經驗的總結. 還有, 輸入數據和輸出數據為0的情況. 輸入表格為空格或輸入表格只有一行. 這些都是容易發生錯誤的情況. 可選擇這些情況下的例子作為測試用例.

因果圖法:
前面介紹的等價類劃分方法和邊界值分析方法,都是著重考慮輸入條件,但未考慮輸入條件之間的聯系, 相互組合等. 考慮輸入條件之間的相互組合,可能會產生一些新的情況. 但要檢查輸入條件的組合不是一件容易的事情, 即使把所有輸入條件劃分成等價類,他們之間的組合情況也相當多. 因此必須考慮採用一種適合於描述對於多種條件的組合,相應產生多個動作的形式來考慮設計測試用例. 這就需要利用因果圖(邏輯模型).
因果圖方法最終生成的就是判定表. 它適合於檢查程序輸入條件的各種組合情況.
利用因果圖生成測試用例的基本步驟:
(1) 分析軟體規格說明描述中, 那些是原因(即輸入條件或輸入條件的等價類),那些是結果(即輸出條件), 並給每個原因和結果賦予一個標識符.
(2) 分析軟體規格說明描述中的語義.找出原因與結果之間, 原因與原因之間對應的關系. 根據這些關系,畫出因果圖.
(3) 由於語法或環境限制, 有些原因與原因之間,原因與結果之間的組合情況不不可能出現. 為表明這些特殊情況, 在因果圖上用一些記號表明約束或限制條件.
(4) 把因果圖轉換為判定表.
(5) 把判定表的每一列拿出來作為依據,設計測試用例.
從因果圖生成的測試用例(局部,組合關系下的)包括了所有輸入數據的取TRUE與取FALSE的情況,構成的測試用例數目達到最少,且測試用例數目隨輸入數據數目的增加而線性地增加.
前面因果圖方法中已經用到了判定表.判定表(Decision Table)是分析和表達多邏輯條件下執行不同操作的情況下的工具.在程序設計發展的初期,判定表就已被當作編寫程序的輔助工具了.由於它可以把復雜的邏輯關系和多種條件組合的情況表達得既具體又明確.
判定表通常由四個部分組成.
條件樁(Condition Stub):列出了問題得所有條件.通常認為列出得條件的次序無關緊要.
動作樁(Action Stub):列出了問題規定可能採取的操作.這些操作的排列順序沒有約束.
條件項(Condition Entry):列出針對它左列條件的取值.在所有可能情況下的真假值.
動作項(Action Entry):列出在條件項的各種取值情況下應該採取的動作.
規則:任何一個條件組合的特定取值及其相應要執行的操作.在判定表中貫穿條件項和動作項的一列就是一條規則.顯然,判定表中列出多少組條件取值,也就有多少條規則,既條件項和動作項有多少列.
判定表的建立步驟:(根據軟體規格說明)
①確定規則的個數.假如有n個條件.每個條件有兩個取值(0,1),故有 種規則.
②列出所有的條件樁和動作樁.
③填入條件項.
④填入動作項.等到初始判定表.
⑤簡化.合並相似規則(相同動作).
B. Beizer 指出了適合使用判定表設計測試用例的條件:
①規格說明以判定表形式給出,或很容易轉換成判定表.
②條件的排列順序不會也不影響執行哪些操作.
③規則的排列順序不會也不影響執行哪些操作.
④每當某一規則的條件已經滿足,並確定要執行的操作後,不必檢驗別的規則.
⑤如果某一規則得到滿足要執行多個操作,這些操作的執行順序無關緊要.

正交試驗設計法,就是使用已經造好了的正交表格來安排試驗並進行數據分析的一種方法,目的是用最少的測試用例達到最高的測試覆蓋率。

黑盒測試的優點
1. 基本上不用人管著,如果程序停止運行了一般就是被測試程序crash了
2. 設計完測試例之後,下來的工作就是爽了,當然更苦悶的是確定crash原因
黑盒測試的缺點
1. 結果取決於測試例的設計,測試例的設計部分來勢來源於經驗,OUSPG的東西很值得借鑒
2. 沒有狀態轉換的概念,目前一些成功的例子基本上都是針對PDU來做的,還做不到針對被測試程序的狀態轉換來作
3. 就沒有狀態概念的測試來說,尋找和確定造成程序crash的測試例是個麻煩事情,必須把周圍可能的測試例單獨確認一遍。而就有狀態的測試來說,就更麻煩了,尤其不是一個單獨的testcase造成的問題。這些在堆的問題中表現的更為突出。

黑盒測試(功能測試)工具的選擇
那麼,如何高效地完成功能測試?選擇一款合適的功能測試工具並培訓一支高素質的工具使用隊伍無疑是至關重要的。盡管現階段存在少數不採用任何功能測試工具,從事功能測試外包項目的軟體服務企業。短期來看,這類企業盈利狀況尚可,但長久來看,它們極有可能被自動化程度較高的軟體服務企業取代。
目前,用於功能測試的工具軟體有很多,針對不同架構軟體的工具也不斷推陳出新。這里重點介紹的是其中一個較為典型自動化測試工具,即Mercury公司的WinRunner。
WinRunner是一種用於檢驗應用程序能否如期運行的企業級軟體功能測試工具。通過自動捕獲、檢測和模擬用戶交互操作,WinRunner能識別出絕大多數軟體功能缺陷,從而確保那些跨越了多個功能點和資料庫的應用程序在發布時盡量不出現功能性故障。
WinRunner的特點在於: 與傳統的手工測試相比,它能快速、批量地完成功能點測試; 能針對相同測試腳本,執行相同的動作,從而消除人工測試所帶來的理解上的誤差; 此外,它還能重復執行相同動作,測試工作中最枯燥的部分可交由機器完成; 它支持程序風格的測試腳本,一個高素質的測試工程師能藉助它完成流程極為復雜的測試,通過使用通配符、宏、條件語句、循環語句等,還能較好地完成測試腳本的重用; 它針對於大多數編程語言和Windows技術,提供了較好的集成、支持環境,這對基於Windows平台的應用程序實施功能測試而言帶來了極大的便利。
WinRunner的工作流程大致可以分為以下六個步驟:
1.識別應用程序的GUI
在WinRunner中,我們可以使用GUI Spy來識別各種GUI對象,識別後,WinRunner會將其存儲到GUI Map File中。它提供兩種GUI Map File模式: Global GUI Map File和GUI Map File per Test。其最大區別是後者對每個測試腳本產生一個GUI文件,它能自動建立、存儲、載入,推薦初學者選用這種模式。但是,這種模式不易於描述對象的改變,其效率比較低,因此對於一個有經驗的測試人員來說前者不失為一種更好的選擇,它只產生一個共享的GUI文件,這使得測試腳本更容易維護,且效率更高。
2.建立測試腳本
在建立測試腳本時,一般先進行錄制,然後在錄制形成的腳本中手工加入需要的TSL(與C語言類似的測試腳本語言)。錄制腳本有兩種模式: Context Sensitive和Analog,選擇依據主要在於是否對滑鼠軌跡進行模擬,在需要回放時一般選用Analog。在錄制過程中這兩種模式可以通過F2鍵相互切換。
只要看看現代軟體的規模和功能點數就可以明白,功能測試早已跨越了單靠手工敲敲鍵盤、點點滑鼠就可以完成的階段。而性能測試則是控制系統性能的有效手段,在軟體的能力驗證、能力規劃、性能調優、缺陷修復等方面都發揮著重要作用。
3.對測試腳本除錯(debug)
在WinRunner中有專門一個Debug Toolbar用於測試腳本除錯。可以使用step、pause、breakpoint等來控制和跟蹤測試腳本和查看各種變數值。
4.在新版應用程序執行測試腳本
當應用程序有新版本發布時,我們會對應用程序的各種功能包括新增功能進行測試,這時當然不可能再來重新錄制和編寫所有的測試腳本。我們可以使用已有的腳本,批量運行這些測試腳本測試舊的功能點是否正常工作。可以使用一個call命令來載入各測試腳本。還可在call命令中加各種TSL腳本來增加批量能力。
5.分析測試結果
分析測試結果在整個測試過程中最重要,通過分析可以發現應用程序的各種功能性缺陷。當運行完某個測試腳本後,會產生一個測試報告,從這個測試報告中我們能發現應用程序的功能性缺陷,能看到實際結果和期望結果之間的差異,以及在測試過程中產生的各類對話框等。
6.回報缺陷(defect)
在分析完測試報告後,按照測試流程要回報應用程序的各種缺陷,然後將這些缺陷發給指定人,以便進行修改和維護。
常用的功能測試方法
功能測試就是對產品的各功能進行驗證,根據功能測試用例,逐項測試,檢查產品是否達到用戶要求的功能。

熱點內容
內置存儲卡可以拆嗎 發布:2025-05-18 04:16:35 瀏覽:336
編譯原理課時設置 發布:2025-05-18 04:13:28 瀏覽:378
linux中進入ip地址伺服器 發布:2025-05-18 04:11:21 瀏覽:612
java用什麼軟體寫 發布:2025-05-18 03:56:19 瀏覽:32
linux配置vim編譯c 發布:2025-05-18 03:55:07 瀏覽:107
砸百鬼腳本 發布:2025-05-18 03:53:34 瀏覽:944
安卓手機如何拍視頻和蘋果一樣 發布:2025-05-18 03:40:47 瀏覽:741
為什麼安卓手機連不上蘋果7熱點 發布:2025-05-18 03:40:13 瀏覽:803
網卡訪問 發布:2025-05-18 03:35:04 瀏覽:511
接收和發送伺服器地址 發布:2025-05-18 03:33:48 瀏覽:372