对我们和复利计算程序,写单元测试。

有哪些场景?

期待的返回值

写测试程序。

运行测试。

测试模块 测试输入 预期结果 运行结果 bug跟踪
计算终值 (本金,年限,利率) 终值    
1 (1000,10,0,.3) 13785.85 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) 提示输入错误,重新输入 1000.00 已修改,弹出提示:输入错误!!重新输入
计算本金 (年限,利率,终值) 本金    
1 (10,0.3,30000) 7500.00 7500.00  
2 (0,0.3,30000) 提示输入错误,重新输入 30000.00 已修改,弹出提示:输入错误!!重新输入
3 (-10,0.3,30000) 提示输入错误,重新输入 -15000.00 已修改,弹出提示:输入错误!!重新输入
4 (10,0,30000) 提示输入错误,重新输入 30000.00 已修改,弹出提示:输入错误!!重新输入
5 (10,0.3,-3000) 提示输入错误,重新输入 -7500.00 已修改,弹出提示:输入错误!!重新输入
计算时间 (本金,利率,终值) 时间    
1 (1000,0.3,3000) 4 4  
2 (0,0.3,3000) 提示输入错误,重新输入 1 已修改,弹出提示:输入错误!!重新输入
3 (-1000,0.3,3000) 提示输入错误,重新输入 -1 已修改,弹出提示:输入错误!!重新输入
4 (1000,0,3000) 提示输入错误,重新输入 1 已修改,弹出提示:输入错误!!重新输入
5 (1000,-0.3,3000) 提示输入错误,重新输入 -3 已修改,弹出提示:输入错误!!重新输入
计算利率 (本金,年限,终值) 利率    
1 (1000,10,30000) 0.41 0.41  
2 (0,10,30000) 提示输入错误,重新输入 乱码 已修改,弹出提示:输入错误!!重新输入
3 (-1000,10,30000) 提示输入错误,重新输入 乱码 已修改,弹出提示:输入错误!!重新输入
4 (1000,0,30000) 提示输入错误,重新输入 乱码 已修改,弹出提示:输入错误!!重新输入
5 (1000,10,0) 提示输入错误,重新输入 -1.00 已修改,弹出提示:输入错误!!重新输入
计算等额本息还款 (贷款,年限,利率) 本息还款    
1 (10000,10,0.3) 15.04 13.04  
2 (0,10,0.3) 提示输入错误,重新输入 0.00 已修改,弹出提示:输入错误!!重新输入
3 (10000,0,0.3) 提示输入错误,重新输入 乱码 已修改,弹出提示:输入错误!!重新输入
4 (10000,10,0) 提示输入错误,重新输入 乱码 已修改,弹出提示:输入错误!!重新输入
5 (-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*请重新输入存储时间(年):");

getchar();

} ;

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(scanf("%d",&sel)!=1||sel<0||sel>7)//防止输入的是字符以及输入的数字不是整数0-7

{

printf("\t输入错误!!!\n\n\t请重新选择:");

while(getchar() != '\n');         //  处理回车键

}

运行结果:

通过这次测试,我发现了以上的问题,也对代码做了修改,但我知道我目前的程序还是有问题的,我会继续测试,继续完善代码。

复利计算测试(C语言)的更多相关文章

  1. 复利计算4.0单元测试(c语言)

    ——————————复利计算程序单元测试报告—————————— ————————————4.0 单元测试—————————————— ————————————————要求—————————————— ...

  2. 简单复利计算c语言实现

    #include<stdio.h>#include<math.h>float i; //利率 float p; //期初金额 float F; //未来值 int n; //期 ...

  3. 复利计算--结对项目<04-11-2016> 1.0.0 lastest 阶段性完工~

    结对项目:Web复利计算 搭档博客地址:25江志彬  http://www.cnblogs.com/qazwsxedcrfv/ 个人摘要: (2016-04-09-12:00)补充:之前传送门没做好, ...

  4. 复利计算--4.0 单元测试之JAVA版-软件工程

    复利计算--4.0 单元测试-软件工程 前言:由于本人之前做的是C语言版的复利计算,所以为了更好地学习单元测试,于是将C语言版的复利计算修改为JAVA版的. 一.主要的功能需求细分: 1.本金为100 ...

  5. 复利计算5.0(改成Java版本)与 单元测试

    //由于C语言版本不方便单元测试,所以改成了java版本,部分代码如下:import java.util.Scanner; public class FuLi{ public static void ...

  6. <更新日期03-31-2016> 复利计算5.0 <已改进>

    作业要求: 1.客户说:帮我开发一个复利计算软件. 完成复利公式计算程序,并成功PUSH到github上. 客户提出: 2.如果按照单利计算,本息又是多少呢? 3.假如30年之后要筹措到300万元的养 ...

  7. 测试c语言函数调用性能因素之测试三

    函数调用:即调用函数调用被调用函数,调用函数压栈,被调用函数执行,调用函数出栈,调用函数继续执行的一个看似简单的过程,系统底层却做了大量操作. 操作: 1,               调用函数帧指针 ...

  8. 简单复利计算java板

    一.要求: 1.客户说:帮我开发一个复利计算软件. 2如果按照单利计算,本息又是多少呢? 3.假如30年之后要筹措到300万元的养老金,平均的年回报率是3%,那么,现在必须投入的本金是多少呢? 4.利 ...

  9. 复利计算软件v3

    #include <windows.h> #include<stdio.h> #include<math.h> void count(){ int a,b; dou ...

随机推荐

  1. c#使用 HtmlAgilityPack来进行抓取和解析来获得table表格信息

    项目上要用到抓取网页,最后选用了HtmlAgilityPack来进行. 官网地址:https://html-agility-pack.net/,可以看一下 基础的: // From File var ...

  2. 很详细的SpringBoot整合UEditor教程

    很详细的SpringBoot整合UEditor教程 2017年04月10日 20:27:21 小宝2333 阅读数:21529    版权声明:本文为博主原创文章,未经博主允许不得转载. https: ...

  3. Security1:登录和用户

    授予权限的思路,可以用一句话来概括,那就是:授予 Principal 操作 Securable 的 Permission,在多数文档中,把 Principal 翻译为安全主体,Securable翻译为 ...

  4. CentOS 下 SonarQube 6.7 的下载、配置、问题排查

    CentOS 下 SonarQube 6.7 的下载.配置.问题排查 系统: CentOS 7 x86_64 SonarQube 版本: 6.7.3 Java 版本: 1.8.0_171 MySQL ...

  5. react学习(一)组件

    react这个东西,说实话,我刚刚接触一个月不到.感觉这玩意很颠覆我以前的前端开发 比方说,可能,整个项目,并没有一个html文件 比方说,以前我们写前端代码,分的清清楚楚,html里面就是放dom, ...

  6. 三种UIScrollView嵌套实现方案

    背景 随着产品功能不断的迭代,总会有需求希望在保证不影响其他区域功能的前提下,在某一区域实现根据选择器切换不同的内容显示. 苹果并不推荐嵌套滚动视图,如果直接添加的话,就会出现下图这种情况,手势的冲突 ...

  7. CentOS7安装VMware Tools

    安装依赖包 [root@localhost ~]# yum -y install perl gcc gcc-c++ make cmake kernel kernel-headers kernel-de ...

  8. kubeadm源码修改证书时间 -1.13

    编译后~ 链接:https://pan.baidu.com/s/1ofLX1Sv0ZF2yjkJdqf-6rw 提取码:cnbd 已统一与CA证书都是10年 已测试 适用于k8s 1.10 至 1.1 ...

  9. sql语句(Mysql数据库)

    Mysql数据库的sql语句: 一.基本操作 1.连接数据库 mysql -uroot -proot -hlocalhost -P3306 (-u表示用户名,-p密码,-h主机,-P端口号) 2.选择 ...

  10. centos 切换用户显示bash-4.2$,不显示用户名路径的问题

    原文链接: http://blog.csdn.net/testcs_dn/article/details/70482468