三角形测试用例

标签:
测试三角形 |
输入三角形的三条边,问内否构成一个三角形(不考虑退化三角形,即面积为0的三角形),假如能构成三角形,判断这个三角形的类型(直角三角形、锐角三角形、钝角三角形、等边三角形、等腰三角形等等)。
函数声明:byte triangle_type(int a,int b,int c); //注:C语言中没有byte类型,此处的byte类型代表一个字节,与C语言中的unsigned char类型是对应的,可以通过类型定义语句来定义此byte类型:typedef unsigned char byte;
问题1:如何用byte类型表示不同的三角形类型(包括不是三角形)?
问题2:假如你是测试工程师,你将怎样设置测试用例,来测试该函数?
问题1的解决方案:问题分析:1、一个byte包含8位(2的8次方等于256),完全可以表示所有三角形的类型。2、但是,其中“直角三角形、钝角三角形、锐角三角形”这一类与“等腰三角形、等边三角形、非等腰三角形”这一类有重叠,所以不能采用单纯的某一数值代表直角三角形、另一数值代表等腰三角形这种方法表示三角形类型,应考虑其他更巧妙一点的方法来表示三角形类型。3、考虑到非三角形、直角三角形、锐角三角形、钝角三角形、等腰三角形、等边三角形总共是6类,小于一个byte的bit数8,所以可以用一个bit代表上述六中类型中的一种(此位为1则表示是这种类型,否则表示不是这种类型)(两种类型可以同时出现,例如直角+等腰,可以表示为10010001),剩下两个bit位保留做其他用途(例如表示之所以不是三角形是因为两边和小于第三边)。具体方案可以如下(5、6两个bit做保留使用):
http://s3/middle/8b745a5ftcb9bbd8de692&690
问题2的解决方案:问题分析:1、测试一般可以从以下几个方面入手:功能测试、性能测试、用户体验、抗破坏性测试、安全测试等。2、对于一个函数的测试设计到功能测试、性能测试和用户体验三个方面。3、通常功能测试可以分为以下三个方面:正确输入的测试、错误输入的测试、对边界值的测试。4、对函数的性能测试需要做对比,与相同功能的其他函数做时间负责度和空间负责度的对比。5、一个函数的用户体验主要看它像用户提供的函数调用接口用起来是否方便。此处重点进行功能测试,针对这个题目,可以设计以下的设计用例:
预期输入:三个代表边长的整数(此处考虑的只是整数的情况)。
预期输出:返回byte类型的值,表示三个输入的边长是否能构成三角形,以及假如能构成三角形,那么此三角形的类型(直角、钝角、锐角、等边、等腰)。
正确输入的情况(要函盖所有类型):
http://s6/middle/8b745a5ftcb9c94cde995&690
注:这只是个例子,在真正测试的时候应该把输入边长的顺序变化一下作为新的测试用例,例如(4,1,2)的另一个顺序(1,2,3)也作为测试用例。
错误输入的情况:
http://s12/middle/8b745a5ftcb9ca200d47b&690
边界附近输入的情况(假设 1=<a,b,c<=100):
http://s16/middle/8b745a5ftcb9ca482161f&690
注:中间值一般不会产生错误,边界值有时由于<100(或<=100)没有设置好而产生错误。此处只是举例说明,真正测试的时候,边界值测试用例设计应该遵从一定的规则,例如每个边界处取其自身和其最近的一个数(1和2,100和99),然后由于是三个边长,所以要分“一个边长取边界附近值,另外两个去非边界附近值”、“两个边长取边界附近值,另一个边长取非边界附近值”、“三个边长都去边长附近值”三种情况来设计多个测试用例。