博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
软件工程实验一 复利计算——单元测试
阅读量:5058 次
发布时间:2019-06-12

本文共 3214 字,大约阅读时间需要 10 分钟。

对复利计算器进行单元测试(二次修正,增加一项测试案例)

一、实验历次题目要求

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 }

其余的测试大致类似,便不一一列举。

 

补充测试:

在本次测试中我使用的测试函数是计算利率的函数,在测试数据输入时,我故意输入大于0.9999和小于0.0001的极限数据,测试程序的反应

1.原始数据

 

2.将输入的利率改为0.00000000000000000000002

 

3.将利率调为222222

 

4.可见程序产生了异常,在进行修正后

 

5.修正结果

 

详细代码:(将输入数据的合理范围设置在0.9999~0.0001内,范围外的都视为不合法输入)

1 //单元测试代码 2 public class TestAll { 3 //     将利率输入为一个特别大的数 4     @Test 5     public void test() { 6         HanShu hs = new HanShu(null, "22222", "3", "2", "2000000"); 7         double Benmoney=hs.SuanFa02(); 8         System.out.println(Benmoney); 9         boolean flag = 1128948==Benmoney;10         System.out.println(flag);11         assertEquals(true, flag);12     }13 14 }15 16 //修正代码17         if(L==null || L.length()<=0)18             lilu=0;19         else{20             try{21                 lilu=Double.parseDouble(L);22                 if(lilu<0.0001 || lilu>0.9999){23                     JOptionPane.showMessageDialog(null, "输入数据不合法(请输入在0.9999~0.0001之间的数据)", "数据不合法", JOptionPane.CLOSED_OPTION);24                     lawful=true;25                 }26             }catch(Exception e){27                 lawful=true;28             }29         }

 

 

四、实验总结

      本次的单元测试实验是首次尝试着对自己写的代码进行测试,本次的实验的主要失误主要存在于数据的错误,程序本身是没有问题的,所以窃以为本次的实验还算成功,不过应该是还不是很理解单元测试的功用和更多的测试方法及内容,所以我认为本次测试的内容还是显得较为简单了,希望在日后的学习中我能愈发熟练的运用单元测试,将其运用在更强大、繁杂的测试中,掌握这项软件工程的核心之一。

 

转载于:https://www.cnblogs.com/skywalkersg/p/5331059.html

你可能感兴趣的文章
原码 反码 补码 移码
查看>>
JS 二维数组 对象数组 对象中的数组
查看>>
转:前端工程与性能优化(下):静态资源管理与模板框架
查看>>
转:Hprose for php(二)——服务器
查看>>
extern static和函数
查看>>
HBase环境搭建
查看>>
拍照、本地图片工具类(兼容至Android7.0)
查看>>
NGUI-使用UILabel呈现图片和不同格式的文字
查看>>
AutoTransformHandler
查看>>
angular5引入sass
查看>>
Gridview 动态指定字段升序,降序排序
查看>>
解决idea maven 编译版本自动回复1.5
查看>>
【转载】基于CodeIgniter框架Restful风格API的Auth验证
查看>>
Java学习--使用 Date 和 SimpleDateFormat 类表示时间
查看>>
vue中 $event 的用法--获取当前父元素,子元素,兄弟元素
查看>>
安装redis服务
查看>>
java中使用OpenOffice
查看>>
css3 同心圆旋转(1)
查看>>
7.22日归家的总结暨NOI2018网络同步赛总结
查看>>
关于Markdown的学习
查看>>