【STMT】等價類劃分法

等價類劃分法

等價類劃分法是一種典型的黑盒測試方法,通過劃分輸入數據集來減少測試所需的用例,包括劃分等價類和構造測試用例兩個步驟:

  • 劃分等價類
    劃分等價類就是將輸入數據集劃分成若干個等價類子集,從每一個子集中選取少量代表性數據作爲測試用例。在劃分等價類時,必須保證同一個等價類中的所有輸入數據對於揭示程序中的錯誤是等效的,使得測試代表值相當於測試其它所有值。輸入等價類可以分爲有效等價類和無效等價類,其中有效等價類指的是符合程序規格說明的輸入等價類,而無效等價類指的是不符合程序規格說明的輸入等價類。
  • 構造測試用例
    首先給每一個等價類編號,然後設計測試用例使其儘可能多地覆蓋尚未覆蓋的有效等價類,重複直到所有有效等價類被覆蓋,再設計測試用例使其僅覆蓋一個尚未覆蓋的無效等價類,重複直到所有無效等價類被覆蓋。根據測試用例覆蓋的等價類可以分爲弱一般、弱健壯、強一般、強健壯測試,其中弱表示只覆蓋有效等價類,強表示除了有效等價類還覆蓋了無效等價類,一般表示測試用例只需覆蓋所有不同的缺陷,健壯表示測試用例需要覆蓋所有的多缺陷組合。

題目1

構造三角形問題的弱健壯等價類測試用例:

  • 三角形問題
    輸入三個不超過100的正整數作爲三角形的三條邊,判斷三角形是等邊三角形、等腰三角形、完全不等邊三角形還是無法構成三角形。

解答1

選取不同的輸入條件可以劃分出不同的等價類,其中一種等價類組合如下:

  • 劃分等價類

    輸入條件 有效等價類 無效等價類
    邊長aa取值 (0,100](0, 100](1) (,0](-\infin, 0](2),(100,)(100, \infin)(3)
    邊長bb取值 (0,100](0, 100](4) (,0](-\infin, 0](5),(100,)(100, \infin)(6)
    邊長cc取值 (0,100](0, 100](7) (,0](-\infin, 0](8),(100,)(100, \infin)(9)
    是否構成三角形 構成三角形(10),不構成三角形(11)
    相等邊數 三條邊相等(12),兩條邊相等(13),沒有邊相等(14)
  • 構造測試用例

    測試用例編號 aa bb cc 預期輸出 覆蓋等價類編號
    WN1 3 3 3 等邊三角形 (1)(4)(7)(10)(12)
    WN2 3 3 4 等腰三角形 (13)
    WN3 3 4 5 完全不等邊三角形 (14)
    WN4 3 3 6 不能構成三角形 (11)
    WR1 -1 3 3 輸入aa超出取值範圍 (2)
    WR2 101 3 3 輸入aa超出取值範圍 (3)
    WR3 3 -1 3 輸入bb超出取值範圍 (5)
    WR4 3 101 3 輸入bb超出取值範圍 (6)
    WR5 3 3 -1 輸入cc超出取值範圍 (8)
    WR6 3 3 101 輸入cc超出取值範圍 (9)

題目2

構造NextDate問題的弱一般等價類測試用例:

  • NextDate問題
    輸入1812-2012年期間某一天的year, month, day值,輸出下一天的year, month, day值。

解答2

  • 劃分等價類

    輸入條件 有效等價類 無效等價類
    year取值範圍 [1812,2012][1812, 2012](1) (,1811](-\infin, 1811](2),[2013,)[2013, \infin)(3)
    month取值範圍 [1,12][1, 12](4) (,0](-\infin, 0](5),[13,)[13, \infin)(6)
    day取值範圍 大月[1,31][1, 31](7),小月[1,30][1, 30](8),非閏年二月[1,28][1, 28](9),閏年二月[1,29][1, 29](10) (,0](-\infin, 0](11),[32,)[32, \infin)(12),小月{31}\{ 31 \}(13),非閏年二月[29,31][29, 31](14),閏年二月[30,31][30, 31](15)
    是否爲該年或該月最後一天 當前日期不是該月的最後一天(16),當前日期是該月的最後一天而不是該年的最後一天(17),當前日期是該年的最後一天(18)
  • 構造測試用例

    測試用例編號 year month day 預期輸出 覆蓋等價類編號
    WN1 2008 12 31 2019年1月1日 (1)(4)(7)(18)
    WN2 2008 4 1 2008年4月2日 (8)(16)
    WN3 2009 2 28 2009年3月1日 (9)(17)
    WN4 2008 2 1 2008年2月2日 (10)
    WR1 1612 1 1 輸入日期不合法 (2)
    WR2 2019 1 1 輸入日期不合法 (3)
    WR3 2008 0 1 輸入日期不合法 (5)
    WR4 2008 13 1 輸入日期不合法 (6)
    WR5 2008 2 -1 輸入日期不合法 (11)
    WR6 2008 2 50 輸入日期不合法 (12)
    WR7 2008 4 31 輸入日期不合法 (13)
    WR8 2009 2 30 輸入日期不合法 (14)
    WR9 2008 2 30 輸入日期不合法 (15)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章