目录
1.从参数上进行设计
2.从代码逻辑上进行设计
3.从代码性能上进行设计
4.考虑异常情况
5.总结
下面是冒泡排序的代码,我们如何针对这个代价进行测试?
public void BubbleSort(int[] arr) {for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr.length - i - 1; j++) {if (arr[j] > arr[j + 1]) {int tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;}}}}
1.从参数上进行设计
我们可以考虑方法参数进行设计,比如参数类型,参数值,参数传递,我们可以使用等价类的方法进行设计。
有效等价类:参数类型:int,参数值:int;
无效等价类:参数类型:String,float,double;
参数类型:字符串,数字,集合,列表;
参数传递:过长,够短,NULL,不传参数;
测试用例编号 | 参数类型 | 参数值 | 参数传递方式 | 预期结果 |
---|---|---|---|---|
TC1 | int | 5 | 正常传递 | 成功执行 |
TC2 | String | "hello" | 正常传递 | 失败执行 |
TC3 | float | 3.14 | 正常传递 | 失败执行 |
TC4 | double | 2.718 | 正常传递 | 失败执行 |
TC5 | List | [1,2,3] | 正常传递 | 失败执行 |
TC6 | Set | {1,2,3} | 正常传递 | 失败执行 |
TC7 | int | NULL | 不传参数 | 失败执行 |
TC8 | int | 过长数字 | 正常传递 | 失败执行 |
TC9 | int | 够短数字 | 正常传递 | 成功执行 |
2.从代码逻辑上进行设计
这里的冒泡排序的代码一共有三层逻辑:
- 第一次循环(A):遍历整个数组,确定需要进行比较的元素个数。
- 第二层循环(B):在每次遍历中,从第一个元素开始,依次比较相邻的两个元素,如果前一个元素大于后一个元素,则交换它们的位置。
- if语句(C):判断是否需要交换两个元素,即当前元素是否大于下一个元素。
在这里我们进行组合:ab,abc等;
3.从代码性能上进行设计
考虑数组过大的时候,时间复杂度和空间复杂度是否符合预期;
4.考虑异常情况
在循环计算的过程中,时间过长是否会导致程序出现故障,是否需要加上异常处理try catch。