1. 程式人生 > >軟件工程作業(十一)

軟件工程作業(十一)

判定覆蓋 試用 表達 表達式 執行 分享 amp 邏輯 好處

一.白盒子測試有哪些方法,其中最嚴格的是什麽?

白盒測試的測試方法有代碼檢查法、靜態結構分析法、靜態質量度量法、邏輯覆蓋法、基本路徑測試法、域測試、符號測試、路徑覆蓋和程序變異。 白盒測試法的覆蓋標準有邏輯覆蓋、循環覆蓋和基本路徑測試。其中邏輯覆蓋包括語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋。六種覆蓋標準發現錯誤的能力呈由弱到強的變化: 1.語句覆蓋每條語句至少執行一次。 2.判定覆蓋每個判定的每個分支至少執行一次。 3.條件覆蓋每個判定的每個條件應取到各種可能的值。 4.判定/條件覆蓋同時滿足判定覆蓋條件覆蓋。 5.條件組合覆蓋每個判定中各條件的每一種組合至少出現一次。 6.路徑覆蓋使程序中每一條可能的路徑至少執行一次。 二.測試用例

(1)輸入條件:

  1、 條件1:a+b>c

  2、 條件2:a+c>b

  3、 條件3:b+c>a

  4、 條件4:0<a<200

  5、 條件5:0<b<200

  6、 條件6:0<c<200

  7、 條件7:a==b

  8、 條件8:a==c

  9、 條件9:b==c

  10、條件10:a2+b2==c2

  11、條件11:a2+ c2== b2

  12、條件12:c2+b2== a2

 (2)輸出結果:

  1、不能組成三角形

  2、等邊三角形

  3、等腰三角形

  4、直角三角形

  5、一般三角形

  6、某些邊不滿足限制

業務處理流程的思路用流程圖表示如下:

技術分享

仔細分析之後,發現可以把它們分成4組來討論:

  1、 條件1:a+b>c; 條件2:a+c>b; 條件3:b+c>a

  這三個表達式有什麽特點呢?實際上它們的邏輯是一樣的:兩個數之和大於第三個數。那麽,前面程序的寫法就存在邏輯重復的地方,應該把這個邏輯提取到一個函數中。

  2、 條件4:0<a<200; 條件5:0<b<200; 條件6:0<c<200

  這三個表達式也是同一個邏輯:判斷一個數的範圍是否在(0, 200)區間內,也應該把這個邏輯提取到一個函數中,去掉重復的邏輯,提高代碼的可重用性。

  可重用性的好處:比如,現在用戶的需求改為了三條邊的取值範圍要改為[100,400],那麽,按前面的思路來說,需要改3個地方,而現在只需要在一個函數裏改1個地方,這就是代碼重用的好處。

  3、條件7:a==b; 條件8:a==c; 條件9:b==c

  這三個表達式的邏輯:判斷兩個數是否相等。也應該把它提取到一個函數中。

  我們進一步來分析一下判斷是否是等邊三角形或等腰三角形的條件:

  (1)前面程序的判斷是從最直觀的方式(a==b && b==c && a==c)(實際上只需要兩個表達式成立即可)三條邊都相等來判定是等邊三角形;(a==b || b==c || a==c)只有兩條邊相等來判定是等腰三角形。

  (2)轉變一下思路:給定三個整數,然後用一個函數來判斷這三個整數有幾個相等,返回相等的個數,如果返回值等於3,那麽它是等邊三角形,如果返回值是2,那麽它是等腰三角形,否則,它是一般三角形(如果不是直角三角形的話)。

  4、條件10:a2+b2==c2 條件11:a2+ c2== b2 條件12:c2+b2== a2

  這三個條件的處理方式有兩種:

  (1)跟前面三組分析一樣,把相同的邏輯提取到一個函數中,然後三次調用。

  (2)根據直角三角形的特點:斜邊是最長的,所以我們可以事先寫一個函數來找到最長的邊,然後把它賦值給c,這樣處理之後,只需要一次調用判定(a2+b2==c2)的函數了。

軟件工程作業(十一)