【第一題】
三角形問題說明:輸入三個正整數a、b、c,分別作為三角形的三條邊,現通過程式判斷由三條邊構成的三角形的型別是否為等邊三角形、等腰三角形、直角三角形、普通三角形以及非三角形。根據問題的規格說明,可以從輸出域劃分5種等價類:
輸出等價類
ID
條件
等價類
1
a=b∧b=c∧a=c∧(a+b>c∧b+c>a∧a+c>b)
等邊三角形
2
a=b∨b=c∨a=c∧(a+b>c∧b+c>a∧a+c>b)
等腰三角形
3
a2+b2=c2∨b2+c2=a2∨a2+c2=b2∧(a+b>c∧b+c>a∧a+c>b)
直角三角形
4
a≠b∧b≠c∧a≠c∧(a+b>c∧b+c>a∧a+c>b)
普通三角形
5
(a+b≤c∨b+c≤a∨a+c≤b)∨a≤0∨b≤0∨c≤0
非三角形
程式設計實現:
(1)對每一個輸出等價類,至少設計一個測試用例。
輸入格式:輸入(a,b,c):
輸出格式:輸出(ID型別):
例如:輸入(a,b,c):5,5,5↙(回車)
輸出(ID型別):1(等邊三角形),2(等腰三角形)
(2)假設10≤a,b,c≤100,根據劃分的等價類,設計邊界值測試用例。
例如:輸入(a,b,c):60,60,10↙(回車)
輸出(ID型別):2(等腰三角形)
2、閱讀下面的一段程式,
voidTest2(intX,intA,intB)
1{
2intk=0,j=0;
3if((A>1)&&(B=0))
4{
5X=X/A;
6k=A*B-1;
7}
8if((A==2)||(X>1))
9X=X+1;
10j=X+3;
11}//Test2
根據所給定的程式,確定該程式的獨立路徑如下:
路徑1:3→8→10→11
路徑2:3→5→6→8→10→11
路徑3:3→8→9→10→11
路徑4:3→5→6→8→9→10→11
程式設計實現:
對每一個獨立路徑,設計一個測試用例,並插入一條顯示輸出語句(printf/cout),顯示測試路徑標號。
輸入格式:輸入(X,A,B):
輸出格式:輸出(k,j):k=j=
路徑ID:
例如:輸入(X,A,B):1,2,1↙(回車)
輸出(k,j):k=0j=5
路徑ID:測試路徑4
【第二題】
NextDate函式問題說明:輸入一個日期,求從輸入日期算起的第三天日期。例如,輸入為2008年8月8日,則該程式的輸出為2008年8月10日。NextDate函式包含三個整數變數month、day和year,並且滿足下列條件:1≤ month ≤12、1≤ day ≤31和2000≤ year ≤2100。分析各種輸入情況,列出為輸入變數month、day、year劃分的.有效等價類:
輸入等價類
輸入
ID
有效等價類
day
1
1 ≤day≤26
2
day=27
3
day=28
4
day=29
5
day=30
6
day=31
month
7
month=4,6,9,11
8
month=1,3,5,7,8,10
9
month=2
10
month=12
year
11
閏年
12
非閏年
程式設計實現:
(1) 對每一個有效等價類,至少設計一個測試用例。
輸入格式:輸入(yyyymmdd):
輸出格式:輸出(yyyy-mm-dd):
覆蓋等價類(ID型別):
閏年(Y/N):
例如:輸入(yyyymmdd) 20080105↙(回車)
輸出(yyyy-mm-dd): 2008-01-07
覆蓋等價類(ID型別):1,8,11
閏年(Y/N):N
(2)對每一個無效的month、day和year,分別輸入一個無效等價類。
例如:輸入(yyyymmdd) 20081305 ↙(回車)
輸出(yyyy-mm-dd): 無效月份
覆蓋等價類(ID型別):
閏年(Y/N):
2、閱讀下面的一段程式:
void Test1(int N,intI)
1 {
2int x=0;
3int y=0;
4while(N-->0)
5{
6if(I==0)
7 x=y+2;
8 else
9 if(I==1)
10 y=y+10;
11 else
12 x=y+20;
13}//while
14 }//Test1
根據所給定的程式,確定該程式的獨立路徑如下:
路徑1:4→14
路徑2:4→6→7→14
路徑3:4→6→9→10→4→14
路徑4:4→6→9→12→4→14
程式設計實現:
對每一個獨立路徑,設計一個測試用例,並插入一條顯示輸出語句(printf/cout),顯示測試路徑標號。
輸入格式:輸入(N,I):
輸出格式:輸出(x,y):x= y=
路徑ID:
例如:輸入(N,I): 1,2↙(回車)
輸出(x,y):x=20 y=0
路徑ID:測試路徑4