实验4

 

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)    写出问题所在

问题1:如果中间电话号码不满8位。会把—当成数字读进去。

问题2:如果格式不满足xxxx-xxxxxxxx—xxx这样的格式,都会出错。     

(2)    写出问题产生的原因

原因1:在上述代码中值规定了出现-后的做法,而没有写出当—出现后的处理方法的代码。这样可能会出现系统吧—当成数字处理.

原因2:上述代码只描述了if((strPhoneNum==null)||””.equals(strPhoneNum))时有返回值。万一出现的strPhoneNum!=null时则系统会出现错误。

(3) 给出修改后的代码

public String getPhoneNumber(String strPhoneNum){

        if((strPhoneNum==null) || "".equals(strPhoneNum)){

            return true;

        }

               else{

                                            if(strPhoneNum.length!=15){

                                            System.out.println(“输入错误请重新输入”);

                             }

}

        String[] arrPhone=strPhoneNum.split("-");

        return arrPhone[1];

    }

 

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

要求:

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

 package cn.lin.k;

 

public class work4 {

 

   /**

    * @param args

    * 作者:林鸿伟

    */

  

   public static void main(String[] args) {

      // TODO Auto-generated method stub

      int[] arr=new int[]{54,49,79,78};

      int index=arr.length;

      simplesort(arr, index);

 

   }

 

   private static void simplesort(int[] arr,int index) {

      // TODO Auto-generated method stub

   int minIndex=0;

   int temp=0;

   for(int i=0; i<index-1;i++){

      minIndex=i;                 // 比对另个数选出一个最小的数

         for(int j=i+1; j<index; j++){

            if(arr[minIndex]>arr[j]){

                minIndex=j;       //如果有更小的替换位置

            }

         }

         if (minIndex!=i){

            temp=arr[minIndex];

            arr[minIndex]=arr[i];

            arr[i]=temp;

         }

   }

   for (int i=0; i<index; i++){

      System.out.println(arr[i]);    //当比对到最后一位是循环结束。输出结果

   }

   }

 

}

 

(2)    说明你的设计思路

 答:我的设计排序的方法是用选择排序方法。也就是数与数之间相互比较,找出最小的那一个数,放在第一位。然后通过for循环重复此动作,如果有更小的数就替换位置。多次这样重复动作当i>index(有多少个数相互比较的位数)时循环结束。输出结果为排序后的结果。

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

  1. 如果有2个相同值可能会出错
  2. 如果测试的数组位数太大可能会出错
  3. 用的是for循环语句,各数之间都要相互比较工作量太大可能会出错
  4. For循环中嵌套这for循环,可能会出现一个特定的数会使程序出错
  5. 如果出现负数和正数同时比较可能会出错

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

 

posted @ 2016-04-29 12:51  hw20  阅读(114)  评论(0编辑  收藏  举报