




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、軟件功能性測試的21種故障模型測試的目標是要發現錯誤,因此在編寫測試用例的時候也要遵循這個目標,盡量在軟件的最薄弱環節多編寫測試用例。雖然測試時有很多單個輸入變量、多個輸入變量的組合,但優秀的軟件測試人員不會依靠運氣,他們有著豐富的經驗和直覺,可以從中找到哪些是需要進行測試的,哪些不需要測試,哪些操作可能會引起軟件失效。把這些測試人員的經驗和直覺盡量歸納和固化,就形成了一些故障模型。故障模型指明了故障是如何以及為什么會在軟件執行時引起軟件失效。在測試過程中,我們可以按照這些故障模型所提供的缺陷類型和尋找該類缺陷的方法找到盡量多的缺陷。1
2、; 輸入非法數據11缺陷產生原因開發人員通常用以下3種技術來處理非法輸入:Ø 防止不正確的輸入進入被測軟件。過濾掉不正確的輸入,只允許合法輸入通過界面。Ø 輸入了不正確的數據后,軟件提示錯誤信息,拒絕不正確的輸入。Ø 允許不正確的輸入進入系統并進行處理,
3、軟件失效時調用異常處理程序,顯示一些錯誤信息。可見開發人員除了編寫主要的功能代碼外,還必須編寫對非法輸入的檢查代碼,這些代碼經常被遺忘,或者編寫完這部分代碼后,開發人員很少認真檢查,導致處理非法輸入經常出錯。12如何發現這類問題進行測試時從輸入值的屬性出發,一般考慮以下三點:Ø 輸入類型:鍵入無效的類型常會產生錯誤信息。Ø 輸入長度:對于字符型,鍵入太多的字符常會引出錯誤信息。邊界值:輸入
4、邊界值或超過邊界值的數據。13測試方法小結Ø 應用場合:GUI的輸入。Ø 測試方法:分別從輸入數據的類型、長度、邊界值等方面進行考慮。Ø 測試信息檢查:l 錯誤信息和錯誤要一致。l &
5、#160; 錯誤信息的內容為空,用戶不知道為什么出錯。l 顯示的錯誤信息是給開發人員調試使用的,例如“Error 5-unknown data”,開發人員可以通過該信息很容易找到錯誤類型,但是用戶根本不明白,不知道做錯了什么。Ø 測試知識儲備:牢記各基本數據類型的邊界值。2
6、; 輸入默認值21缺陷產生原因一旦軟件中使用了變量,就必須賦給初始值,如果在賦值之前就使用了這些變量,軟件就會失效,正確地使用變量的順序是:聲明變量à給變量賦值à使用變量。通常會由于以下兩個原因使變量的默認值不正確:Ø 給變量賦值這一步經常會被開發人員不經意地路過。Ø 開發人員有時不確定到底要賦什么初始值,就隨便給了一個值,但用戶并不認
7、可該值,這種情況下,軟件并不一定會失效,但對用戶的使用會帶來很多不便。例如某程序把打印默認輸出份數設置為2份,會給用戶造成很大麻煩。22如何發現這類問題確定應用軟件中所使用的數據有以下一些基本原則:Ø 查找選項按鈕、配置面板、安裝屏幕等。這種屏幕上顯示的數據常常在應用程序的許多地方用到。Ø 查閱源代碼的數據聲明部分(如果可以得到)。Ø
8、; 確定了要測試的數據,可以通過以下操作來強制使用或不使用默認的值:l 接受軟件顯示的默認值。有時軟件需要用戶輸入一個值,如果沒有輸入任何值,軟件就可能失效。這時可以只是簡單的單擊“確定”按鈕來接受默認值,完成這個功能測試。l 鍵入空值。刪掉默認值,使輸入域變成空值。l
9、將默認值改為另一個值,這樣會使應用程序以不同的值來運行。l 將輸入值改為另一個值,然后再變以空值。一個好的軟件會這樣處理以上情況,將輸入的不合法內容默認為合法邊界內的某個合理值,或者返回錯誤提示信息。23測試方法小結Ø 應用場合:需要有默認值的地方。Ø 測試方法:分別從選項按鈕、配置面板、安裝配置
10、、開始界面等方面進行考慮,強制使用或不使用默認值等。Ø 測試知識儲備:全面理解需求規格說明書中對默認值的要求;同時深刻理解被測軟件的行業背景。3 輸入特殊字符集31缺陷產生原因應用程序接受字符串輸入,如果程序沒有針對特殊輸入進行特殊編程,那么就有可能導致程序掛起,主要包括以下3種情況:Ø 字符集包
11、括普通字符和特殊字符。例如,ASCII字符集包括普通字符和特殊字符。應用程序有時只能處理普通字符,當輸入特殊字符時就會出現錯誤。Ø 實現應用程序的程序設計語言有特定的處理一些字符和字符串的方法。例如,C語言把n、+和&這樣的字符用于特殊目的。如果將這些字符串鍵入到對話框中,程序必須進行錯誤處理,否則容易產生錯誤。Ø 應用程序有時也使用設置名稱、系統對象和程序的保留字符串集合。只要在
12、程序中使用了這些字符串,就可能導致失效。32如何發現這類問題Ø 根據被測軟件所處的操作系統、使用的程序設計語言、字符集等信息列出表格,通過測試小組的討論,標明應用表格中的哪些字符和數據類型作為輸入來測試。Ø 根據經驗,軟件很少會因為這種操作而崩潰,通常它會掛起沒有響應。33測試方法小結Ø
13、;應用場合:需要接受字符輸入的地方。Ø 測試方法:根據被測軟件的具體情況輸入非法字符。Ø 測試知識儲備:盡可能多地了多地了解字符集、程序設計語言和操作系統中的保留字符串及其特定含義,可以使我們更好地分辨這類缺陷。4 輸入使緩沖區溢出的數據41缺陷產生原因開發人員沒有考慮傳送給內存緩沖區的字符串的大
14、小。如果緩沖區只能保留固定長度的字符串,輸入更長的字符串就會改寫其他的內存存儲單元,引起操作系統強制性地終止應用程序。42如何發現這類問題當應用程序允許輸入字母、數字時,通過GUI控件(如文本框),或者通過API調用的參數來進行這種測試。Ø 首先弄清楚要測試的輸入域的長度,輸入最大字符串測試。Ø 輸入一個比最大字符串長的字符串,應用程序可能出現錯誤提示信息,提示不允許輸入;或者輸入了更長的
15、字符串使應用程序崩潰。43測試方法小結Ø 應用場合:需要接受字符輸入的地方。Ø 測試方法:根據被測軟件的具體情況輸入最大字符串或輸入一個比最大字符串更長的字符串。Ø 測試知識儲備:盡可能多地和開發人員討論,以了解和確定輸入域的合理長度。5 &
16、#160; 輸入產生錯誤的合法數據組合51缺陷產生原因測試多個輸入值的組合,每個輸入值已被單獨測試過,但是這些值的組合可能會互相影響而引起軟件失效。52如何發現這類問題首先要確定測試哪些輸入組合,并弄清楚它們之間的“關系”。如果具備以下任一特性,就可以認為這些變量是有“關系”的。Ø 描述的是有關單個內部數據結構的屬性和內容。例如,輸入面板需要用戶輸入列表的“行”和“列”,這時測試人員要輸入單個內部數據結構“列表”的屬性“行和列”。Ø
17、160; 一起用在了一個計算中,也就是將多個輸入用做一個內部計算的操作數,因此這些輸入變量具有了相互“關系”。53測試方法小結Ø 應用場合:輸入值之間存在依賴關系。Ø 測試方法:輸入可能是存在問題的組合值。Ø 測試知識
18、儲備:盡可能多的內部數據結構的屬性和內容,并與開發人員探討,以確定輸入的數據值。6 產生同一個輸入的各種可能輸出61缺陷產生原因單個輸入產生多種輸出的情況與先前的輸入和被測系統的狀態都有關系。例如,在文字處理程序中單擊“關閉”按鈕,如果文件被編輯且未被保存,程序將提示是否保存文件。如果文件已被保存過,則文件直接關閉。62如何發現這類問題測試人員必須具有關于被測系統軟件的業務方面的知識,具備各種程序文檔,明確一個輸入可以產生何種輸出。我們可以據此列出關于程序輸入與輸出的一個列表,然后進行測試。63測試方
19、法小結Ø 應用場合:同一輸入對應多個輸出的情況。Ø 測試方法:測試輸入對應的每一個輸出。Ø 測試知識儲備:全面理解需求規格說明書中的內容,找出輸入與輸出之間的關系。7 輸出不符合業務規則的無效輸
20、出71缺陷產生原因有時開發人員也可能對業務了解不深刻,對有些問題也是一知半解,因此編寫出的軟件就會產生不符合業務邏輯的問題。另外在絕大多數情況下開發人員會忽略處理沒有遵循一般規則的輸入,如果不對這些特殊情況進行編程處理,軟件就會產生錯誤的結果。72如何發現這類問題Ø 測試人員應該盡可能地學習的涉及問題的領域。Ø 有時在列舉出無效輸出后,也很難知道哪些輸入組合能強制這些輸出產生。這時測試人員
21、必須先要確定哪些輸入與輸出有關,然后用產生意外結果的輸入組合進行測試,測試過程中要注意輸入執行順序,用不同的順序執行可能得到不同的結果。如果不能強制無效的輸出產生,就說明軟件沒有這方面的缺陷。73測試方法小結Ø 應用場合:強制產生不符合業務背景的知識。Ø 測試方法:列舉出所有的無效輸出,然后逐一測試。Ø
22、60; 測試知識儲備:全面理解需求規格說明書中的內容,熟悉行業背景知識。 8 輸出屬性修改后的結果81缺陷產生原因輸出常常具有可修改的屬性,如顏色、形狀、維數及大小等,用戶可以修改這些屬性。在這種情況下,開發人員必須編碼、設立初始或默認屬性值,然后編碼允許用戶編輯這些屬性。當用戶改變了這些屬性后,內部的相應變量值也隨著變化,再次進行處理時,這些值沒有被重新恢復為默認值,輸出的屬性就被強制改變了。82如何發現這類問題該測試方法可以使用在那些輸出具有可編輯性、可修改性的功能中。測試人員首先要仔細
23、了解能夠產生的輸出,特別要注意具有可編輯屬性的輸出。測試人員的任務就是強制每個輸出產生,并編輯其屬性,然后再次強制輸出產生。83測試方法小結Ø 應用場合:輸出的結果,可以由用戶修改屬性得出。Ø 測試方法:強制每個輸出產生,并編輯其屬性,然后再次強制產生輸出。Ø 測試知識儲備:全面理解需求
24、規格說明書中的內容,了解能夠產生的輸出。9 屏幕刷新顯示91缺陷產生原因通常GUI軟件會產生刷新問題,因為GUI在對窗口進行覆蓋、移動和調整大小時,必須刷新屏幕才能使對象重新顯示。但是如果經常刷新,容易減慢應用程序的運行速度;如果不刷新,又會影響用戶對程序的使用,使用戶必須停止工作,去尋找刷新的方法才可以繼續工作。所以開發人員有時候不能很好地確定什么時候需要刷新,需要刷新多大范圍的區域,這就發生了令人煩惱的刷新問題。92如何發現這類問題測試刷新問題的方法是增加、刪除稱移動屏幕上的對象,這樣會使某些對象
25、重新顯示。如果不能正確、及時地進行重新顯示,就產生了軟件缺陷。我們可以通過以下幾個方法來檢查刷新:Ø 從起始位置移動對象。先移動一點,然后增加移動幅度;先移動一次或兩次,然后多次移動,確保覆蓋了所有區域。Ø 從覆蓋對象的邊界開始一點點覆蓋,使其中一個對象遮住別一個對象。Ø 使用不同類型的
26、對象。如果應用程序支持多種類型的對象,如文本對象、圖形對象等,就把這些不同對象混在一起使用。93測試方法小結Ø 應用場合:一個對象包含在另一個對象中,拖動被包含對象時,可能出現刷新問題。Ø 測試方法:增加、刪除和移動屏幕上的對象。Ø 測試知識儲備:全面理解需求規格說明書中的內容,了解程序
27、中對象之間的關系。-10 數據結構溢出101缺陷產生原因所有數據結構的大小都有上限。一些數據結構會逐步增加長度以充滿機器內存容量或磁盤空間,而其它數據結構具有固定的上限。開發人員經常對有關數據結構的內容進行編碼,忘記結構本身的物理局限。102如何發現這類問題Ø 確定數據結構的界限,嘗試將過多的值輸入數據結構。應該特別注意界限為數據類型的邊界256、1024、32768等上溢的測試。Ø
28、60; 對于下溢的測試,可以嘗試多刪除一個數據,例如當結構為空時,嘗試再刪除,或者添加一個數據,嘗試刪除兩個數據時的情況。 103測試方法小結Ø 應用場合:程序中存在數組。Ø 測試方法:嘗試將過多的值輸入數據結構,測試上溢;對于下溢的測試,可以嘗試多刪除一個數據。Ø
29、 測試知識準備:全面理解需求規格說明書中的內容,確定數據結構的界限。11 數據結構不符合約束111缺陷產生原因在編程過程中對內部數據結構都有所約束,包括大小、維數、類型、形狀、屏幕上的位置等。我們測試的重點就是用戶能夠設置的屬性,這些屬性使用了一組參數來約束。在建立數據項和隨后對數據項進行修改的任何時刻都要對數據屬性的約束進行檢查。初始化代碼中修改后的代碼有錯誤,在修改錯誤的時候只修改了初始化部分,而忽略了對其他部分的修改,使得其修改不完全,不徹底。112如何發現這類問題Ø
30、0; 確認候選數據,并列出其可修改的屬性。對每個屬性列出有效值的允許范圍、約束的條件等。Ø 確定所有可修改屬性的功能位置。Ø 對數據進行初始化,改變每個屬性以確定是否正確進行了約束。如果數據約束遭到破壞,可能導致系統崩潰,或者表現為響應時間延遲,錯誤信息不正確以及使用錯誤數據產生的無效輸出。113測試方法小結Ø
31、 應用場合:應用程序內部的數據結構存在約束。Ø 測試方法:破壞內部數據結構的約束。Ø 測試知識儲備:全面理解需求規格說明書中的內容,確定內部數據結構的所有約束。12 操作數與操作符不符121缺陷產生原因幾乎每個運算符都有它無效的操作數,對于具體的操作符,開發人員在使用它們時,
32、必須編寫錯誤檢查代碼。例如:除以零的問題。122如何發現這類問題找到程序中包含的數據或輸入(即操作數)的計算(即操作符)、數學表達式(即操作符和操作數的組合)及對圖形的操作。另外,對多個操作數進行組合也更容易發生錯誤。例如,字符和數字都可以使用“+”操作符。對字符通過“+”把它們連成一串;對數字通過“+”來進行加法運算。如果系統嘗試把字符和數字相加,即進行相互矛盾的操作,就會引起軟件失效。123測試方法小結Ø 應用場合:需要進行數值計算的程序或圖形操作的程序。Ø
33、0; 測試方法:對于數值計算考慮操作數和操作符之間的限定關系,對于圖形計算還要考慮各種輸入數據之間的組合關系。Ø 測試知識儲備:全面掌握被測軟件中操作符對操作數的要求。掌握不同的操作符和操作數具有的不同的有效和無效的取值范圍。13 遞歸調用自身131缺陷產生原因函數有時會遞歸調用自身,如果不限制執行次數,遞歸就會出現問題,它不斷地調用自身,很快地占用機器資源,最終產生溢出,使程
34、序崩潰或掛起。產生這類問題的主要原因是開發人員沒有編碼來保證循環和遞歸調用的終止,通常是在循環的開始或結束時缺少檢查條件。132如何發現問題在軟件中尋找可以使用遞歸調用的功能。這時可以制作一個列表,標明軟件中可能嵌入遞歸的功能的列表,然后自己引用自己來檢查程序是否能正確處理。133測試方法小結Ø 應用場合:需要和其它對象進行交互的地方。Ø 測試方法:考慮對象的自我交互或復制。Ø&
35、#160; 測試知識儲備:全面掌握被測軟件的需求。14 計算結果溢出141缺陷產生原因當所有的輸入和數據都有效時,計算的最終結果也可以是無效的。所有變量都有值域范圍,有時開發人員在執行計算時會忘記檢查這些上限。142如何發現這類問題一次又一次地執行計算或使用很大或很小的輸入和數據進行計算,重點測試數據類型的初始值或邊界值附近的值。143測試方法小結Ø 應用場合:應用
36、程序執行能夠導出待產生結果并進行內部存儲的計算。Ø 測試方法:強制數據產生上溢或下溢。Ø 測試知識儲備:全面掌握被測軟件的需求,了解計算變量的上下限。 15 數據共享或關聯功能計算錯誤 151缺陷產生原因通常對孤立的功能進行測試時不會發生很多缺陷,而當把單獨的功能和同一軟件中的其它功能結合時,就可能出現很多軟件缺陷。這種缺陷的產生往往是在兩個或
37、更多的功能使用了共享數據集,而每個功能允許使用的數據范圍不同引起的。例如,一個功能可能會將某數據項設置為特定大小,然而另一個功能卻允許該數據項的大小可以超過第一個功能的處理能力。開發人員根本沒考慮到該數據項在其它功能處也可以修改,他們只是編碼保證在該功能中數據的合法性,而當使用該數據時,沒有再編碼來檢查可以使用的范圍;而此時,另一個功能修改了共享數據,當再使用這些數據時就產生了缺陷。 152如何發現這類問題當應用程序在同一時間完成一個以上的功能或當一個以上的功能在同一時間處于運行狀態時,就可以使用該方法進行測試。利用一個功能影響輸入、輸入數據或另一個功能的計算。在測試前要確定哪些功能
38、是相互依賴或共享數據的:Ø 能應用同樣輸入的每個功能。如果這些功能有相互重疊的輸入域,就可能存在交互問題。Ø 有類似的輸出產生功能。如果某些功能結合起來產生單個輸出,就說明這些部件之間存在關系,應該被一起測試。Ø 一個功能被包含在另一個功能的計算中。例如要測試鼠標選取對象的功能,不僅要測
39、度鼠標選取屏幕上的文本的功能,還可以把包含超鏈接文本、粗體、斜體、符號及圖形元素放在一起,測試鼠標選取這些元素的功能。153測試方法小結Ø 應用場合:一個以上的功能在同一時間處于運行狀態。Ø 測試方法:以點代面,重點測試某一功能,對可能與這個功能相連的其它功能附帶測試。Ø 測試知識儲備:
40、全面掌握被測軟件的需求,在測試之前對被測功能之間的依賴關聯有所掌握,另外還需要對共享數據有所掌握。16 文件系統超載161缺陷產生原因開發人員可能會忘記編寫代碼處理滿狀態的文件系統,忽略了諸如CreateFile,WriteFile等操作系統API的錯誤檢查代碼,沒有這樣的代碼,當顯示滿狀態的文件系統時,API調用就會失敗,軟件就會在沒有任何警告的情況下崩潰。162如何發現這類問題創建滿容量或近乎滿容量的文件系統,然后強制執行各種通過輸入或輸出訪問文件系統的操作;或者打開足夠多的文件,打開文件時會強制備份創建的副本,從而占用雙倍的存儲空間,這種操作
41、達到一定程度時,會達到該系統的容量,于是就能測試應用程序處理超載狀態的文件系統的能力。(通常通過磁盤配額實現)163測試方法小結Ø 應用場合:系統較大,運行時需要較大的空間。Ø 測試方法:強制磁盤系統滿容量或容量小于等于被測軟件運行時所需容量后,運行被測軟件或利用測試工具模擬磁盤狀況。Ø
42、;測試知識儲備:全面掌握被測軟件的需求,了解被測軟件處理超載狀態的文件系統的能力。17 介質忙或不可用171缺陷產生原因當多個應用程序同時訪問硬盤(或其它存儲器),操作系統為提供多請求服務會慢下來,并且必須對應用程序進行編程以處理這些延遲,當延遲變得很長時,沒有對這些錯誤進行響應的應用程序就會出現錯誤。172如何發現這類問題通過啟動大量應用程序,強制它們都打開并保存文件使文件系統處理繁忙狀態;或者同時下載大量文件也可以使后臺擁擠;檢查被測軟件能否正確處理這種情況,應用程序應該給出錯誤信息或等待批示,提示用戶正在處理。173測試方法小結Ø&
43、#160; 應用場合:應用程序的運行需要消耗大量內存或運行時需要其它相關軟件同時運行。Ø 測試方法:啟動大量程序或利用測試工具模擬磁盤狀況。Ø 測試知識儲備:全面掌握被測軟件的需求,了解被測軟件運行時對系統的要求。18 介質損壞181缺陷產生原因Ø
44、60; 損壞的介質可能會使操作系統傳回錯誤代碼,這些錯誤代碼沒有在應用程序中編程處理。Ø 操作系統不能檢測出所有這樣的錯誤,操作系統自己也有錯誤或者損壞的介質損壞了部分操作系統。 182如何發現這類問題使用損壞了的介質,例如,刮傷、灰塵、磁干擾等。檢查應用程序對錯誤的處理能力,應用程序可以對錯誤進行處理或者將問題告訴用戶,并要確保用戶數據文件不丟失、為損壞。183測試方法小結Ø &
45、#160; 應用場合:應用程序對安全的要求較高,對災難恢復的要求較高。Ø 測試方法:用實際損壞介質的方法測試應用程序。Ø 測試知識儲備:全面掌握被測軟件的需求,了解被測軟件運行時對系統的要求。19 文件名不合法191缺陷產生原因操作系統本身具有自己的文件命名規范,例如,Dos
46、的8.3格式。在Windows中,文件名不能超過255個字符,并且文件名不可以含有/ : < > ? * |這8個字符,以及AUX、COM1、COM2、COM3、COM4、CON、LPT1、LPT2、LPT3、LPT4、NUL及PRN這些操作系統保留字。開發人員在應用程序中使用不相同的規則管理文件名,當應用程序和操作系統使用的文件名命名規則不一致的時候,就會發生問題。192如何發現這類問題Ø 保存文件為操作系統不允許的文件名,例如,文件名中含有/ : < > ? * |這8個字符,測試應用程序是否不允許輸入包含這些字符的文件名。Ø 輸入一些應用程序不允許使用的文件名,例如,使用過長的、含有特殊字符的、可能相互作用的字符作為文件名,檢查應用程序能否識別該文件。 193測試方法小結Ø
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數據分析與商業智能的深度結合試題及答案
- 法學概論的個體關注點試題及答案
- 2025年行業變化對企業戰略方向的影響試題及答案
- 法學概論考試關注點及試題及答案
- 跨界融合技術應用試題及答案
- 法學概論復習攻略與試題及答案
- 云計算安全的重要性考核試題及答案
- 2025年軟考設計師復習策略試題及答案
- 網絡管理的戰略思維試題及答案
- 廊坊三中2025屆數學七下期末調研模擬試題含解析
- 質量管理小組活動準則TCAQ10201-2020
- GB/T 43293-2022鞋號
- YC/T 215-2007煙草行業聯運通用平托盤
- JJF 1751-2019菌落計數器校準規范
- GB/T 40805-2021鑄鋼件交貨驗收通用技術條件
- 中考歷史-世界近現代國際關系復習課件
- 報價單模板及范文(通用十二篇)
- 五年級異分母分數加減法第一課時課件
- 幼兒繪本故事:什么都行的哈力船長
- 高考減壓講座通用PPT課件
- 高考考前指導(班主任)心理方面、應試復習方面等
評論
0/150
提交評論