白盒测试实验报告-三角形形状-山东大学

 实 验 报 告

  一、实验目的 运用白盒测试中的条件覆盖和判定覆盖检查程序中内部动作或者运行是否符合规范,各部分内容是否按照规定正常运行。

 二 、实验 内容 1 1 、题目

 输入三角形的三条边 , 判断三角形的类型 , 并返回三角形的详细类型 , 同时判断游戏是否结束 , 如果为结束 , 可以继续进行测试 。

 代码 如下:

 :( 被测函数为类 类Trinagle 中的returnType) package 白盒测试; import java.util.Scanner; public class Triangle {

 /**

  * @赵得山

  */

 public static void main(String[] args) {

  String g="y";

  Scanner scan=new Scanner(System.in);

 while(g.equalsIgnoreCase(g))

  {

 System.out.println("请输入三个数字:");

 int[] num=new int[3];

 for(int i=0;i<3;i++)

  num[i]=scan.nextInt();

 //对三条边进行插入排序

 for(int i=2;i>=1;i--)

  for(int j=0;j<i;j++){

  if(num[j]>num[j+1]){

  int temp=num[j];

  num[j]=num[j+1];

  num[j+1]=temp;

 }

  }

 for(int i=0;i<3;i++)

  System.out.print(num[i]+" "+Math.pow(num[i], 2)+"

 ");

 System.out.println(returnType(num[0],num[1],num[2]));

 //是否继续输入测试数据

 System.out.println("是否继续输入数据?y/n");

 if(!scan.next().equals("y"))

 {

  System.out.println("测试结束!");

  System.exit(0);

 }

  }

  }

 /**

  * 返回三角形的类型

  */

 static String returnType(int a,int b,int c){

  String type="";

  if(a+b<=c||b+c<=a||a+c<=b)

  {

  System.out.println("请重新输入测试数据");

 type="不是三角形";

  }

  else if(a==b&&a==c)

  {

 type="等边三角形";

  }

  else if(a==b||a==c||b==c)

  {

 if(Math.pow(a, 2)+Math.pow(b, 2)==Math.pow(c, 2))

  type="等腰直角三角形";

 else if(Math.pow(a, 2)+Math.pow(b, 2)>Math.pow(c, 2))

  type="等腰锐角三角形";

 else if(Math.pow(a, 2)+Math.pow(b, 2)<Math.pow(c, 2))

  type="等腰钝角三角形";

  }

 else if(Math.pow(a, 2)+Math.pow(b, 2)==Math.pow(c, 2))

 type="一般直角三角形";

  else if(Math.pow(a, 2)+Math.pow(b, 2)<Math.pow(c, 2))

 type="一般钝角三角形";

  else if(Math.pow(a, 2)+Math.pow(b, 2)>Math.pow(c, 2))

 type="一般锐角三角形";

  return type;

 } }

 2 2 、测试用例设计

 1 1 )

 程序流程图如下:

 开

 始

  请输入三条边 a、b、c a+b<=c||b+c<=a||a+c<=b

  a==b&&a==c T

  F

  F

  a==b||a==c||b==c F

  Math.pow(a,2)+Math.pow(b, 2)==Math.pow(c, 2) F

  Math.pow(a,2)+Math.pow(b, 2)>Math.pow(c, 2) FT

  Math.pow(a,2)+Math.pow(b, 2)<Math.pow(c, 2) FMath.pow(a,2)+Math.pow(b, 2)==Math.pow(c, 2) FMath.pow(a,2)+Math.pow(b, 2)>Math.pow(c, 2) Math.pow(a,2)+Math.pow(b, 2)<Math.pow(c, 2) F输出三角形类型:+

 结

  束

 T

  T

  T

  FF

 1 1)

 )

 判定覆盖测试用例及测试结果

 输入数据 预期结果 实际结果 测试结果 a=1

  b=1

 c=5 不是三角形 不是三角形 正确 a=5

  b=5

 c=5 等边三角形 等边三角形 正确 a=1

  b=1

 c= 2

 等腰直角三角形 等腰直角三角形 正确 a=4

  b=4

 c=1 等腰锐角三角形 等腰锐角三角形 正确 a=3

  b=3

 c=5 等腰钝角三角形 等腰钝角三角形 正确 a=3

  b=4

 c=5 一般直角三角形 一般直角三角形 正确 a=3

  b=5

 c=6 一般钝角三角形 一般钝角三角形 正确 a=10

 b=11 c=12 一般锐角三角形 一般锐角三角形 正确 注:

 已覆盖所有的判定 , 由于条件太多 , 所以这里未列出判定的路径 ,还请 老师见谅. .

 2 2)

 )

 条件覆 盖测试用例及测试结果

 输入数据 预期结果 实际结果 测试结果 a=1

  b=1

 c=4 不是三角形 不是三角形 正确 a=1

  b=4

 c=1 不是三角形 不是三角形 正确 a=4

  b=1

 c=1 不是三角形 不是三角形 正确 a=1

  b=1

 c=1 等边三角形 等边三角形 正确 a= 2

 b=1

 c=1 等腰直角三角形 等腰直角三角形 正确 a=4

  b=4

 c=1 等腰锐角三角形 等腰锐角三角形 正确 a=3

  b=3

 c=5 等腰钝角三角形 等腰钝角三角形 正确 a=3

  b=4

 c=5 一般直角三角形 一般直角三角形 正确 a=3

  b=5

 c=6 一般钝角三角形 一般钝角三角形 正确 a=10

 b=11 c=12 一般锐角三角形 一般锐角三角形 正确 注:

 已覆盖所有的 条件,所有条件的真假都取了一次, 由于条件太多 , 所以这里未列出判定的路径 ,还请 老师见谅. .

 三 、 总结与体会

  通过这次实验,我对于白盒测试有了更加深刻和直观的认识,因为代码是自己编写的,同时也重新锻炼了自己的动手编码能力。发现的问题,对于判定覆盖 ,有时会忽略条件为“或”时的情况,对于条件覆盖测试,保证每个条件真假都取一次的用例可以有很多种,但是 不一定保证所有的判定都被覆盖,这可能会导致程序的一些逻辑错误无法发现。