实验三 软件黑盒测试使用测试界的一个古老例子---三角形问题来进行等价类划分。输入三个整数a、b和c分别作为三角形的三条边,通过程序判断由这三条边构成的三角形类型是等边三角形、等腰三角形、一般三角形或非三角形(不能构成一个三角形)。其中要求输入变量a、b、c均为整数值。1) 用编程语言实现上述功能def classify_triangle(a, b, c): # 检查输入是否为整数 if not (isinstance(a, int) and isinstance(b, int) and isinstance(c, int)): return "输入必须为整数" # 检查边长是否大于0 if a <= 0 or b <= 0 or c <= 0: return "边长必须大于0" # 检查是否能构成三角形 if (a + b <= c) or (a + c <= b) or (b + c <= a): return "非三角形" # 判断三角形类型 if a == b == c: return "等边三角形" elif a == b or a == c or b == c: return "等腰三角形" else: # 检查是否为直角三角形(可选) sides = sorted([a, b, c]) if sides[0]**2 + sides[1]**2 == sides[2]**2: return "直角三角形" return "一般三角形"# 测试示例print(classify_triangle(3, 3, 3)) # 等边三角形print(classify_triangle(3, 3, 5)) # 等腰三角形print(classify_triangle(3, 4, 5)) # 直角三角形print(classify_triangle(2, 3, 4)) # 一般三角形print(classify_triangle(1, 1, 3)) # 非三角形print(classify_triangle(-1, 2, 3)) # 边长必须大于0print(classify_triangle(1.5, 2, 3)) # 输入必须为整数2) 分析输入条件和输出结果确定等价类输入条件:三个整数a, b, c,代表三角形的三条边每个整数必须大于0必须满足三角形不等式:a + b > c, a + c > b, b + c > a输出结果:等边三角形:a = b = c等腰三角形:任意两边相等但不是等边一般三角形:三边都不等且满足三角形不等式非三角形:不满足三角形不等式无效输入:边长≤0或非整数3)建立等价类表,列出所有划分出的等价类输入条件有效等价类无效等价类输入类型整数(1,2,3,...)非整数(1.5,"a",True,...)边长范围>0≤0三角形构成满足a+b>c, a+c>b, b+c>a不满足任意一个不等式等边三角形a=b=c-等腰三角形任意两边相等但不满足a=b=c-一般三角形三边不等且满足三角形不等式-直角三角形满足勾股定理-4)根据列出的等价类表,设计等价类测试用例有效输入测试用例:等边三角形: (3, 3, 3) → 等边三角形等腰三角形: (3, 3, 5) → 等腰三角形一般三角形: (3, 4, 6) → 一般三角形直角三角形: (3, 4, 5) → 直角三角形其他有效组合: (5, 12, 13) → 直角三角形无效输入测试用例:非整数输入: (1.5, 2, 3) → 输入必须为整数零值输入: (0, 1, 2) → 边长必须大于0负值输入: (-1, 2, 3) → 边长必须大于0非三角形: (1, 1, 3) → 非三角形多个无效: (0, -1, "a") → 可以检测多个错误边界值测试用例:最小有效值: (1, 1, 1) → 等边三角形刚好不构成三角形: (1, 2, 3) → 非三角形接近边界的等腰: (2, 2, 3.999) → 等腰三角形极大值测试: (MAX_INT, MAX_INT, MAX_INT) → 等边三角形两边和等于第三边: (2, 3, 5) → 非三角形