軟件功能性測試的21種故障模型(8-14)

查看( 119 ) / 評論( 0 ) / 評分( 0 / 0 )

8        輸出屬性修改後的結果

8.1缺陷產生原因

輸出常常具有可修改的屬性,如顏色、形狀、維數及大小等,用戶可以修改這些屬性。
在這種情況下,開發人員必須編碼、設立初始或默認屬性值,然後編碼允許用戶編輯
這些屬性。當用戶改變了這些屬性後,內部的相應變量值也隨着變化,再次進行處理時,
這些值沒有被重新恢復爲默認值,輸出的屬性就被強制改變了。

         8.2如何發現這類問題

該測試方法可以使用在那些輸出具有可編輯性、可修改性的功能中。測試人員首先要
仔細瞭解能夠產生的輸出,特別要注意具有可編輯屬性的輸出。測試人員的任務就是
強制每個輸出產生,並編輯其屬性,然後再次強制輸出產生。

         8.3測試方法小結

Ø        應用場合:輸出的結果,可以由用戶修改屬性得出。

Ø        測試方法:強制每個輸出產生,並編輯其屬性,然後再次強制產生輸出。

Ø        測試知識儲備:全面理解需求規格說明書中的內容,瞭解能夠產生的輸出。

-----------------------------------------------------------------------------------------------------------------------------------------

9        屏幕刷新顯示

9.1缺陷產生原因

通常GUI軟件會產生刷新問題,因爲GUI在對窗口進行覆蓋、移動和調整大小時,必須
刷新屏幕才能使對象重新顯示。但是如果經常刷新,容易減慢應用程序的運行速度;
如果不刷新,又會影響用戶對程序的使用,使用戶必須停止工作,去尋找刷新的方法
纔可以繼續工作。所以開發人員有時候不能很好地確定什麼時候需要刷新,需要刷新
多大範圍的區域,這就發生了令人煩惱的刷新問題。

         9.2如何發現這類問題

測試刷新問題的方法是增加、刪除稱移動屏幕上的對象,這樣會使某些對象重新顯示。
如果不能正確、及時地進行重新顯示,就產生了軟件缺陷。我們可以通過以下幾個方法
來檢查刷新:

Ø        從起始位置移動對象。先移動一點,然後增加移動幅度;先移動一次或兩次,
然後多次移動,確保覆蓋了所有區域。

Ø        從覆蓋對象的邊界開始一點點覆蓋,使其中一個對象遮住別一個對象。

Ø        使用不同類型的對象。如果應用程序支持多種類型的對象,如文本對象、圖形
對象等,就把這些不同對象混在一起使用。

9.3測試方法小結

Ø        應用場合:一個對象包含在另一個對象中,拖動被包含對象時,可能出現刷新問題。

Ø        測試方法:增加、刪除和移動屏幕上的對象。

Ø        測試知識儲備:全面理解需求規格說明書中的內容,瞭解程序中對象之間的關係。

-----------------------------------------------------------------------------------------------------------------------------------------

10    數據結構溢出

10.1缺陷產生原因

所有數據結構的大小都有上限。一些數據結構會逐步增加長度以充滿機器內存容量或

磁盤空間,而其它數據結構具有固定的上限。開發人員經常對有關數據結構的內容
進行編碼,忘記結構本身的物理侷限。

          10.2如何發現這類問題

Ø        確定數據結構的界限,嘗試將過多的值輸入數據結構。應該特別注意界限爲
數據類型的邊界256、1024、32768等上溢的測試。

Ø        對於下溢的測試,可以嘗試多刪除一個數據,例如當結構爲空時,嘗試再刪除,
或者添加一個數據,嘗試刪除兩個數據時的情況。

 10.3測試方法小結

Ø        應用場合:程序中存在數組。

Ø        測試方法:嘗試將過多的值輸入數據結構,測試上溢;對於下溢的測試,
可以嘗試多刪除一個數據。

Ø        測試知識準備:全面理解需求規格說明書中的內容,確定數據結構的界限。

-----------------------------------------------------------------------------------------------------------------------------------------

11    數據結構不符合約束

11.1缺陷產生原因

在編程過程中對內部數據結構都有所約束,包括大小、維數、類型、形狀、屏幕
上的位置等。我們測試的重點就是用戶能夠設置的屬性,這些屬性使用了一組參數
來約束。在建立數據項和隨後對數據項進行修改的任何時刻都要對數據屬性的約束
進行檢查。初始化代碼中修改後的代碼有錯誤,在修改錯誤的時候只修改了初始化
部分,而忽略了對其他部分的修改,使得其修改不完全,不徹底。

         11.2如何發現這類問題

Ø        確認候選數據,並列出其可修改的屬性。對每個屬性列出有效值的允許範圍、約
束的條件等。

Ø        確定所有可修改屬性的功能位置。

Ø        對數據進行初始化,改變每個屬性以確定是否正確進行了約束。

如果數據約束遭到破壞,可能導致系統崩潰,或者表現爲響應時間延遲,錯誤信息
不正確以及使用錯誤數據產生的無效輸出。

         11.3測試方法小結

Ø        應用場合:應用程序內部的數據結構存在約束。

Ø        測試方法:破壞內部數據結構的約束。

Ø        測試知識儲備:全面理解需求規格說明書中的內容,確定內部數據結構的所有約束。

-----------------------------------------------------------------------------------------------------------------------------------------

12    操作數與操作符不符

12.1缺陷產生原因

幾乎每個運算符都有它無效的操作數,對於具體的操作符,開發人員在使用它們時,

必須編寫錯誤檢查代碼。例如:除以零的問題。

        12.2如何發現這類問題

找到程序中包含的數據或輸入(即操作數)的計算(即操作符)、數學表達式(即操
作符和操作數的組合)及對圖形的操作。另外,對多個操作數進行組合也更容易發生
錯誤。例如,字符和數字都可以使用“+”操作符。對字符通過“+”把它們連成一串;
對數字通過“+”來進行加法運算。如果系統嘗試把字符和數字相加,即進行相互矛盾
的操作,就會引起軟件失效。

        12.3測試方法小結

Ø        應用場合:需要進行數值計算的程序或圖形操作的程序。

Ø        測試方法:對於數值計算考慮操作數和操作符之間的限定關係,對於圖形計算還
要考慮各種輸入數據之間的組合關係。

Ø        測試知識儲備:全面掌握被測軟件中操作符對操作數的要求。掌握不同的操作符
和操作數具有的不同的有效和無效的取值範圍。

-----------------------------------------------------------------------------------------------------------------------------------------

13    遞歸調用自身

13.1缺陷產生原因

函數有時會遞歸調用自身,如果不限制執行次數,遞歸就會出現問題,它不斷地調用自
身,很快地佔用機器資源,最終產生溢出,使程序崩潰或掛起。產生這類問題的主要原
因是開發人員沒有編碼來保證循環和遞歸調用的終止,通常是在循環的開始或結束時缺
少檢查條件。

        13.2如何發現問題

在軟件中尋找可以使用遞歸調用的功能。這時可以製作一個列表,標明軟件中可能嵌入
遞歸的功能的列表,然後自己引用自己來檢查程序是否能正確處理。

        13.3測試方法小結

Ø        應用場合:需要和其它對象進行交互的地方。

Ø        測試方法:考慮對象的自我交互或複製。

Ø        測試知識儲備:全面掌握被測軟件的需求。

-----------------------------------------------------------------------------------------------------------------------------------------

14    計算結果溢出

14.1缺陷產生原因

當所有的輸入和數據都有效時,計算的最終結果也可以是無效的。所有變量都有值域範
圍,有時開發人員在執行計算時會忘記檢查這些上限。

         14.2如何發現這類問題

一次又一次地執行計算或使用很大或很小的輸入和數據進行計算,重點測試數據類型的
初始值或邊界值附近的值。

        14.3測試方法小結

Ø        應用場合:應用程序執行能夠導出待產生結果並進行內部存儲的計算。

Ø        測試方法:強制數據產生上溢或下溢。

Ø        測試知識儲備:全面掌握被測軟件的需求,瞭解計算變量的上下限。

發佈了51 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章