· 如果程序的規格隨明給出的輸入域或輸出域是有序集合(如有序表、順序文件等),則應選取集合的第一個和最后一個元素作為測試數據。
· 如果程序用了一個內部結構,應該選取這個內部數據結構的邊界值作為測試數據。
· 分析規格說明,找出其他可能的邊界條件。
這里給出測試一個排序程序的邊界值分析法的例子,其邊界條件有:
· 排序序列為空。
· 排序序列僅有一個數據。
· 排序序列為滿,用猜錯法補充一下測試用例。
· 排序序列已經按要求排好序。
· 排序序列的順序與要求的順序恰好相反。
· 排序序列中的所有數據全部相等。
因為錯誤最容易發生在邊界值附近,所以邊界值分析法對于多變量函數的測試很有效,尤其是對于像c,C++這種數據類型要求不足很嚴格的語言有用。缺點是對布爾值或邏輯變量無效,也不能很好地測試不同的輸入組合。邊界值分析法也幣具有隨機性,常被看做是等價類劃分法的一種補充,兩者結合起來使用史有效。
3錯誤推測法
有經驗的測試人員往往可以根據自己的工作經驗和直覺推測出程序可能存在的錯誤,從而有針對性地進行測試,這就是錯誤推測法。錯誤推測法是測試者根據經驗、知識和直覺來發現軟件錯誤,“只可意會,不能言傳”,就是表明這樣一個道理。 .錯誤推測法基于這樣一個思想:某處發現了缺陷,則卅能會隱藏更多的缺陷,在實際操作中,列出程序中所有可能的錯誤和容易發生的特殊情況,然后依據測試者經驗做出選擇。如等價類劃分法和邊界值分析法通過選擇有代表性的測試數據來暴露程序錯誤,但不同類型、不同特點的程序通常又有一些特殊的容易出錯的情況。并且,有時分別使用某些測試數據或用例進行測試時程序工作正常,但其組合可能會使程序出錯a例如·程序中兩個模塊使用并修改某些共享的變量,則在程序運行測試過程中應對這些共享的變量賦值不同來驗證這兩個模塊,一般說來,可能的輸入組合數目往往很多。因此,測試人員應依靠經驗和直覺,從各種可能的方案中選出最可能引起程序出錯的方案。
錯誤推測法能充分發揮人的直覺和經驗,在一個測試小組中集思廣益,方便實用,特別是在軟件測試基礎較差的情況下,很好地組織測試小組進行錯誤猜測,但錯誤推測法不是一個系統的測試方法,所以只能用作輔助手段,即先用其他方法設計測試用例,再用此方法補充一些例子。這種方法的優點是測試者能夠快速且容易地切入,并能夠體會到程序的易用與否;缺點是難以知道測試的覆蓋率,可能丟失大量未知的區域,并且這種測試行為帶有主觀性且難以復制。
4因果圖法
錯誤推測法是根據經驗和直覺設計測試用例,盡管能考慮到輸入組合的情況,但仍顯得不充分。因果圖法則借助圖形來設計測試用例,特別適用于被測程序具有多種輸入條件,程序的輸出又依賴于輸入條件的各種組合的情況。
因果圈法著重分析輸入條件的各種組合,每種組合條件就是“因”,它必然有一個輸出的結果,這就是“果”。等價類法與邊界值分析法的缺點是沒有檢查各種輸入條件的組合·而因果圖就能有效地檢測輸入條件的各種組合可能引起的錯誤。它是一種形式語言,由自然語言寫成的規范轉換而成,這種形式語言實際上是一種使用簡化記號表示數字邏圖。它還能指出程序規范中的不完全性和二義性。
例如.某個軟件規格說明中包含以下的要求:第一列字符必須是A或B,第二個字符必須是一個數字,在此情況下進行文件的修改:但如果第一列字符不正確,則輸出信息L;如果第二列字符不是數字,則給出信息M。采用因果圖方法進行分析,得到表6—4的各種
5組合分析法
&&.目
┏━━━┳━━━━━━━━━━━┳━━━┳━━━━━━┓
┃編號 ┃ 原因(條件) ┃編號 ┃結果(動作) ┃
┣━━━╋━━━━━━━━━━━╋━━━╋━━━━━━┫
┃ ┃第一列字符是A ┃ ┃修改文件 ┃
┣━━━╋━━━━━━━━━━━╋━━━╋━━━━━━┫
┃ ┃第一列字符是B ┃ ┃給出信息L ┃
┣━━━╋━━━━━━━━━━━╋━━━╋━━━━━━┫
┃ ┃第二列字符是一個數字 ┃ ┃拾H1信息M ┃
┣━━━╋━━━━━━━━━━━╋━━━╋━━━━━━┫
┃ ┃中間原因 ┃ ┃ ┃
┗━━━┻━━━━━━━━━━━┻━━━┻━━━━━━┛
組合分析法是一種基于每對參數組合的測試技術,考慮參數之間的影響是主要的錯誤來源,并且大多數的錯誤起源于簡單的參數組合。組合分析法的優點是低成本實現.低成本維護,易于自動化,易于用較少的測試案例發現更多的錯誤和用戶可以自定義限制;缺點是需要專家領域知識,不能測試所有可能的組合,不能測試復雜的交互。
文章來源于領測軟件測試網 http://www.kjueaiud.com/