淺談黑盒測試和白盒測試

1. 黑盒測試和白盒測試的直觀圖面試

  從圖中能夠直接看出來,黑盒測試就當整個程序是個黑盒子,咱們看不到它裏面作了些什麼事情,只能經過輸入輸出看是否能獲得咱們所需的來測試。而白盒測試能夠當盒子是透明的,裏面的一切咱們都看的清楚,從而咱們能夠經過去測內部結構來測試。  數據結構

2. 黑盒測試 (Black-Box Testing)工具

  黑盒測試又稱爲功能測試、數據驅動測試或基於規格說明書的測試,是一種從用戶觀點出發的測試。測試人員通常把被測程序看成一個黑盒子。性能

  黑盒測試主要測到的錯誤類型有:不正確或遺漏的功能;接口、界面錯誤;性能錯誤;數據結構或外部數據訪問錯誤;初始化或終止條件錯誤等等。單元測試

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

  · 等價類劃分法設計

    等價類分爲有效等價類和無效等價類,其中,有效等價類是指對於程序的規格說明來講是合理的,有意義的輸入數據構成的集合;而無效等價類是指對於程序的規格說明來講是不合理的,沒有意義的輸入數據構成的集合。blog

    肯定等價類的原則是:a. 在輸入條件規定了取值範圍或值的個數的狀況下,則能夠肯定一個有效等價類和兩個無效等價類,好比若規定的輸入範圍是1<x<10的全部數,則有效的是1~10內的任意數,而無效的是 -∞~0.9999 和10.00001~+∞; b. 在輸入條件規定了輸入值的集合或者規定了「必須如何」的條件的狀況下,則能夠確立一個有效等價類和一個無效等價類;c.在輸入條件是一個布爾量的狀況下,能夠肯定一個有效的等價類和一個無效的等價類;d. 在規定了輸入數據的一組值(假定n個),而且程序要對每個輸入值分別處理的狀況下,能夠確立n個有效等價類和一個無效等價類;e. 在規定了輸入數據必須遵照的規則的狀況下,能夠確立一個有效等價類(符合規則)和若干個無效等價類(從不一樣角度違反規則);f.在確知已劃分的等價類中各元素在程序處理中的方式不一樣的狀況下,則應再將改等價類進一步的劃分爲更小的等價類。接口

  · 邊界值分析法內存

    根據經驗法則,大量的錯誤是發生在輸入或輸出範圍的邊界上的,而不是發生在輸入輸出範圍的內部。所以針對各類邊界狀況涉及測試用例,能夠查出更多的錯誤。而使用邊界值的分析方法涉及測試用例,首先應肯定邊界狀況。一般輸入和輸出等價類的邊界,應當選取正好等於,剛剛大於或者剛剛小於邊界的值做爲測試數據,而不是選取等價類中的典型值或任意值做爲測試數據。

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

  · 因果圖法

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

    利用因果圖生成測試用例的基本步驟有:1. 分析軟件規格說明描述中哪些是緣由(輸入,包括前提條件,操做過程),哪些是結果(輸出),並給每一個緣由和結果賦予一個標識符;2. 分析軟件規格說明描述的語義,找出緣由和結果之間,緣由和緣由之間的關係,根據這些關係,畫出因果圖;3. 在因果圖上用一些記號代表約束或限制條件;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

  · 斷定表驅動分析法

    斷定表是分析和表達多邏輯條件下執行不一樣操做的狀況的工具。斷定表由如下部分構成:— 1. 條件樁(Condition Stub):列出了問題的全部條件。一般認爲列出的條件的次序可有可無; 2. — 動做樁(Action Stub):列出了問題規定可能採起的操做。這些操做的排列順序沒有約束;3. — 條件項(Condition Entry):列出針對它左列條件的取值在全部可能狀況下的真假值; 4.— 動做項(Action Entry):列出在條件項的各類取值狀況下應該採起的動做。

 

  · 錯誤推測法

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

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

3. 白盒測試 (White-Box Testing)

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

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

  白盒測試須要遵循的原則有: 1. 保證一個模塊中的全部獨立路徑至少被測試一次;2. 全部邏輯值均須要測試真(true)和假(false);兩種狀況;3. 檢查程序的內部數據結構,保證其結構的有效性;4. 在上下邊界及可操做範圍內運行全部循環。

  白盒測試方法有:

  · 靜態測試&動態測試

  靜態測試是不用運行程序的測試,包括代碼檢查、靜態結構分析、代碼質量度量、文檔測試等等,它能夠由人工進行,充分發揮人的邏輯思惟優點,也能夠藉助軟件工具(Fxcop)自動進行。動態測試則須要執行代碼,也是咱們用的最多的一種測試,經過運行程序找到問題,包括功能確認與接口測試、覆蓋率分析、性能分析、內存分析等。

  · 單元測試

  · 代碼檢查

  · 同行評審

  · 技術評審

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

  而邏輯覆蓋法中根據覆蓋目標的不一樣和覆蓋源程序語句的詳盡程度,邏輯覆蓋又可分爲:語句覆蓋; 斷定覆蓋;條件覆蓋;斷定/條件覆蓋;組合覆蓋;路徑覆蓋,且這些覆蓋程度越日後越全。

4. 灰盒測試 (Gray-Box Testing)

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

相關文章
相關標籤/搜索