测试要求:
对我们和复利计算程序,写单元测试。
有哪些场景?
期待的返回值
写测试程序
运行测试
场景测试:
1、测试输入值是否为空
2、测试输入值是否为负数
3、输出结果是否正确?
期待值:
1、提示输入错误
2、提示输入错误,重新输入
3、提示输出正确
功能模块 | 数据类型 | 具体数据 | 运行结果 |
复利计算 | (本金,利率,年限) | (100,0.03,5) | 115.9274 |
测试输入值为空 | (本金,利率,年限) | (0,0,0) | 错误 |
测试输入值为负数 | (本金,利率,年限) | (-100,-0.03,-5) | 错误 |
测试输出结果 | (本金,利率,年限) | (100,0.03,5) | 正确 |
........ | ..... | ..... | ...... |
运行结果:
1 #include<stdio.h> 2 #include<math.h> 3 void Jisuan(); 4 double p,i,f; 5 int n; 6 7 void Danli() 8 { 9 while(1) 10 { 11 printf("请输入本金:"); 12 scanf("%lf",&p); 13 if(p<=0) 14 printf("本金输入错误,请重新输入!\n"); 15 else 16 break; 17 } 18 while(1) 19 { 20 printf("请输入年利率(百分比):"); 21 scanf("%lf",&i); 22 if(i<=0 || i>=1) 23 printf("年利率输入错误,请重新输入!\n"); 24 else 25 break; 26 } 27 while(1) 28 { 29 printf("请输入存储年限:"); 30 scanf("%d",&n); 31 if(n<=0) 32 printf("存储年限输入错误,请重新输入!\n"); 33 else 34 break; 35 } 36 f = p+p*i*n; 37 printf("单利终值为:%0.2lf\n",f); 38 } 39 40 double Fuli() 41 { 42 43 while(1) 44 { 45 printf("请输入本金:"); 46 scanf("%lf",&p); 47 if(p<=0) 48 printf("本金输入错误,请重新输入!\n"); 49 else 50 break; 51 } 52 while(1) 53 { 54 printf("请输入年利率(百分比):"); 55 scanf("%lf",&i); 56 if(i<=0 || i>=1) 57 printf("年利率输入错误,请重新输入!\n"); 58 else 59 break; 60 } 61 while(1) 62 { 63 printf("请输入存储年限:"); 64 scanf("%d",&n); 65 if(n<=0) 66 printf("存储年限输入错误,请重新输入!\n"); 67 else 68 break; 69 } 70 f = p*(pow(1+i,n)); 71 printf("复利终值为:%lf\n",f); 72 return(f); 73 } 74 75 void Need() 76 { 77 while(1) 78 { 79 printf("请输入目标金额:"); 80 scanf("%lf",&f); 81 if(f<=0) 82 printf("目标金额输入错误,请重新输入!\n"); 83 else 84 break; 85 } 86 while(1) 87 { 88 printf("请输入年利率(百分比):"); 89 scanf("%lf",&i); 90 if(i<=0 || i>=1) 91 printf("年利率输入错误,请重新输入!\n"); 92 else 93 break; 94 } 95 while(1) 96 { 97 printf("请输入目标年限:"); 98 scanf("%d",&n); 99 if(n<=0) 100 printf("目标年限输入错误,请重新输入!\n"); 101 else 102 break; 103 } 104 p = f/pow(1+i,n); 105 printf("需要投入的本金为:%0.2lf\n",p); 106 } 107 108 void Year() 109 { 110 while(1) 111 { 112 printf("请输入本利和:"); 113 scanf("%lf",&f); 114 if(f<=0) 115 printf("本利和输入错误,请重新输入!\n"); 116 else 117 break; 118 } 119 while(1) 120 { 121 printf("请输入年回报率(百分比):"); 122 scanf("%lf",&i); 123 if(i<=0 || i>=1) 124 printf("年回报率输入错误,请重新输入!\n"); 125 else 126 break; 127 } 128 while(1) 129 { 130 printf("请输入本金:"); 131 scanf("%lf",&p); 132 if(p<=0) 133 printf("本金输入错误,请重新输入!\n"); 134 else 135 break; 136 } 137 for(n=1;;n++) //穷举法求满足的计息期数 138 { 139 if((p*(pow((1+i),n)))>=f) 140 { 141 printf("最低年限为:%d\n\n",n); 142 break; 143 } 144 } 145 } 146 147 void YearRate() 148 { 149 while(1) 150 { 151 printf("请输入本利和:"); 152 scanf("%lf",&f); 153 if(f<=0) 154 printf("本利和输入错误,请重新输入!\n"); 155 else 156 break; 157 } 158 while(1) 159 { 160 printf("请输入本金:"); 161 scanf("%lf",&p); 162 if(p<=0) 163 printf("本金输入错误,请重新输入!\n"); 164 else 165 break; 166 } 167 while(1) 168 { 169 printf("请输入目标年限:"); 170 scanf("%d",&n); 171 if(n<=0) 172 printf("目标年限输入错误,请重新输入!\n"); 173 else 174 break; 175 } 176 i = pow((f/p),1.0/n)-1; 177 printf("年回报率为:%0.2lf\n",i); 178 } 179 180 void Getgains() 181 { 182 while(1) 183 { 184 printf("请输入每年定投金额:"); 185 scanf("%lf",&p); 186 if(p<=0) 187 printf("每年定投金额输入错误,请重新输入!\n"); 188 else 189 break; 190 } 191 while(1) 192 { 193 printf("请输入年收益(百分比):"); 194 scanf("%lf",&i); 195 if(i<=0 || i>=1) 196 printf("年收益输入错误,请重新输入!\n"); 197 else 198 break; 199 } 200 while(1) 201 { 202 printf("请输入定投年数:"); 203 scanf("%d",&n); 204 if(n<=0) 205 printf("定投年数输入错误,请重新输入!\n"); 206 else 207 break; 208 } 209 f = p*(1+i)*(pow((1+i),n)-1)/i; 210 printf("基金定投收益为:%0.2lf\n",f); 211 } 212 213 void Text1(double f) //测试复利计算 214 { 215 double a = 115; 216 double n =(int)f; 217 if(n==a) 218 printf("正确\n"); 219 else 220 printf("错误\n"); 221 } 222 223 main() 224 { 225 226 int num=0; 227 double f; 228 while(1){ 229 printf("\t\t\t|************复利计算器************|\n"); 230 printf("\t\t\t|------------1.单利----------------|\n"); 231 printf("\t\t\t|------------2.复利----------------|\n"); 232 printf("\t\t\t|------------3.计算本金------------|\n"); 233 printf("\t\t\t|------------4.年限估算------------|\n"); 234 printf("\t\t\t|------------5.估算年回报率--------|\n"); 235 printf("\t\t\t|------------6.定额定投收益计算----|\n"); 236 printf("\t\t\t|----------------------------------|\n"); 237 printf("请输入选择:"); 238 scanf("%d",&num); 239 switch(num) 240 { 241 case 1: 242 Danli(); 243 break; 244 case 2: 245 f=Fuli(); 246 Text1(f); 247 break; 248 case 3: 249 Need(); 250 break; 251 case 4: 252 Year(); 253 break; 254 case 5: 255 YearRate(); 256 break; 257 case 6: 258 Getgains(); 259 break; 260 default: 261 return 0; 262 } 263 } 264 }