標籤:
對複利計算機進行單元測試
一、實驗曆次題目要求
1.客戶說:幫我開發一個複利計算軟體。
2.如果按照單利計算,本息又是多少呢?
3.假如30年之後要籌措到300萬元的養老金,平均的年回報率是3%,那麼,現在必須投入的本金是多少呢?
4.利率這麼低,複利計算收益都這麼厲害了,如果拿100萬元去買年報酬率10%的股票,若一切順利,過多長時間,100萬元就變成200萬元呢?
5.如果我希望在十年內將100萬元變成200萬元,應該找到報酬率在多少的投資工具來協助我達成目標?如果想在5年後本金翻倍,報酬率就應至少為多少才行呢?
6.如果每年都將積蓄的3萬元進行投資,每年都能獲得3%的回報,然後將這些本利之和連同年金再投入新一輪的投資,那麼,30年後資產總值將變為多少?如果換成每月定投3000呢?
7. 你寫的程式能讓客戶隨意操作嗎?誤輸入資料、不小心做了非常規的操作程式是什麼反應?
8. 如果向銀行貸款10萬元,年利率6.5%,期限為10年,那麼每月等額本息還款多少?(算複利條件下等額還款金額)
二、軟體編寫成果
具體軟體的曆次更新已在曆次實驗後的部落格中有展示,在此不做重複一一列舉。
在本次的單元測試部落格中,我主要示範兩項情境的單元測試,其餘的測試原始碼及過程不做重複,我已放入github中,有興趣的同學可點選連結進行查閱:https://github.com/skywalkersg/ruanjian/tree/master/FuLiGainew
情境一:客戶說: 我有本金為1萬元,利率為2%,存3年,複利次數為2,最終能獲得多少複利終值?
在我做的複利計算機中,得資料如下:
暨結果應得10615的複利終值。
1.經第一次單元測試結果為:
2.由於測試出了故障,故而我嘗試著在資料錄入及比較環節前分別進行了一次輸出,藉此判斷是哪裡出現了錯誤。
3.由此可看出是資料出現了錯誤導致單元測試出現了錯誤,在進行了修正後得最後測試資料如下暨複利終值為10615.201506009998元:
情境二:利率這麼低,複利計算收益都這麼厲害了,如果拿100萬元去買年報酬率10%的股票,若一切順利,過多長時間,100萬元就變成200萬元呢?
在複利計算機中,未經處理資料如下:
暨結果應得8年的結果。
1.第一次單元測試結果如下:
2.用同樣的方法檢測出錯誤處進行修正:
3.最終得到結果與預期相符的結果暨計算結果為8年:
三、兩次單元測試的原代碼如下:
1 public class TestHanShu { 2 // 本金為1萬元,利率為2%,存3年,複利次數為2,最終能獲得多少複利終值? 3 @Test 4 public void testSuanFa01() { 5 HanShu hs = new HanShu("10000", "0.02", "3", "2", null); 6 double Future=hs.SuanFa01(); 7 System.out.println(Future); 8 boolean flag = 10615.201506009998==Future; 9 System.out.println(flag);10 assertEquals(true, flag);11 12 }13 14 }15 16 17 public class TestTime {18 // 利率這麼低,複利計算收益都這麼厲害了,如果拿100萬元去買年報酬率10%的股票,若一切順利,過多長時間,100萬元就變成200萬元呢?19 @Test20 public void testTime() {21 HanShu hs = new HanShu("1000000", "0.1", null, "1", "2000000");22 int Year=(int)hs.Time();23 // System.out.println(Year);24 boolean flag = 8==Year;25 assertEquals(true, flag);26 }27 28 }
其餘的測試大致類似,便不一一列舉。
四、實驗總結
本次的單元測試實驗是首次嘗試著對自己寫的代碼進行測試,本次的實驗的主要失誤主要存在於資料的錯誤,程式本身是沒有問題的,所以竊以為本次的實驗還算成功,不過應該是還不是很理解單元測試的功用和更多的測試方法及內容,所以我認為本次測試的內容還是顯得較為簡單了,希望在日後的學習中我能愈發熟練的運用單元測試,將其運用在更強大、繁雜的測試中,掌握這項軟體工程的核心之一。
軟體工程實驗一 複利計算——單元測試