第二次作业+105032014117

1.测试帖链接

 

http://www.cnblogs.com/youfanxian/p/6607540.html

 

2.测试人员提出的问题、发现的缺陷

 

没有对非整数输入进行判断。用例1,2可以明显看出程序不支持字符的输入,并且会使程序崩溃

建议输入条件判断语句判断是否非数字,否则会造成程序崩溃重复执行代码

 

3.修正后的代码清单

 

 1 package Test01;
 2 import java.util.Scanner;
 3 
 4 public class Test01 {
 5      public static void main(String[] args) {
 6          String[] num=new String[3];
 7          Scanner input = new Scanner(System.in);
 8          boolean flag=true;
 9          while(flag){
10          System.out.print("请分别输入三种手机配件的销售情况:");
11          num[0] = input.next();
12          num[1] = input.next();
13          num[2] = input.next();
14          int headphone, shell, protector;
15          if (isNumeric(num[0]) && isNumeric(num[1]) && isNumeric(num[2]))
16          {
17              headphone = change(num[0]);
18              shell = change(num[1]);
19              protector = change(num[2]);
20              commission(headphone, shell, protector);
21          }
22          else
23          {
24               System.out.println("输入数量不满足要求,返回重新输入");
25          }}
26      }
27      public static boolean isNumeric(String str){
28              for (int i = str.length();--i>=0;){  
29                  if (!Character.isDigit(str.charAt(i))){
30                      return false;
31                }
32             }
33              return true;
34           }
35      public static int change(String str)
36      {
37          int a=Integer.parseInt(str);
38          return a;
39      }
40      static float  commission(int headphone, int shell, int protector)
41      {
42          float paymoney = 0;
43          int total = headphone * 80 + shell * 10 + protector * 8;
44          if (headphone < 0 || shell < 0 || protector < 0)
45          {
46              System.out.println("输入数量不满足要求”,返回重新输入");
47          }
48          else if (total < 1000)
49          {
50               paymoney = (float) (total*0.1);
51              System.out.println("佣金为:"+paymoney);
52          }
53          else if (total >= 1000 && total <=1800)
54          {
55               paymoney = (float) ((total - 1000)*0.15 + 100);
56              System.out.println("佣金为:"+paymoney);
57          }
58          else if (total>1800)
59          {
60               paymoney = (float) ((total - 1800)*0.2 + 220);
61              System.out.println("佣金为:"+paymoney);
62          }
63          return paymoney;
64      }
65 }

4.修正后心得体会

针对缺陷增加了两个函数,一个用来检查输入字符串是否为数字,一个用来将字符串转化为整形。

缺陷原因在于对问题分析的不够严谨,没有考虑到用户的非法输入。

白盒测试并不是简单的按照代码设计用例,而是需要根据不同的测试需求,结合不同的测试对象,使用适合的方法进行测试。因为对于不同复杂度的代码逻辑,可以衍生出许多种执行路径,只有适当的测试方法,才能帮助我们从代码的迷雾森林中找到正确的方向。

语句覆盖主要特点:语句覆盖是最起码的结构覆盖要求,语句覆盖要求设计足够多的测试用例,使得程序中每条语句至少被执行一次。

条件覆盖主要特点:条件覆盖要求设计足够多的测试用例,使得判定中的每个条件获得各种可能的结果,即每个条件至少有一次为真值,有一次为假值。

路径覆盖主要特点:设计足够的测试用例,覆盖程序中所有可能的路径。

posted @ 2017-03-27 16:25  陈俊超  阅读(270)  评论(0编辑  收藏  举报