黑盒测试9种常用方法
文章目錄
- 測試用例
- 黑盒測試
- 等價類劃分法
- 邊界值分析法(BVA)
- 判定表法
- 因果圖法
- 組合覆蓋法
- 正交實驗法
- 對比pairwise和OTDM
- 因果圖、決策表和pairwise選用建議
- 功能圖法(黑白盒混合)
- 場景設計法
- 錯誤推測法
測試用例
測試用例 = 輸入(測試步驟和測試數據)+輸出(期望結果)+ 測試環境(系統環境設置)
通常在測試設計階段來寫,即在《需求規格說明書》和《測試計劃》都已完成之后。
唯一標準:用戶需求
《需求規格說明書》和軟件原型。
測試過程中的重要參考依據,好的用例被重復使用使得測試過程事半功倍。
黑盒測試
任何程序都可以看作是從輸入定義域到輸出值域的映射,將被測程序看作一個打不開的黑盒,黑盒里面的內容(實現)是完全不知道的,只知道軟件要做什么。即不關心結構,只關心輸入輸出。
現代黑盒測試是從一種從軟件外部對軟件實施的測試,也稱基于規格說明的測試。
黑盒測試是從用戶觀點出發的測試,其目的是盡可能發現軟件的外部行為錯誤。
檢測軟件功能能否按照需求規格說明書的規定正常工作,是否有功能遺漏;
檢測是否有人機交互錯誤,是否有數據結構和外部數據庫訪問錯誤,是否能恰當地接收數據并保持外部信息(如數據庫或文件)等的完整性;
檢測行為、性能等特性是否滿足要求等;
檢測程序初始化和終止方面的錯誤等。
軟件實現發生了變化,測試用例仍然可以使用;
可以和軟件實現同時進行,因此可以壓縮項目總的開發時間。
下面介紹黑盒測試常用的9種方法。
等價類劃分法
根據程序規格說明書把所有可能的輸入數據,即程序輸入域劃分為若干個互不相交的子集,稱為等價類,然后從每個等價類中選取少數具有代表性的數據作為測試用例,進行測試。
等價類是某個輸入域的子集,在該子集中每個輸入數據的作用是等效的。
分為有效等價類和無效等價類
有效等價類:對于程序的規格說明來說是合理的、有意義的輸入數據構成的集合。利用有效等價類可以檢驗程序是否實現了規格說明中所規定的功能和性能。
無效等價類:與有效等價類的定義恰巧相反。
設計測試用例時,要同時考慮這兩種等價類。因為軟件不僅要能接收合理的數據,也要能經受異常數
據的考驗。經過正反的測試才能確保軟件具有更高的可靠性
①輸入條件規定了取值范圍或值的個數的情況下,則可以確立一個有效等價類和兩個無效等價類。
②在輸入條件規定了輸入值的集合或者規定了“必須如何”的條件的情況下,可以確立一個有效等價類和一個無效等價類。
③在輸入條件是一個布爾量的情況下,可確定一個有效等價類和一個無效等價類。
④多輸入的或關系
在規定了輸入數據的一組值(假定n個),并且程序要對每一個輸入值分別處理的情況下,可確立n個有效等價類和一個無效等價類。
⑤多輸入的且關系
在規定了輸入數據必須遵守的規則的情況下,可確立一個有效等價類(符合規則)和若干個無效等價類(從不同角度違反規則)。
⑥細分等價類
在確知已劃分的等價類中,各元素在程序處理中的方式不同的情況下,則應再將該等價類進一步地劃分為更小的等價類。
(a) 建立等價類表,列出所有劃分出的等價類:
(b) 為每個等價類規定一個唯一的編號;
? 設計一個新的測試用例,使其盡可能多地覆蓋尚未覆蓋的有效等價類
(d) 重復?,最后使得所有有效等價類均被測試用例所覆蓋;
(e) 設計一個新的測試用例,使其只覆蓋一個無效等價類。
(f) 重復(e)使所有無效等價類均被覆蓋。
tips:有效等價類和無效等價類都要被覆蓋,但覆蓋原則不同。
規格說明往往沒有定義無效測試用例的期望輸出應該是什么樣的。因此,測試人員需要花費大量時間來定義這些測試用例的期望輸出。
等價分類的目標是把可能的測試用例組合縮減到仍然足以滿足軟件測試需求為止。選擇了不完全測試,就要冒一定的風險,所以必須仔細選擇分類。
測試同一個復雜程序的兩個軟件測試人員,可能會指定出兩組不同的等價區間。只要審查認為足以覆蓋測試對象就可以了。
參考答案
邊界值分析法(BVA)
全稱Boundary Value Analysis
首先明確,需要在等價類劃分的基礎上進行。
邊界值和等價類密切相關,輸入等價類和輸出等價類的邊界是要著重測試的邊界情況。在等價類的劃分過程中就產生了許多等價類邊界。邊界是最容易出錯的地方,所以,從等價類中選取測試數據時應該關注邊界值。
做個類比,如果兩個接壤的國家要互派間諜,是不是派生活在邊界的人去更容易蒙混過關?
選取正好等于、剛剛大于或剛剛小于等價類邊界的值作為測試數據,而不是選取等價類中的典型值或任意值做為測試數據。
邊界是指相對于輸入等價類和輸出等價類而言,稍高于邊界值及稍低于其邊界值的一些特定情況。
具體有以下幾種情況(我覺得這很白癡,ppt上還說是確定邊界值的原則):
a. 如果輸入條件規定了值的范圍,則應取剛達到這個范圍的邊界的值,以及剛剛超越這個范圍邊界的值作為測試輸入數據。
b. 如果輸入條件規定了值的個數,則用最大個數、最小個數、比最小個數少、比最大個數多1的數作為測試數據。
c. 很多如果程序的規格說明給出的輸入域或輸出域是有序集合,則應選取集合的第一個元素和最后一個元素作為測試用例。
d. 如果程序中使用了一個內部數據結構,則應當選擇這個內部數據結構的邊界上的值作為測試用例。
一些可能與邊界有關的數據類型:數值,速度,字符,地址,位置,尺寸,數量等。
考慮數據類型的下述特征
4. 次邊界條件
普通邊界條件最容易找到,在產品說明書中有定義,或者在使用軟件的過程中確定。
有些邊界在軟件的內部,最終用戶幾乎看不到,但是軟件測試仍有必要檢查。這種邊界條件稱為次邊界條件或者內部邊界條件。
尋找這樣的邊界不要求軟件測試人員具有程序員那樣閱讀源代碼的能力,但要求大體了解軟件的工作方式。
5. 單故障假設
如圖,有x1和x2兩個輸入域,每次只讓一個出故障,取值不在矩形的四個角,而在邊上。
對于一個n變量的程序,BVA測試會產生4n+1個測試用例。
4的來由:min,min+,max,max-
1的來由:各個維度都取正常值的那個測試用例
健壯性BVA測試會產生6n+1個測試用例,多出的是min-與max+
以下實例同時用上了等價類和BVA測試方法
評價:該測試方法的涉及違反了單故障假設,并不好。
背景:當輸入之間有了關聯,如:約束關系和組合關系,等價類劃分和BVA將不再適用,必須考慮使用一種適合于描述對于多種條件的組合,產生多個相應動作的測試方法(指先因果圖后判定表)。
判定表法
判定表方法是借助表格方法完成對輸入條件的組合設計,以達到完全組合覆蓋的測試效果。
在所有的黑盒測試方法中,基于判定表的測試是最嚴格,最具有邏輯性的測試方法。又稱決策表法。
它能夠將復雜的問題按照各種可能的情況全部列舉出來,簡明并避免遺漏。
判定表
判定表是把作為條件的所有輸入的各種組合值以及對應輸出值都羅列出來而形成的表格。
由條件(作為輸入)和活動(作為輸出)兩部分組成。
組成元素
判定表的制定
適合使用判定表設計測試用例的條件
a. 規則說明以判定表的形式給出,或很容易轉換成判定表。
b. 條件和規則的排列順序不影響執行哪些操作。
c. 當某一條規則的條件已經滿足,并確定要執行的操作后,不必檢驗別的規則。
d. 如果某一規則要執行多個操作,這些操作的執行順序無關緊要。
示例
因果圖法
借助圖形,著重分析輸入條件的各種組合,每種組合條件就是“因”,輸出的結果就是“果”。
因果圖是一種形式化的圖形語言,實質上是使用簡化記號表示數字邏輯圖,不僅能發現輸入、輸出中的錯誤,還能指出程序規范中的不完全性和二義性。
①分析軟件規格說明文檔描述的哪些是原因(輸入條件),哪些是結果(輸出條件)。
原因常是輸入條件或輸入條件的等價類,結果是輸出條件。
②分析程序規格說明的描述中的語義內容,將其表示成連接各個原因與各個結果的“因果圖”。
③標明約束條件。在因果圖上標上哪些不可能發生的因果關系,表明約束或限制條件。
④根據因果圖,創建判定表,將復雜的邏輯關系和多種條件組合很具體明確的表示出來。
⑤把判定表的每一列作為依據設計測試用例。
分為基本符號(即輸入和輸出之間)和約束符號(即輸入之間、輸出之間)兩大類
基本符號有:恒等、非、或、與四類,圖形都很好記
約束符號有:
互斥(Exclusion)
或(不知道為啥寫成I)
唯一(Only)
要求(Require)
屏蔽(Mask)
背景:實際中每個條件不只有“是”“否”兩個值,當輸入條件的個數和輸入條件的取值可能都很多,組合數就是很大的數字,決策表已經無能為力。
組合覆蓋法
最常用的是Pair-wise方法,即將眾多因素的值兩兩組合起來而大大減少測試用例組合,該方法經濟有效。
Pair-wise方法基本原理:
不要測試所有的組合,測試所有的“Pairwise ”即可。(覆蓋任意2個因素所有狀態的測試用例集合)
例
如果完全組合,其組合數是3 x 4 x 4 x 3 = 144種,但如果采用兩兩組合,其組合數只有17項
可以靠工具自動生成組合,典型有微軟的PICT。
正交實驗法
Orthogonal Test Design Method, OTDM
正交測試法使用已經構造好了的正交表格來安排試驗并進行數據分析。
正交表的兩大優越性,即“均勻分散,整齊可比”。
其中9是實驗次數,4是因子的個數,3是因子的水平數(即狀態數)。
試驗次數 = m*(n-1)+1 m是因子個數 ,n是水平數。
步驟
對比pairwise和OTDM
共同點
兩者使用頻率最高的均是兩兩組合,前提也都是基于“缺陷大部分發生在參數兩兩組合的情況下,三個參數組合導致的缺陷并不多見”。
兩者的父集均是笛卡爾集。
不同點
兩者采用的篩選方式稍顯不同,配對測試選擇的是所有的兩兩組合所構成的測試用例;
正交表在此基礎上做了更進一步的篩選,使得結果更加精煉。
選擇建議
在因子水平數比較少的情況下,采用配對測試方法。因為測試組合數更加全面一些,當然在某些因子水平數時,兩者最后篩選出的結果可能是一致的。
在因子水平數比較多的情況下,采用正交表測試,因為可以得到更加精煉的測試組合,從而使測試效率得到提升。
因果圖、決策表和pairwise選用建議
如果程序的功能說明中含有輸入條件的組合情況,則一開始就可選用因果圖法和判定表法。
對于配置參數類軟件,用正交試驗法選擇較好的組合方式達到最佳效果。
功能圖法(黑白盒混合)
功能圖法就是使用功能圖形式化地表示程序的功能說明,并機械地生成功能圖地測試用例。
功能圖的兩個組成部分——狀態遷移圖(state transition diagram STD)和邏輯功能模型(logic function model LFM)。
STD用于表示輸入數據序列以及相應的輸出數據,由輸入和當前地狀態決定輸出數據和后續狀態。
LFM用于表示在狀態輸入條件和輸出條件之間的對應關系。LFM只適合于描述靜態說明,輸出數據僅由輸入數據決定。
后續要用到基本路徑覆蓋法。
場景設計法
多數軟件系統都是用事件觸發來控制業務流程,事件觸發時的情景便形成了場景,場景的不同觸發順序構成了用例。
特點:測試人員要充分發揮對用戶實際業務場景的想象,關心用戶做什么,而不是關心產品做什么。
優點:實用性強,有效,設計出來的用例有價值。
缺點:可能使用的場景不一定能對事件系列進行全面的分析,設計出來的用例不完整。
錯誤推測法
測試者根據經驗、知識和直覺來發現軟件的錯誤,來推測程序中可能存在的各種錯誤,從而有針對性地進行測試。
沒有依據,只能靠測試者自身實力;
快速切入體會到程序易用與否;
難以準確知道測試覆蓋率。
作為輔助方法(不像BVA是必用的黑盒測試方法)
軟件測試的原則5-錯誤存在集群現象
總結
以上是生活随笔為你收集整理的黑盒测试9种常用方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实现MySQL高可用群集配置_配置高可用
- 下一篇: @RestControllerAdvic