天天看點

複利計算測試(C語言)

對我們和複利計算程式,寫單元測試。 

   有哪些場景?

   期待的傳回值

   寫測試程式。

   運作測試。

測試子產品 測試輸入 預期結果 運作結果 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);//輸出複利計算的結果

 }

運作結果:

複利計算測試(C語言)

修改後的代碼:

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);//輸出複利計算的結果

複利計算測試(C語言)

除了複利計算的功能出現問題以外,選擇功能這一子產品也有問題

while(scanf("%d",&sel)!=1||sel<0||sel>7)//防止輸入的是字元以及輸入的數字不是整數0-7

        {

             printf("\t輸入錯誤!!!\n\n\t請重新選擇:");

             getchar();      

        }

複利計算測試(C語言)

                             while(getchar() != '\n');         //  處理Enter鍵

複利計算測試(C語言)

通過這次測試,我發現了以上的問題,也對代碼做了修改,但我知道我目前的程式還是有問題的,我會繼續測試,繼續完善代碼。