2013-02-27 60 views
3

是否存在任何边界案例或者一般情况下我需要为此函数进行测试。我能想到的唯一的事情是如果其中一个被合并的数组是空的。我还需要考虑其他测试案例吗?合并分类中的合并测试案例

+0

当然,总有一种极端的情况是,没有理智的人覆盖,那就是当有太多的文件要合并时,你不能一次打开它们。 – OldCurmudgeon 2013-02-27 22:50:19

+0

@OldCurmudgeon谁在谈论文件合并?它是[合并排序]的合并部分(http://en.wikipedia.org/wiki/Merge_sort) – 2013-02-27 22:50:59

+0

@OldCurmudgeon好点 - 文件排序经常被遗忘。实际上,无论是文件还是数据排序,通常都是您根据比较/移动开销选择排序算法的起点。 – 2013-02-27 22:55:33

回答

3

对于任何类型的,我认为这些情况:

  • 空列表
  • 一个已排序列表
  • 反向排序列表
  • 由相同元素的列表整个
  • 包含诱饵的列表

这不是j以证明算法,但也为性能。

1

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

2

一些更:

  • 想一想每个阵列中元件的数目: 两个阵列具有偶数个元素的 一个阵列具有偶数而另一个具有奇数个元件 元素的数量一个数组多于另一个数组中的元素数

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

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

0

以下情况我用于测试我的合并排序代码。我想这涵盖了大多数情况。您可以直接复制您的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