0330 复利计算——单元测试
先进行简单的测试:
界面输入测试:
当输入范围以外的数字时: 进不去,需要重新输入。
在后面的选择界面也有相对应的控制。
然后是计算的测试:
这个结果无从证明,但是看上去还是可以计算的,但是感觉利率应该一般是小于1的,所以控制有待改进。
这个是对于负数的输入,显示是可以输入,然而不符合常理,也是需要改进的。
这是关于复利计算与网上的对比,应该没差错,我的结果保留了两位小数。
测试模块 | 测试输入 | 预期结果 | 运行结果 | bug追踪 | |
单利计算 | 求终值(现值,周期,利率) | “1000,2,0.03” | 1060 | √ | |
“-1000,-2,-0.03” | 报错 | × | 修改 | ||
复利计算 | 求终值(现值,周期,利率) | “1000,2,0.03” | 1000.60 | √ | |
“-1000,-2,-0.03” | 报错 | × | 修改 | ||
求现值(终值,周期,利率) | “2000,4,0.02” | 1847.69 | √ | ||
“-2000,-4,-0.02” | 报错 | × | 修改 |
关于c语言单元测试在网上找了几个相关网站学习,感觉都很不错,但是非常非常复杂,很多都是自己不懂。
所以最终选择了Vctester,不过目前只学皮毛,日后需加深认识。
分享c语言单元测试的工具: Cunit http://blog.sina.com.cn/s/blog_6c07f2b60100xucf.html
Vctester http://blog.csdn.net/vincetest/article/details/5364760
安装完vctester后先确定好准备就绪,然后在打开vctester后运行测试文件的Debug文件夹下的exe文件,它会自动连接文件。
新 int 的 itest=5为测试的全局变量,当vctester输出5,则说明文件连接成功,可以进行进一步测试。
测试源码:
if(m!=1 && m!=2) { printf("\n\t输入错误!\n"); } else if(m==1) //月投 { system("cls"); printf("\n\t请输入每月投入金额:"); scanf("%lf",&p); printf("\t请输入年利率:"); scanf("%lf",&i); printf("\t请输入周数(年):"); scanf("%d",&n); f=0; f=p*(1+i/12)*(-1+pow(1+i/12,n*12))/(i/12); printf("\n\t年金终值为:%0.2lf\n\n",f); } else if(m==2) //年投 { system("cls"); printf("\n\t请输入每年投入金额:"); scanf("%lf",&p); printf("\t请输入年利率:"); scanf("%lf",&i); printf("\t请输入周数(年):"); scanf("%d",&n); f=0; f=p*(1+i)*(-1+pow(1+i,n))/i; printf("\n\t年金终值为:%0.2lf\n\n",f); }
下面是一些常用的控制语句cse语句表达:
运行结果图:
测试后发现都可以进行成功输出“In true branch”。结构上没有差错。
然后是一些常用的函数定义的测试
然后打算运行一下,发现结果有点看不懂。
总结这次的c语言单元测试:
由于是第一次接触vctester很多东西还是看不懂,后来也查阅的很多资料,结果还是不能解决。。。
然后看了白盒测试方法的这篇博客很多还是不能理解 http://blog.csdn.net/wayne_chan/article/details/1271780(个人感觉涨了知识)。
因为之前在做复利计算时选择的是c语言,而在课堂上没怎么谈及c语言做单元测试,所以只能自己在网上需求办法,花费时间精力较多,但却没有换来很直接的成果。
这次不太完整的单元测试,虽然结果不是完美的,但是还是学到了很多,c语言现在有一些现成的软件比如 visual unit4.0 等无需写测试代码,不过我还是很愿意从基础学起,在以后的学习中多学习,尝试。
修改后github地址:
https://github.com/caijinghang666/first-code.git