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