測試原理
目錄
一、黑盒測試
(一)等價類劃分
1.定義
是把所有可能的輸入資料,即程式的輸入域劃分成若干部分(子集),然後從每一個子集中選取少數具有代表性的資料作為測試用例。該方法是一種重要的,常用的黑盒測試用例設計方法。
2.劃分等價類
等價類是指某個輸入域的子集合。在該子集合中,各個輸入資料對於揭露程式中的錯誤都是等效的,併合理地假定:測試某等價類的代表值就等於對這一類其它值的測試,因此,可以把全部輸入資料合理劃分為若干等價類,在每一個等價類中取一個資料作為測試的輸入條件就可以用少量代表性的測試資料取得較好的測試結果。等價類劃分可有兩種不同的情況:有效等價類和無效等價類。
1)有效等價類
是指對於程式的規格說明來說是合理的、有意義的輸入資料構成的集合。利用有效等價類可檢驗程式是否實現了規格說明中所規定的功能和效能。
2)無效等價類
與有效等價類的定義恰巧相反。無效等價類指對程式的規格說明是不合理的或無意義的輸入資料所構成的集合。對於具體的問題,無效等價類至少應有一個,也可能有多個。
設計測試用例時,要同時考慮這兩種等價類。因為軟體不僅要能接收合理的資料,也要能經受意外的考驗,這樣的測試才能確保軟體具有更高的可靠性。
3.劃分等價類的標準:
- 1)完備測試、避免冗餘;
- 2)劃分等價類重要的是:集合的劃分,劃分為互不相交的一組子集,而子集的並是整個集合;
- 3)並是整個集合:完備性;
- 4)子集互不相交:保證一種形式的無冗餘性;
- 5)同一類中標識(選擇)一個測試用例,同一等價類中,往往處理相同,相同處理對映到"相同的執行路徑"。
4.劃分等價類的方法
- 1)在輸入條件規定了取值範圍或值的個數的情況下,則可以確立一個有效等價類和兩個無效等價類。如:輸入值是學生成績,範圍是0~100;
- 2)在輸入條件規定了輸入值的集合或者規定了"必須如何"的條件的情況下,可確立一個有效等價類和一個無效等價類;
- 3)在輸入條件是一個布林量的情況下,可確定一個有效等價類和一個無效等價類。
- 4)在規定了輸入資料的一組值(假定n個),並且程式要對每一個輸入值分別處理的情況下,可確立n個有效等價類和一個無效等價類。
- 例:輸入條件說明學歷可為:專科、本科、碩士、博士四種之一,則分別取這四種這四個值作為四個有效等價類,另外把四種學歷之外的任何學歷作為無效等價類。
- 5)在規定了輸入資料必須遵守的規則的情況下,可確立一個有效等價類(符合規則)和若干個無效等價類(從不同角度違反規則)。
- 6)在確知已劃分的等價類中各元素在程式處理中的方式不同的情況下,則應再將該等價類進一步的劃分為更小的等價類。
5.設計測試用例
在確立了等價類後,可建立等價類表,列出所有劃分出的等價類輸入條件:有效等價類、無效等價類,然後從劃分出的等價類中按以下三個原則設計測試用例:
1)為每一個等價類規定一個唯一的編號;
2)設計一個新的測試用例,使其儘可能多地覆蓋尚未被覆蓋地有效等價類,重複這一步,直到所有的有效等價類都被覆蓋為止;
3)設計一個新的測試用例,使其僅覆蓋一個尚未被覆蓋的無效等價類,重複這一步,直到所有的無效等價類都被覆蓋為止。
(二)邊界值分析方法
一.方法簡介
1.定義:邊界值分析法就是對輸入或輸出的邊界值進行測試的一種黑盒測試方法。通常邊界值分析法是作為對等價類劃分法的補充,這種情況下,其測試用例來自等價類的邊界。
2.與等價劃分的區別
1)邊界值分析不是從某等價類中隨便挑一個作為代表,而是使這個等價類的每個邊界都要作為測試條件。
2)邊界值分析不僅考慮輸入條件,還要考慮輸出空間產生的測試情況。
3.邊界值分析方法的考慮:長期的測試工作經驗告訴我們,大量的錯誤是發生在輸入或輸出範圍的邊界上,而不是發生在輸入輸出範圍的內部。因此針對各種邊界情況設計測試用例,可以查出更多的錯誤。使用邊界值分析方法設計測試用例,首先應確定邊界情況。通常輸入和輸出等價類的邊界,就是應著重測試的邊界情況。應當選取正好等於,剛剛大於或剛剛小於邊界的值作為測試資料,而不是選取等價類中的典型值或任意值作為測試資料。
4.常見的邊界值
1)對16-bit 的整數而言 32767 和 -32768 是邊界
2)螢幕上游標在最左上、最右下位置
3)報表的第一行和最後一行
4)陣列元素的第一個和最後一個
5)迴圈的第 0 次、第 1 次和倒數第 2 次、最後一次
5.邊界值分析
1)邊界值分析使用與等價類劃分法相同的劃分,只是邊界值分析假定錯誤更多地存在於劃分的邊界上,因此在等價類的邊界上以及兩側的情況設計測試用例。
例:測試計算平方根的函式
--輸入:實數
--輸出:實數
--規格說明:當輸入一個0或比0大的數的時候,返回其正平方根;當輸入一個小於0的數時,顯示錯誤資訊"平方根非法-輸入值小於0"並返回0;庫函式Print-Line可以用來輸出錯誤資訊。
2)等價類劃分:
I.可以考慮作出如下劃分:
a、輸入 (i)<0 和 (ii)>=0
b、輸出 (a)>=0 和 (b) Error
II.測試用例有兩個:
a、輸入4,輸出2。對應於 (ii) 和 (a) 。
b、輸入-10,輸出0和錯誤提示。對應於 (i) 和 (b) 。
3)邊界值分析:
劃分(ii)的邊界為0和最大正實數;劃分(i)的邊界為最小負實數和0。由此得到以下測試用例:
a、輸入 {最小負實數}
b、輸入 {絕對值很小的負數}
c、輸入 0
d、輸入 {絕對值很小的正數}
e、輸入 {最大正實數}
4)通常情況下,軟體測試所包含的邊界檢驗有幾種型別:數字、字元、位置、重量、大小、速度、方位、尺寸、空間等。
5)相應地,以上型別的邊界值應該在:最大/最小、首位/末位、上/下、最快/最慢、最高/最低、最短/最長、 空/滿等情況下。
6)利用邊界值作為測試資料
舉例:
項,邊界值,測試用例的設計思路:
字元,起始-1個字元/結束+1個字元
假設一個文字輸入區域允許輸入1個到255個 字元,輸入1個和255個字元作為有效等價類;輸入0個和256個字元作為無效等價類,這幾個數值都屬於邊界條件值。
數值,最小值-1/最大值+1
假設某軟體的資料輸入域要求輸入5位的資料值,可以使用10000作為最小值、99999作為最大值;然後使用剛好小於5位和大於5位的數值來作為邊界條件。
空間,小於空餘空間一點/大於滿空間一點
例如在用U盤儲存資料時,使用比剩餘磁碟空間大一點(幾KB)的檔案作為邊界條件。
7)內部邊界值分析:
在多數情況下,邊界值條件是基於應用程式的功能設計而需要考慮的因素,可以從軟體的規格說明或常識中得到,也是終端使用者可以很容易發現問題的。然而,在測試用例設計過程中,某些邊界值條件是不需要呈現給使用者的,或者說使用者是很難注意到的,但同時確實屬於檢驗範疇內的邊界條件,稱為內部邊界值條件或子邊界值條件。
內部邊界值條件主要有下面幾種:
a)數值的邊界值檢驗:計算機是基於二進位制進行工作的,因此,軟體的任何數值運算都有一定的範圍限制。
項 範圍或值
位(bit) 0或者1
位元組(byte)0——225
字(word) 0~65535(單字)或 0~4294967295(雙字)
千(K)1024
兆(M)1048576
吉(G)1073741824
b)字元的邊界值檢驗:在計算機軟體中,字元也是很重要的表示元素,其中ASCII和Unicode是常見的編碼方式。下表中列出了一些常用字元對應的ASCII碼值。
字元 ASCII碼值
空 (null) 0
A 65
空格 (space) 32
a 97
斜槓 ( / ) 47
Z 90
0 48
z 122
冒號 ( : ) 58
單引號 ( ‘ ) 96
@ 64
c)其它邊界值檢驗
6.基於邊界值分析方法選擇測試用例的原則
1)如果輸入條件規定了值的範圍,則應取剛達到這個範圍的邊界的值,以及剛剛超越這個範圍邊界的值作為測試輸入資料。例如,如果程式的規格說明中規定:"重量在10公斤至50公斤範圍內的郵件,其郵費計算公式為……"。作為測試用例,我們應取10及50,還應取10.01,49.99,9.99及50.01等。
2)如果輸入條件規定了值的個數,則用最大個數,最小個數,比最小個數少一,比最大個數多一的數作為測試資料。
比如,一個輸入檔案應包括1~255個記錄,則測試用例可取1和255,還應取0及256等。
3)將規則1)和2)應用於輸出條件,即設計測試用例使輸出值達到邊界值及其左右的值。
例如,某程式的規格說明要求計算出"每月保險金扣除額為0至1165.25元",其測試用例可取0.00及1165.24、還可取一0.01及1165.26等。再如一程式屬於情報檢索系統,要求每次"最少顯示1條、最多顯示4條情報摘要",這時我們應考慮的測試用例包括1和4,還應包括0和5等。
4)如果程式的規格說明給出的輸入域或輸出域是有序集合,則應選取集合的第一個元素和最後一個元素作為測試用例。
5)如果程式中使用了一個內部資料結構,則應當選擇這個內部資料結構的邊界上的值作為測試用例。
6)分析規格說明,找出其它可能的邊界條件。
(三)錯誤值推測法
一. 方法簡介
1. 定義:基於經驗和直覺推測程式中所有可能存在的各種錯誤, 從而有針對性的設計測試用例的方法。
2. 錯誤推測方法的基本思想:
列舉出程式中所有可能有的錯誤和容易發生錯誤的特殊情況,根據他們選擇測試用例。
1) 例如, 輸入資料和輸出資料為0的情況;輸入表格為空格或輸入表格只有一行。 這些都是容易發生錯誤的情況。可選擇這些情況下的例子作為測試用例。
2) 例如,前面例子中成績報告的程式,採用錯誤推測法還可補充設計一些測試用例:
- I. 程式是否把空格作為回答
- II. 在回答記錄中混有標準答案記錄
- III. 除了標題記錄外,還有一些的記錄最後一個字元即不是2也不是3
- IV. 有兩個學生的學號相同
- V. 試題數是負數。
3) 再如,測試一個對線性表(比如陣列)進行排序的程式,可推測列出以下幾項需要特別測試的情況:
- I. 輸入的線性表為空表;
- II. 表中只含有一個元素;
- III. 輸入表中所有元素已排好序;
- IV. 輸入表已按逆序排好;
- V. 輸入表中部分或全部元素相同。
二、測試介紹
(1)白盒測試:是一種測試用例設計方法,在這裡盒子指的是被測試的軟體,白盒,顧名思義即盒子是可視的,你可以清楚盒子內部的東西以及裡面是如何運作的,因此白盒測試需要你對系統內部的結構和工作原理有一個清楚的瞭解,並且基於這個知識來設計你的用例。
白盒測試技術一般可被分為靜態分析和動態分析兩類技術。
靜態分析主要有:控制流分析技術、資料流分析技術、資訊流分析技術。
動態分析主要有:邏輯覆蓋率測試(分支測試、路徑測試等),程式插裝等。
白盒測試優點:迫使測試人員去仔細的思考軟體的實現;可以檢測程式碼中的每條分支和路徑;揭示隱藏在程式碼中的錯誤;對程式碼的測試比較徹底;最優化。
白盒測試缺點:昂貴;無法檢測程式碼中遺漏的路徑和資料敏感性錯誤;不驗證規格的正確性。
(2) 黑盒測試又叫功能測試,這是因為在黑盒測試中主要關注被測軟體的功能實現,而不是內部邏輯。在黑盒測試中,被測物件的內部結構,運作情況對測試人員是不可見的,測試人員對被測產品的驗證主要是根據其規格,驗證其與規格的一致性。
在絕大多數沒有使用者參與的黑盒測試中,最常見的測試有:功能性測試、容量測試、安全性測試、負載測試、恢復性測試、標杆測試、穩定性測試、可靠性測試等。
(3)灰盒測試:白盒測試和黑盒測試往往不是決然分開的,一般在白盒測試中交叉使用黑盒測試的方法,在黑盒測試中交叉使用白盒測試的方法。灰盒測試就是這類界於白盒測試和黑盒測試之間的測試。
相關文章
- JavaScript單元測試及原理JavaScript
- Apifox介面測試教程(一)介面測試的原理與工具API
- 精準化測試原理簡介
- 光源光功率計(光損耗測試儀OLTS)的損耗測試原理
- 測試測試測試測試測試測試
- AutoRunner 功能自動化測試專案實訓之自動化測試原理(一)
- Jest 測試框架 beforeEach 的設計原理解析框架
- 深入解讀A/B 測試的統計學原理
- 08-01 Jmeter 核心原理與效能測試理論JMeter
- 『居善地』介面測試 — 11、介面簽名sign原理
- Angular單元測試框架裡API toHaveBeenCalledTimes的工作原理Angular框架API
- 光纖OTDR測試是端到端損耗原理
- 測試驅動開發(TDD)總結——原理篇
- 金字塔測試原理:寫好單元測試的8個小技巧,一文總結
- 布隆過濾器(BloomFilter)原理 實現和效能測試過濾器OOMFilter
- 鉗形電流表測試電流的原理介紹
- cglib、orika、spring等bean copy工具效能測試和原理分析CGLibSpringBean
- 固態硬碟掉電保護的原理及測試方法硬碟
- 測試—測試方法
- 測試測試用
- App測試、Web測試和介面測試一般測試流程APPWeb
- Flutter 學習之路 - 測試(單元測試,Widget 測試,整合測試)Flutter
- 測試面試-測試用例面試
- 介面測試測試流程
- 介面測試,負載測試,併發測試,壓力測試區別負載
- 測試CMS同步測試CMS同步測試CMS同步
- (一)效能測試(壓力測試、負載測試)負載
- Web滲透測試怎麼做:安全專家模擬黑客行為講述了滲透測試的原理Web黑客
- Jmeter介面測試+效能測試JMeter
- 介面測試 - 引數測試
- 【軟體測試】——介面測試
- 黑盒測試、白盒測試與灰盒測試方法
- 微服務測試之介面測試和契約測試微服務
- 測試 之Java單元測試、Android單元測試JavaAndroid
- Jest 測試框架 expect 和 匹配器 matcher 的設計原理解析框架
- iOS 覆蓋率檢測原理與增量程式碼測試覆蓋率工具實現iOS
- 功能測試、自動化測試、效能測試的區別
- API 測試 | 瞭解 API 介面測試 | API 介面測試指南API