三角形设计测试用例的问题在面试的时候经常遇到。
假设输入三个整数a、b、c分别作为三边的边长构成三角形。通过程序判定所构成的三角形的类型,当此三角形为一般三角形、等腰三角形及等边三角形时!要求画出程序的流程图和时序图,并且用自己熟悉的一种语言实现这个功能!我在网上搜索了一下发现已经有好多文章,不过发现很少有写出程序的,其实用java语言也可以实现,流程图和程序图参考的网上的。 三角形设计测试用例的问题在面试的时候经常遇到。 假设输入三个整数a、b、c分别作为三边的边长构成三角形。通过程序判定所构成的三角形的类型,当此三角形为一般三角形、等腰三角形及等边三角形时!要求画出程序的流程图和时序图,并且用自己熟悉的一种语言实现这个功能!我在网上搜索了一下发现已经有好多文章,不过发现很少有写出程序的,其实用java语言也可以实现,流程图和程序图参考的网上的。 程序如下:package sanj;/** * * @author ltesting.net */import java.io.*;class sanj{ public static int a,b,c; public static void main(String arg[]) throws IOException{ try{ BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in)); //接收键值System.out.println("输入三边值,每个值输入后回车");System.out.println("请输入:");a=Integer.valueOf(stdin.readLine());b=Integer.valueOf(stdin.readLine());c=Integer.valueOf(stdin.readLine());}catch(IOException e){ System.out.println("出现异常!");System.exit(0);}if(a+b<c || a+c<b || b+c<a){ System.out.println("你输入的不能构成三角形");}if(a==b || a==c || b==c){ if(a==b && b==c) System.out.println("等边三角形");else System.out.println("等腰三角形");}else System.out.println("一般三角形");}} 【解】 第一步:确定测试策略。在本例中,对被测程序的功能有明确的要求,即: (1)判断能否组成三角形; (2)识别等边三角形; (3)识别等腰三角形; (4)识别任意三角形。因此可首先用黑盒法设计测试用例,然后用白盒法验证其完整性,必要时再进行补充。 第二步:根据本例的实际情况,在黑盒法中首先可用等价分类法划分输入的等价类,然后用边界值分析法和猜错法作补充。 等价分类法: 有效等价类 输入3个正整数: (1)3数相等 (2)3数中有2个数相等,比如AB相等 (3)3数中有2个数相等,比如BC相等 (4)3数中有2个数相等,比如AC相等 (5)3数均不相等 (6)2数之和不大于第3数,比如最大数是A (7)2数之和不大于第3数,比如最大数是B (8)2数之和不大于第3数,比如最大数是C 无效等价类: (9)含有零数据 (10)含有负整数 (11)少于3个整数 (12)含有非整数 (13)含有非数字符 边界值法: (14)2数之和等于第3数 猜错法: (15)输入3个零 (16)输入3个负数 第三步:提出一组初步的测试用例,如下表所示: 第四步:用白盒法验证第三步产生的测试用例的充分性。结果表明,上表中的前8个测试用例,已能满足对被测程序图的完全覆盖,不需要再补充其他的测试用例。