4

是否有任何边缘情况或一般情况下我需要测试此功能。我唯一能想到的是,如果要合并的数组之一是空的。我还需要考虑其他测试用例吗?

4

4 回答 4

6

对于任何类型,我都会考虑以下情况:

  • 空列表
  • 已排序的列表
  • 反向排序列表
  • 由相同元素组成的列表
  • 包含骗子的列表

这不仅是为了证明算法,也是为了性能。

于 2013-02-27T22:51:46.587 回答
3

多一点:

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

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

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

于 2013-02-27T22:52:50.853 回答
2

以下案例我用来测试我的合并排序代码。我想这涵盖了大多数情况。您可以直接复制您的 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
于 2017-10-20T20:02:51.273 回答
1

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

于 2013-02-27T22:52:21.900 回答