测试开发案例

1、给你一个字符串,你怎么判断是不是ip地址?手写这段代码,并写出测试用例

参考回答:

IP的格式:(1~255).(0~255).(0~255).(0~255)

  方法一:基于对字符串的处理

  方法二:正则表达式

package TestCase01;

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

//判断是否为一个合法的IP地址
public class isIPLegal {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String ipStr = scanner.next();
        boolean isIpLegal = isIpLegal2(ipStr);
        if(isIpLegal) {
             System.out.println(ipStr + " 合法");
        }
        else{
            System.out.println(ipStr + " 非法");
        } 
        }
    
        //方法一:基于对字符串的处理 
     public static boolean isIpLegal(String str){
        //检查ip是否为空
        if(str == null){
            return false;
        }
        //检查ip长度,最短为:x.x.x.x(7位),最长为:xxx.xxx.xxx.xxx(15位)
        if(str.length() < 7 || str.length() > 15){
            return false;
        }
        //对输入字符串的首末字符判断,如果是"."则是非法IP
        if(str.charAt(0) == '.' || str.charAt(str.length()-1) == '.'){
            return false;
        } 
        //按"."分割字符串,并判断分割出来的个数,如果不是4个,则是非法IP 
        String[] arr = str.split("\\.");
        if(arr.length != 4){
        return false;
        }
         //对分割出来的每个字符串进行单独判断
        for(int i = 0; i < arr.length; i++){
        //如果每个字符串不是一位字符,且以'0'开头,则是非法的IP,如:01.002.03.004
            if(arr[i].length() > 1 && arr[i].charAt(0) == '0'){
                    return false;
        } 
         //对每个字符串的每个字符进行逐一判断,如果不是数字0-9,则是非法的IP
        for(int j = 0; j < arr[i].length(); j++){
            if (arr[i].charAt(j) < '0' || arr[i].charAt(j) > '9'){
                return false;
                }
            }
        }
        //对拆分的每一个字符串进行转换成数字,并判断是否在0~255
        for(int i = 0; i < arr.length; i++){
            int temp = Integer.parseInt(arr[i]);
            if(i == 0){
                if (temp < 1 || temp > 255){
                    return false;
                }
            }
            else{
                if(temp < 0 || temp > 255){
                    return false;
                }
            }
        }
            return true;
        }
     
     //方法二:正则表达式 
     public static boolean isIpLegal2(String ipStr) {
         String ipRegEx = "^([1-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5]))(\\.([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5]))){3}$";
         Pattern pattern = Pattern.compile(ipRegEx);
         Matcher matcher = pattern.matcher(ipStr);
         if (matcher.matches()) {
         return true;
         } else {
         return false;
         }
    }
}

测试用例:

等价类划分:

有效可用的IP地址

A类

1.0.0.0 -126.255.255.254

A私有

10.0.0.0 -10.255.255.254

B类

128.0.0.0 -191.255.255.254

B私有

172.16.0.0 -172.31.255.254

C类

192.0.0.0 -223.255.255.254

C私有

192.168.0.0-192.168.255.254

windows自动分配

169.254.0.0-169.254.255.254

有效但不可用的IP地址

D

224.0.0.0 -239.255.255.254

E

240.0.0.0 -255.255.255.254

全网

0.x.x.x, x.x.x.0

广播

x.x.x.255

回环

127.0.0.0 -127.255.255.254


 

输入

结果

64.11.22.33

有效可用

10.12.13.14

有效可用,不能直接访问公网

151.123.234.56

有效可用

172.20.123.56

有效可用,不能直接访问公网

192.127.35.65

有效可用

192.168.128.128

有效可用,不能直接访问公网

169.254.15.200

有效可用,不能直接访问公网

224.1.2.3

有效不可用,超过有效范围(D类)

250.11.22.33

有效不可用,超过有效范围(E类)

0.200.3.4

有效不可用,全网地址

64.11.22.0

有效不可用,全网地址

10.12.13.255

有效不可用,广播地址

127.50.60.70

有效不可用,回环地址

2、请进行测试用例设计:一串数字,闰年的判别

参考回答:

判断闰年条件①:非整百年数除以4,无余为闰,有余为平;②整百年数除以400,无余为闰有余平设定合法的年份为1-9999
package TestCase01;

//判断是否是闰年
import java.util.Scanner;

public class isLeapYear {

    public static void main(String[] args) {
            Scanner in = new Scanner (System.in);
            int year=in.nextInt();
            
            if(year<=0||year>9999){
                System.out.println("请输入正确的年份");
            }
            if((year%4==0&&year%100!=0)||year%400==0){
                System.out.println("闰年");
            }else{
                System.out.println("不是闰年");
                }
            }
        } 

 

测试用例:

测试用例

输入

预期输出

被 4 整除, 但是不被100 整除的年份

2008

闰年

被 4 整除, 同时被100 整除的年份,且被 400 整除的年份

2000

闰年

被 4 整除, 同时被100 整除的年份,但是不被400 整除的年份

1900

不是闰年

偶数, 不被4 整除的年份

2022

不是闰年

奇数年份

1999

不是闰年

年份大于9999

10000

请输入正确的年份

年份小于0

0

请输入正确的年份

posted @ 2020-06-10 08:42  我们村里的小花儿  阅读(289)  评论(0编辑  收藏  举报