//歸并排序:public static void mergeSort(int[] a,int left,int right){if(left >= right)return;int mid = left+(right -left)/2;mergeSort(a,left,mid);mergeSort(a,mid+1,right);int[] tmp = new int[a.length];int l = left,r = mid+1,k = left;while(l<=mid && r<=right){if(a[l] <= a[r]){tmp[k++] = a[l++];}else{tmp[k++] = a[r++];}}//處理l或者r其中一個沒有遍歷完的情況:while(l<=mid)tmp[k++] = a[l++];while(r<=right)tmp[k++] = a[r++];//將這一段排好序的數組返回到原數組:for (int i = left; i <= right; i++) {a[i] = tmp[i];}}
對函數進行分析
易知:該函數的主要功能是將一個int類型的數組從小到大排序
對函數的設計可以從一下幾點入手:
從參數上進行設計
比如:該函數的的參數是int[]類型,
- 有效等價類:int[]
- 無效等價類:String[],float[],double[],List
數組過長,數組為空,不傳參數等 - 特殊:long[]的兼容性
從代碼邏輯上進行設計
我們知道對于這種:知道代碼內部邏輯并且可以運行測試的測試種類屬于白盒測試里的動態測試,因此可以考慮:條件覆蓋,語句覆蓋,條件組合覆蓋等.
拿一個小模塊來舉例:
從代碼性能方面進行設計
數組過大時時間復雜度和空間復雜度是否符合預期
考慮異常情況
循環計算過程中,時間過長的話程序是否會出現故障,要不要加上異常處理trycatch
設計測試用例
測試結果(部分截圖)
-
數組里的數據很長
-
邊界值:
-
數組逆序
-
數組包含相同元素