第三次博客作业

1、  某网站管理系统,用户注册时,电话号码为可选输入项,输入格式为:区号-电话号码—分机号,中间用“-”隔开。以下为jsp页面上的设计,且并未对输入做任何控制。

假设系统现在需要取出中间的电话号码部分,代码如下:

 
/**
     * 
     * 该方法根据用户输入取出中间的电话号码部分
     * @param strPhoneNum  电话号码,如:“0591-83279988—002”
     * @return  返回号码部分,如:“83279988”
     */
    public String getPhoneNumber(String strPhoneNum){
        if((strPhoneNum==null) || "".equals(strPhoneNum)){
            return "";
        }
        String[] arrPhone=strPhoneNum.split("-");
        return arrPhone[1];
    }
 

请用你学过的测试技术和方法,找出该方法中存在的问题,并且分析出现该问题的原因,同时给出你的解决方案。(提示:存在的问题不止一个)

要求:

(1) 写出问题所在:未对字符串是否为数字进行判断及未对固定号码的格式字数进行限制

(2) 写出问题产生的原因:if语句和以每个分隔符分隔的数字存在代码功能不完善

(3) 给出修改后的代码:

  /**
  * @author 余*强
  * 2016-04-29
  * 该方法根据用户输入取出中间的电话号码部分
  * @param strPhoneNum 电话号码,如:“0591-83279988—002”
  * @return 返回号码部分,如:“83279988”
  */
  public String getPhoneNumber(String strPhoneNum){ //正则表达式,判断字符串是否为数字
    if((strPhoneNum==null) || "".equals(strPhoneNum) || !strPhoneNum.matches("^[0-9_]+$")){
      return "fasle";
      }
    else{
        String[] arrPhone=strPhoneNum.split("-");
        //对“区号-电话号码—分机号”分别进行数字格式的限制
        if((arrPhone[0].length()>=3 || arrPhone[0].length()<=4)
        && (arrPhone[1].length()>=7 && arrPhone[1].length()<=8)
        && ((arrPhone[2].length()>=1 && arrPhone[2].length()<=4))){
          return arrPhone[1];
         }
        else{
          return "false";
          }
         }
       }

 

 

2、  请写一段用于整型数组排序的代码,说明你的设计思路,并利用错误推测法给出可能出错的情况(至少5种),设计出测试用例,并利用JUnit编写单元测试进行测试。(假设传入的参数已经确定为整型数组)

要求:

(1) 写出代码,并符合代码规范(命名要规范,不可直接写在main方法中,需要有类注释、方法注释、以及适当的行注释)

package cn.rocky.sort;

class ArraySort
{
  /*
  *@author:余*强
  * 2016-04-29
  *冒泡排序:
  *相邻两个元素相比较,符合条件就换位
  *第一轮比较完后: 最大值出现在最后一个位置
  */
  public void sort(int[] arr)
  {
    int temp;

  // arr.length-1 最后一个元素后面就没得相邻元素了,所以-1
  for(int i = 0; i < arr.length-1; i ++)
  {
    //j = 0;每次内循环都应该从第一个元素开始比较

    //第N圈比较的时候,arr.length - N
    for(int j = 0; j < arr.length - i -1; j ++)//-1是避免下面 j+1越界
    {
      //相邻比较,所以只用j
      //当j取到最大值的时候, j+1就越界了
     if(arr[j]> arr[j+1])
      {
        temp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = temp;
        }
      }
    }
  }
    //将结果进行排序
  public static String p(int[] arr)
  {
    String ret = "[";
    for(int i = 0; i < arr.length; i ++)
    {
      ret += arr[i];
    if(i == arr.length-1)
    {
      ret +="]";
    }
    if(i < arr.length - 1)
      ret +=" ,";
    }
    return ret;
  }

    //调用函数,输出结果
  public static void main(String[] args)
  {
    int[] arr = {4,3,9,6,2};
       ArraySort a = new ArraySort();
    System.out.println("排序前: " + a.p(arr));
    a.sort(arr);
    System.out.println("排序后: " + a.p(arr));
  }
}

 

(2) 说明你的设计思路

  冒泡排序:

      比较方式:相邻两个元素之间相比较;

      第一轮比较完:最大元素冒出来;

      第二轮比较完:第二大元素冒出来

      ......

      最后各元素按大小依次排序

(3) 写出可能出错的情况(至少五种)

  1.原始数组为空数组。

  2.数组中只含有1个元素;

  3.原始数组中所有元素已排好顺序;

  4.原始数组中所有元素已按逆序排好;

  5.原始数组中部分或全部元素相同;

(4) 编写JUnit单元测试,将前面给出的可能出错的测试数据放入单元测试进行测试

1.原始数组为空数组测试:

 

 

  2.数组中只含有1个元素测试:

  3.原始数组中所有元素已排好顺序测试:

 

  4.原始数组中所有元素已按逆序排好测试:

  5.原始数组中部分或全部元素相同测试:

 

posted @ 2016-04-29 13:21  赤焰yu  阅读(169)  评论(0编辑  收藏  举报