測試用例的設(shè)計(jì)是測試實(shí)現(xiàn)階段的核心工作,也是指導(dǎo)如何執(zhí)行測試的基礎(chǔ)。
測試用例(Test Case)是為某個(gè)特殊目標(biāo)而編制的一組測試輸入、執(zhí)行條件以及預(yù)期結(jié)果,以便測試某個(gè)程序路徑或核實(shí)是否滿足某個(gè)特定需求。(百度百科解釋)
本文以黑盒測試為例,講述下常見的用例設(shè)計(jì)方法
等價(jià)類劃分、邊界值分析、正交試驗(yàn)設(shè)計(jì)法、錯(cuò)誤推測法、異常分析法、場景分析法
一、等價(jià)類劃分
等價(jià)類劃分是一種典型的黑盒測試方法,使用這一方法時(shí),完全不考慮程序的內(nèi)部結(jié)構(gòu),只依據(jù)程序的規(guī)格說明來設(shè)計(jì)測試用例。
它把所有可能的輸入數(shù)據(jù),即程序的輸入域劃分成若干部分,然后從每一部分中選取少數(shù)有代表性的數(shù)據(jù)做為測試用例,這樣可以避免窮舉產(chǎn)生的大量用例。
在使用等價(jià)類劃分方法設(shè)計(jì)測試用例時(shí),不但要考慮有效等價(jià)類劃分,同時(shí)也要考慮無效等價(jià)類劃分:
- 有效等價(jià)類
指滿足產(chǎn)品規(guī)格說明的輸入數(shù)據(jù),即有效的、有意義的輸入數(shù)據(jù)所構(gòu)成的集合,可以檢驗(yàn)程序是否滿足規(guī)格說明所規(guī)定的功能和性能。 - 無效等價(jià)類
不滿足程序輸入要求或者無效的輸入數(shù)據(jù)所構(gòu)成的集合,可以測試程序的容錯(cuò)性(對(duì)異常情況的處理)
1.1 劃分等價(jià)類的規(guī)則
1、在輸入條件規(guī)定了取值范圍或值的個(gè)數(shù)的情況下,則可以確立一個(gè)有效等價(jià)類和兩個(gè)無效等價(jià)類。
如:輸入值是學(xué)生成績,范圍是0~100
有效等價(jià)類:0<=成績<=100
無效等價(jià)類: 成績<0 和 成績>100
2、在輸入條件規(guī)定了輸入值的集合或者規(guī)定了”必須如何”的條件情況下,可確立一個(gè)有效等價(jià)類和多個(gè)無效等價(jià)類
如網(wǎng)站登錄密碼必須由6位數(shù)字構(gòu)成
有效等價(jià)類:6位數(shù)字
無效等價(jià)類:位數(shù)>6,位數(shù)<6,全角數(shù)字,字母、特殊字符等......
3、在輸入條件是一個(gè)布爾量的情況下,可確定一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類
有效等價(jià)類:真(true)
無效等價(jià)類:假(false)
4、在規(guī)定了輸入數(shù)據(jù)的一組值(假定n個(gè)),并且程序要對(duì)每一個(gè)輸入值分別處理的情況下,可確立n個(gè)有效等價(jià)類和1個(gè)無效等價(jià)類。
1)輸入條件說明 學(xué)歷可為:???、本科、碩士、博士
有效等價(jià)類:???、本科、碩士、博士
無效等價(jià)類:四種學(xué)歷之外的任何學(xué)歷
2)輸入條件為我國的直轄市
有效等價(jià)類:北京、上海、天津、重慶
無效等價(jià)類:非直轄市的省、自治區(qū)等
5、在規(guī)定了輸入數(shù)據(jù)的個(gè)數(shù),可以劃分一個(gè)有效等價(jià)類和兩個(gè)無效等價(jià)類。
如一個(gè)學(xué)生一個(gè)學(xué)期只能選修1-3門課
有效等價(jià)類:選修1-3門課
無效等價(jià)類:1門課都不選,選課超過3門
6、在確知已劃分的等價(jià)類中,各元素在程序處理中的方式不同的情況下,則應(yīng)再將該等價(jià)類進(jìn)一步的劃分為更小的等價(jià)類。
如:姓名文本框 允許輸入10個(gè)vachar
應(yīng)分別測試輸入10個(gè)英文字符(分大小寫)、10個(gè)中文字符、10個(gè)全數(shù)字字符、10個(gè)混合字符等。
1.2 等價(jià)類劃分方法的使用步驟
1)數(shù)據(jù)分類,分出有效等價(jià)類和無效等價(jià)類
2)針對(duì)有效等價(jià)類,進(jìn)一步進(jìn)行分割,直到不能劃分為止,形成等價(jià)類表,為每一等價(jià)類規(guī)定一個(gè)唯一的編號(hào)
3)就每一個(gè)具體的等價(jià)類,設(shè)計(jì)一個(gè)test case,直到所有有效等價(jià)類均被test case覆蓋
4)對(duì)無效等價(jià)類進(jìn)行相同的處理
1.3 等價(jià)類劃分的測試運(yùn)用
1、檔案管理系統(tǒng)
設(shè)有一個(gè)檔案管理系統(tǒng),要求用戶輸入以年月表示的日期。假設(shè)日期限定在1990年1月~2049年12月,并規(guī)定日期由6位數(shù)字字符組成,前4位表示年,后2位表示月。
現(xiàn)用等價(jià)類劃分法設(shè)計(jì)測試用例,來測試程序的"日期檢查功能"。
| 輸入判斷 | 有效等價(jià)類 | 無效等價(jià)類 |
|---|---|---|
| 輸入字符長度 | 6位 | 大于6位數(shù)字字符、小于6位數(shù)字字符 |
| 輸入字符類型 | 數(shù)字 | 6位非純數(shù)字類型 |
| 輸入年份約束 | 1990-2049 | 小于1990、大于2049 |
| 輸入月份約束 | 01-12 | 大于12、等于00 |
2、系統(tǒng)注冊(cè)功能
假設(shè)有一個(gè)系統(tǒng),注冊(cè)時(shí)用戶名要求由字母開頭,后跟字母或數(shù)字的任意組合構(gòu)成,有效字符不超過6個(gè)。
- 有效等價(jià)類:一對(duì)多原則

- 無效等價(jià)類(根據(jù)測試時(shí)間、使用對(duì)象來定,同時(shí)也要考慮成本):一對(duì)一原則
1)由數(shù)字開頭構(gòu)成的字符串集合,如2345
2)字母開頭構(gòu)成的字符串,含特殊字符,如re!@#
3)字母開頭構(gòu)成的字符串,且長度>6,如carinazyp、carina123
4)空字符串
5).......
二、邊界值分析法
邊界值分析法就是對(duì)輸入或輸出的的邊界值進(jìn)行測試的一種黑盒測試方法。邊界的條件通常落在等價(jià)類的邊界上、邊界外、邊界內(nèi),邊界值分析法是對(duì)等價(jià)類劃分的一個(gè)補(bǔ)充,在測試中,會(huì)將這兩種方法結(jié)合起來共同使用。
在大量的測試工作經(jīng)驗(yàn)中總結(jié)出,大量的錯(cuò)誤是發(fā)生在輸入或輸出范圍的邊界上,而不是在輸入范圍內(nèi)部。因此針對(duì)各種邊界情況設(shè)計(jì)測試用例,可以查出更多的錯(cuò)誤。
2.1 與等價(jià)類劃分的區(qū)別
邊界值分析不是從某等價(jià)類中隨便挑一個(gè)作為代表,而是使這個(gè)等價(jià)類的每個(gè)邊界值都要作為測試條件。
邊界值分析不僅考慮輸入條件,還要考慮輸出空間產(chǎn)生的測試情況。
如一個(gè)文本框類型是Vachar(X),當(dāng)輸入邊界值長度超過X時(shí),提交后列表頁面顯示被撐破了
圖中每個(gè)文本框長度是固定的,當(dāng)某些圖片的名稱命名過長時(shí),圖片名稱已和其余圖片名稱重疊顯示了,同時(shí)也影響到了第二行圖片的顯示(不是從第一列開始顯示了)。

2.2 一些特殊的例子
1)輸入域的默認(rèn)值、空值、空格
2)報(bào)表的第一行、最后一行、第一列、最后一列
3)循環(huán)的開始(第一次)和最后一次
4)屏幕上光標(biāo)移到最右邊、最下面等
5)16-bit 整數(shù)的32767、-32768
2.3 邊界值分析法的測試運(yùn)用
案例一:
某程序的規(guī)格說明中規(guī)定:“重量在10公斤至50公斤范圍內(nèi)的郵件,其郵費(fèi)計(jì)算公式為……”。
測試用例:可取10、50,10.01,49.99,9.99及50.01等;
案例二:
某程序的規(guī)格說明要求計(jì)算出“每月保險(xiǎn)金扣除額為0至1165.25元”
測試用例:可取0.00及1165.24、還要取 -0.01及1165.26等
案例三:
某程序?qū)儆谇閳?bào)檢索系統(tǒng),要求每次“最少顯示1條、最多顯示4條情報(bào)摘要”
測試用例:包括1和4,還應(yīng)包括0和5等
邊界值分析是測試設(shè)計(jì)一個(gè)穩(wěn)定的部分,但是對(duì)黑盒測試人員來講有時(shí)候邊界并不是那么明顯。這些不明顯的邊界被稱作隱藏的邊界。具體請(qǐng)查看隱藏的邊界的例子
三、正交試驗(yàn)設(shè)計(jì)方法
在實(shí)際的系統(tǒng)測試過程中,輸入條件的因素有很多,而且每個(gè)因素也不能簡單用“是”和“否”表示,如下是我司訂單管理系統(tǒng)的搜索頁面,條件有很多個(gè),如果組合測試case會(huì)變得很多,導(dǎo)致很大的工作量。

正交試驗(yàn)設(shè)計(jì)(Orthogonal experimental design)是研究多因素多水平的一種設(shè)計(jì)方法,它是根據(jù)正交性從全面試驗(yàn)中挑選出部分有代表性的點(diǎn)進(jìn)行試驗(yàn),這些有代表性的點(diǎn)具備了“均勻分散,齊整可比”的特點(diǎn),是一種高效率、快速、經(jīng)濟(jì)的實(shí)驗(yàn)設(shè)計(jì)方法。利用正交試驗(yàn)設(shè)計(jì)方法進(jìn)行測試用例編寫,可有效減少測試用例個(gè)數(shù),合理的減少測試的工時(shí)與費(fèi)用。
3.1 常用術(shù)語
1)因子:在一項(xiàng)測試中,凡欲考察的變量稱為因子,即影響測試結(jié)果的條件因素
2)水平:在測試范圍內(nèi),因子被考察的值,即各個(gè)因子的取值
3.2 正交表的表示形式
正交表是一種特制的表格,具有兩條性質(zhì):
(1)每一列中各數(shù)字出現(xiàn)的次數(shù)都一樣多。
(2)任何兩列所構(gòu)成的各有序數(shù)對(duì)出現(xiàn)的次數(shù)都一樣多
- 等水平的正交表,一般用 Ln(mk)表示
L代表是正交表
n代表測試用例數(shù)或正交表的行數(shù),n=k*(m-1)+1
k代表最多可安排影響指標(biāo)因素的個(gè)數(shù)或正交表的列數(shù)
m表示每個(gè)因子水平數(shù)

-非等水平的正交表(各列的取值不相等),一般用 Ln(mkpq)表示
如 L8(4X24),可以理解為 L8(4124),表示 5列中,有1列為4水平,4列為2水平。
行數(shù) n=k*(m-1)+q*(p-1)+1
3.3 正交試驗(yàn)設(shè)計(jì)方法的步驟
1)確定因子數(shù)(變量列數(shù))
2)確定每個(gè)因子各有哪幾個(gè)水平(變量的取值)
3)選擇合適的正交表
4)把變量的值映射到表中
5)把每一行各因子的水平組合做為一個(gè)測試用例
6)刪除無效的組合
7)考慮特殊情況,補(bǔ)充上表上沒有的,但有價(jià)值的其它測試用例
(實(shí)際情況中可能使用頻率比較高)
3.4 正交表的選定
例如要考察 5個(gè)3水平因子及1個(gè)2水平因子,則起碼的試驗(yàn)次數(shù)為5×(3-1)+1×(2-1)+1=12(次)
這就是說,要在行數(shù)不小于12,既有2水平列又有3水平列的正交表中選擇,發(fā)現(xiàn)L18(21×37)適合。
綜上所述,選擇正交表時(shí)考慮以下幾點(diǎn):
1)考慮因子(變量)的個(gè)數(shù)
2)考慮因子水平(變量取值)的個(gè)數(shù)
3)考慮正交表的行數(shù)
4)當(dāng)有2個(gè)或以上正交表可以被選擇時(shí),需選擇行數(shù)最小的正交表。
備注:將值賦值到表中需要滿足以下2個(gè)條件
1)任一列,各水平都出現(xiàn),且出現(xiàn)的次數(shù)相等
2)任兩列之間各種水平的所有可能組合都出現(xiàn),且對(duì)出現(xiàn)的次數(shù)相等
3.5 正交試驗(yàn)設(shè)計(jì)方法的測試運(yùn)用
案例一(因子水平值相同)
某所大學(xué)通信系共2個(gè)班級(jí),剛考完某一門課程,想通過“性別”、“班級(jí)”和“成績”這三個(gè)查詢條件對(duì)通信系這門課程的成績分布,男女比例或班級(jí)比例進(jìn)行人員查詢:
根據(jù) “性別”=“男,女” 進(jìn)行查詢
根據(jù) “班級(jí)”=“1班,2班” 進(jìn)行查詢
根據(jù) “成績”=“及格,不及格” 進(jìn)行查詢
按照傳統(tǒng)設(shè)計(jì)——全部測試,分析上述測試需求,有3個(gè)被測元素,被測元素我們稱為因子,每個(gè)因子有兩個(gè)取值,我們稱之為水平值,所以全部測試用例個(gè)數(shù)是2X2X2=8,參見下表
| 序號(hào) | 性別 | 班級(jí) | 成績 |
|---|---|---|---|
| 1 | 男 | 1班 | 及格 |
| 2 | 男 | 1班 | 不及格 |
| 3 | 男 | 2班 | 及格 |
| 4 | 男 | 2班 | 不及格 |
| 5 | 女 | 1班 | 及格 |
| 6 | 女 | 1班 | 不及格 |
| 7 | 女 | 2班 | 及格 |
| 8 | 女 | 2班 | 不及格 |
利用正交表設(shè)計(jì)測試用例,我們得到的測試用例個(gè)數(shù)是n=3*(2-1)+1=4,對(duì)于三因素兩水平的剛好有L4(23)的正交表可以套用,如下:

案例二
因子的水平值一樣,但沒有完全一樣的正交表時(shí),該如何選擇?
生產(chǎn)化工產(chǎn)品,需要提高收率(產(chǎn)品的實(shí)際產(chǎn)量與理論上投入的最大產(chǎn)量之比),認(rèn)為反應(yīng)溫度的高低、加堿量的多少、催化劑種類等多種因素,都是造成收率不穩(wěn)的主要原因。根據(jù)以往經(jīng)驗(yàn),選擇溫度的三個(gè)水平:80℃、85℃、90℃;加堿量的三個(gè)水平:35、48、55(kg);催化劑的三個(gè)水平:甲、乙、丙三種。
根據(jù)分析,水平和因子都為3,沒有對(duì)應(yīng)的正交表
選取正交表時(shí)需滿足以下3個(gè)條件:
1)表中的因子數(shù)>=3
2)表中至少有3個(gè)因子的水平數(shù)>=3
3)行數(shù)取最少的一個(gè)
此時(shí)我們選擇最近的 L9(34),把最后一列去掉
行數(shù) =4*(3-1)+1=9,即為9個(gè)case
如果做全面測試,則需3×3×3=27次
從這點(diǎn)可以說明用正交試驗(yàn)法能有效地、合理地減少測試用例和工時(shí),節(jié)約測試成本。

案例三
因子的水平值不相等
如下截取了我目前正在測的項(xiàng)目中某個(gè)頁面的搜索情況
忽略不重要的因子“時(shí)間類型”,剩下7個(gè)因子,其中6個(gè)因子為2水平(填與不填),狀態(tài)為4水平,按照規(guī)則選取正交表時(shí)需要滿足3個(gè)條件,發(fā)現(xiàn) L16(4X212) 和 L16(42X29) 均適用,因行數(shù)也都是16行,所以選擇列數(shù)少的。

表格中1代表填,0代表不填

溫馨提示:實(shí)際測試過程中可以借助allpairs工具來自動(dòng)生成正交表
工具下載:http://www.satisfice.com/tools/pairs.zip
步驟如下:
1)將因子和水平寫入Excel文件中
2)將文件另存為“制表符分隔”的文本文件
3)將文件移到工具所在的目錄下(若第二步直接到工具目錄下第三步可忽略)
4)運(yùn)行cmd程序,進(jìn)入工具所在目錄
輸入命令:allpairs.exe 文件名.txt > 輸出文件名.txt

四、錯(cuò)誤推測法
錯(cuò)誤推測法是根據(jù)以往的測試經(jīng)驗(yàn)和對(duì)系統(tǒng)內(nèi)部知識(shí)的了解,列出系統(tǒng)中各種可能存在的錯(cuò)誤和容易發(fā)生錯(cuò)誤的特殊情況,并設(shè)計(jì)出test case,但是該方法只能作為測試設(shè)計(jì)的補(bǔ)充,而不能單獨(dú)用來設(shè)計(jì)測試用例,不然可能會(huì)導(dǎo)致測試覆蓋面不全。
另外,錯(cuò)誤推測并不是瞎猜,不是沒有根據(jù)和目的的猜測,它需要了解系統(tǒng)薄弱的地方和開發(fā)人員的盲點(diǎn),也可以根據(jù)以往的缺陷分析報(bào)告來分析系統(tǒng)最容易出現(xiàn)錯(cuò)誤的地方,作為推測的依據(jù)。
案例一:聊天窗口功能
1)輸入特殊字符(全角、半角)后,窗口是否能夠正常顯示
2)輸入空格,是否能夠過濾,是否會(huì)計(jì)算長度
3)輸入html字符
4)輸入腳本語言函數(shù)
5)在需要密碼驗(yàn)證,或者需要二次輸入確認(rèn)的地方,通過復(fù)制粘貼第一次的輸入內(nèi)容是否能夠通過
案例二:查詢功能
1)無條件查詢
2)是否支持模糊查詢
3)查詢的關(guān)鍵字之間是否可用連接字符
4)輸入正確的查詢條件前加上空格,看是否能正確查出相應(yīng)的數(shù)據(jù)
案例三:登錄功能
1)輸入的數(shù)據(jù)前存在空格,是否能夠正常登錄
2)輸入的密碼是否能夠加密顯示
3)用戶在注銷之后是否再登錄成功
4)登錄失敗后,不能記錄密碼的功能
5)輸入密碼的時(shí)候,大寫鍵盤開啟的時(shí)候系統(tǒng)是否有提示信息
...等等
五、異常分析法
異常分析法是針對(duì)系統(tǒng)有可能存在的異常操作、軟硬件缺陷引起的故障進(jìn)行分析,以此設(shè)計(jì)test case,驗(yàn)證系統(tǒng)的容錯(cuò)能力,以及當(dāng)系統(tǒng)出現(xiàn)異常時(shí)故障恢復(fù)的能力。
測試人員可以人為的制造一些異常情況(如安裝程序時(shí)斷電、服務(wù)器斷網(wǎng)、數(shù)據(jù)損壞等),來驗(yàn)證系統(tǒng)的處理情況。
六、場景分析法
現(xiàn)在的軟件幾乎都是用事件觸發(fā)來控制流程的,事件觸發(fā)時(shí)的情景便形成了場景,而同一事件不同的觸發(fā)順序和處理結(jié)果就形成事件流。這種在軟件設(shè)計(jì)方面的思想也可引入到軟件測試中,可以比較生動(dòng)地描繪出事件觸發(fā)時(shí)的情景,有利于測試設(shè)計(jì)者設(shè)計(jì)測試用例,同時(shí)使測試用例更容易理解和執(zhí)行(由此會(huì)產(chǎn)生很多組場景)。
需要注意的是場景設(shè)計(jì)方法不是單獨(dú)存在的,具體到每個(gè)測試項(xiàng)目里都會(huì)用到多種方法,每種類型的軟件有各自的特點(diǎn),每種測試用例設(shè)計(jì)的方法也有各自的特點(diǎn),針對(duì)不同軟件如何利用這些黑盒方法是非常重要的,在實(shí)際測試中,往往是綜合使用各種方法才能有效提高測試效率和測試覆蓋度,這就需要認(rèn)真掌握這些方法的原理,積累更多的測試經(jīng)驗(yàn),以有效提高測試水平。
設(shè)計(jì)方法步驟
1)畫業(yè)務(wù)流程圖
2)設(shè)置功能路徑優(yōu)先級(jí)(根據(jù)2個(gè)原則:使用的頻率、重要程度)
3)確定測試路徑
4)選取測試數(shù)據(jù)
5)構(gòu)造測試用例
如網(wǎng)站測試按照?qǐng)鼍傲鞒炭紤]可分為:
基本流、分支流、異常流、驗(yàn)證流等劃分方式
