假設輸入三個整數a、b、c分別作為三邊的邊長構成三角形。通過程序判定所構成的三角形的類型,當此三角形為一般三角形、等腰三角形及等邊三角形時!要求畫出程序的流程圖和時序圖,并且用自己熟悉的一種語言實現這個功能!我在網上搜索了一下發現已經有好多文章,不過發現很少有寫出程序的,其實用java語言也可以實現,流程圖和程序圖參考的網上的。
三角形設計測試用例的問題在面試的時候經常遇到。
假設輸入三個整數a、b、c分別作為三邊的邊長構成三角形。通過程序判定所構成的三角形的類型,當此三角形為一般三角形、等腰三角形及等邊三角形時!要求畫出程序的流程圖和時序圖,并且用自己熟悉的一種語言實現這個功能!我在網上搜索了一下發現已經有好多文章,不過發現很少有寫出程序的,其實用java語言也可以實現,流程圖和程序圖參考的網上的。
程序如下:
package sanj;
/**
*
* @author ltesting.net
*/
import java.io.*;
class sanj{
public static int a,b,c;
public static void main(String arg[]) throws IOException{
try{
BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in)); //接收鍵值
System.out.println("輸入三邊值,每個值輸入后回車");
System.out.println("請輸入:");
a=Integer.valueOf(stdin.readLine());
b=Integer.valueOf(stdin.readLine());
c=Integer.valueOf(stdin.readLine());
}catch(IOException e){
System.out.println("出現異常!");
System.exit(0);
}
if(a+b<c || a+c<b || b+c<a){
System.out.println("你輸入的不能構成三角形");
}
if(a==b || a==c || b==c)
{
if(a==b && b==c) System.out.println("等邊三角形");
else System.out.println("等腰三角形");
}
else System.out.println("一般三角形");
}
}
【解】
第一步:確定測試策略。在本例中,對被測程序的功能有明確的要求,即:
?。?)判斷能否組成三角形;
?。?)識別等邊三角形;
?。?)識別等腰三角形;
?。?)識別任意三角形。因此可首先用黑盒法設計測試用例,然后用白盒法驗證其完整性,必要時再進行補充。
第二步:根據本例的實際情況,在黑盒法中首先可用等價分類法劃分輸入的等價類,然后用邊界值分析法和猜錯法作補充。
等價分類法:
有效等價類
輸入3個正整數:
?。?)3數相等
?。?)3數中有2個數相等,比如AB相等
?。?)3數中有2個數相等,比如BC相等
?。?)3數中有2個數相等,比如AC相等
?。?)3數均不相等
?。?)2數之和不大于第3數,比如最大數是A
?。?)2數之和不大于第3數,比如最大數是B
?。?)2數之和不大于第3數,比如最大數是C
無效等價類:
?。?)含有零數據
?。?0)含有負整數
?。?1)少于3個整數
?。?2)含有非整數
?。?3)含有非數字符
邊界值法:
?。?4)2數之和等于第3數
猜錯法:
?。?5)輸入3個零
?。?6)輸入3個負數
第三步:提出一組初步的測試用例,如下表所示:
第四步:用白盒法驗證第三步產生的測試用例的充分性。結果表明,上表中的前8個測試用例,已能滿足對被測程序圖的完全覆蓋,不需要再補充其他的測試用例。