(2)转变一下思路:给定三个整数,然后用一个函数来判断这三个整数有几个相等,返回相等的个数,如果返回值等于3,那么它是等边三角形,如果返回值是2,那么它是等腰三角形,否则,它是一般三角形(如果不是直角三角形的话)。
4、条件10:a2+b2==c2 条件11:a2+ c2== b2 条件12:c2+b2== a2
这三个条件的处理方式有两种:
(1)跟前面三组分析一样,把相同的逻辑提取到一个函数中,然后三次调用。
(2)根据直角三角形的特点:斜边是最长的,所以我们可以事先写一个函数来找到最长的边,然后把它赋值给c,这样处理之后,只需要一次调用判定(a2+b2==c2)的函数了。
白盒测试实例之四——程序设计关键字:白盒测试
程序设计对于软件的质量和软件实施过程的难易程度起着至关重要的作用。好的设计,即使聘用没什么经验的开发人员都很容易产生出高质量的代码出来;而差的设计,即使是经验很丰富的开发人员也很容易产生缺陷,特别是可重用性、可测试性、可维护性、可扩展性等方面的缺陷。
经过以上的分析,下面来看一下如何设计。在下图中,每个方框都使用一个函数来实现,为了跟用户界面分开,最顶上的函数不要写在main函数中。
把思路用流程图的方式表达出来,不用停留在脑袋里:
具体的函数的调用关系图:
复杂模块triangleType的流程图:
白盒测试实例之五——编码
1、Triangle.h
1. /*
2. * Copyright (c) 2008, 胡添发(hutianfa@163.com)
3. *
4. * 三角形类型判断
5. *
6. */
7.
8. #include<stdio.h>
9. #include<String.h>
10.
11. /*
12. * 判断一个整数是否在(0, 200)区间内
13. * 返回值:true-否; false-是
14. */
15. bool isOutOfRange(int i);
16.
17. /*
18. * 判断三条边是否合法(即:判断三条边都在合法的范围内)
19. * 返回值:true-是; false-否
20. */
21. bool isLegal(int a, int b, int c);
22.
23. /*
24. * 判断两条边之和是否大于第三边
25. * 返回值:true-是; false-否
26. */
27. bool isSumBiger(int a, int b, int c);
28.
29. /*
30. * 判断三条边是否能够组成三角形
31. * 返回值:true-是; false-否
32. */
33. bool isTriangle(int a, int b, int c);
34.
35. /*
36. * 判断两条边是否相等
37. * 返回值:true-是; false-否
38. */
39. bool isEquals(int a, int b);
40.
41. /*
42. * 求三角形有几条边相等
43. * 返回值:相等边的数量
44. */
45. int howManyEquals(int a, int b, int c);
46.
47. /*
48. * 判断是否满足两边平方之和是否等于第三边的平方
49. *
50. */
51. bool isPowerSumEquals(int a, int b, int c);
52.
53. /*
54. * 判断第一个数是否比第二个数大
55. */
56. bool isGreaterThan(int a, int b);
57.
58. /*
59. * 判断是否是直角三角形
60. *
61. */
62. bool isRightRriangle(int a, int b, int c);
63.
64. /*
65. * 判断三角形的类型,返回值:
66. * 1、不能组成三角形
67. * 2、等边三角形
68. * 3、等腰三角形
69. * 4、直角三角形
70. * 5、一般三角形
71. * 6、某些边不满足限制
72. */
73. int triangleType(int a, int b, int c);
白盒测试实例之六——单元测试的步骤