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)直接复制黏贴没有考虑清楚
心得:白盒测试可以检测代码中的每条分支和路径,揭示隐藏在代码中的错误,对代码的测试比较彻底,但无法检测遗漏的路径。语句覆盖能使被测程序的每一个语句至少执行一次,但其覆盖标准无法发现判定中逻辑运算的错误。判定覆盖具有比语句覆盖更强的测试能力,但也容易忽略每个条件的取值情况,遗漏部分测试路径。所以要综合使用各种语句覆盖方法,才能得出更精确的测试结果。
时间: 2024-11-13 01:22:42