1. 程式人生 > >軟體測試-編寫測試用例

軟體測試-編寫測試用例

常見的用例編寫方法如下:一、需求轉化法根據需求轉化為基本功能測試點二、等價類1、等價類:程式的輸入域劃分為若干部分,每個部分中選取少數有代表性的資料作為測試用例,每一類的代表性資料在測試中的作用等價於這一類的其它值;從所有可能的輸入中努力找出某個小的子集,我們要找的子集是正確的,並且是可能發現最多錯誤的子集。精心挑選的用例符合兩個特性:特性一:嚴格控制測試用例的增加,減少為達到“合理測試”的某些既定目標而必須設計的其它測試用例的數量;特性二:它覆蓋了大部分其它可能的測試用例;等價類劃分有兩類不同的情況:有效等價類和無效等價類;儘管等價類測試要比隨機測試用例優越的多,但它仍然存在不足。2、劃分等價類六大原則:
  • 輸入條件劃分了取值範圍
    或者值的個數的情況下,則可以確定一個有效等價類和無效等價類;
  • 輸入條件規定了輸入值的集合或規定了“必須如何”的條件情況下,則可以確定一個有效等價類和無效等價類;
  • 輸入條件是一個布林值的情況下,則可以確定一個有效等價類和無效等價類;
  • 輸入條件在規定了輸入資料的一組值(假定n個),並且程式要對每一個輸入值分別處理的情況下,可確立n個有效等價類和一個無效等價類.
  • 輸入條件在規定了輸入資料必須遵守的規則的情況下,可確立一個有效等價類(符合規則)和若干個無效等價類(從不同角度違反規則);
  • 在確知已劃分的等價類中各元素在程式處理中的方式不同的情況下,則應再將該等價類進一步的劃分為更小的等價類;
3、轉化為測試用例按照輸入條件、有效等價類、無效等價類建立等價類列表,列出所有的等價類;
  • 為每一個等價類固定一個編號;
  • 設計一個測試用例,使其覆蓋一個或多個有效的等價類;
  • 設計一個或更多的測試用例以覆蓋剩餘的有效等價類;
以三角形測試為例:輸入3個整數做為三角形的三個邊,通過程式判定三角形的型別
輸入條件:3個整數,a,b,c條件有效等價類編號無效等價類編號
3個數a,b,c11、只有一個數;a/b/c2、只有兩個數a,b;b,c;a,c;3、三個以上數678
整數正整數21、有一個為0;a=0;b=0;c=0;2、有兩個為0;a=b=0;a=c=0;b=c=0;3、全為0;a=b=c=0;4、一個為負數;a<0;b<0;c<0;5、兩個為負數;a/b<0;a/c<0;b/c<0;6、全為負數;a/b/c<0;91011121314
輸出條件:一般三角形、等邊三角形、等腰三角形一般三角形等腰三角形等邊三角形a+b>c;a+c>b;b+c>a;a=b;a=c;b=c;a=b=c;345
測試用例a=3,b=4,c=5a=3,b=3,c=5a=3,b=5,c=3a=5,b=3,c=3a=3,b=3,c=3覆蓋編號1-3覆蓋用例1-4覆蓋用例1-4覆蓋用例1-4覆蓋用例1-3,5a=3/b=4/c=5,其它無值a/b/c中其二有值,其它無值a/b/c/d,四個值a/b/c其一=0a/b/c其二=0a/b/c其三=0a/b/c其一為負a/b/c其二為負a/b/c其三為負覆蓋用例6覆蓋用例7覆蓋用例8覆蓋用例9覆蓋用例10覆蓋用例11覆蓋用例12覆蓋用例13覆蓋用例14
三、邊界值:所謂邊界條件,是指輸入和輸出等價類中那些恰好處於邊界、超過邊界、或在邊界以下的狀態。與等價類不同:特徵一:邊界值分析需要選擇一個或多個元素,以便等價類的每一個邊界都經過了測試;特徵二:與僅僅關注輸入條件不同,還需要考慮結果空間(輸出等價類)設計測試用例;邊界條件可能非常微妙,因此把他們確定下來需要煞費心思;基於邊界值分析方法選擇測試用例的原則:
  • 如果輸入條件規定了值的範圍,則應取剛達到這個範圍的邊界的值,以及剛剛超越這個範圍邊界的值作為測試輸入資料;
  • 如果輸入條件規定了值的個數,則用最大個數,最小個數,比最小個數少一,比最大個數多一的數作為測試資料;
  • 將規則1)和2)應用於輸出條件,即設計測試用例使輸出值達到邊界值及其左右的值
  • 如果程式的規格說明給出的輸入域或輸出域是有序集合,則應選取集合的第一個元素和最後一個元素作為測試用例;
  • 如果程式中使用了一個內部資料結構,則應當選擇這個內部資料結構的邊界上的值作為測試用例;
  • 分析規格說明,找出其它可能的邊界條件
例如:三角形問題,假定取值範圍為[1,100];邊界值可取值為1,100,0,101正常情況下,邊界值得測試點有4*4*4=64種組合;四、因果圖:輸入條件的組合進行分析。用一個系統的方法選擇出高效的測試用例集;如果在測試時必須考慮輸入條件的各種組合,則可能的組合數目將是天文數字,因此必須考慮採用一種適合於描述多種條件的組合、相應產生多個動作的形式來進行測試用例的設計,這就需要利用因果圖(邏輯模型)1)分析軟體規格說明描述中那些是原因(即輸入條件或輸入條件的等價類),那些是結果(即輸出條件), 並給每個原因和結果賦予一個識別符號。2)分析軟體規格說明描述中的語義,找出原因與結果之間原因與原因之間對應的關係,根據這些關係,畫出因果圖。3)由於語法或環境限制有些原因與原因之間,原因與結果之間的組合情況不可能出現,為表明這些特殊情況在因果圖上用一些記號表明約束或限制條件。4)把因果圖轉換為判定表。5)把判定表的每一列拿出來作為依據,設計測試用例。五、正交實驗法利用因果圖來設計測試用例時, 作為輸入條件的原因與輸出結果之間的因果關係,有時很難從軟體需求規格說明中得到。往往因果關係非常龐大,以至於據此因果圖而得到的測試用例數目多的驚人,給軟體測試帶來沉重的負擔,為了有效地,合理地減少測試的工時與費用,可利用正交實驗設計方法進行測試用例的設計利用正交實驗設計測試用例的步驟:1.提取功能說明,構造因子--狀態表把影響實驗指標的條件稱為因子.而影響實驗因子的條件叫因子的狀態.利用正交實驗設計方法來設計測試用例時,首先要根據被測試軟體的規格說明書找出影響其功能實現的操作物件和外部因素,把他們當作因子,而把各個因子的取值當作狀態.對軟體需求規格說明中的功能要求進行劃分,把整體的概要性的功能要求進行層層分解與展開,分解成具體的有相對獨立性的基本的功能要求.這樣就可以把被測試軟體中所有的因子都確定下來,併為確定個因子的權值提供參考的依據.確定因子與狀態是設計測試用例的關鍵.因此要求儘可能全面的正確的確定取值,以確保測試用例的設計作到完整與有效。2.加權篩選,生成因素分析表對因子與狀態的選擇可按其重要程度分別加權.可根據各個因子及狀態的作用大小,出現頻率的大小以及測試的需要,確定權值的大小。3.利用正交表構造測試資料集正交表的推導依據Galois理論(這裡省略,需要時可查數理統計方面的教材)。利用正交實驗設計方法設計測試用例,比使用等價類劃分,邊界值分析,因果圖等方法有以下優點:節省測試工作工時;可控制生成的測試用例數量;測試用例具有一定的覆蓋率。六、場景實驗法:每一個場景都需要確定測試用例。可以採用矩陣或決策表來確定和管理測試用例。下面顯示了一種通用格式,其中各行代表各個測試用例,而各列則代表測試用例的資訊。本示例中,對於每個測試用例,存在一個測試用例ID、條件(或說明)、測試用例中涉及的所有資料元素(作為輸入或已經存在於資料庫中)以及預期結果。七、探索性測試:發散思維,進行探索式測試;八、經驗測試:根據測試中出現的問題和經驗,編寫相關測試用例;九、設計文件:根據設計文件,編寫測試用例;十、錯誤推斷法:利用直覺和經驗猜測出錯的可能型別,十一、判定表驅動法判定表是分析和表達多邏輯條件下執行不同操作的情況的工具能夠將複雜的問題按照各種可能的情況全部列舉出來,簡明並避免遺漏。因此,利用判定表能夠設計出完整的測試用例集合。判定表通常有四個部分組成:條件樁、動作樁、條件項、動作項;判定表的建立步驟:(根據軟體規格說明)1)確定規則的個數.假如有n個條件。每個條件有兩個取值(0,1,故有2n種規則。2)列出所有的條件樁和動作樁。3)填入條件項。4)填入動作項。等到初始判定表。5)簡化.合併相似規則(相同動作)。判定表的優點和缺點Ø優點:它能把複雜的問題按各種可能的情況一一列舉出來,簡明而易於理解,也可避免遺漏。Ø缺點:不能表達重複執行的動作,例如迴圈結構。B. Beizer 指出了適合使用判定表設計測試用例的條件:Ø規格說明以判定表形式給出,或很容易轉換成判定表。Ø條件的排列順序不會也不影響執行哪些操作。Ø規則的排列順序不會也不影響執行哪些操作。Ø每當某一規則的條件已經滿足,並確定要執行的操作後,不必檢驗別的規則。Ø如果某一規則得到滿足要執行多個操作,這些操作的執行順序無關緊要十二、功能圖法1.功能圖介紹一個程式的功能說明通常由動態說明和靜態說明組成.動態說明描述了輸入資料的次序或轉移的次序.靜態說明描述了輸入條件與輸出條件之間的對應關係.對於較複雜的程式,由於存在大量的組合情況,因此,僅用靜態說明組成的規格說明對於測試來說往往是不夠的.必須用動態說明來補充功能說明.功能圖方法是用功能圖FD形式化地表示程式的功能說明,並機械地生成功能圖的測試用例.功能圖模型由狀態遷移圖和邏輯功能模型構成.狀態遷移圖用於表示輸入資料序列以及相應的輸出資料.在狀態遷移圖中,由輸入資料和當前狀態決定輸出資料和後續狀態.邏輯功能模型用於表示在狀態中輸入條件和輸出條件之間的對應關係.邏輯功能模型只適合於描述靜態說明,輸出資料僅由輸入資料決定.測試用例則是由測試中經過的一系列狀態和在每個狀態中必須依靠輸入/輸出資料滿足的一對條件組成.功能圖方法其實是是一種黑盒白盒混合用例設計方法(功能圖方法中,要用到邏輯覆蓋和路徑測試的概念和方法,其屬白盒測試方法中 的內容.邏輯覆蓋是以程式內部的邏輯結構為基礎的測試用例設計方法.該方法要求測試人員對程式的邏輯結構有清楚的瞭解.由於覆蓋測試的目標不同,邏輯覆蓋可分為:語句覆蓋,判定覆蓋,判定-條件覆蓋,條件組合覆蓋及路徑覆蓋.下面我們指的邏輯覆蓋和路徑是功能或系統水平上的,以區別與白盒測試中的程式內部的.2.測試用例生成方法從功能圖生成測試用例,得到的測試用例數是可接受的. 問題的關鍵的是如何從狀態遷移圖中選取測試用例. 若用節點代替狀態,用弧線代替遷移,則狀態遷移圖就可轉化成一個程式的控制流程圖形式.問題就轉化為程式的路徑測試問題(如白盒測試)問題了.3.測試用例生成規則為了把狀態遷移(測試路徑)的測試用例與邏輯模型(區域性測試用例)的測試用例組合起來,從功能圖生成實用的測試用例,須定義下面的規則.在一個結構化的狀態遷移(SST)中,定義三種形式的迴圈:順序,選擇和重複.但分辨一個狀態遷移中的所有迴圈是有困難的.(其表示圖形省略)。4.從功能圖生成測試用例的過程1)生成區域性測試用例:在每個狀態中,從因果圖生成區域性測試用例.區域性測試用例由原因值(輸入資料)組合與對應的結果值(輸出資料或狀態)構成。2)測試路徑生成:利用上面的規則(三種)生成從初始狀態到最後狀態的測試路徑。3)測試用例合成:合成測試路徑與功能圖中每個狀態中的區域性測試用例.結果是初始狀態到最後狀態的一個狀態序列,以及每個狀態中輸入資料與對應輸出資料的組合。5.測試用例的合成演算法:採用條件構造樹.測試用例綜合設計策略1.Myers提出了使用各種測試方法的綜合策略1)在任何情況下都必須使用邊界值分析方法,經驗表明用這種方法設計出測試用例發現程式錯誤的能力最強。2)必要時用等價類劃分方法補充一些測試用例3)用錯誤推測法再追加一些測試用例4)對照程式邏輯,檢查已設計出的測試用例的邏輯覆蓋程度,如果沒有達到要求的覆蓋標準,應當再補充足夠的測試用例5)如果程式的功能說明中含有輸入條件的組合情況,則一開始就可選用因果圖法2.測試用例的設計步驟1)構造根據設計規格得出的基本功能測試用例2)邊界值測試用例3)狀態轉換測試用例4)錯誤猜測測試用例5)異常測試用例6)效能測試用例7)壓力測試用例3.優化測試用例的方1)利用設計測試用例的8種方法不斷的對測試用例進行分解與合併2)採用遺傳演算法理論進化測試用例3)在測試時利用發散思維構造測試用例