测试合并排序中合并的情况

时间:2013-02-27 22:44:26

标签: java algorithm sorting merge

是否存在我需要测试此功能的边缘情况或一般情况。我唯一能想到的是,其中一个被合并的数组是空的。我还需要考虑其他测试用例吗?

4 个答案:

答案 0 :(得分:4)

无论如何,我都会考虑这些情况:

  • 空列表
  • 已排序的列表
  • 反向排序列表
  • 整个
  • 中包含相同元素的列表
  • 包含欺骗的列表

这不仅是为了证明算法,也是为了表现。

答案 1 :(得分:2)

更多:

  • 考虑每个数组中的元素数量: 两个阵列都有偶数个元素 一个阵列具有偶数,而另一个阵列具有奇数个元素 一个数组中的元素数量大于另一个数组中的元素数量

  • 还要考虑数组中的元素范围 一个数组中的最大元素小于第二个数组中的最小元素 一个数组有重复 两个阵列都有相同的元素集,例如(A1:2,4,6,8和A2:2,4,6,8)

基本上这些擅长在合并时捕获for循环中的一个错误

答案 2 :(得分:1)

考虑代码中的每个if语句和循环条件,并尝试查找使条件成为真/假的测试用例。如果您发布代码,我们可以讨论可能的测试用例。

答案 3 :(得分:1)

以下情况我曾经测试过Merge Sort代码。我想这涵盖了大部分案例。您可以直接复制C代码并将其用于测试。

//int arr[] = {12, 15, 23, 4 , 6, 10, 35, 28}; //Even number of element
//int arr[]={}; //Empty list 
int *arr = NULL; //Null pointer
//int arr[] = {4, 6, 10, 12, 15, 23, 28, 35}; //already sorted array
//int arr[] = {12, 15, 23, 4 , 6, 10, 35}; //odd length array
//int arr[] = {35, 28, 23, 15, 12, 10, 6, 4}; //descending sorted array input
//int arr[] = {12};//one element
//int arr[] = {12, 4}; // two elements
//int arr[] = {12, 15, 23, 4 , 6, 10, 35, 28, 100, 130, 500, 1000, 235, 554, 75, 345, 800, 222, 333, 888, 444, 111, 666, 777, 60};//large list of elements 
//int arr[] = {12, 15, -23, -4 , 6, 10, -35, 28}; //negative elements
int arr[] = {12, 12, 23, 4 , 6, 6, 10, -35, 28}; //duplicate elements
int arr[] = {12, 12, 12, 12, 12}; //Same element