軟體測試作業--電話號碼
。
本文章全手工,業務自我感覺還行,還缺少許多我不知道的業務,但大體的手機號碼和座機的大致路線都有,到手機地點的有一個例子,百度了許多文章才總結出來的。程式碼沒用什麼高階知識,勿噴
,就是用了4個多小時完成的,從找資料到編寫基礎java程式碼,然後一一進行測試,分享出來,希望對大家有用。
一、作業要求
- 首先輸入1-15位。
- 要求判斷出電話號碼的型別。
- 對於座機,要求輸出座機號碼地點。
- 對於手機,要求輸出手機號碼的種類。
- 輸出增加手機的地點。(加分)
- 判斷國外的電話號碼。(加分)
二、需求分析
根據作業的要求,可以大致解析出下面5點需求,先去網上找資料,將需求逐一完善,對於軟體測試就是需要考慮盡肯能多的測試用例。
1、電話號碼型別
電話號碼可分為手機號碼和座機號碼。
-
對國內的座機分析,暫時以0或8開頭的號碼為座機號碼,假定除去座機號碼,其它皆為手機號碼,在從手機號中細分即可。
-
這裡分析不是很全面,展開來分析,是一個很大很大的工程量,這裡根據作業需求推動來進行。
2、座機號碼地點
座機格式:區號+電話號碼
中國大陸國際區號是86;香港特別行政區區號852;澳門特別行政區區號853;臺灣省區號886。
這裡我以江西省為例,其它的可以參考下 中國城市電話區號對照表。
新餘市 0790 南昌市 0791 九江市 0792 上饒市 0793 臨川市 0794
宜春市 0795 吉安市 0796 贛州市 0797 景德鎮 0798 萍鄉市 0799
鷹潭市 0701
->中國城市電話區號對照表
<-
3、手機號碼的種類
常用運營商
中國移動號段:134(0-8)、135、136、137、138、139、147、150、151、152、157、158、159、172、178、182、183、184、187、188、195、197、198
中國聯通號段:130、131、132、145、155、156、166、175、176、185、186、196
中國電訊號段:133、149、153 、180 、181 、189、173、177、190、191、193、199
中國廣電號段:192
虛擬運營商號段
聯通:167、170(4,7,8,9)、171
電信:162、170(0,1,2)
移動:165、170(3,5,6)
物聯網號段
聯通:1400、146
電信:1410
移動:1440、148
衛星電話號段
電信:1349、174(00-05)
工信部應急通訊:174(06-12)
海事衛星通訊:1749
其它號段
電信服務服務號碼:10
國際對方付費電話:108
電信服務中心:10000
聯通服務中心:100001
特種開頭:11(如:110-報警、114-查號、119-火警)
民用特殊號碼:12(如:120-急救電話、121-天氣預報、122-交通事故告警)
4、手機地點
由於每一個地區都有自己的運營商,運營商下有獨特號段,舉一個地區都是很大的工程量。
這裡以江西省宜春市的中國移動182號段的一部分為例,其它的可以參考下 方的手機號段網。
1829640 1829641 1829650 1829651 1829652 1829653 1829654 1829655 1829656 1829657 1829658 1829659 1829694 1829695
->江西宜春手機號段
江西宜春手機號段大全 - 手機號段網 (uutool.cn)
<-
5、國外號碼
中國常用號碼 ---> 11位
美國、德國印度、瑞士、荷蘭、比利時、法國、澳大利亞等 ---> 10位
紐西蘭、泰國等 ---> 9位
新加坡 ---> 8位
加拿大 ---> 7位
6、測試用例
- 對格式驗證,輸入的是數字。
- 對號碼字數驗證,輸入的是1-15位。
- 對其它各種位數的號碼一一測試。
- 對正確的號碼驗證,臨界值等。
三、程式碼編寫
將上述需求依次用java程式碼在主類進行編寫,測試,因為只是作業,不是業務,就有點對使用者不友好性,沒輸到對應的格式就只好重新執行了,大體的手機號碼和座機的大致路線都有,百度了許多文章才總結出來的。
package softwaretest;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.regex.Pattern;
public class phoneTest {
public static void main(String[] args) {
/*
* 1. 首先輸入1-15位
* */
Scanner sc = new Scanner(System.in);
System.out.println(" 判斷電話號碼 ");
System.out.print("請重新輸入"+"1-15"+"位電話號碼:");
String str = sc.nextLine();
for (int i = 0; i < str.length(); i++) {
if(str.charAt(i) < '0' || str.charAt(i) > '9'){
System.out.print("格式錯誤,輸入的不是數字");
return;
}else {
continue;
}
}
while (true){
if(str.length() <= 1 || str.length() >= 15){//暗含判斷是否為空
System.out.print("輸入的位數不符合,請重新輸入"+"1-15"+"位電話號碼:");
str = sc.nextLine();
} else {
break;
}
}
/*
* 2.要求判斷出電話號碼的型別。
* 電話號碼可分為手機號碼和座機號碼
* */
//座機號碼--以0或8開頭--僅僅分析國內
if(str.charAt(0) == '0'){ // 0開頭是國內省份
String s = str.substring(0,4);
/*
* 3.對於座機,要求輸出座機號碼地點。
* */
switch (s){
case "0790":
System.out.println("江西省新餘市");
return;
case "0791":
System.out.println("江西省南昌市 ");
return;
case "0792":
System.out.println("江西省九江市 ");
return;
case "0793":
System.out.println("江西省上饒市 ");
return;
case "0794":
System.out.println("江西省臨川市 ");
return;
case "0795":
System.out.println("江西省宜春市");
return;
case "0796":
System.out.println("江西省吉安市");
return;
case "0797":
System.out.println("江西省贛州市");
return;
case "0798":
System.out.println("江西省景德鎮");
return;
case "0799":
System.out.println("江西省萍鄉市 ");
return;
case "0701":
System.out.println("江西省鷹潭市");
return;
default:
System.out.println("其它省份還在開發中……");
return;
}
} else if (str.charAt(0) == '8') { // 8開頭的是國際區號或行政區或臺灣省
if (str.charAt(1) == '6') {
System.out.println("中國國際區號");
return;
}
String s = str.substring(0, 3);
switch (s) {
case "852":
System.out.println("香港特別行政區");
return;
case "853":
System.out.println("澳門特別行政區");
return;
case "886":
System.out.println("臺灣省");
return;
default:
System.out.println("沒有該省份的號碼");
return;
}
}
/*
* 4. 對於手機,要求輸出手機號碼的種類。
* 標準的手機號
* */
if(str.length() == 11) {
//手機號碼--以1開頭
if (str.charAt(0) == '1') {
String s = str.substring(0, 3);
// 中國移動特殊第4位數
if ("134".equals(s)) {
for (int i = 0; i < 9; i++) {
if (str.charAt(3) == i + '0') {
System.out.println("中國移動");
return;
}
}
}
// 移動運營商
String a[] = {"135", "136", "137", "138", "139", "147", "150", "151", "152", "157", "158", "159", "172", "178", "182", "183", "184", "187", "188", "195", "197", "198"};
// 江西省宜春市的中國移動182號段
String b[] = {"9640", "9641", "9650", "9651", "9652", "9653", "9654", "9655", "9656", "9657", "9658", "9659", "9694", "9695"};
String s1 = str.substring(3, 7);
for (int i = 0; i < a.length; i++) {
if (a[i].equals(s)) {
if (s.equals("182")) {
/*
* 5.手機地點僅僅以江西省宜春市的中國移動182號段為例
* */
for (int j = 0; j < b.length; j++) {
if (b[j].equals(s1)) {
System.out.println("中國移動 江西省宜春市");
return;
}
if(j == b.length - 1){
System.out.println("中國移動");
return;
}
}
} else {
System.out.println("中國移動");
return;
}
}
}
// 中國聯通
String c[] = {"130", "131", "132", "145", "155", "156", "166", "175", "176", "185", "186", "196"};
for (int i = 0; i < c.length; i++) {
if(c[i].equals(s)){
System.out.println("中國聯通");
return;
}
}
// 中國電信
String d[] = {"133","149","153 ","180 ","181 ","189","173","177","190","191","193","199"};
for (int i = 0; i < d.length; i++) {
if(d[i].equals(s)){
System.out.println("中國電信");
return;
}
}
String s2 = str.substring(0, 4);
// 虛擬運營商
// 中國聯通虛擬運營商
if(s.equals("167") || s.equals("171") || s2.equals("1704") || s2.equals("1707") || s2.equals("1708") || s2.equals("1709")){
System.out.println("中國聯通虛擬運營商");
return;
}
// 中國電信虛擬運營商
if(s.equals("162") || s2.equals("1700") || s2.equals("1701") || s2.equals("1702")){
System.out.println("中國電信虛擬運營商");
return;
}
// 中國移動虛擬運營商
if(s.equals("165") || s2.equals("1703") || s2.equals("1705") || s2.equals("1706")){
System.out.println("中國移動虛擬運營商");
return;
}
// 物聯網號段
// 中國聯通虛擬運營商
if(s.equals("146") || s2.equals("1400")){
System.out.println("中國聯通虛擬運營商");
return;
}
// 中國移動虛擬運營商
if(s.equals("148") || s2.equals("1440")){
System.out.println("中國移動虛擬運營商");
return;
}
// 中國電信虛擬運營商
if(s2.equals("1410")){
System.out.println("中國電信虛擬運營商");
return;
}
String s3 = str.substring(0,5);
// 電信衛星電話
if(s3.equals("17400") || s3.equals("17401") || s3.equals("17402") || s3.equals("17403") || s3.equals("17404") || s3.equals("17405") || s2.equals("1349")){
System.out.println("電信衛星電話");
return;
}
// 工信部應急衛星通訊電話
if(s3.equals("17406") || s3.equals("17407") || s3.equals("17408") || s3.equals("17409") || s3.equals("17410") || s3.equals("17411") || s3.equals("17412")){
System.out.println("工信部應急衛星通訊電話");
return;
}
// 海事衛星通訊電話
if(s2.equals("1749")){
System.out.println("海事衛星通訊電話");
return;
}
System.out.println("其它手機號有待完善...");
return;
}else {
System.out.print("根據您輸入的,可以判斷是判斷手機號,但格式輸入錯誤");
return;
}
}
/*
* 6.判斷國外的電話號碼
* */
/*
* 電話號碼位數為10
* */
if(str.length() == 10){
System.out.println("美國、德國印度、瑞士、荷蘭、比利時、法國、澳大利亞等");
return;
}
/*
* 電話號碼位數為9
* */
if(str.length() == 9){
System.out.println("紐西蘭、泰國等 ");
return;
}
/*
* 電話號碼位數為8
* */
if(str.length() == 8){
System.out.println("新加坡");
return;
}
if(str.length() == 8){
System.out.println("加拿大");
return;
}
/*
* 電話號碼位數為3
* */
if(str.length() == 3){
String s = str.substring(0,3);
// 民用特殊號碼
if(s.equals("120")){
System.out.println("急救電話");
return;
}
if(s.equals("121")){
System.out.println("天氣預報");
return;
}
if(s.equals("122")){
System.out.println("交通事故告警");
return;
}
// 特種開頭
if(s.equals("110")){
System.out.println("報警");
return;
}
if(s.equals("114")){
System.out.println("查號");
return;
}
if(s.equals("119")){
System.out.println("火警");
return;
}
// 國際對方付費電話
if(s.equals("108")){
System.out.println("國際對方付費電話");
return;
}
}
/*
* 電話號碼位數為2
* */
if(str.length() == 2){
String s2 = str.substring(0,2);
// 電信服務服務號碼
if(s2.equals("10")){
System.out.println("電信服務服務號碼");
return;
}
}
/*
* 電話號碼位數為5
* */
if(str.length() == 5){
String s3 = str.substring(0,5);
// 電信服務中心
if(s3.equals("10000")){
System.out.println("電信服務中心");
return;
}
}
/*
* 電話號碼位數為6
* */
if(str.length() == 6){
String s4 = str.substring(0,6);
// 聯通服務中心
if(s4.equals("100001")){
System.out.println("聯通服務中心");
return;
}
}
System.out.println("其它號碼還未完善...");
return;
}
}
記錄每一個學習瞬間