實驗三 軟件黑盒測試使用測試界的一個古老例子---三角形問題來進行等價類劃分。輸入三個整數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) → 非三角形