一、 黑盒測試和白盒測試的直觀圖

#FormatImgID_1##FormatImgID_2#

從圖中可以直接看出來,黑盒測試就當整個程式是個黑盒子,我們看不到它裡面做了些什麼事情,只能透過輸入輸出看是否能得到我們所需的來測試。而白盒測試可以當盒子是透明的,裡面的一切我們都看的清楚,從而我們可以透過去測內部結構來測試。

二、黑盒測試

黑盒測試又稱為功能測試、資料驅動測試或基於規格說明書的測試,是一種從使用者觀點出發的測試。測試人員一般把被測程式當作一個黑盒子。

黑盒測試主要測到的錯誤型別有:不正確或遺漏的功能;介面、介面錯誤;效能錯誤;資料結構或外部資料訪問錯誤;初始化或終止條件錯誤等等。

常用的黑盒測試方法有:等價類劃分法;邊界值分析法;因果圖法;場景法;正交實驗設計法;判定表驅動分析法;錯誤推測法;功能圖分析法。

1、

等價類劃分法

等價類分為有效等價類和無效等價類,其中,有效等價類是指對於程式的規格說明來說是合理的,有意義的輸入資料構成的集合;而無效等價類是指對於程式的規格說明來說是不合理的,沒有意義的輸入資料構成的集合。

確定等價類的原則是:a。 在輸入條件規定了取值範圍或值的個數的情況下,則可以確定一個有效等價類和兩個無效等價類,比如若規定的輸入範圍是1

談一談黑盒測試和白盒測試

2、邊界值分析法

根據經驗法則,大量的錯誤是發生在輸入或輸出範圍的邊界上的,而不是發生在輸入輸出範圍的內部。因此針對各種邊界情況涉及測試用例,可以查出更多的錯誤。而使用邊界值的分析方法涉及測試用例,首先應確定邊界情況。通常輸入和輸出等價類的邊界,應當選取正好等於,剛剛大於或者剛剛小於邊界的值作為測試資料,而不是選取等價類中的典型值或任意值作為測試資料。

邊界值選擇的原則: a。 如果輸入條件規定了值的範圍,則應取剛達到這個範圍的邊界的值,以及剛剛超越這個範圍的邊界的值作為測試輸入資料。 例如,如果程式的規格說明中規定:“重量在10公斤至50公斤範圍內的郵件,其郵費計算公式為……”。作為測試用例,我們應取10及50,還應取10。01,49。99,9。99及50。01等;b。 如果輸入條件規定了值的個數,則用最大個數,最小個數,比最小個數小一,和比最大個數大一的數作為測試資料。例如,一個輸入檔案應包括1~255個記錄,則測試用例可取1和255,還應取0及256等。c。 將前面兩個原則應用於輸出條件,即涉及測試用例使輸出值達到邊界值及其左右的值。d。如果程式的規格說明給出的輸入域或輸出域是有序集合,則應選取集合的第一個元素和最後一個元素作為測試用例。e。 如果程式中使用了一個內部資料結構,則應當選擇這個內部資料結構的邊界上的值作為測試用例資料;f。 分析規格說明,找出其他可能的邊界條件。

3、因果圖法

因果圖是一種利用圖解法分析輸入的各種組合情況,從而設計測試用例的方法,它適合於檢查程式輸入條件的各種組合情況。

利用因果圖生成測試用例的基本步驟有:1。 分析軟體規格說明描述中哪些是原因(輸入,包括前提條件,操作過程),哪些是結果(輸出),並給每個原因和結果賦予一個識別符號;2。 分析軟體規格說明描述的語義,找出原因和結果之間,原因和原因之間的關係,根據這些關係,畫出因果圖;3。 在因果圖上用一些記號表明約束或限制條件;4。 把因果圖轉換為判定表;5。 把判定表的每一列拿出來作為依據,設計測試用例。

因果圖的基本符號和約束符號:

談一談黑盒測試和白盒測試

4、場景法

場景法一般包含基本流和備用流,從一個流程開始,透過描述經過的路徑來確定的過程,經過遍歷所有的基本流和備用流來完成整個場景。其中,基本流就是正常的,正確場景;備選流一般指中斷操作的。

談一談黑盒測試和白盒測試

5、正交實驗設計法

使用正交試驗設計法首先要知道正交表,正交表是研究多因素多水平的一種設計方法,它是格局正交性從全面試驗中挑選出部分有代表性的點進行試驗,這些有代表性的點具備了“均勻分散,齊整可比”的特點,正交試驗設計是一種基於正交表的、高效率、快速、經濟的試驗設計方法。正交表由三個成分構成,Runs:正交表的行數,即實驗的次數;Factors:正交表的列數,即因素數;Levels:水平數,任何單個因素能夠取得的值的最大個數。 正交表的表現形式是: L行數 (水平數因素數) L runs(levels^factors )。

用正交表設計測試用例的步驟: 1。 有哪些因素(變數); 2。每個因素有那幾個水平(變數的取值):用等價類劃分出來的;3。 選擇一個合適的正交表;4。 把變數的值對映到表中;5。 把每一行的各因素水平的組合作為一個測試用例;6。 加上你認為可以且沒有在表中出現的組合。

如何選擇正交表呢?取行數最少的一個,情況分三種:1。因素數(變數)、水平數(變數值)相符;2。 因素數不相同: 取因素數最接近但略大的實際值的表;3。 水平數不相同: 有五個因素(變數)A、B、C、D和E。兩個因素有兩個水平(變數的取值)、兩個因素有三個水平,一個因素有六個水平。行數取最少的一個( 行數取最少的一個(L49(78)、 L18(3661)

6、判定表驅動分析法

判定表是分析和表達多邏輯條件下執行不同操作的情況的工具。判定表由以下部分構成:— 1。 條件樁(Condition Stub):列出了問題的所有條件。通常認為列出的條件的次序無關緊要; 2。 — 動作樁(Action Stub):列出了問題規定可能採取的操作。這些操作的排列順序沒有約束;3。 — 條件項(Condition Entry):列出針對它左列條件的取值在所有可能情況下的真假值; 4。— 動作項(Action Entry):列出在條件項的各種取值情況下應該採取的動作。

7、錯誤推測法

錯誤推測法是基於經驗和直覺推測程式中所有可能存在的各種錯誤, 從而有針對性的設計測試用例的方法。錯誤推測方法的基本思想: 列舉出程式中所有可能有的錯誤和容易發生錯誤的特殊情況, 根據它們選擇測試用例。

最後,對於黑盒測試的綜合策略是:首先,考慮邊界值分析法,邊界值分析法是在任何情況下都必須使用的方法,因為經驗表明這種方法設計的測試用例發現程式錯誤的能力最強。必要時用等價類劃分方法補充一些測試用例。其次,可以用錯誤推測法再追加一些測試用例。這時,可以對照程式邏輯,檢查已設計出的測試用例的邏輯覆蓋率,如果沒有達到要求的覆蓋標準,應當再補充足夠的測試用例;如果程式的功能說明中含有輸入條件的組合情況,則一開始就可以選用因果圖法。

三、白盒測試

為什麼要考慮白盒測試呢?舉個栗子說明,設x=0,y=5, 程式設計z=y/x, 如果只考慮輸入輸出的黑盒測試,我們看不出程式內部的邏輯錯誤(分母不能為零),即使我們使用黑盒測試的測試用例覆蓋的再全也發現不了這個問題,這個時候就要考慮使用白盒測試了。

而什麼是白盒測試呢?白盒測試也稱為結構測試或邏輯驅動測試,是針對被測單元內部是如何進行工作的測試。它根據程式的控制結構設計測試用例,主要用於軟體或程式驗證。白盒測試法檢查程式內部邏輯結構,對所有的邏輯路徑進行測試,是一種窮舉路徑的測試方法,但即使每條路徑都測試過了,但仍然有可能存在錯誤。因為:窮舉路徑測試無法檢查出程式本身是否違反了設計規範,即程式是否是一個錯誤的程式;窮舉路徑測試不可能檢查出程式因為遺漏路徑而出錯;窮舉路徑測試發現不了一些與資料相關的錯誤。

白盒測試需要遵循的原則有: 1。 保證一個模組中的所有獨立路徑至少被測試一次;2。 所有邏輯值均需要測試真(true)和假(false);兩種情況;3。 檢查程式的內部資料結構,保證其結構的有效性;4。 在上下邊界及可操作範圍內執行所有迴圈。

 白盒測試方法:

靜態測試&動態測試

靜態測試是不用執行程式的測試,包括程式碼檢查、靜態結構分析、程式碼質量度量、文件測試等等,它可以由人工進行,充分發揮人的邏輯思維優勢,也可以藉助軟體工具(Fxcop)自動進行。動態測試則需要執行程式碼,也是我們用的最多的一種測試,透過執行程式找到問題,包括功能確認與介面測試、覆蓋率分析、效能分析、記憶體分析等。

1。 單元測試

2。程式碼檢查

3。 同行評審

4。技術評審

要檢驗測試的效果,就要去看測試的覆蓋率,當覆蓋率越大,說明測試成效越好,軟體的缺陷越少。但覆蓋率不是目標(質量才是目標)而只是一種手段。測試覆蓋率包括功能點覆蓋率和結構覆蓋率,其中,功能點覆蓋率大致用於表示軟體已經實現的功能與軟體需要實現的功能之間的比例關係;而結構覆蓋率包括語句覆蓋率、分支覆蓋率、迴圈覆蓋率和路徑覆蓋率等等。

而邏輯覆蓋法中根據覆蓋目標的不同和覆蓋源程式語句的詳盡程度,邏輯覆蓋又可分為:語句覆蓋; 判定覆蓋;條件覆蓋;判定/條件覆蓋;組合覆蓋;路徑覆蓋,且這些覆蓋程度越往後越全。

四、灰盒測試

灰盒測試更像是白盒測試和黑盒測試的混合測試,現階段對灰盒測試沒有更明確的定義,但更多的時候,我們的測試做的就是灰盒測試,即既會做黑盒測試又會做白盒測試。

建立了一個測試交流群,如果對軟體測試、介面測試、自動化測試、面試經驗交流感興趣可以加測試交流群(文章圖片有),還會有同行一起技術交流(歡迎大家進群)