黑盒測驗之等價類劃分測驗
實驗要求:
分析電話號碼的輸入情況,劃分等價類表(要求考慮無效輸入);根據(1)所劃分的等價類,給出具體的測驗用例,實施測驗,據此實驗生成測驗報告2,測驗報告中至少包含等價類串列,測驗用例及測驗結論,
自選語言撰寫程式:輸入電話號碼,對電話號碼的合法性進行檢查,輸出是否合法,不合法在螢屏上輸出錯誤原因,
電話號碼合法要求:
電話號碼由三部分構成
地區碼:空白或三位數字
前綴碼:非"0"或”1”開頭的三位數字
后綴碼:四位數字
符合以上要求的為合法電話號碼
確認等價類,列出等價類表:
|
輸入條件 |
有效等價類 |
編號 |
無效等價類 |
編號 |
|
電話號碼長度 |
7 |
1 |
小于7 |
10 |
|
10 |
2 |
大于7小于10 |
11 |
|
|
大于10 |
12 |
|||
|
電話號碼長度為7時首位字符型別 |
非0非1的數字 |
3 |
0 |
13 |
|
1 |
14 |
|||
|
非數字的字符 |
15 |
|||
|
電話號碼長度為7時前綴碼后兩位字符型別 |
數字 |
4 |
非數字的字符 |
16 |
|
電話號碼長度為7時后綴碼字符型別 |
數字 |
5 |
非數字的字符 |
17 |
|
電話號碼長度為10時第4位字符型別 |
非0非1的數字 |
6 |
0 |
18 |
|
1 |
19 |
|||
|
非數字的字符 |
20 |
|||
|
電話號碼長度為10時前綴碼后兩位字符型別 |
數字 |
7 |
非數字的字符 |
21 |
|
電話號碼長度為10時后綴碼字符型別 |
數字 |
8 |
非數字的字符 |
22 |
|
電話號碼長度為10時地區碼字符型別 |
數字 |
9 |
非數字的字符 |
23 |
測驗用例表:
|
測驗用例 |
輸入資料 |
預期結果 |
覆寫的等價類 |
||
|
地區碼 |
前綴碼 |
后綴碼 |
|||
|
1 |
空白 |
222 |
3333 |
輸入合法 |
1,3,4,5 |
|
2 |
111 |
222 |
3333 |
輸入合法 |
2,6,7,8,9 |
|
3 |
空白 |
22 |
3333 |
輸入不合法,電話號碼長度不合格 |
10 |
|
4 |
空白 |
222 |
333 |
輸入不合法,電話號碼長度不合格 |
11 |
|
5 |
111 |
2222 |
3333 |
輸入不合法,電話號碼長度不合格 |
12 |
|
6 |
空白 |
022 |
3333 |
輸入不合法,前綴碼有誤 |
13 |
|
7 |
空白 |
122 |
3333 |
輸入不合法,前綴碼有誤 |
14 |
|
8 |
空白 |
a12 |
3333 |
輸入不合法,前綴碼有誤 |
15 |
|
9 |
空白 |
2aa |
3333 |
輸入不合法,前綴碼有誤 |
16 |
|
10 |
空白 |
222 |
aaaa |
輸入不合法,后綴碼有誤 |
17 |
|
11 |
111 |
022 |
3333 |
輸入不合法,前綴碼有誤 |
18 |
|
12 |
111 |
122 |
3333 |
輸入不合法,前綴碼有誤 |
19 |
|
13 |
111 |
a12 |
3333 |
輸入不合法,前綴碼有誤 |
20 |
|
14 |
111 |
2aa |
3333 |
輸入不合法,前綴碼有誤 |
21 |
|
15 |
111 |
222 |
aaaa |
輸入不合法,后綴碼有誤 |
22 |
|
16 |
aaa |
222 |
3333 |
輸入不合法,地區碼有誤 |
23 |
部分用例執行后結果演示:
演示(測驗編號1):

演示(測驗編號2):

演示(測驗編號3):

演示(測驗編號4):

演示(測驗編號5):

演示(測驗編號6):

演示(測驗編號7):

演示(測驗編號8):

演示(測驗編號9):

演示(測驗編號10):

演示(測驗編號11):

演示(測驗編號12):

演示(測驗編號13):

演示(測驗編號14):

演示(測驗編號15):

演示(測驗編號16):

實驗代碼:
import java.util.Scanner; public class test2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("請輸入您的電話號碼:"); String phone = sc.next(); System.out.println("您輸入的電話號碼為:" + phone); boolean boom = judge(phone); if (boom == true) { System.out.println("您輸入的電話號碼是合法的"); } else { System.out.println("您輸入的電話號碼是非法的"); } } public static boolean isNumber(String str, int length) { for (int i = 0; i < length; i++) { if (!Character.isDigit(str.charAt(i))) { return false; } } return true; } public static boolean judge(String phone){ char fourchar =phone.charAt(3); char firstchar = phone.charAt(0); int length = phone.length(); if (isNumber(phone,phone.length())){ if (length == 10){ if (fourchar=='0' || fourchar=='1'){ System.out.println("提示:前綴碼應該是除了0和1開頭的三位數字!"); return false; } else{ return true; } } else if (length == 7){ if (firstchar=='0' || firstchar=='1'){ System.out.println("提示:前綴碼應該是除了0和1開頭的三位數字!"); return false; } else { return true; } } else { System.out.println("提示:電話號碼的長度應為 7或 10位!"); return false; } } else{ if (phone.length()==10){ if (isNumber(phone,3)==false){ System.out.println("提示:地區碼為非數字!"); } else if (isNumber(phone,6)==false){ System.out.println("提示:前綴碼為非數字!"); } else { System.out.println("提示:后綴碼為非數字!"); } } else { if (isNumber(phone,3)==false){ System.out.println("提示:前綴碼為非數字!"); } else{ System.out.println("提示:后綴碼為非數字!"); } } System.out.println("電話號碼不應當出現除了數字以外的字符!"); return false; } } }
測驗結論:
預期結果與程式執行結果一致,說明測驗成功,程式無例外,寫到測驗用例才發現程式的條件有冗余,導致測驗用例重復,
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/539960.html
標籤:其他
