白盒测试

白盒测试实例之一——需求说明

三角形的问题在很多软件测试的书籍中都出现过,问题虽小,五脏俱全,是个很不错的软件测试的教学例子。本文借助这个例子结合教学经验,从更高的视角来探讨需求分析、软件设计、软件开发与软件测试之间的关系与作用。

  题目:根据下面给出的三角形的需求完成程序并完成测试:

  一、输入条件:

  1、 条件1:a+b>c

  2、 条件2:a+c>b

  3、 条件3:b+c>a

  4、 条件4:0<a<200

  5、 条件5:0<b<200

  6、 条件6:0<c<200

  7、 条件7:a==b

  8、 条件8:a==c

  9、 条件9:b==c

  10、条件10:a2+b2==c2

  11、条件11:a2+ c2== b2

  12、条件12:c2+b2== a2

  二、输出结果:

  1、不能组成三角形

  2、等边三角形

  3、等腰三角形

  4、直角三角形

  5、一般三角形

  6、某些边不满足限制

白盒测试实例之二——答案

很多初学者一看到这个需求(详见白盒测试实例之一——需求说明收藏),都觉得很简单,然后立刻就开始动手写代码了,这并不是一个很好的习惯。如果你的第一直觉也是这样的,不妨耐心看到文章的最后。

  大部分人的思路:

  1、首先建立一个main函数, main函数第一件事是提示用户输入三角形的三边,然后获取用户的输入(假设用户的输入都是整数的情况),用C语言来写,这一步基本上不是问题(printf和scanf),但是要求用java来写的话,很多学生就马上遇到问题了,java5.0及之前的版本不容易获取用户的输入。

  点评:这样的思路做出来的程序只能通过手工方式来测试所有业务逻辑,而且这个程序只能是DOS界面版本了,要是想使用图形化界面来做输入,就得全部写过代码。

  2、业务处理流程的思路用流程图表示如下:

  

白盒测试

  3、C语言代码:

     1. #include<stdio.h>
     2. void main()
     3. {
     4.     int a, b, c;
     5.     printf("please enter three integer:");
     6.     scanf("%d%d%d", &a, &b, &c);
     7.     if(0<a && a<200 && 0<b && b<200 && 0<c && c<200)
     8.     {
     9.         if(a+b>c && a+c>b && c+b>a)
    10.         {
    11.             if(a==b && b==c && a==c)   //这里可以省掉一个判断
    12.             {
    13.                 printf("1是等边三角形");
    14.             }
    15.             else
    16.             {
    17.                 if(a==b || b==c || a==c)
    18.                 {
    19.                     printf("2是等腰三角形");
    20.                 }
    21.                 else
    22.                 {
    23.                     if(a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a)
    24.                     {
    25.                         printf("3是直角三角形");
    26.                     }
    27.                     else
    28.                     {
    29.                         printf("4是一般三角形");
    30.                     }
    31.                 }
    32.             }
    33.         }
    34.         else
    35.         {
    36.             printf("5不能组成三角形");
    37.         }
    38.     }
    39.     else
    40.     {
    41.         printf("6某些边不满足限制");
    42.     }
    43. }
 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyxsjp.html