实验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) 写出可能出错的情况(至少五种)
- 如果有2个相同值可能会出错
- 如果测试的数组位数太大可能会出错
- 用的是for循环语句,各数之间都要相互比较工作量太大可能会出错
- For循环中嵌套这for循环,可能会出现一个特定的数会使程序出错
- 如果出现负数和正数同时比较可能会出错
(4) 编写JUnit单元测试,将前面给出的可能出错的测试数据放入单元测试进行测试