對我們和複利計算程式,寫單元測試。
有哪些場景?
期待的傳回值
寫測試程式。
運作測試。
測試子產品 | 測試輸入 | 預期結果 | 運作結果 | bug跟蹤 |
計算終值 | (本金,年限,利率) | 終值 | ||
1 | (1000,10,0,.3) | 13785.85 | ||
2 | (0,10,0.3) | 提示輸入錯誤,重新輸入 | 0.00 | 已修改,彈出提示:輸入錯誤!!重新輸入 |
3 | (-1000,10,0.3) | -13785.85 | ||
4 | (1000,0,0.3) | 1000.00 | ||
5 | (1000,10,0) | |||
計算本金 | (年限,利率,終值) | 本金 | ||
(10,0.3,30000) | 7500.00 | |||
(0,0.3,30000) | 30000.00 | |||
(-10,0.3,30000) | -15000.00 | |||
(10,0,30000) | ||||
(10,0.3,-3000) | -7500.00 | |||
計算時間 | (本金,利率,終值) | 時間 | ||
(1000,0.3,3000) | ||||
(0,0.3,3000) | ||||
(-1000,0.3,3000) | -1 | |||
(1000,0,3000) | ||||
(1000,-0.3,3000) | -3 | |||
計算利率 | (本金,年限,終值) | 利率 | ||
(1000,10,30000) | 0.41 | |||
(0,10,30000) | 亂碼 | |||
(-1000,10,30000) | ||||
(1000,0,30000) | ||||
計算等額本息還款 | (貸款,年限,利率) | 本息還款 | ||
(10000,10,0.3) | 15.04 | 13.04 | ||
(10000,0,0.3) | ||||
(10000,10,0) | ||||
(-10000,10,0.3) | -15.04 |
以上是對功能的測試,幾乎都是出現同樣的問題,本金、利率、時間等輸入負值,程式還是會繼續運作,沒有提示錯誤。
以下是修改前和修改後的結果:
以函數A()為例子:
原代碼:
void A()//一次投入複利計算
{
int n;//時間n
double p,i,sum1;//總金額p,利率i,本利和sum1
printf("\n\t*請輸入存款金額:");
scanf("%lf",&p);
printf("\t*請輸入利率:");
scanf("%lf",&i);
printf("\t*請輸入存儲時間(年):");
scanf("%d",&n);
sum1=p*pow((1+i),n);//複利的計算公式
printf("\t**本利和為:%.2lf\n\n",sum1);//輸出複利計算的結果
}
運作結果:

修改後的代碼:
void A()//一次投入複利計算
{
int n;//時間n
double p,i,sum1;//總金額p,利率i,本利和sum1
printf("\n\t*請輸入存款金額:");
while(scanf("%lf",&p)!=1||p<=0)
{
printf("\t輸入錯誤!!!\n\n\t*請重新輸入存款金額:");
getchar();
}
printf("\t*請輸入利率:");
while(scanf("%lf",&i)!=1||i<=0)
printf("\t輸入錯誤!!!\n\n\t*請重新輸入利率:");
getchar();
}
printf("\t*請輸入存儲時間(年):");
while(scanf("%d",&n)!=1||n<=0||n>100)
printf("\t輸入錯誤!!!\n\n\t*請重新輸入存儲時間(年):");
} ;
sum1=p*pow((1+i),n);//複利的計算公式
printf("\t**本利和為:%.2lf\n\n",sum1);//輸出複利計算的結果
除了複利計算的功能出現問題以外,選擇功能這一子產品也有問題
while(scanf("%d",&sel)!=1||sel<0||sel>7)//防止輸入的是字元以及輸入的數字不是整數0-7
{
printf("\t輸入錯誤!!!\n\n\t請重新選擇:");
getchar();
}
while(getchar() != '\n'); // 處理Enter鍵
通過這次測試,我發現了以上的問題,也對代碼做了修改,但我知道我目前的程式還是有問題的,我會繼續測試,繼續完善代碼。