首页 > 代码库 > 第二次作业+105032014001

第二次作业+105032014001

1、测试帖链接:http://www.cnblogs.com/gaohaofeng/p/6607604.html

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

   (1)对a,b,c三条边大小的排序意义不大,对等腰三角形的判断代码需要改进;

 (2)可以增加对输入类型的判断,以免输入浮点数,字符等类型数据时程序奔溃;

3、修正后的代码清单

import java.util.Scanner;
public class Triangle{
    public static void main(String[] args) {
        while(true){
        System.out.println("请输入三角形的三条边:");
        try {
        int a,b,c;
        Scanner input=new Scanner(System.in);
        a=input.nextInt();
        b=input.nextInt();
        c=input.nextInt();
        String str=triangle(a,b,c);
        System.out.println(str);
        } catch (Exception e) {
            // TODO: handle exception
          System.out.println("请确保输入的边为整数!");    
          }
        }
        }
        
        public static String triangle(int a,int b,int c){
            String result;
            if ((a>=1&&a<=100)&&(b>=1&&b<=100)&&(c>=1&&c<=100)) {

            if ((a+b>c)&&(a+c>b)&&(b+c>a)) {
                if (a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a) {
                    result="该三角形为直角三角形.";
                } else if (a==b&&b==c&&a==c) {
                    result="该三角形为等边三角形.";
                } else if (a==b||a==c||b==c) {
                    result="该三角形为等腰三角形.";
                } else {
                    result="该三角形为一般三角形.";
                }
            } else {
                result="不能构成三角形.";
            }
        } else {
            result="边的值不在范围内!";
        }
            return result;

    }
}

4、修正后心得体会:

  • 介绍自己代码做了怎样的变更
  • 分析出现缺陷的原因
  • 对这部分教材内容的学习心得

变更:对于测试人员提出的输入等腰三角形不能得出正确答案,我将测试人员的测试用例输入后能得出“该三角形为等腰三角形”;当输入的数据为浮点数,字符等类型时,会输出“请确保输入的边为整数!”,并不会程序崩溃;而且我也并没有对三条边进行排序。我觉得可能是测试人员测错了人或者拷贝代码时出了什么问题。基于以上理由,我只修改了两点,一是去除了等腰直角三角形的判断,二是将最后一个“不能构成三角形”改成了“边的值不在范围内”。

原因:(1)当初设计代码时忘了考虑当输入的边为整数时,无论如何都不会构成等腰直角三角形

        (2)直接复制黏贴没有考虑清楚

心得:白盒测试可以检测代码中的每条分支和路径,揭示隐藏在代码中的错误,对代码的测试比较彻底,但无法检测遗漏的路径。语句覆盖能使被测程序的每一个语句至少执行一次,但其覆盖标准无法发现判定中逻辑运算的错误。判定覆盖具有比语句覆盖更强的测试能力,但也容易忽略每个条件的取值情况,遗漏部分测试路径。所以要综合使用各种语句覆盖方法,才能得出更精确的测试结果。

第二次作业+105032014001