一,等價類
等價類測試用例設計方法是一種典型的黑盒測試用例設計方法,使用該方法主要對測試子項進行測試規格分析,進而得到測試用例,不需要對系統內部進行深入了解,它也是目前測試設計過程中使用最普遍的一種方法。采用等價類設計方法是將系統的輸入域劃分為若干部分,然后從每個部分選取少數代表性數據進行測試,這樣可以避免窮舉產生大量的用例。
等價類是指某個輸入域的子集合,在該子集合中,各個輸入數據對于揭露軟件中的錯誤都是等效的。在測試設計中合理地假設,假設測試某等價類的代表值就等于該等價類子集合中的其它值 的測試,因此可以將全部輸入數據進行合理的劃分,劃分為若干等價類,在每一個等價類中取一個數據作為測試的輸入條件,這樣可以使用少量代表性測試數據取得較好的測試結果。
等價類通常可以劃分為有效等價類和無效等價類兩種:
1,有效等價類:
是指對于系統的規格說明是合理的,有意義的輸入數據構成的信息集合。利用有效等價類可以檢驗程序是否實現了規格說明書中所規定的功能和性能。
2,無效等價類:
是指對于系統的規格說明書是不合理的或無意義的輸入數據構成的信息集合。
設計測試用例時需要充分考慮這兩種等價類,需要驗證系統不但能正確地接收合理的數據,還能處理無效的數據。
使用等價類測試用例設計方法的步驟如下:
步驟1:劃分等價類
劃分等價類可以參考以下幾個方面原則:
1)在輸入條件規定了取值范圍或值的個數時,則可以確定下有效等價類和兩個無效等價類;
2)在輸入條件規定了輸入值的集合或者規定了必須在什么條件的情況下,可以確定一個有效等價類和一個無效等價類;
3)在輸入條件是一個布爾值 的情況下,可以確定一個有效等價類和一個地效等價類;
4)在規定了輸入數據的一組值假定N個,并且程序要對輸入值分別處理的情況下,可以確定N個有效等價類和一個無效等價類;
5)在規定 了輸入數據必須遵守的規則的情況下,可以確定一個有效等價類和若干個無效等價類;
6)在確定已劃分的等價類中各元素在程序處理中的方式不同的情況下,應該再將該等價類進一步劃分,劃分為更小的等價類;
步驟2:根據劃分的等價類確定測試用例;
等價類測試用例設計方法雖然對輸入的數據域進行了全面的分類,但在作中使用等價類分析法存在以下問題:
(1)等價類是以效果來換取效率,等價類細分程度,等價類組合程度,取決于進度和人力資源情況;
(2)等價類的出發點是考慮設計用例把每個輸入的每種情況都有用例測試到,就認為達到了充分性,但對于情況的組合并沒有進行充分地考慮;
(3)等價類劃分的優劣關鍵是需要把輸入背后隱藏的信息從各個角度進行分類;
二,邊界值
邊界值測試是從輸入域測試中衍生出來的。邊界的條件落在等價類的邊界上,邊界內和邊界外,邊界值測試是對等價類測試的一個補充,但不同于等價類測試。長期測試經驗得知,大量的錯誤是發生在輸入域的邊界上,因此針對各和邊界情況設計測試用例,可以查出更多的錯誤。
邊界值分析方法的理論基礎是假定大多數錯誤是發生在輸入域或輸出域的邊界上,如果在邊界附近的取值不會導致程序出錯,那么其它取值導致程序出錯的概率會很小。
關于邊界點的定義如下:
1,上點:就是邊界上的點,如果該域的邊界是封閉的,上點就在域范圍內;如果域的邊界是開放的,上點就在域范圍外。
2,離點:就是離上點最近的一個點,如果域的邊界封閉的,離點就在域范圍外,如果域的邊界是開放的,離點就在域范圍內。
3,內點:顧名思義,就是在域范圍內的任意一個點。
上點和離點的確定與該域的邊界是開放還是封閉有關,但不論邊界是開放還是封閉,上點和離點總是在一個域內,另一個在域外。如果對于封閉邊界,上點在域內,離點在域外;對于開放邊界,上點在域外,離點域內。例如,假設A是整數,A的邊界描述為A>0,那么上點為0,離點為1;如果邊界描述為A=0,那到上點仍然為0,但離點為-1;
上點和離點的選擇,還與區間的數據類型有關,對于整數,離點可以通過在上點的基礎上加1或減1來確定;對于實數,可以選擇一個精度,在精度下尋找最靠近的離點。例如,假設A是實數,首先需要確定精度,若精度為0.001,如果A的邊界條件描述為A>0,那么上點是0,離點為0.001;如果邊界描述為A>=0,那么上點仍然為0,但離點為-0.001。
邊界值分析原則如下:
1,如果輸入(輸出)條件規定了取值范圍,或是規定了值的個數,則應該以該范圍的邊界內及邊界附近的值作為測試用例;
2,如果輸入(輸出)條件規定了值的個數,則用最大個數,最小個數,比最小個數少一,比最大個數多一的數作為測試數據;
3,如果程序規格說明中提到的輸入或輸出是一個有序的集合,應該注意先取有序集合的第一個和最后一個元素作為測試用例;
4,如果程序中使用了內部數據結構,則應當選擇這個內部數據結構的邊界上的值作為測試用例;
邊界值用例設計方法的部驟如下:
1,分析輸入參數的類型:從測試規格中分析得到輸入參數類型;
2,等價類劃分(可選):對于輸入等價類劃分方法進行等價類的劃分;
3,確定邊界:運用域測試分析方法確定域范圍的邊界(上點,離點與內點);
4,相關性分析(可選):如果存在多個輸入域,則需要運用因果圖,判定表方法對這些輸入域邊界值 的組合情況進行進一步分析;
5,形成測試項:選擇這些上點,離點與內點或者這些點的組合形成測試項。
三,場景法
場景法測試用例設計方法主要用于事件觸發流程,當某個事件觸發后就形成相應的場景流程,不同的事件觸發不同順序和不同的處理結果,就形成一系列的事件結果。也可以獎這一系列的事件觸發流程看成不同的路徑,使用路徑覆蓋的方法來設計測試用例,故場景分析法也稱為流程分析法。
場景分析法設計測試用例的部驟如下:
1,畫出業務流程圖;
2,設置功能路徑優先級;
3,確定測試路徑;
4,選取測試數據;
5,構造測試用例;
首先將系統運行過程中所涉及到的各種流程圖表化,可以先從最基本的流程入手,將流程抽象成為不同功能的順序執行。在最基本流程的基礎上再去考慮次要或者異常的流程,這樣將各種流程逐漸細化,既可以逐漸加深對流程的理解,還可以將各個看似孤立的流程關聯起來。完成所有流程的圖表化后就完成了所有路徑的設定。
找出所有的路徑后,下面的工作就是給每條路徑設定優先級,這樣在測試時就可以先測優先級高的,測試優先級低的,在時間緊迫的情況下,甚至可以考慮忽略一些優先級低的路徑。優先級根據兩個原則來選取:一是路徑的使用頻率,使用越頻繁的優先級越高;二是路徑的重要程度,失敗對系統影響越大的優先級越高。將根據兩個原則所分別得到的優先級相加就得到了整個路徑的優先級。根據優先級的排序就可以更有針對性的測試。
為每條路徑設定好優先級后,接下來的工作就是為每條路徑選取測試數據,構造測試用例。一條用例可以對應多個測試用例,在選取測試數據時,可以充分利用邊界值選取等方法,通過表格將各種測試數據的輸入,輸出對應起來,這樣就完成了測試用例的設計。
場景法測試用例設計重點是測試業務流程是否正確,測試時需要注意的是,業務流程測試沒有問題并不代表系統的功能都正確,還必須對單個功能進行詳細的測試,這樣才能保證測試的充分性;
四,因果圖
因果圖是用于描述系統的輸入,輸出,以及輸入和輸出之間的因果關系,輸入與輸入之間的約束關系。因果圖的繪制過程是對被測系統外部特征的建模過程。在實際測試過程中因果圖和判定表兩種方法往往同時使用,根據系統輸入和輸出間的因果圖可以得到判定表,根據判定表產生設計測試用例。
因果圖需要描述輸入與輸出之間的因果關系和輸入與輸入之間的約束關系。
表示輸入與輸出間的因果關系有以下四種:
1,恒等關系:當輸入項發生,會產生對應輸出;當輸入項不發生,不會產生對應輸出;
2,非關系:與恒等關系相反;
3,或關系:多個輸入條件中,只要有一個發生,則會產生對應輸出;
4,與關系:多個輸入條件中,只有所有輸入項發生時,才會產生對應輸出。
表示輸入與輸入之間的約束關系也有以下四種:
1,異:所有輸入中至多一個輸入條件發生;
2,或:所有輸入中至少一個輸入條件發生;
3,唯一:所有輸入中有且只有一個輸入條件發生;
4,要求:所有輸入中只要有一個輸入條件發生,則其它輸放條件也會發生。
因果圖設計測試用例的步驟如下:
1,把大的系統規格分解成可以測試的規格片段;
2,分析分解后待測的系統規格,找出哪些是原因,哪些是結果;
3,畫出因果圖;
4,把因果圖轉換成判定表;
5,簡化判定表;
6,用判定表中的每一項生成測試用例。
使用因果圖法設計沒試用例有以一優缺點:
優點:
1,等價類劃分法盡管將各個輸入條件可能出錯的情況都考慮到了,但是多個輸入條件組合起來出錯的情況卻被忽略了,因果圖分析法則可以考慮多個輸入條件組合的情況;
2,因果圖法能夠幫助我們按照一定步驟,高效地選擇測試用例,設計多個輸入條件組合用例;
3,因果圖分析還能為我們指出程序規格說明描述中存在的問題。
缺點:
1,輸入條件與輸出結果的因果關系,有時難以從軟件需求規格說明書中得到;
2,即使午到了這些因果關系,也會因為因果關系復雜導致因果圖非常龐大,測試用例數目極其龐大。
五,判定表
判定表分析和表達多種輸入條件下系統執行不同動作的工具,它可以把復雜邏輯關系和多種條件組合的情況表達得既具體又明確。判定表通常由四部分組成,如圖6-14所示:
一,等價類
等價類測試用例設計方法是一種典型的黑盒測試用例設計方法,使用該方法主要對測試子項進行測試規格分析,進而得到測試用例,不需要對系統內部進行深入了解,它也是目前測試設計過程中使用最普遍的一種方法。采用等價類設計方法是將系統的輸入域劃分為若干部分,然后從每個部分選取少數代表性數據進行測試,這樣可以避免窮舉產生大量的用例。
等價類是指某個輸入域的子集合,在該子集合中,各個輸入數據對于揭露軟件中的錯誤都是等效的。在測試設計中合理地假設,假設測試某等價類的代表值就等于該等價類子集合中的其它值 的測試,因此可以將全部輸入數據進行合理的劃分,劃分為若干等價類,在每一個等價類中取一個數據作為測試的輸入條件,這樣可以使用少量代表性測試數據取得較好的測試結果。
等價類通常可以劃分為有效等價類和無效等價類兩種:
1,有效等價類:
是指對于系統的規格說明是合理的,有意義的輸入數據構成的信息集合。利用有效等價類可以檢驗程序是否實現了規格說明書中所規定的功能和性能。
2,無效等價類:
是指對于系統的規格說明書是不合理的或無意義的輸入數據構成的信息集合。
設計測試用例時需要充分考慮這兩種等價類,需要驗證系統不但能正確地接收合理的數據,還能處理無效的數據。
使用等價類測試用例設計方法的步驟如下:
步驟1:劃分等價類
劃分等價類可以參考以下幾個方面原則:
1)在輸入條件規定了取值范圍或值的個數時,則可以確定下有效等價類和兩個無效等價類;
2)在輸入條件規定了輸入值的集合或者規定了必須在什么條件的情況下,可以確定一個有效等價類和一個無效等價類;
3)在輸入條件是一個布爾值 的情況下,可以確定一個有效等價類和一個地效等價類;
4)在規定了輸入數據的一組值假定N個,并且程序要對輸入值分別處理的情況下,可以確定N個有效等價類和一個無效等價類;
5)在規定 了輸入數據必須遵守的規則的情況下,可以確定一個有效等價類和若干個無效等價類;
6)在確定已劃分的等價類中各元素在程序處理中的方式不同的情況下,應該再將該等價類進一步劃分,劃分為更小的等價類;
步驟2:根據劃分的等價類確定測試用例;
等價類測試用例設計方法雖然對輸入的數據域進行了全面的分類,但在作中使用等價類分析法存在以下問題:
(1)等價類是以效果來換取效率,等價類細分程度,等價類組合程度,取決于進度和人力資源情況;
(2)等價類的出發點是考慮設計用例把每個輸入的每種情況都有用例測試到,就認為達到了充分性,但對于情況的組合并沒有進行充分地考慮;
(3)等價類劃分的優劣關鍵是需要把輸入背后隱藏的信息從各個角度進行分類;
二,邊界值
邊界值測試是從輸入域測試中衍生出來的。邊界的條件落在等價類的邊界上,邊界內和邊界外,邊界值測試是對等價類測試的一個補充,但不同于等價類測試。長期測試經驗得知,大量的錯誤是發生在輸入域的邊界上,因此針對各和邊界情況設計測試用例,可以查出更多的錯誤。
邊界值分析方法的理論基礎是假定大多數錯誤是發生在輸入域或輸出域的邊界上,如果在邊界附近的取值不會導致程序出錯,那么其它取值導致程序出錯的概率會很小。
關于邊界點的定義如下:
1,上點:就是邊界上的點,如果該域的邊界是封閉的,上點就在域范圍內;如果域的邊界是開放的,上點就在域范圍外。
2,離點:就是離上點最近的一個點,如果域的邊界封閉的,離點就在域范圍外,如果域的邊界是開放的,離點就在域范圍內。
3,內點:顧名思義,就是在域范圍內的任意一個點。
上點和離點的確定與該域的邊界是開放還是封閉有關,但不論邊界是開放還是封閉,上點和離點總是在一個域內,另一個在域外。如果對于封閉邊界,上點在域內,離點在域外;對于開放邊界,上點在域外,離點域內。例如,假設A是整數,A的邊界描述為A>0,那么上點為0,離點為1;如果邊界描述為A=0,那到上點仍然為0,但離點為-1;
上點和離點的選擇,還與區間的數據類型有關,對于整數,離點可以通過在上點的基礎上加1或減1來確定;對于實數,可以選擇一個精度,在精度下尋找最靠近的離點。例如,假設A是實數,首先需要確定精度,若精度為0.001,如果A的邊界條件描述為A>0,那么上點是0,離點為0.001;如果邊界描述為A>=0,那么上點仍然為0,但離點為-0.001。
邊界值分析原則如下:
1,如果輸入(輸出)條件規定了取值范圍,或是規定了值的個數,則應該以該范圍的邊界內及邊界附近的值作為測試用例;
2,如果輸入(輸出)條件規定了值的個數,則用最大個數,最小個數,比最小個數少一,比最大個數多一的數作為測試數據;
3,如果程序規格說明中提到的輸入或輸出是一個有序的集合,應該注意先取有序集合的第一個和最后一個元素作為測試用例;
4,如果程序中使用了內部數據結構,則應當選擇這個內部數據結構的邊界上的值作為測試用例;
邊界值用例設計方法的部驟如下:
1,分析輸入參數的類型:從測試規格中分析得到輸入參數類型;
2,等價類劃分(可選):對于輸入等價類劃分方法進行等價類的劃分;
3,確定邊界:運用域測試分析方法確定域范圍的邊界(上點,離點與內點);
4,相關性分析(可選):如果存在多個輸入域,則需要運用因果圖,判定表方法對這些輸入域邊界值 的組合情況進行進一步分析;
5,形成測試項:選擇這些上點,離點與內點或者這些點的組合形成測試項。
三,場景法
場景法測試用例設計方法主要用于事件觸發流程,當某個事件觸發后就形成相應的場景流程,不同的事件觸發不同順序和不同的處理結果,就形成一系列的事件結果。也可以獎這一系列的事件觸發流程看成不同的路徑,使用路徑覆蓋的方法來設計測試用例,故場景分析法也稱為流程分析法。
場景分析法設計測試用例的部驟如下:
1,畫出業務流程圖;
2,設置功能路徑優先級;
3,確定測試路徑;
4,選取測試數據;
5,構造測試用例;
首先將系統運行過程中所涉及到的各種流程圖表化,可以先從最基本的流程入手,將流程抽象成為不同功能的順序執行。在最基本流程的基礎上再去考慮次要或者異常的流程,這樣將各種流程逐漸細化,既可以逐漸加深對流程的理解,還可以將各個看似孤立的流程關聯起來。完成所有流程的圖表化后就完成了所有路徑的設定。
找出所有的路徑后,下面的工作就是給每條路徑設定優先級,這樣在測試時就可以先測優先級高的,測試優先級低的,在時間緊迫的情況下,甚至可以考慮忽略一些優先級低的路徑。優先級根據兩個原則來選取:一是路徑的使用頻率,使用越頻繁的優先級越高;二是路徑的重要程度,失敗對系統影響越大的優先級越高。將根據兩個原則所分別得到的優先級相加就得到了整個路徑的優先級。根據優先級的排序就可以更有針對性的測試。
為每條路徑設定好優先級后,接下來的工作就是為每條路徑選取測試數據,構造測試用例。一條用例可以對應多個測試用例,在選取測試數據時,可以充分利用邊界值選取等方法,通過表格將各種測試數據的輸入,輸出對應起來,這樣就完成了測試用例的設計。
場景法測試用例設計重點是測試業務流程是否正確,測試時需要注意的是,業務流程測試沒有問題并不代表系統的功能都正確,還必須對單個功能進行詳細的測試,這樣才能保證測試的充分性;
四,因果圖
因果圖是用于描述系統的輸入,輸出,以及輸入和輸出之間的因果關系,輸入與輸入之間的約束關系。因果圖的繪制過程是對被測系統外部特征的建模過程。在實際測試過程中因果圖和判定表兩種方法往往同時使用,根據系統輸入和輸出間的因果圖可以得到判定表,根據判定表產生設計測試用例。
因果圖需要描述輸入與輸出之間的因果關系和輸入與輸入之間的約束關系。
表示輸入與輸出間的因果關系有以下四種:
1,恒等關系:當輸入項發生,會產生對應輸出;當輸入項不發生,不會產生對應輸出;
2,非關系:與恒等關系相反;
3,或關系:多個輸入條件中,只要有一個發生,則會產生對應輸出;
4,與關系:多個輸入條件中,只有所有輸入項發生時,才會產生對應輸出。
表示輸入與輸入之間的約束關系也有以下四種:
1,異:所有輸入中至多一個輸入條件發生;
2,或:所有輸入中至少一個輸入條件發生;
3,唯一:所有輸入中有且只有一個輸入條件發生;
4,要求:所有輸入中只要有一個輸入條件發生,則其它輸放條件也會發生。
因果圖設計測試用例的步驟如下:
1,把大的系統規格分解成可以測試的規格片段;
2,分析分解后待測的系統規格,找出哪些是原因,哪些是結果;
3,畫出因果圖;
4,把因果圖轉換成判定表;
5,簡化判定表;
6,用判定表中的每一項生成測試用例。
使用因果圖法設計沒試用例有以一優缺點:
優點:
1,等價類劃分法盡管將各個輸入條件可能出錯的情況都考慮到了,但是多個輸入條件組合起來出錯的情況卻被忽略了,因果圖分析法則可以考慮多個輸入條件組合的情況;
2,因果圖法能夠幫助我們按照一定步驟,高效地選擇測試用例,設計多個輸入條件組合用例;
3,因果圖分析還能為我們指出程序規格說明描述中存在的問題。
缺點:
1,輸入條件與輸出結果的因果關系,有時難以從軟件需求規格說明書中得到;
2,即使午到了這些因果關系,也會因為因果關系復雜導致因果圖非常龐大,測試用例數目極其龐大。
五,判定表
判定表分析和表達多種輸入條件下系統執行不同動作的工具,它可以把復雜邏輯關系和多種條件組合的情況表達得既具體又明確。判定表通常由四部分組成,如圖6-14所示:
條件樁? ? ? ? ? ? ? ? ? ? ? ?條件項
動作樁? ? ? ? ? ? ? ? ? ? ? ?動作項
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 規則
? ? 圖6-14 判定表組成部分
1,條件樁:列出系統所有輸入,列出的輸入次序沒有影響;
2,動作樁:列出系統可能采取的操作,這些操作的排列順序沒有約束;
3,條件項:列出針對它左列輸入條件的取值,在所有可能情況下的真假取值;
4,動作項:列出在輸入項的各處取值情況下應該采取的動作。
動作項和條件項指出了在條件項的各種取值情況下應該采取的動作,在判定表中貫穿條件項和動作項的一列就是一條規則,可以針對每個合法輸入組合的規則設計用例進行測試。
判定表測試用例設計方法的步驟如下:
1,確定規則的個數。
根據輸入的條件數據計算出規則的個數,如果有N個條件,那么規則一共有2的N次方,如N為3時,規則數為8個。
2,列出所有的條件樁和動作樁。
條件樁是影響結果的條件,動作樁是由于所有條件組合后可能產生的結果。
3,輸入條件項和動作項。
對各條件項進行標識,一般使用1和0來標識,當該條件選中時使用1來標識,當條件不選中時使用0來標識,需要將條件項中所有條件組合的情況標識出來,根據條件的情況來確定動作項,對動作項進行標識。
4,簡化,合并相似規則。
簡化判定表是將相似規則(即表中的列)進行合并,以減少測試用例,當然它是以犧牲測試用例充分性為代價的。
簡化的過程為,首先找到判定表中輸出完全相同的兩列,觀察它們的輸入是否相似。例如只有一個輸入不同時,說明不管該輸入取何值,輸出都是一樣的,也就是說該輸入對輸出是無影響的,因此可以將這兩列合并為一列,簡化,合并相似規則示例圖如圖6-15所示。
5,將每條規則轉化為用例。
簡化,合并后的判定表中的每一列可以規劃為一個測試用例。
使用判定表設計測試用例存在如下優缺點:
優點:
1,充分考慮了輸入條件間的組合,避免遺漏;
2,設計過程中對輸入條件間的約束關系進行分析,避免無效用例的出現,提高測試用例的有效性;
3,設計時同時輸入每個測試項目的預期結果。
缺點:
1,當被測特性輸入較多時,判定表會在常龐大;
2,輸入條件間的約束不能有效區分當前的組合是否合理,會導致產生一些不需要的組合條件。
3,規則合并過程中存在可能漏測的風險,雖然某個輸入條件在輸出接口上是無關的,但是在軟件設計上,內部針對這個條件采取了不同的程序分支。
六,正交試驗
正交試驗設計法是從大量的試驗點中挑選中適量的,有代表性的點,應用依據伽羅瓦理論導出的“正交表”,合理地安排試驗的一種科學的試驗設計方法,是研究多因素,多水平的一種設計方法。它是根據正交性從全面試驗中挑選出部分有代表性的點進行試驗,這些有代表性的點具備“均勻分散,齊整可比”的特點,正交試驗是一種基于正交表的,高效率的,快速,經濟的試驗設計方法。
正交試驗分析法包括以下常用術語:
1,指標:通常把判斷試驗結果優劣的標準叫做試驗的指標;
2,因子:是指所有影響試驗指標的條件;
3,因子的狀態:是指影響試驗因子的因素,也稱之為因子的水平;
正交表的表現形式:Lr(m的n次方)
1,n表示因子數,即正交表中列的個數;
2,m表示水平數,也稱為狀態,任何單個因子能夠取得的值的最大個數;
3,r表示行數,正交表中行的數量,即測試用例數。
行數r=(m-1)*n+1,如L4(2的3次方),測試用例數為4=(2-1)*3+1,這是等水平的正交表。但對于等水平的正交表其表現形式為Lr(m的n次方,p的q次方),那么行數r=(m-1)*n+(p-1)*q+1,如L36(2的11次方,3的12次方),測試用例36=(2-1)*11+(3-1)*12+1。
在網站http://www.york.ac.uk/depts/maths/tables/orthogonal.htm可以查找到相關的正交表。
正交試驗分析法的步驟如下:
1,提取功能說明,構造因子-狀態表。
分析規格說明,通過規格說明書提取影響該功能的因子以及每個因子可能取值的最大數,即因子狀態。
2,加權篩選,生成因素分析表。
計算各因子和狀態的權值,刪去一部分權值較小即重要性較小的因子或狀態,使最后生成的測試用例集縮減到允許范圍。
3,畫出布爾圖。
如果各個因子的狀態數是不統一的,幾乎不可能出現均勻的情況,必須先用邏輯命令來組合各因子的狀態,作出布爾圖。
4,查找最接近的相應階數的正交表。
根據布爾圖選擇最接近的相應階數的正交表,實際的測試工作中,因子和因子狀態很難與正交表完全符合,所以只能選擇一個階數的最接近的正交表。
5,將實際的因子和狀在帶入正交表中,得到最終的正交表。
選擇好正交表后應該將實際的因子和因子水平帶入正交表中,此時可能出現以下三種情況之一:
1) 因子的狀態數正好和正交表的狀態數相等,那么此時只需要直接替換正交表中的值即可。
2) 因子的狀態數多于正交表中的狀態數,那么此時需要先將多余的狀態合并帶入正交表中,然后再將合并的中間狀態展開。
3) 因子的狀態數少于正交表中的狀態數,那么只要將正交表中多出來的狀態,使用實際狀態中的任意值替換即可。
6,利用正交表每行數據構造測試用例。
將使用實際因子和狀態替換過的正交表中的每一行,選擇數據構造測試用例即可。
tips:借助正交試驗法雖然可以提高測試用例的效率,但是正交試驗終歸是數學推導出來的公式,因此其組合情況并沒有考慮到實際取值的情況,所以很可能一些組合在實際過程中根本不會出現,或者出現的機率很小,因此在完成下交表后,應該對正交表進行仔細的檢查,將其中無效的組合刪除,添加些正交表中沒有的,但實際情況可能使用機率比較高的組合。
七,狀態遷移圖
許多需求用狀態機的方式來描述,狀態機的測試主要關注狀態轉移是否正確。對于一個有限狀態機,通過測試驗證,其在給定條件內是否能夠產生需要的狀態變化,有沒有不可達的狀態和非法的狀態,是否可能產生非法的狀態轉移等。通過構造能導導致狀態遷移的事個來測試狀態之間的轉換,多用于協議測試,使用這種方法可以設計逆向的測試用例,如狀態和事件的非法組合。
狀態遷移圖測試用例設計方法的步驟如下:
1,畫出狀態遷移圖;
2,列出狀態-事件表;
3,畫出狀態轉稱樹,并從狀態轉換樹推導出測試路徑。
根據測試路徑編寫測試用例;
八,輸入域
輸入域測試法是一種綜合的方法,其綜合考慮了等價類劃分法,邊界值分析法等方法,針對輸入可能存在的各種情況進行考慮,關于輸入域測試法主要考慮以下三個方面:
1,極端測試,需要選擇測試數據覆蓋輸入域的極端情況;
2,中間范圍測試,選擇域內部的數據進行測試;
3,特殊值測試,根據要計算的功能特性的基礎來選擇測試數據,這個過程尤其適合于數學計算。所要計算功能的屬性可以有助于選擇能夠驗證被計算方案正確的測試數據。例如,根據Sin()函數的周期,可以使用2π不同倍數的測試數據。
之前介紹的等價類劃分法和邊界分析法,這兩種方法是輸入域測試的一部分,那么實際的測試過程中只需要在此基礎上考慮即可,通常需要考慮以下兩方面的測試;
1,特殊值:特殊值與輸入的特點有關,需要充分了解該輸入的存儲和處理過程;
2,長時間輸入:對于一些沒有指定長度的輸入,測試時需要長時間的持續輸入,以驗證輸入的數據是否會引起內存越界從而導致系統故障的情況。
九,輸出域
上一節介紹了輸入域的測試,但是系統輸出與輸入之間并不一定是線性關系,所以從輸出的角度來說,覆蓋了輸入域并一代表一定完全覆蓋輸出域,故測試時需要對輸出域進行測試。
測試時需要分析各輸出的等價類,通過選擇會導致各種輸出的等價類被達到的輸入點來執行測試,期望達到輸出域的等價類覆蓋。
同時分析各輸出的邊界值,通過選擇會導致各種輸出邊界值被達到的輸入點來執行測試,期望達到輸出域邊界值覆蓋。這樣可以保證系統功能最大和最小的輸出條件都已被檢查。
十,異常分析
系統異常分析法是針對系統有可能存在的異常操作,軟硬件缺陷引起的故障進行分析,依此設計測試用例,驗證系統的容錯能力,以及當系統出現異常時故障恢復的能力。測試時可以人為地構造一些異常情況(如安裝程序時斷電,數據損壞等情況),來驗證系統的處理情況。
十一,錯誤猜測法
錯誤猜測法是根據以往的測試經驗和對系統內部知識的了解,列出系統中各種可能存在的錯誤和容易發生錯誤的特殊情況,并設計出測試用例。隨著對產品了解程度的加深和測試經驗的豐富,使用錯誤猜測法設計測試用例往往非常有效,但是錯誤猜測法只能作為測試設計的補充而不能單獨用來設計測試用例,否則可能導致測試的不充分。
錯誤猜測不是瞎猜,不是沒有根據和目的地猜測,它需要了解系統薄弱的地方和開發人員的盲點,也可以根據以往缺陷分析的報告來分析系統最容易出現錯誤的地方,作為錯誤猜測法的依據。
? ? 圖6-14 判定表組成部分
1,條件樁:列出系統所有輸入,列出的輸入次序沒有影響;
2,動作樁:列出系統可能采取的操作,這些操作的排列順序沒有約束;
3,條件項:列出針對它左列輸入條件的取值,在所有可能情況下的真假取值;
4,動作項:列出在輸入項的各處取值情況下應該采取的動作。
動作項和條件項指出了在條件項的各種取值情況下應該采取的動作,在判定表中貫穿條件項和動作項的一列就是一條規則,可以針對每個合法輸入組合的規則設計用例進行測試。
判定表測試用例設計方法的步驟如下:
1,確定規則的個數。
根據輸入的條件數據計算出規則的個數,如果有N個條件,那么規則一共有2的N次方,如N為3時,規則數為8個。
2,列出所有的條件樁和動作樁。
條件樁是影響結果的條件,動作樁是由于所有條件組合后可能產生的結果。
3,輸入條件項和動作項。
對各條件項進行標識,一般使用1和0來標識,當該條件選中時使用1來標識,當條件不選中時使用0來標識,需要將條件項中所有條件組合的情況標識出來,根據條件的情況來確定動作項,對動作項進行標識。
4,簡化,合并相似規則。
簡化判定表是將相似規則(即表中的列)進行合并,以減少測試用例,當然它是以犧牲測試用例充分性為代價的。
簡化的過程為,首先找到判定表中輸出完全相同的兩列,觀察它們的輸入是否相似。例如只有一個輸入不同時,說明不管該輸入取何值,輸出都是一樣的,也就是說該輸入對輸出是無影響的,因此可以將這兩列合并為一列,簡化,合并相似規則示例圖如圖6-15所示。
5,將每條規則轉化為用例。
簡化,合并后的判定表中的每一列可以規劃為一個測試用例。
使用判定表設計測試用例存在如下優缺點:
優點:
1,充分考慮了輸入條件間的組合,避免遺漏;
2,設計過程中對輸入條件間的約束關系進行分析,避免無效用例的出現,提高測試用例的有效性;
3,設計時同時輸入每個測試項目的預期結果。
缺點:
1,當被測特性輸入較多時,判定表會在常龐大;
2,輸入條件間的約束不能有效區分當前的組合是否合理,會導致產生一些不需要的組合條件。
3,規則合并過程中存在可能漏測的風險,雖然某個輸入條件在輸出接口上是無關的,但是在軟件設計上,內部針對這個條件采取了不同的程序分支。
六,正交試驗
正交試驗設計法是從大量的試驗點中挑選中適量的,有代表性的點,應用依據伽羅瓦理論導出的“正交表”,合理地安排試驗的一種科學的試驗設計方法,是研究多因素,多水平的一種設計方法。它是根據正交性從全面試驗中挑選出部分有代表性的點進行試驗,這些有代表性的點具備“均勻分散,齊整可比”的特點,正交試驗是一種基于正交表的,高效率的,快速,經濟的試驗設計方法。
正交試驗分析法包括以下常用術語:
1,指標:通常把判斷試驗結果優劣的標準叫做試驗的指標;
2,因子:是指所有影響試驗指標的條件;
3,因子的狀態:是指影響試驗因子的因素,也稱之為因子的水平;
正交表的表現形式:Lr(m的n次方)
1,n表示因子數,即正交表中列的個數;
2,m表示水平數,也稱為狀態,任何單個因子能夠取得的值的最大個數;
3,r表示行數,正交表中行的數量,即測試用例數。
行數r=(m-1)*n+1,如L4(2的3次方),測試用例數為4=(2-1)*3+1,這是等水平的正交表。但對于等水平的正交表其表現形式為Lr(m的n次方,p的q次方),那么行數r=(m-1)*n+(p-1)*q+1,如L36(2的11次方,3的12次方),測試用例36=(2-1)*11+(3-1)*12+1。
在網站http://www.york.ac.uk/depts/maths/tables/orthogonal.htm可以查找到相關的正交表。
正交試驗分析法的步驟如下:
1,提取功能說明,構造因子-狀態表。
分析規格說明,通過規格說明書提取影響該功能的因子以及每個因子可能取值的最大數,即因子狀態。
2,加權篩選,生成因素分析表。
計算各因子和狀態的權值,刪去一部分權值較小即重要性較小的因子或狀態,使最后生成的測試用例集縮減到允許范圍。
3,畫出布爾圖。
如果各個因子的狀態數是不統一的,幾乎不可能出現均勻的情況,必須先用邏輯命令來組合各因子的狀態,作出布爾圖。
4,查找最接近的相應階數的正交表。
根據布爾圖選擇最接近的相應階數的正交表,實際的測試工作中,因子和因子狀態很難與正交表完全符合,所以只能選擇一個階數的最接近的正交表。
5,將實際的因子和狀在帶入正交表中,得到最終的正交表。
選擇好正交表后應該將實際的因子和因子水平帶入正交表中,此時可能出現以下三種情況之一:
1) 因子的狀態數正好和正交表的狀態數相等,那么此時只需要直接替換正交表中的值即可。
2) 因子的狀態數多于正交表中的狀態數,那么此時需要先將多余的狀態合并帶入正交表中,然后再將合并的中間狀態展開。
3) 因子的狀態數少于正交表中的狀態數,那么只要將正交表中多出來的狀態,使用實際狀態中的任意值替換即可。
6,利用正交表每行數據構造測試用例。
將使用實際因子和狀態替換過的正交表中的每一行,選擇數據構造測試用例即可。
tips:借助正交試驗法雖然可以提高測試用例的效率,但是正交試驗終歸是數學推導出來的公式,因此其組合情況并沒有考慮到實際取值的情況,所以很可能一些組合在實際過程中根本不會出現,或者出現的機率很小,因此在完成下交表后,應該對正交表進行仔細的檢查,將其中無效的組合刪除,添加些正交表中沒有的,但實際情況可能使用機率比較高的組合。
七,狀態遷移圖
許多需求用狀態機的方式來描述,狀態機的測試主要關注狀態轉移是否正確。對于一個有限狀態機,通過測試驗證,其在給定條件內是否能夠產生需要的狀態變化,有沒有不可達的狀態和非法的狀態,是否可能產生非法的狀態轉移等。通過構造能導導致狀態遷移的事個來測試狀態之間的轉換,多用于協議測試,使用這種方法可以設計逆向的測試用例,如狀態和事件的非法組合。
狀態遷移圖測試用例設計方法的步驟如下:
1,畫出狀態遷移圖;
2,列出狀態-事件表;
3,畫出狀態轉稱樹,并從狀態轉換樹推導出測試路徑。
根據測試路徑編寫測試用例;
八,輸入域
輸入域測試法是一種綜合的方法,其綜合考慮了等價類劃分法,邊界值分析法等方法,針對輸入可能存在的各種情況進行考慮,關于輸入域測試法主要考慮以下三個方面:
1,極端測試,需要選擇測試數據覆蓋輸入域的極端情況;
2,中間范圍測試,選擇域內部的數據進行測試;
3,特殊值測試,根據要計算的功能特性的基礎來選擇測試數據,這個過程尤其適合于數學計算。所要計算功能的屬性可以有助于選擇能夠驗證被計算方案正確的測試數據。例如,根據Sin()函數的周期,可以使用2π不同倍數的測試數據。
之前介紹的等價類劃分法和邊界分析法,這兩種方法是輸入域測試的一部分,那么實際的測試過程中只需要在此基礎上考慮即可,通常需要考慮以下兩方面的測試;
1,特殊值:特殊值與輸入的特點有關,需要充分了解該輸入的存儲和處理過程;
2,長時間輸入:對于一些沒有指定長度的輸入,測試時需要長時間的持續輸入,以驗證輸入的數據是否會引起內存越界從而導致系統故障的情況。
九,輸出域
上一節介紹了輸入域的測試,但是系統輸出與輸入之間并不一定是線性關系,所以從輸出的角度來說,覆蓋了輸入域并一代表一定完全覆蓋輸出域,故測試時需要對輸出域進行測試。
測試時需要分析各輸出的等價類,通過選擇會導致各種輸出的等價類被達到的輸入點來執行測試,期望達到輸出域的等價類覆蓋。
同時分析各輸出的邊界值,通過選擇會導致各種輸出邊界值被達到的輸入點來執行測試,期望達到輸出域邊界值覆蓋。這樣可以保證系統功能最大和最小的輸出條件都已被檢查。
十,異常分析
系統異常分析法是針對系統有可能存在的異常操作,軟硬件缺陷引起的故障進行分析,依此設計測試用例,驗證系統的容錯能力,以及當系統出現異常時故障恢復的能力。測試時可以人為地構造一些異常情況(如安裝程序時斷電,數據損壞等情況),來驗證系統的處理情況。
十一,錯誤猜測法
錯誤猜測法是根據以往的測試經驗和對系統內部知識的了解,列出系統中各種可能存在的錯誤和容易發生錯誤的特殊情況,并設計出測試用例。隨著對產品了解程度的加深和測試經驗的豐富,使用錯誤猜測法設計測試用例往往非常有效,但是錯誤猜測法只能作為測試設計的補充而不能單獨用來設計測試用例,否則可能導致測試的不充分。
錯誤猜測不是瞎猜,不是沒有根據和目的地猜測,它需要了解系統薄弱的地方和開發人員的盲點,也可以根據以往缺陷分析的報告來分析系統最容易出現錯誤的地方,作為錯誤猜測法的依據。