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

有哪些场景?

期待的返回值

写测试程序。

运行测试。

测试模块 测试输入 预期结果 运行结果 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. .Net Core 管道机制

    开篇先上一张中间件原理图,帮助大家对管道机制形成一个直观的认识 下面我们实现一个简单的管道机制,以此为例深入理解管道机制的原理 1. 首先定义一个委托,该委托接收一个上下文对象,返回值为Task,代码 ...

  2. Asp.net中使用缓存(cache)

    做了一个时间优化的项目,目的就是缩短程序过程中的时间花费,最后发现了asp.net和asp.net core 中都有缓存工具来进行缓存,以加快访问速度. 找了官方demo来进行分析: ObjectCa ...

  3. Linux下通过进程名查询占用的端口

    1.首先根据名称用ps命令查看进程ID: ps -ef | grep zookeeper jim 10997 1959 0 12月14 pts/2 00:00:01 /usr/lib/jvm/java ...

  4. UWP 应用程序名称本地化以及商店显示名称本地化

    大家应该都知道,在做多语言的时候,我们一般会让App名字也会随着语言变化而本地化. 比如我的App微识别 https://www.microsoft.com/store/productId/9PDSN ...

  5. JavaScript——引用类型之数组

    前言 之前本菜打算在写完基本类型后写引用类型Object的,因为Object是引用类型的基础,其他的引用类型也是以Object为根本.只是关于对象的基本认识与简单操作确实可写的不多,打算之后与原型.原 ...

  6. 阿里云rds 磁盘空间满导致实例锁定

    1.RDS 数据日志已经快满了, 导致数据库不能写入,只读. 2. Binlog日志的保存及清理规则 MySQL实例的空间内默认清理binlog日志的规则如下: 实例空间内默认会保存最近18个小时内的 ...

  7. Python学习之路:NumPy初识

    import numpy as np; //一维NumPy数组 myArray = np.array([1,2,3,4]); print(myArray); [1 2 3 4] //打印一维数组的形状 ...

  8. 第一阶段·Linux运维基础-第1章·Linux基础及入门介绍

    01-课程介绍-学习流程 02-服务器硬件-详解 03-服务器核心硬件-服务器型号-电源-CPU 01-课程介绍-学习流程 1.1. 光看不练,等于白干: 1.2 不看光练,思想怠慢: 1.3 即看又 ...

  9. 聊聊前段插件之Datatables

    在web开发过程中表格数据展示是一个很常见的功能,而且用户对其要求也比较高,性能.易用性等.今天我推荐一款利器给大家——Datatables:Datatables中文网. 一.介绍 Datatable ...

  10. 【HDU】3555【Bomb】

    题目链接 此题题意就是给你T个n,找出n以内的包含49的数的个数. 很裸的一题数位dp. 直接dp包含49的数的个数有点麻烦,所以我先算出不包含49的数的个数,然后用n+1来减(因为计算不包含49的数 ...