黑盒測試是把測試對象看作一個黑盒子,利用黑盒測試法進行動態測試時,須要測試軟件產品已經實現的功能是否符合功能設計要求,不需測試軟件產品的內部結構和處理過程。
黑盒測試注重於測試軟件的功能性需求,也即黑盒測試使軟件工程師派生出執行程序全部功能需求的輸入條件。黑盒測試並非白盒測試的替代品,而是用於輔助白盒測試發現其餘類型的錯誤。數據庫
黑盒測試試圖發現如下類型的錯誤:數據結構
功能錯誤或遺漏;工具
界面錯誤;性能
數據結構或外部數據庫訪問錯誤;單元測試
性能錯誤;測試
初始化和終止錯誤。spa
黑盒技術設計測試用例的方法有:設計
等價類劃分方法3d
邊界值分析方法orm
錯誤推測方法
因果圖方法
斷定表驅動分析方法
正交實驗設計方法
功能圖分析方法
等價類劃分法是把全部可能的輸入數據,即程序的輸入域劃分紅若干部分(子集),而後從每一個部分中選取少數表明性數據做爲測試用例;該方法是一種重要的,經常使用的黑盒測試用例設計方法。
1) 劃分等價類:
等價類是指某個輸入域的子集合。在該子集合中,各個輸入數據對於揭露程序中的錯誤都是等效的。併合理地假定:測試某等價類的表明值就等於對這一類其它值的測試。所以,能夠把所有輸入數據合理劃分爲若干等價類,在每個等價類中取一個數據做爲測試的輸入條件,就能夠用少許表明性的測試數據。取得較好的測試結果。等價類劃分可有兩種不一樣的狀況:有效等價類和無效等價類。
2)劃分等價類的方法:
下面給出六條肯定等價類的原則。
① 在輸入條件規定了取值範圍或值的個數的狀況下,則能夠確立一個有效等價類和兩個無效等價類。
例:輸入值是學生成績,範圍是0~100:
② 在輸入條件規定了輸入值的集合或者規定了「必須如何」的條件的狀況下,可確立一個有效等價類和一個無效等價類。
③ 在輸入條件是一個布爾量的狀況下,可肯定一個有效等價類和一個無效等價類; 布爾量是一個二值枚舉類型, 一個布爾量具備兩種狀態: true 和 **false **。
④ 在規定了輸入數據的一組值(假定n個),而且程序要對每個輸入值分別處理的狀況下,可確立n個有效等價類和一個無效等價類。
⑤ 在規定了輸入數據必須遵照的規則的狀況下,可確立一個有效等價類(符合規則)和若干個無效等價類(從不一樣角度違反規則)。
⑥ 在確知已劃分的等價類中各元素在程序處理中的方式不一樣的狀況下,則應再將該等價類進一步的劃分爲更小的等價類。
3)設計測試用例(將等價類轉化成測試用例):
在確立了等價類後,可創建等價類表,列出全部劃分出的等價類:
[輸入條件] [有效等價類] [無效等價類]
而後從劃分出的等價類中按如下三個原則設計測試用例:
① 爲每個等價類規定一個惟一的編號。
② 設計一個新的測試用例,使其儘量多地覆蓋還沒有被覆蓋地有效等價類,重複這一步。直到全部的有效等價類都被覆蓋爲止。
③ 設計一個新的測試用例,使其僅覆蓋一個還沒有被覆蓋的無效等價類,重複這一步。直到全部的無效等價類都被覆蓋爲止。
長期的測試工做經驗告訴咱們,大量的錯誤是發生在輸入或輸出範圍的邊界上,而不是發生在輸入輸出範圍的內部。所以針對各類邊界狀況設計測試用例,能夠查出更多的錯誤。
使用邊界值分析方法設計測試用例,首先應肯定邊界狀況。一般輸入和輸出等價類的邊界,就是應着重測試的邊界狀況。應當選取正好等於,剛剛大於或剛剛小於邊界的值做爲測試數據,而不是選取等價類中的典型值或任意值做爲測試數據。
1)若是輸入條件規定了值的範圍,則應取剛達到這個範圍的邊界的值,以及剛剛超越這個範圍邊界的值做爲測試輸入數據。
2)若是輸入條件規定了值的個數,則用最大個數,最小個數,比最小個數少一,比最大個數多一的數做爲測試數據。
3)根據規格說明的每一個輸出條件,使用前面的原則1)。
4)根據規格說明的每一個輸出條件,應用前面的原則2)。
5)若是程序的規格說明給出的輸入域或輸出域是有序集合,則應選取集合的第一個元素和最後一個元素做爲測試用例。
6)若是程序中使用了一個內部數據結構,則應當選擇這個內部數據結構的邊界上的值做爲測試用例。
7)分析規格說明,找出其它可能的邊界條件。
錯誤推測法: 基於經驗和直覺推測程序中全部可能存在的各類錯誤, 從而有針對性的設計測試用例的方法。
列舉出程序中全部可能有的錯誤和容易發生錯誤的特殊狀況,根據他們選擇測試用例。例如, 在單元測試時曾列出的許多在模塊中常見的錯誤。 之前產品測試中曾經發現的錯誤等, 這些就是經驗的總結。 還有, 輸入數據和輸出數據爲0的狀況。 輸入表格爲空格或輸入表格只有一行。 這些都是容易發生錯誤的狀況。 可選擇這些狀況下的例子做爲測試用例。
前面介紹的等價類劃分方法和邊界值分析方法,都是着重考慮輸入條件,但未考慮輸入條件之間的聯繫, 相互組合等。考慮輸入條件之間的相互組合,可能會產生一些新的狀況。 但要檢查輸入條件的組合不是一件容易的事情, 即便把全部輸入條件劃分紅等價類,他們之間的組合狀況也至關多。所以必須考慮採用一種適合於描述對於多種條件的組合,相應產生多個動做的形式來考慮設計測試用例。 這就須要利用因果圖(邏輯模型)。
因果圖方法最終生成的就是斷定表。 它適合於檢查程序輸入條件的各類組合狀況。
1) 利用因果圖生成測試用例的基本步驟:
(1) 分析軟件規格說明描述中, 那些是緣由(即輸入條件或輸入條件的等價類),那些是結果(即輸出條件),並給每一個緣由和結果賦予一個標識符。
(2) 分析軟件規格說明描述中的語義。找出緣由與結果之間,緣由與緣由之間對應的關係。 根據這些關係,畫出因果圖。
(3) 因爲語法或環境限制, 有些緣由與緣由之間,緣由與結果之間的組合狀況不不可能出現。爲代表這些特殊狀況, 在因果圖上用一些記號代表約束或限制條件。
(4) 把因果圖轉換爲斷定表。
(5) 把斷定表的每一列拿出來做爲依據,設計測試用例。
從因果圖生成的測試用例(局部,組合關係下的)包括了全部輸入數據的取TRUE與取FALSE的狀況,構成的測試用例數目達到最少,且測試用例數目隨輸入數據數目的增長而線性地增長。
前面因果圖方法中已經用到了斷定表。斷定表(DECisionTable)是分析和表達多邏輯條件下執行不一樣操做的狀況下的工具。在程序設計發展的初期,斷定表就已被看成編寫程序的輔助工具了。因爲它能夠把複雜的邏輯關係和多種條件組合的狀況表達得既具體又明確。
2) 因果圖標識
緣由和結果之間的關係有:
①恆等:若C1是1,則E1也是1;不然E1爲0。
②非:若C1是1,則E1是0;不然E1是1。
③或:若c1或c2是1,則E1是1;不然E1爲0。
④與:若c1和c2都是1,則E1爲1;不然E1爲0。
3)因果圖約束
約束條件符號:
A.輸入條件的約束有如下4類:
① E約束(互斥/異):a和b中至多有一個可能爲1,即a和b不能同時爲1。
② I約束(或):a、b和c中至少有一個必須是1,即 a、b 和c不能同時爲0。
③ O約束(惟一);a和b必須有一個,且僅有1個爲1。
B.輸出條件約束類型
輸出條件的約束只有M約束(屏蔽/強制):若結果a是1,則結果b強制爲0。
斷定表一般由四個部分組成。
規則:任何一個條件組合的特定取值及其相應要執行的操做。在斷定表中貫穿條件項和動做項的一列就是一條規則。顯然,斷定表中列出多少組條件取值,也就有多少條規則,既條件項和動做項有多少列。
斷定表的創建步驟:(根據軟件規格說明)
① 肯定規則的個數。假若有n個條件。每一個條件有兩個取值(0,1),故有種規則。
② 列出全部的條件樁和動做樁。
③ 填入條件項。
④ 填入動做項。等到初始斷定表。
⑤ 簡化、合併類似規則(相同動做)。
B.Beizer 指出了適合使用斷定表設計測試用例的條件:
① 規格說明以斷定表形式給出,或很容易轉換成斷定表。
② 條件的排列順序不會也不影響執行哪些操做。
③ 規則的排列順序不會也不影響執行哪些操做。
④ 每當某一規則的條件已經知足,並肯定要執行的操做後,沒必要檢驗別的規則。
⑤ 若是某一規則獲得知足要執行多個操做,這些操做的執行順序可有可無。