測試用例--等價類划分、邊界值法
一、測試用例/案例(test case/test instance)
1、定義:是在測試執行之前,由測試人員編寫的指導測試過程的重要文檔,主要包括:用例編號、測試目的、測試步驟(用例描述),預期結果
2、介紹編寫測試用例的7種方法:
1)等價類划分法(*****)
2)邊界值法(*****)
3)因果圖法
4)判定表法
5)正交排列法
6)測試大綱法
7)場景法(*****)
至少要掌握每種方法的適用場合(用在哪)和使用步驟(怎么用)
編寫測試用例可以參考什么?
(1)需求文檔
(2)被測系統(已開發出來的被測系統)
一邊對照程序,一邊編寫用例。很多企業都是這樣測試,如果只對照需求文檔可能只能完成測試設計的30-40%。
(3)開發(設計)文檔(有可能拿不到,比如測試和開發不是同一家公司,就不一定提供設計文檔)
(4)與開發、產品、客戶等進行溝通
二、等價類划分法
1、應用場合
有數據輸入的地方,可以使用等價類划分法。
從大量數據中挑選少量代表數據進行測試
2、測試思想
窮舉測試:把所有可能的數據全部測試一遍叫窮舉測試。
窮舉測試是最全面的測試,但是在實際工作中不能采用,因為測試效率太低(數據量巨大,根本測不過來)
理想的測試思想:使用最少的測試數據,達到最好的測試質量(最高性價比)
因為畢竟沒有做窮舉測試,所以會有遺漏缺陷的風險,如果時間允許,盡可能的做補充測試(不用糾結,覺得有風險的有問題的補充測就好)
等價類划分法的測試思想:
從大量數據里划分范圍(每個范圍內的數據測試效果是等價的所以每個范圍是一個等價類),然后從每個范圍中挑選代表數據,這些代表數據能反應這個范圍內數據的測試結果。
基本概念
有效等價類:對程序來說,有意義的、合理的輸入數據集合—用來測試功能是否正確實現
無效等價類:對程序來說,無意義的、不合理的輸入數據集合—用來測試程序是否有強大的異常處理能力(健壯性)
三、等價類划分法的實現步驟:
案例
被測程序:加法器
被測對象:
第一個數文本框
第二個數文本框
適合初學者的測試思路:
先測第一個數,此時第二個數填寫正確數據配合
第一個數測試完成后,測第二個數,此時第一個數填寫正確數據配合
步驟1:分析需求,根據需求划分等價類(初步划分,后續再細化)
需求:要求-99—99之間的整數,不能為空(必填)
有效等價類:
-99—99之間的整數
無效等價類:
<-99的整數
>99的整數
非整數(需要細化)
為空(不填)
步驟2:細化等價類
細化等價類依據的不再是字面上的需求而是根據數據在內存或數據庫中存儲的類型。
1)有效等價類:
-99—99之間的整數
整數的存儲在計算機底層中會使用不同的算法:正整數和負整數算法不同,所以測試時正整數和負整數應該分開來測。(一般對有效等價類數據應用,無效等價類數據一般不需要正、負分別測)
所以將有效等價類細分為:
-99--(-1)負整數
0—99 正整數
2)無效等價類:非整數
非整數:小數、字符(漢字、字母、特殊字符)
最終細分成:小數、字母、漢字、特殊字符
將等價類划分結果填入《等價類表》
步驟3:編寫測試用例
從每個等價類范圍中挑選至少一個代表數據進行測試
測試用例最簡單的標准:讓其他測試人員按照你寫的測試步驟執行,如果能夠執行出來才可以。
測試用例是要評審的:互評互審,測試組開評審會、有用戶參加的評審會
案例中的問題:
1、在測試有效等價類時,當測試對象為多個控件時,會出現測試用例冗余(重復)的問題--優化用例可以解決
2、當測試無效等價類時,沒有考慮多個控件都為無效的情況--強化用例解決
四、邊界值法
說明:因為開發中數據范圍的邊界是最容易產生bug的地方,所以為了保證測試質量,就需要重點測試邊界,就有了邊界值這樣的測試方法
1、應用場合:有數據輸入的地方,一般可以使用邊界值法。邊界值法往往跟等價類划分法一起使用,從而形成一套較為完善的測試方案。
個別情況下,等價類和邊界值也不需要一起用。例如:性別—
有效等價類:男、女
無效等價類:男、女以外的其他字符
此時就不需要使用邊界值法
2、如何使用?
邊界值點:有效等價類和無效等價類之間的分界點。(最大值、最小值)
次邊界值點:邊界值左右兩邊相鄰的點是次邊界值點。(4個次邊界)
有效最小次邊界
無效最小次邊界
有效最大次邊界
無效最大次邊界
常見問題
邊界值法應用時,如果測試時間緊張,應該優先測試哪些點?
優先測試最大值和最小值
需求文檔中是否邊界值都是需求明確的?
有時候需求文檔中並沒有對所有邊界都能明確說明,可能會在后期逐步明確
針對邊界值法的解釋說明:
邊界值數據本質上是屬於某個等價類的范圍,測試時確實是一種冗余(重復),但是為了更好的測試質量(邊界值特別容易出bug),邊界值必須要單獨測,適當必要的冗余是可以接受的。(邊界值法是等價類划分法的重要補充,配合使用測試質量才能得到保證)
練習:
年齡: 18-60歲之間的整數 ,分析邊界值
工資:1000.00—30000.00,小數點后最多兩位,分析邊界值
小數的邊界值法測試時要考慮兩個部分:1)小數的數據范圍的邊界值要分析2)小數的位數的邊界值也要分析
例如當前案例:除了1000-30000 的邊界值要分析外,小數位數最多兩位:那么:
小數點后2位(最大值)
小數點后1位(有效最大次邊界值)
小數點后3位(無效最大次邊界值)
五、等價類划分法+邊界值法的綜合使用
案例:信息注冊
步驟1:分析需求,分別將姓名和年齡控件的等價類和邊界值進行分析,填入《數據分析表》
步驟2:根據數據分析結果,形成測試方案,編寫測試用例。
1、有效數據(有效等價類+有效邊界值)
問題產生:如果單個控件的有效數據單獨測試,會產生用例冗余(重復)的問題
如何解決—優化用例
就是一條用例中盡可能多的將多個控件的1個有效數據組合起來測試(簡單來說:就是多個控件的有效數據組合起來測)
效果:用例數減少,測試質量不變,測試效率提高
2、無效數據(無效等價類+無效邊界)
首先:要每個控件的無效數據單獨測試(1條用例只測1個控件的1個無效數據),不能開始就無效數據組合,為了避免“屏蔽現象”
“屏蔽現象”—前面控件的錯誤提示出現后,后面控件的錯誤提示就不彈出了
最后:適當的做強化測試
1)多個控件的無效數據組合測試(就是多個控件都是錯誤數據的情況,例如:姓名,年齡都為空)
2)1個控件將多個無效數據組合起來測試(例如:年齡既超范圍又是小數又有漢字又有符號 ,95.5(歲))
無效數據的組合強化測試,適當去做即可(可以根據時間調整),不需要所有無效數據組合都測。常常測試:1)經常使用的組合(例如:都為空)2)在使用中容易出錯的組合(例如:54.5歲)
小數類型,等價類+邊界值測試時的注意事項:
有效等價類:除了有效的小數外,有效的整數也需要測(小數中默認包含了整數,除非需求中明確的說:小數中不包含整數)
無效等價類:
A)小數類型—非小數(非數):字母、漢字、特殊字符
B)小數位數—超出小數的有效位數(例如:最多兩位,那么>2位就是無效等價類)
3)邊界值
A)小數的次邊界與邊界之間的相差單位是與精確度相關的,例如:精確到小數點后2位,那么相差單位就是0.01
例如:最小值是:1.00那么次邊界就是 0.99 和1.01
B)要考慮小數位數的邊界問題。例如:小數位數最大值:小數點后2位
那么次邊界是:小數點后1位和小數點后3位
案例:
填寫身份證號
需求:18位的身份證號(字符串 string),前17位就是數字,最后1位數字和X(看需求),必填
有效:
18位的身份證,每位都是數字(0-9)
18位的身份證,前17位都是數字(0-9),最后一位X(x是否有效看需求)
無效:
>18位
<18位
最后1位是特殊字符\漢字\X以外的其他字母
前17位是特殊字符\漢字\字母
為空
規則:
前6位 數字地址碼
正確: 100001--899999
錯誤:不在范圍里的
中8位:出生日期
年份:1900-當前年份
月份:01-12
日:01-31
大月:正確31天
小月:30天
二月:平年 28天 閏年:29天
后3位:順序碼000—999
最后1位:0-9或者X
六、總結
有效等價類:比較容易找,一般在需求中可以直接找到。數量較少。所以有效等價類測試也稱為正向測試或者通過測試
無效等價類:一般數量較多,也被稱為“反向測試”或“失敗測試”
無效等價類的考慮因素:
說明:
不能為空:為空
不能重復:重復
不能包含**:包含**
類型
整數:非整數(小數,字母,漢字,特殊字符)
小數:非小數(非數:字母,漢字,特殊字符)
字符:如果沒有特殊說明不需要細分。字符包含(字母,數字0-9,特殊字符,漢字)
范圍
--超出范圍的情況
數字范圍:比最小值小,比最大值大
字符串長度:不在正確的長度范圍的就是無效的
測試用例
測試用例的用途:
(1)版本的重復測試會很方便,可以快速正確的進行
(2)防止遺漏
(3)提高測試效率
(4)監督測試過程
(5)評估結果
(6)縮短測試周期:
版本更新或者升級時,只需修改少部分的測試用例,可以資源復用
編寫用例的注意事項:
(1)在編寫用例之前應該先確認好用例編號的命名規則,文檔、附件的命名規則以及存儲,提交的位置。
(2)測試用例編寫完成是有評審過程的。
互評互審、測試組評審、甲方的參加的評審會
(3)基本要求:
1條用例先寫好(標准:別人按照你寫的測試步驟能夠順利執行)
高標准的要求:
能夠分析,形成完善的測試思路(方案),實現更好的測試覆蓋率和更少的缺陷遺漏