黑盒(功能)测试基本方法
1、黑盒測試的概念
1、什么是黑盒測試
(1)黑盒測試又稱功能測試、數據驅動測試或基于規格說明書的測試,是一種從用戶觀點出發的測試。
(2)測試人員把被測程序當作一個黑盒子。
2、黑盒測試主要測試的錯誤類型有
(1)不正確或遺漏的功能
(2)接口、界面錯誤
(3)性能錯誤
(4)數據結構或外部數據訪問錯誤
(5)初始化或終止條件錯誤等等
3、黑盒測試用于回答以下問題
(1)如何測試功能的有效性?
(2)何種類型的輸入會產生好的測試用例?
(3)系統是否對特定的輸入值尤其敏感?
(4)如何分隔數據類的邊界?
(5)系統能夠承受何種數據率和數據量?
(6)特定類型的數據組合會對系統產生何種影響?
4、運用黑盒測試方法,可以導出滿足以下標準的測試用例集
(1)所設計的測試用例能夠減少達到合理測試所需的附加測試用例數。
(2)所設計的測試用例能夠告知某些類型錯誤的存在或不存在,而不是僅僅與特定測試相關的錯誤。
5、用黑盒測試發現程序中的錯誤,必須在所有可能的輸入條件和輸出條件中確定測試數據,來檢查程序是否都能產生正確的輸出。但這是不可能的,因為窮舉測試數量太大,無法完成。
2、黑盒測試的實施過程
1、測試計劃階段
2、測試設計階段 - 依據程序需求規格說明書或用戶手冊,按照一定規范化的方法進行軟件功能劃分和設計測試用例。
3、測試執行階段 - 按照設計的測試用例執行測試、自由測試(作為測試用例測試的補充)。
4、測試總結階段
3、黑盒測試的數學知識
1、集合論
(1)集合與成員
M30 ={ 4月,6月,9月,11月}
(2)集合的定義
列出集合元素 如M30
給出集合元素判定規則 - 如 Y={年| 1900<年<2199}
(3)空集的表示
Φ
Φ = {年:1812≤年≤2022}
Φ, {φ} 是不同的
(4)集合的關系
A 是 B 的 子集 A í B
A 是 B 的 真子集 A ì B
A 和 B 是 相等集合A=B
(5)集合的劃分
A1,A2,…,An是集合A的子集
A1,A2,…,An是集合A的一個劃分
A1∪A2∪…∪An=A 且Ai ∩Aj…= Φ (i != j)
(6)測試
完備性
無冗余性
2、函數
(1)任何程序都可以看成將其輸出與輸入關聯起來的函數,因此函數是開發測試的核心概念。
1-1函數
多對1函數
(2)程序實現的功能大多數是多對一的函數 - 這對測試很重要(多對一測試可選代表等價類1對1,功能相似也可分等價類)。
4、測試用例設計技術
4.1、等價類劃分方法
1、劃分等價類
(1)有效等價類 - 是指對于程序的規格說明來說是合理的,有意義的輸入數據構成的集合。利用有效等價類可檢驗程序是否實現了規格說明中所規定的功能和性能。
(2)無效等價類 - 無效等價類指對程序的規格說明是不合理的或無意義的輸入數據所構成的集合。
2、劃分等價類的標準
(1)完備測試、避免冗余
(2)劃分等價類重要的是
a.并是整個集合 - 完備性
b.子集互不相交 - 保證一種形式的無冗余性
(3)同一類中標識(選擇)一個測試用例,同一等價類中,往往處理相同,相同處理映射到“相同的執行路徑”。
3、劃分等價類的方法 - 六條確定等價類的原則
(1)在輸入條件規定了取值范圍或值的個數的情況下,則可以確立一個有效等價類和兩個無效等價類。
(2)在輸入條件規定了輸入值的集合或者規定了“必須如何”的條件的情況下,可確立一個有效等價類和一個無效等價類。
(3)在輸入條件是一個布爾量的情況下,可確定一個有效等價類和一個無效等價類。
(4)在規定了輸入數據的一組值(假定n個),并且程序要對每一個輸入值分別處理的情況下,可確立n個有效等價類和一個無效等價類。
(5)在規定了輸入數據必須遵守的規則的情況下,可確立一個有效等價類(符合規則)和若干個無效等價類(從不同角度違反規則)。
(6)在確知已劃分的等價類中各元素在程序處理中的方式不同的情況下,則應再將該等價類進一步的劃分為更小的等價類。
4、設計測試用例
(1)在確立了等價類后,可建立等價類表,列出所有劃分出的等價類輸入條件。
a.有效等價類
b.無效等價類
(2)劃分出的等價類中按以下三個原則設計測試用例
a.為每一個等價類規定一個唯一的編號。
b.設計一個新的測試用例,使其盡可能多地覆蓋尚未被覆蓋地有效等價類,重復這一步,直到所有的有效等價類都被覆蓋為止。
c.設計一個新的測試用例,使其僅覆蓋一個尚未被覆蓋的無效等價類,重復這一步,直到所有的無效等價類都被覆蓋為止。
5、舉例
例:某程序規定:“輸入三個整數 a 、 b 、 c 分別作為三邊的邊長構成三角形。通過程序判定所構成的三角形的類型,當此三角形為一般三角形、等腰三角形及等邊三角形時,分別作計算 … ”。用等價類劃分方法為該程序進行測試用例設計
分析題目中給出和隱含的對輸入條件的要求
(1)整數 (2)三個數 (3)非零數 (4)正數 (5)兩邊之和大于第三邊 (6)等腰 (7)等邊
如果 a 、 b 、 c 滿足條件( 1 ) ~ ( 4 ),則輸出下列四種情況之一:
a.如果不滿足條件(5),則程序輸出為 “ 非三角形 ”。
b.如果三條邊相等即滿足條件(7),則程序輸出為 “ 等邊三角形 ”。
c.如果只有兩條邊相等、即滿足條件(6),則程序輸出為 “ 等腰三角形 ”。
d.如果三條邊都不相等,則程序輸出為 “ 一般三角形 ”。
6、NextDate 函數等價類測試用例
(1)NextDate 函數包含三個變量
month
day
year
(2)要求輸入變量 month 、 day 和 year 均為整數值,并且滿足下列條件
1≤month≤12
1≤day≤31
1920≤year≤2050
(3)有效等價類為
M1={月份:1≤月份≤12}
D1={日期:1≤日期≤31}
Y1={年:1812≤年≤2012}
(4)無效等價類為
M2={月份:月份<1}
M3={月份:月份>12}
D2={日期:日期<1}
D3={日期:日期>31}
Y2={年:年<1812}
Y3={年:年>2012}
4.2、邊界值分析法
1、邊界值分析方法是對等價類劃分方法的補充
(1)邊界值分析方法的考慮
a.大量的錯誤是發生在輸入或輸出范圍的邊界上,而不是發生在輸入輸出范圍的內部.因此針對各種邊界情況設計測試用例,可以查出更多的錯誤。
b.使用邊界值分析方法設計測試用例,首先應確定邊界情況。
(2)基于邊界值分析方法選擇測試用例的原則
a.如果輸入條件規定了值的范圍,則應取剛達到這個范圍的邊界的值,以及剛剛超越這個范圍邊界的值作為測試輸入數據。
b.如果輸入條件規定了值的個數,則用最大個數,最小個數,比最小個數少一,比最大個數多一的數作為測試數據。
c.將規則1)和2)應用于輸出條件,即設計測試用例使輸出值達到邊界值及其左右的值。
d.如果程序的規格說明給出的輸入域或輸出域是有序集合,則應選取集合的第一個元素和最后一個元素作為測試用例。
e.如果程序中使用了一個內部數據結構,則應當選擇這個內部數據結構的邊界上的值作為測試用例。
f.分析規格說明,找出其它可能的邊界條件。
2、與等價劃分的區別
(1)邊界值分析不是從某等價類中隨便挑一個作為代表,而是使這個等價類的每個邊界都要作為測試條件。
(2)邊界值分析不僅考慮輸入條件,還要考慮輸出空間產生的測試情況。
4.3、錯誤推測法
1、錯誤推測法 - 基于經驗和直覺推測程序中所有可能存在的各種錯誤, 從而有針對性的設計測試用例的方法。
2、錯誤推測方法的基本思想 - 列舉出程序中所有可能有的錯誤和容易發生錯誤的特殊情況,根據他們選擇測試用例。
3、采用錯誤推測法還可補充設計一些測試用例。
4、測試一個對線性表(比如數組)進行排序的程序,可推測列出以下幾項需要特別測試的情況。
(1)輸入的線性表為空表
(2)表中只含有一個元素
(3)輸入表中所有元素已排好序
(4)輸入表已按逆序排好
(5)輸入表中部分或全部元素相同
4.4、因果圖方法
1、因果圖方法
(1)等價類劃分方法和邊界值分析方法,都是著重考慮輸入條件,但未考慮輸入條件之間的聯系, 相互組合等。
(2)考慮輸入條件之間的相互組合,可能會產生一些新的情況. 但要檢查輸入條件的組合不是一件容易的事情, 即使把所有輸入條件劃分成等價類,他們之間的組合情況也相當多. 因此必須考慮采用一種適合于描述對于多種條件的組合,相應產生多個動作的形式來考慮設計測試用例。
(3)采用因果圖方法能夠幫助我們按一定步驟,高效率地選擇測試用例,同時還能為我們指出,程序規格說明描述中存在著什么問題。
(4)利用因果圖生成測試用例的基本步驟
a.分析軟件規格說明描述中, 那些是原因(即輸入條件或輸入條件的等價類),那些是結果(即輸出條件), 并給每個原因和結果賦予一個標識符。
b.分析軟件規格說明描述中的語義.找出原因與結果之間, 原因與原因之間對應的關系。根據這些關系,畫出因果圖。
c.由于語法或環境限制, 有些原因與原因之間,原因與結果之間的組合情況不不可能出現. 為表明這些特殊情況, 在因果圖上用一些記號表明約束或限制條件。
d.把因果圖轉換為判定表。
e.把判定表的每一列拿出來作為依據,設計測試用例。
2、因果圖介紹
(1)4種符號分別表示了規格說明中向4種因果關系
a.恒等
b.與
c.或
d.非
(2)因果圖中使用了簡單的邏輯符號,以直線聯接左右結點。左結點表示輸入狀態(或稱原因),右結點表示輸出狀態(或稱結果)。
(3)Ci表示原因,通常置于圖的左部;ei表示結果,通常在圖的右部。ci和ei均可取值0或1,0表示某狀態不出現,1表示某狀態出現。
3、因果圖概念
(1)關系
恒等:若ci是1,則ei也是1;否則ei為0
與:若c1和c2都是1,則ei為1;否則ei為0。“與”也可有任意個輸入
或:若c1或c2或c3是1,則ei是1;否則ei為0。“或”可有任意個輸入
非:若ci是1,則ei是0;否則ei是1
(2)約束
a.輸入狀態相互之間還可能存在某些依賴關系,稱為約束。
b.某些輸入條件本身不可能同時出現。輸出狀態之間也往往存在約束。
c.在因果圖中,用特定的符號標明這些約束。
(3)輸入條件的約束有以下4類
E約束(異):a和b中至多有一個可能為1,即a和b不能同時為1。
I約束(或):a、b和c中至少有一個必須是1,即 a、b 和c不能同時為0。
O約束(唯一):a和b必須有一個,且僅有1個為1。
R約束(要求):a是1時,b必須是1,即不可能a是1時b是0。
(4)輸出條件約束類型
輸出條件的約束只有M約束(強制):若結果a是1,則結果b強制為0。
4、因果圖方法小結
(1)因果圖方法是一個非常有效的黑盒測試方法,它能夠生成沒有重復性的且發現錯誤能力強的測試用例,而且對輸入、輸出同時進行了分析。
(2)從因果圖生成的測試用例(局部,組合關系下的)包括了所有輸入數據的取TRUE與取FALSE的情況,構成的測試用例數目達到最少,且測試用例數目隨輸入數據數目的增加而線性地增加。
(3)如果哪個開發項目在設計階段就采用了判定表,也就不必再畫因果圖,而是可以直接利用判定表設計測試用例了。
4.5、判定表驅動測試方法
1、判定表組成 - 判定表通常由四個部分組成
(1)條件樁 - 列出了問題的所有條件,通常認為列出得條件的次序無關緊要。
(2)動作樁 - 列出了問題規定可能采取的操作,這些操作的排列順序沒有約束。
(3)條件項 - 列出針對它左列條件的取值,在所有可能情況下的真假值。
(4)動作項 - 列出在條件項的各種取值情況下應該采取的動作。
2、規則及規則合并
(1)規則
a.任何一個條件組合的特定取值及其相應要執行的操作稱為規則。
b.在判定表中貫穿條件項和動作項的一列就是一條規則。
c.顯然,判定表中列出多少組條件取值,也就有多少條規則,既條件項和動作項有多少列。
(2)化簡
就是規則合并有兩條或多條規則具有相同的動作,并且其條件項之間存在著極為相似的關系。
3、判定表的建立步驟
(1)確定規則的個數.假如有n個條件。每個條件有兩個取值(0,1),故有2n種規則。
(2)列出所有的條件樁和動作樁。
(3)填入條件項。
(4)填入動作項。等到初始判定表。
(5)簡化.合并相似規則(相同動作)。
4、NextData函數的精簡決策表
(1)NextData函數的精簡決策表
M1={月份, 每月有30天}
M2={月份, 每月有31天}
M3={月份, 2月}
D1={日期,1~28}
D2={日期,29}
D3={日期,30}
D4={日期,31}
Y1 ={年:年是閏年}
Y2 ={年:年不是閏年}
(2)改進為
M1={月份:每月有30天}
M2={月份:每月有31天, 12月除外}
M4={月份:12月}
M3={月份:2月}
D1={日期:1<=日期<=27}
D2={日期:28}
D3={日期:29}
D4={日期:30}
D5={日期:31}
Y1 ={年:年是閏年}
Y2 ={年:年不是閏年}
5、判定表在功能測試中的應用
(1)一些軟件的功能需求可用判定表表達得非常清楚,在檢驗程序的功能時判定表也就成為一個不錯的工具。
(2)判定表的優點和缺點
a.優點 - 它能把復雜的問題按各種可能的情況一一列舉出來,簡明而易于理解,也可避免遺漏。
b.缺點 - 不能表達重復執行的動作,例如循環結構。
(3)B. Beizer 指出了適合使用判定表設計測試用例的條件
a.規格說明以判定表形式給出,或很容易轉換成判定表。
b.條件的排列順序不會也不影響執行哪些操作。
c.規則的排列順序不會也不影響執行哪些操作。
d.每當某一規則的條件已經滿足,并確定要執行的操作后,不必檢驗別的規則。
e.如果某一規則得到滿足要執行多個操作,這些操作的執行順序無關緊要。
6、Myers測試方法選擇的綜合策略 - Myers提出了使用各種測試方法的綜合策略
(1)在任何情況下都必須使用邊界值分析方法。經驗表明用這種方法設計出測試用例發現程序錯誤的能力最強。
(2)必要時用等價類劃分方法補充一些測試用例。
(3)用錯誤推測法再追加一些測試用例。
(4)對照程序邏輯,檢查已設計出的測試用例的邏輯覆蓋程度。如果沒有達到要求的覆蓋標準,應當再補充足夠的測試用例。
(5)如果程序的功能說明中含有輸入條件的組合情況,則一開始就可選用因果圖法。
7、NextDate 函數等價類測試用例 - NextDate 函數中有兩種復雜性的輸入來源
(1)一是所討論的輸入域的復雜性。
(2)二是確定閏年的規則,并要增加 “ 額外天( 2 月 29 日)”。
最后: 可以在公眾號:傷心的辣條 ! 自行領取一份216頁軟件測試工程師面試寶典文檔資料【免費的】。以及相對應的視頻學習教程免費分享!,其中包括了有基礎知識、Linux必備、Shell、互聯網程序原理、Mysql數據庫、抓包工具專題、接口測試工具、測試進階-Python編程、Web自動化測試、APP自動化測試、接口自動化測試、測試高級持續集成、測試架構開發測試框架、性能測試、安全測試等。
現在我邀請你進入我們的軟件測試學習交流群:【746506216】,備注“入群”, 大家可以一起探討交流軟件測試,共同學習軟件測試技術、面試等軟件測試方方面面,還會有免費直播課,收獲更多測試技巧,我們一起進階Python自動化測試/測試開發,走向高薪之路。
喜歡軟件測試的小伙伴們,如果我的博客對你有幫助、如果你喜歡我的博客內容,請 “點贊” “評論” “收藏” 一 鍵三連哦!
軟件測試工程師自學教程:
這才是2022最精細的自動化測試自學教程,我把它刷了無數遍才上岸字節跳動,做到漲薪20K【值得自學軟件測試的人刷】
接口性能測試 — 軟件測試人必會618實戰場景分析
軟件測試工程師月薪2W以上薪資必學技能 — Python接口自動化框架封裝.
美團面試真題_高級測試25K崗位面試 — 軟件測試人都應該看看
測試開發之全面剖析自動化測試平臺 — 軟件測試人的必經之路
軟件測試必會_Jmeter大廠實戰 — 僅6步可實現接口自動化測試
Jmeter實戰講解案例 — 軟件測試人必會
總結
以上是生活随笔為你收集整理的黑盒(功能)测试基本方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php标签调用,phpcms栏目标签调用
- 下一篇: ARP欺骗