1.設有一個檔案管理系統,要求使用者輸入以年月表示的日期。假設日期限定在1990年1月~2049年12月,并規定日期由6位數字字元組成,前4位表示年,後2位表示月。現用等價類劃分法設計測試用例,來測試程式的"日期檢查功能"。
1)劃分等價類并編号,下表等價類劃分的結果
輸入等價類 | 有效等價類 | 無效等價類 |
日期的類型及長度 | ①6位數字字元 | ②有非數字字元 ③少于6位數字字元 ④多于6位數字字元 |
年份範圍 | ⑤在1990~2049之間 | ⑥小于1990 ⑦大于2049 |
月份範圍 | ⑧在01~12之間 | ⑨等于00 ⑩大于12 |
2)設計測試用例,以便覆寫所有的有效等價類在表中列出了3個有效等價類,編号分别為①、⑤、⑧,設計的測試用例如下:
測試資料 期望結果 覆寫的有效等價類
200211 輸入有效 ①、⑤、⑧
3)為每一個無效等價類設計一個測試用例,設計結果如下:
測試資料 期望結果 覆寫的無效等價類
95June 無效輸入 ②
20036 無效輸入 ③
2001006 無效輸入 ④
198912 無效輸入 ⑥
200401 無效輸入 ⑦
200100 無效輸入 ⑨
200113 無效輸入 ⑩
2.NextDate函數包含三個變量:month、day和year,函數的輸出為輸入日期後一天的日期。例如,輸入為2006年3月7日,則函數的輸出為2006年3月8日。要求輸入變量month、day和year均為整數值,并且滿足下列條件:
①1≤month≤12
②1≤day≤31
③1920≤year≤2050
1)有效等價類為:
M1={月份:1≤月份≤12}
D1={日期:1≤日期≤31}
Y1={年:1812≤年≤2012}
2)若條件①~③中任何一個條件失效,則NextDate函數都會産生一個輸出,指明相應的變量超出取值範圍,比如"month的值不在1-12範圍當中"。顯然還存在着大量的year、month、day的無效組合,NextDate函數将這些組合作統一的輸出:"無效輸入日期"。其無效等價類為:
M2={月份:月份<1}
M3={月份:月份>12}
D2={日期:日期<1}
D3={日期:日期>31}
Y2={年:年<1812}
Y3={年:年>2012}
弱一般等價類測試用例
月份 日期 年 預期輸出
6 15 1912 1912年6月16日
強一般等價類測試用例同弱一般等價類測試用例
注:弱--有單缺陷假設;健壯--考慮了無效值
(一)弱健壯等價類測試
用例ID 月份 日期 年 預期輸出
WR1 6 15 1912 1912年6月16日
WR2 -1 15 1912 月份不在1~12中
WR3 13 15 1912 月份不在1~12中
WR4 6 -1 1912 日期不在1~31中
WR5 6 32 1912 日期不在1~31中
WR6 6 15 1811 年份不在1812~2012中
WR7 6 15 2013 年份不在1812~2012中
(二)強健壯等價類測試
用例ID 月份 日期 年 預期輸出
SR1 -1 15 1912 月份不在1~12中
SR2 6 -1 1912 日期不在1~31中
SR3 6 15 1811 年份不在1812~2012中
SR4 -1 -1 1912 兩個無效一個有效
SR5 6 -1 1811 兩個無效一個有效
SR6 -1 15 1811 兩個無效一個有效
SR7 -1 -1 1811 三個無效
3.“6到18個字元,可以使用字母、數字、下劃線,需已字母開頭”。那麼有效等價類就應該是
輸入條件 | 有效等價類 | 無效等價類 |
符合要求的郵件位址 | 6---18個字元 (1) | 小于6個字元 (6) |
大于18個字元 (7) | ||
字母 (2) | 不是字母、數字和下劃線 (8) | |
數字 (3) | ||
下劃線 (4) | ||
首位是字母 (5) | 首位不是字母 (9) |
那麼測試用例就出來了吧
序号 | 輸入 | 覆寫等價類 | 輸出 |
1 | Nick_mail01 | 1,2,3,4,5 | 正确 |
2 | nick | 2,5,6 | 錯誤 |
3 | qwertyuiopasdfghjklzxc | 2,5,7 | 錯誤 |
4 | Nick+mail? | 1,2,5,8 | 錯誤 |
5 | 5683_mail | 1,2,3,4,9 | 錯誤 |