1. 程式人生 > >常見測試用例的設計方法

常見測試用例的設計方法

測試用例常見的設計方法

測試用例常見的設計方法有等價類劃分法、邊界值分析法、錯誤推測法、判定表法、正交實驗法。

一.等價類劃分法

顧名思義,等價類劃分,就是將測試的範圍劃分成幾個互不相交的子集,他們的並集是全集,從每個子集選出若干個有代表性的值作為測試用例。
  例如,我們要測試一個使用者名稱是否合法,使用者名稱的定義為:8位數字組成的字元。
  我們可以先劃分子集:空使用者名稱,1-7位數字,8位數字,9位或以上數字,非數字。
  然後從每個子集選出若干個有代表性的值:
  空使用者名稱:“” (無效等價類例項,指對於軟體規格說明而言,沒有意義的、不合理的輸入)
  1-7位數字:“234” (無效等價類例項)
  8位數字:“00000000” (有效等價類例項,能檢驗程式是否實現了規格說明中所規定的功能和效能)
  9位或以上數字:“1234567890” (無效等價類例項)
  非數字:“abc&!!!” (無效等價類例項)
  他們5個,就是用等價類劃分選出的測試用例。實際上,對於1-7位數字的子集來說,選“234”和“11111”沒有本質的區別。
  等價類的劃分,最關鍵的是子集的劃分。實際上,非數字還可以繼續劃分子集:字母,特殊字元。
  究竟要劃分到何種程度才合適呢?我請教過做測試的朋友,他的意見是,看你有多少資源和時間,還有,看是否值得。
  對此,我表示贊同,畢竟無論你怎麼測試,總會有未發現的缺陷存在,所以,先解決容易被發現的問題再說。

二.邊界值分析法

長期的測試工作經驗告訴我們,大量的錯誤是發生在輸入或輸出範圍的邊界上,而不是發生在輸入輸出範圍的內部。因此針對各種邊界情況設計測試用例,可以查出更多的錯誤。選出的測試用例,應選取正好等於、剛剛大於、剛剛小於邊界的值,例如,對於在區間min,max的值,測試用例可以記為min,min+,max,max-。
  例如,假定 X 為整數,10≤X≤100,那麼 X 在測試中應該取的邊界值為:10,11,99,100。
  注:上面只是說邊界值,如果是完整的測試,除了邊界值外,還需要一個正常值,即12-98之間的任意值。

三.錯誤推測法

錯誤推測法是指:在測試程式時,人們可以根據經驗或直覺推測程式中可能存在的各種錯誤,從而有針對性地編寫檢查這些錯誤的測試用例的方法。
  這種方法沒有固定的形式,依靠的是經驗和直覺,很多時候,我們都會不知不覺的使用到。

四.判定表法

又稱為策略表,基於策略表的測試,是功能測試中最嚴密的測試方法。該方法適合於邏輯判斷複雜的場景,通過窮舉條件獲得結果,對結果再進行優化合並,會得到一個判斷清晰的策略表。
  例如,某公司的對客戶分類標準如下:
  顧客每次訂貨額在 1000元以上(含1000元),信譽好的,訂單設“優先”標誌;
  信譽不好,但是老客戶的,訂單設“優先”標誌;
  信譽不好,但是新客戶的,訂單設“正常”標誌;
  每次訂貨額在 1000元以下,訂單設“正常”標誌。

  繪製的決策表如下:

此表分兩大行,兩大列,分別用不同的顏色區別。
  淺藍:列出所有條件(或稱為輸入)
  淺灰:列出所有結果(或稱為輸出,行動或決策)
  淺黃:窮舉所有條件的組合
  淺綠:根據每一列的條件,判斷出結果
  因為窮舉了所有條件,所以可以說這個判斷是100%正確的。下一步是對這個表進行合併優化。
   例如,從編號為1,2的列可以看出,顧客訂單>=1000,信譽好,不管是新顧客還是老顧客,都設為優先,於是上面的表合併整理後,得到下表

這樣,我們就可以得到更清晰的邏輯判斷,也可以更好的協助我們編寫測試用例。而決策表,對於開發人員來說一樣有用。
  從上面的表格,我們就可以寫出更簡潔的判斷語句。

五.正交實驗法

用語言描述正交實驗法會很抽象難懂,簡單說,就是在各因素互相獨立的情況下,設計出一種特殊的表格,找出能以少數替代全面的測試用例。
  其中,上面所說的特殊表格就是正交表,是按照一定規則生成的表。
  雖然說是特殊的表格,實際表現形式跟一般的表格沒有什麼區別,正交表的主要特徵是,“均勻分佈,整齊劃一”,正是因為“均勻”的,所以才能以少數代替全部。
  例如:
  某所大學通訊系共2個班級,剛考完某一門課程,想通過“性別”、“班級”和“成績”這三個查詢條件對通訊系這門課程的成績分佈,男女比例或班級比例進行人員查詢。
  按照傳統的方式,我們將會窮舉所有的組合,來編寫測試用例,組合個數是222=8。
  排列組合參見下表

當組合條件不多的時候,窮舉暫時沒問題,但是,一旦條件多了,組合個數就會以指數形式增長。
  這個時候,就要用到正交表了,通過選出有代表性的測試例項,達到以少數代替全面的效果。
  正交表如何設計呢,這個問題實際很複雜,涉及到組合統計的數學知識,有的正交表甚至到目前為止,還未得出演算法。
  我們只能通過已知的模型套上去。
  例如,Dr. Genichi Taguchi 設計的正交表
  https://www.york.ac.uk/depts/maths/tables/orthogonal.htm
  Technical Support ( support.sas.com ) com 提供的
  http://support.sas.com/techsup/technote/ts723_Designs.txt
  首先,我們來看看基本的概念。
  因素:被測的元素稱為因素,例如上面的性別,班級,成績,均為因素,因素的個數我們記為k,此處k=3
  水平:因素的可能值,稱為水平。例如班級的可能值為1或2。水平的個數我們記為m,此處正好每個因素的水平都是2,此處m=2。
  那麼正交表的行數n的計算公式為,n=k*(m-1)+1,此處為n=3*(2-1)+1=4。即共有4行。
  我們通常用L表示這個正交表,完整的表示為Ln(mk)
  如果每個因素的水平數相等,我們稱之為單一水平正交表,例如本例子就是,L4(23)
  各列水平數不完全相同的正交表稱為混合水平正交表。如L8(4124),表示有一個因素的水平為4,有4個因素的水平為2。
  按照這個表示式,我們可以去套用已知的正交表。例如本例子是L4(23),從上面提供的兩個連結均可以查到例子,雖然表達方式略有不同,但實際是一樣的,我們從http://support.sas.com/techsup/technote/ts723_Designs.txt 查到,其正交表的格式為:
  23 n=4
  000
  011
  101
  110
  此處0,1是對可能值的編號,例如,我們可以將(0,1)分別對映為(女,男)(1班,2班)(及格,不及格)
  按照上面的格式,
  000:女 1班 及格
  011:女 2班 不及格
  101:男 1班 不及格
  110:男 2班 及格
  這就是我們所得到的正交表。

六.總結

功能測試方法還有很多,例如因果圖法,狀態轉換測試法等,他們都略為複雜,像正交實驗法一樣,有各自的一套東西,不過本質都是通過畫圖,讓我們更好的思考,最後轉化成判定表。
  實際上常用的是前面五種方法,包括:等價類劃分法、邊界值分析法、錯誤推測法、判定表法、正交實驗法。