第三次博客作业
1、 某网站管理系统,用户注册时,电话号码为可选输入项,输入格式为:区号-电话号码—分机号,中间用“-”隔开。以下为jsp页面上的设计,且并未对输入做任何控制。
请用你学过的测试技术和方法,找出该方法中存在的问题,并且分析出现该问题的原因,同时给出你的解决方案。(提示:存在的问题不止一个)
要求:
(1) 写出问题所在
当用户只输入中间部分的电话号码,则程序报错或者输入区号电话号和分机号但没有输入-,则程序也会报错,如果输入的不是-而是—,则会连后面的区号和”—“一起输出。
(2) 写出问题产生的原因
代码中固定了用户必须3种号码都必须输入,然后固定取存储在数组中的第二个数组,如果缺少了号码,则程序就会报错
(3) 给出修改后的代码
public String getPhoneNumber(String strPhoneNum){
String result = "";
if((strPhoneNum == null)|| "".equals(strPhoneNum)){
return result="";
}
if(strPhoneNum.length() == 17){
for(int i=0;i<=17;i++){
result = strPhoneNum.substring(5, 12);
}
}else{
return result = "输入格式错误!";
}
return result;
}
2、 请写一段用于整型数组排序的代码,说明你的设计思路,并利用错误推测法给出可能出错的情况(至少5种),设计出测试用例,并利用JUnit编写单元测试进行测试。(假设传入的参数已经确定为整型数组)
要求:
(1) 写出代码,并符合代码规范(命名要规范,不可直接写在main方法中,需要有类注释、方法注释、以及适当的行注释)
(2) 说明你的设计思路
(3) 写出可能出错的情况(至少五种)
(4) 编写JUnit单元测试,将前面给出的可能出错的测试数据放入单元测试进行测试
(1)
/**
* 整数数组排序(冒泡排序)
* @author 洪曙鹏
*
*/
public class ArraySort {
//创建一个方法,初始化参数为int型数组,返回值也是int型数组
public int[] arraySort(int[] num){
//进行for循环排序,使用两次for循环
for(int i=0;i<num.length-1;i++){
for(int j=0;j<num.length-1-i;j++){
//第一次循环:如果第一个数字大于第二个数字,则两个数字互换位置,直到把最大的数字存到最后一位,再进行第二次循环,
//第二次循环继续从第一个数字与第二个数字比较,直到把第二大的数字放在倒二,依次类推。
if (num[j]>num[j+1]){
int temp=num[j];
num[j]=num[j+1];
num[j+1]=temp;
}
}
}
return num;
}
public static void main(String args[]){
int[] num = {3,55,1,2};
ArraySort a = new ArraySort();
int[] b=a.arraySort(num);
for(int i = 0;i<b.length;i++){
System.out.println(b[i]);
}
}
}
(2)
设计思路:
使用两次for循环,先第一个for循环,定义一个变量i,i要小于要测试的数组的长度,执行第二个for循环,定义一个变量j,j要小于被测试的数组的长度 并减去i,因为冒泡排序是每次排序完后将最大的数放在最后,然后执行if语句,如果数组内的第一个数字大于第二个数字,则调换位置,如果小于第二个数字,则将第二个数字与第三个数字比较,依次类推,直到把最大的数放在最后一位,再执行第二个。依次类推。
(3)
可能出现错误情况:
- 数组内没有数字
- {3,1,2,3}
- {0,0,0,0}
- {1,2,3,1}
- {-1,0,999,-1}
(4)