軟件工程第三次作業
一、題目選擇
最大連續子數組和(最大子段和)
問題: 給定n個整數(可能為負數)組成的序列a[1],a[2],a[3],…,a[n],求該序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。當所給的整數均為負數時定義子段和為0,依此定義,所求的最優值為: Max{0,a[i]+a[i+1]+…+a[j]},1<=i<=j<=n
例如,當(a[1],a[2],a[3],a[4],a[5],a[6])=(-2,11,-4,13,-5,-2)時,最大子段和為20。引用自《百度百科》
二、代碼
代碼是在組長的幫助下完成的(自己實在是對JAVA一無所知)
package com.edu.sau;
public class max
{
public int maxArray(int count,int[] array)
{
int[] b = new int[count];
int max;
b[0]=array[0];
max=b[0];
for(int i=1;i<count; i++)
{
if(b[i-1]>0)
b[i]=b[i-1]+array[i];
else
b[i]=array[i];
if(b[i]>max)
max=b[i];
}
if(max<0)
max=0;
return max;
}
}
三、覆蓋標準的選擇及設計測試用例
1.五種邏輯覆蓋測試方法
1)語句覆蓋:設計足夠多的測試用例,使得被測試程序中的每條可執行語句至少被執行一次。
2)判定覆蓋:設計足夠多的測試用例,使得被測試程序中的每個判斷的“真”、“假”分支至少被執行一次。
3)條件覆蓋:設計足夠多的測試用例,使得被測試程序中的每個判斷語句中的每個邏輯條件的可能值至少被滿足一次。
4)判定-條件覆蓋:設計足夠多的測試用例,使得被測試程序中的每個判斷本身的判定結果(真假)至少滿足一次,同時,每個邏輯條件的可能值也至少被滿足一次。
5)條件組合覆蓋:設計足夠多的測試用例,使得被測試程序中的每個判斷的所有可能條件取值的組合至少被滿足一次。
2.程序流程圖
在此我僅做了主要兩次條件分支的流程圖

3.設計測試用例
我選擇的是條件組合覆蓋,共可能出現四種可能
- b[i-1]>0,b[i]>max
- b[i-1]<0,b[i]>max
- b[i-1]>0,b[i]<max
- b[i-1]<0,b[i]<max
四、利用自動單元測試工具進行測試


五、程序運行結果
其中第一個為老師所給測試用例

總結
這次的作業算的上是第一次真正考驗我的,首先自己對JAVA語言并不熟悉,導致在寫代碼的時候遇到了一些困難,另外就是對自動單元測試工具的使用還是很生澀的,不過在我們組長尉安瑞同學的幫助下,我還是按時完成了作業。通過這次作業讓我認識到了自己的不足之處,在接下來的時間里,我要勤加練習,爭取做到下次作業可以由自己獨立完成。
浙公網安備 33010602011771號