軟件功能性測試的21種故障模型_第1頁
軟件功能性測試的21種故障模型_第2頁
軟件功能性測試的21種故障模型_第3頁
軟件功能性測試的21種故障模型_第4頁
軟件功能性測試的21種故障模型_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

軟件功能性測試的21種故障模型人員的經(jīng)驗和直覺盡量歸納和固化,就形成了一些故障模型。故障模型指明了故障是如何以及為什么會在軟件執(zhí)行時引起軟件失效。在測試過程中,我們可以按照這些故障模型所提供的缺陷類型和尋找該類缺陷的方法找到盡量多的缺陷。1.1缺陷產(chǎn)生原因開發(fā)人員通常用以下3種技術(shù)來處理非法輸入:?防止不正確的輸入進入被測軟件。過濾掉不正確的輸入,只允許合法輸入通過界?輸入了不正確的數(shù)據(jù)后,軟件提示錯誤信息,拒絕不正確的輸入??梢婇_發(fā)人員除了編寫主要的功能代碼外,還必須編寫對非法輸入的檢查代碼,這些代碼經(jīng)常被遺忘,或者編寫完這部分代碼后,開發(fā)人員很少認真檢查,導(dǎo)致處理非法輸?輸入類型:鍵入無效的類型常會產(chǎn)生錯誤信息。?輸入長度:對于字符型,鍵入太多的字符常會引出錯誤信息。?邊界值:輸入邊界值或超過邊界值的數(shù)據(jù)。1.3測試方法小結(jié)?測試方法:分別從輸入數(shù)據(jù)的類型、長度、邊界值等方面進行考慮。?錯誤信息和錯誤要一致。?錯誤信息的內(nèi)容為空,用戶不知道為什么出錯。?顯示的錯誤信息是給開發(fā)人員調(diào)試使用的,例如“Error5-unknowndata”開發(fā)人員可以通過該信息很容易找到錯誤類型,但是用戶根本不明白,不知道做錯了什?測試知識儲備:牢記各基本數(shù)據(jù)類型的邊界值。2.1缺陷產(chǎn)生原因軟件就會失效,正確地使用變量的順序是:聲明變量d給變量賦值d使用變量。通常會由于以下兩個原因使變量的默認值不正確:?給變量賦值這一步經(jīng)常會被開發(fā)人員不經(jīng)意地路過。?開發(fā)人員有時不確定到底要賦什么初始值,就隨便給了一個值,但用戶并不認可序把打印默認輸出份數(shù)設(shè)置為2份,會給用戶造成很大麻煩。2.2如何發(fā)現(xiàn)這類問題確定應(yīng)用軟件中所使用的數(shù)據(jù)有以下一些基本原則:?查找選項按鈕、配置面板、安裝屏幕等。這種屏幕上顯示的數(shù)據(jù)常常在應(yīng)用程序?接受軟件顯示的默認值。有時軟件需要用戶輸入一個值,如果沒有輸入任何值,軟件就可能失效。這時可以只是簡單的單擊“確定”按鈕來接受默認值,完成這個功?鍵入空值。刪掉默認值,使輸入域變成空值。?將默認值改為另一個值,這樣會使應(yīng)用程序以不同的值來運行。?將輸入值改為另一個值,然后再變以空值。一個好的軟件會這樣處理以上情況,將輸入的不合法內(nèi)容默認為合法邊界內(nèi)的某個合理值,或者返回錯誤提示信息。2.3測試方法小結(jié)?應(yīng)用場合:需要有默認值的地方。?測試方法:分別從選項按鈕、配置面板、安裝配置、開始界面等方面進行考慮,強制使用或不使用默認值等。?測試知識儲備:全面理解需求規(guī)格說明書中對默認值的要求;同時深刻理解被測軟3.1缺陷產(chǎn)生原因能導(dǎo)致程序掛起,主要包括以下3種情況:?字符集包括普通字符和特殊字符。例如,ASCII字符集包括普通字符和特殊字符。應(yīng)用程序有時只能處理普通字符,當(dāng)輸入特殊字符時就會出現(xiàn)錯誤。語言把\n、++和&這樣的字符用于特殊目的。如果將這些字符串鍵入到對話框中,程序必須進行錯誤處理,否則容易產(chǎn)生錯誤。?應(yīng)用程序有時也使用設(shè)置名稱、系統(tǒng)對象和程序的保留字符串集合。只要在程序中使用了這些字符串,就可能導(dǎo)致失效3.2如何發(fā)現(xiàn)這類問題?根據(jù)被測軟件所處的操作系統(tǒng)、使用的程序設(shè)計語言、字符集等信息列出表格,通?根據(jù)經(jīng)驗,軟件很少會因為這種操作而崩潰,通常它會掛起沒有響應(yīng)。3.3測試方法小結(jié)?應(yīng)用場合:需要接受字符輸入的地方。?測試方法:根據(jù)被測軟件的具體情況輸入非法字符。?測試知識儲備:盡可能多地了多地了解字符集、程序設(shè)計語言和操作系統(tǒng)中的保留字符串及其特定含義,可以使我們更好地分辨這類缺陷。4、輸入使緩沖區(qū)溢出的數(shù)據(jù)4.1缺陷產(chǎn)生原因開發(fā)人員沒有考慮傳送給內(nèi)存緩沖區(qū)的字符串的大小。如果緩沖操作系統(tǒng)強制性地終止應(yīng)用程序。4.2如何發(fā)現(xiàn)這類問題當(dāng)應(yīng)用程序允許輸入字母、數(shù)字時,通過GUI控件(如文本框),或者通過API調(diào)用的參數(shù)來進行這種測試。?首先弄清楚要測試的輸入域的長度,輸入最大字符串測試。?輸入一個比最大字符串長的字符串,應(yīng)用程序可能出現(xiàn)錯誤提示信息,提示不允許輸入;或者輸入了更長的字符串使應(yīng)用程序崩潰。4.3測試方法小結(jié)?應(yīng)用場合:需要接受字符輸入的地方。?測試方法:根據(jù)被測軟件的具體情況輸入最大字符串或輸入一個比最大字符串更?測試知識儲備:盡可能多地和開發(fā)人員討論,以了解和確定輸入域的合理長度。5、輸入產(chǎn)生錯誤的合法數(shù)據(jù)組合5.1缺陷產(chǎn)生原因相影響而引起軟件失效。5.2如何發(fā)現(xiàn)這類問題首先要確定測試哪些輸入組合,并弄清楚它們之間的“關(guān)系”。如果具備以下任一特性,就可以認為這些變量是有“關(guān)系”的。?描述的是有關(guān)單個內(nèi)部數(shù)據(jù)結(jié)構(gòu)的屬性和內(nèi)容。例如,輸入面板需要用戶輸入列表的“行”和“列”,這時測試人員要輸入單個內(nèi)部數(shù)據(jù)結(jié)構(gòu)“列表”的屬性“行和列”。些輸入變量具有了相互“關(guān)系”。5.3測試方法小結(jié)?應(yīng)用場合:輸入值之間存在依賴關(guān)系。?測試方法:輸入可能是存在問題的組合值。?測試知識儲備:盡可能多的內(nèi)部數(shù)據(jù)結(jié)構(gòu)的屬性和內(nèi)容,并與開發(fā)人員探討,以確定輸入的數(shù)據(jù)值。6.1缺陷產(chǎn)生原因單個輸入產(chǎn)生多種輸出的情況與先前的輸入和被測系統(tǒng)的狀態(tài)都有關(guān)系。例如,在文字處理程序中單擊“關(guān)閉”按鈕,如果文件被編輯且未被保存,程序?qū)⑻崾臼欠癖4嫖募?。如果文件已被保存過,則文件直接關(guān)閉。6.2如何發(fā)現(xiàn)這類問題測試人員必須具有關(guān)于被測系統(tǒng)軟件的業(yè)務(wù)方面的知識,具備各種程序文檔,明確一個輸入可以產(chǎn)生何種輸出。我們可以據(jù)此列出關(guān)于程序輸入與輸出的一個列表,然后進行測試。6.3測試方法小結(jié)?應(yīng)用場合:同一輸入對應(yīng)多個輸出的情況。?測試方法:測試輸入對應(yīng)的每一個輸出。?測試知識儲備:全面理解需求規(guī)格說明書中的內(nèi)容,找出輸入與輸出之間的關(guān)7.1缺陷產(chǎn)生原因軟件就會產(chǎn)生不符合業(yè)務(wù)邏輯的問題。另外在絕大多數(shù)情況下開發(fā)人員會忽略處理沒有遵7.2如何發(fā)現(xiàn)這類問題?測試人員應(yīng)該盡可能地學(xué)習(xí)的涉及問題的領(lǐng)域。?有時在列舉出無效輸出后,也很難知道哪些輸入組合能強制這些輸出產(chǎn)生。這時測試人員必須先要確定哪些輸入與輸出有關(guān),然后用產(chǎn)生意外結(jié)果的輸入組合進行測試,測試過程中要注意輸入執(zhí)行順序,用不同的順序執(zhí)行可能得到不同的結(jié)果。如果不能強制無效的輸出產(chǎn)生,就說明軟件沒有這方面的缺陷。7.3測試方法小結(jié)?應(yīng)用場合:強制產(chǎn)生不符合業(yè)務(wù)背景的知識。?測試方法:列舉出所有的無效輸出,然后逐一測試。8、輸出屬性修改后的結(jié)果8.1缺陷產(chǎn)生原因輸出常常具有可修改的屬性,如顏色、形狀、維數(shù)及大小等,用戶可以修改這些屬性。在這種情況下,開發(fā)人員必須編碼、設(shè)立初始或默認屬性值,然后編碼允許用戶編輯8.2如何發(fā)現(xiàn)這類問題強制每個輸出產(chǎn)生,并編輯其屬性,然后再次強制輸出產(chǎn)生。8.3測試方法小結(jié)?應(yīng)用場合:輸出的結(jié)果,可以由用戶修改屬性得出。?測試方法:強制每個輸出產(chǎn)生,并編輯其屬性,然后再次強制產(chǎn)生輸出。?測試知識儲備:全面理解需求規(guī)格說明書中的內(nèi)容,了解能夠產(chǎn)生的輸出。9.1缺陷產(chǎn)生原因通常GUI軟件會產(chǎn)生刷新問題,因為GUI在對窗口進行覆蓋、移動和調(diào)整大小時,法才可以繼續(xù)工作。所以開發(fā)人員有時候不能很好地確定什么時候需要刷新,需要刷新多大范圍的區(qū)域,這就發(fā)生了令人煩惱的刷新問題。9.2如何發(fā)現(xiàn)這類問題示。如果不能正確、及時地進行重新顯示,就產(chǎn)生了軟件缺陷。我們可以通過以下幾個方?從起始位置移動對象。先移動一點,然后增加移動幅度;先移動一次或兩次,然后多次移動,確保覆蓋了所有區(qū)域?從覆蓋對象的邊界開始一點點覆蓋,使其中一個對象遮住別一個對象。?使用不同類型的對象。如果應(yīng)用程序支持多種類型的對象,如文本對象、圖形對象等,就把這些不同對象混在一起使用。9.3測試方法小結(jié)?測試方法:增加、刪除和移動屏幕上的對象。?測試知識儲備:全面理解需求規(guī)格說明書中的內(nèi)容,了解程序中對象之間的關(guān)系。10.1缺陷產(chǎn)生原因所有數(shù)據(jù)結(jié)構(gòu)的大小都有上限。一些數(shù)據(jù)結(jié)構(gòu)會逐步增加長度以充滿機器內(nèi)存容量行編碼,忘記結(jié)構(gòu)本身的物理局限。10.2如何發(fā)現(xiàn)這類問題?確定數(shù)據(jù)結(jié)構(gòu)的界限,嘗試將過多的值輸入數(shù)據(jù)結(jié)構(gòu)。應(yīng)該特別注意界限為數(shù)據(jù)?對于下溢的測試,可以嘗試多刪除一個數(shù)據(jù),例如當(dāng)結(jié)構(gòu)為空時,嘗試再刪除,或者添加一個數(shù)據(jù),嘗試刪除兩個數(shù)據(jù)時的情況。10.3測試方法小結(jié)?應(yīng)用場合:程序中存在數(shù)組。嘗試多刪除一個數(shù)據(jù)。?測試知識準備:全面理解需求規(guī)格說明書中的內(nèi)容,確定數(shù)據(jù)結(jié)構(gòu)的界11.1缺陷產(chǎn)生原因在編程過程中對內(nèi)部數(shù)據(jù)結(jié)構(gòu)都有所約束,包括大小、維數(shù)、類了一組參數(shù)來約束。在建立數(shù)據(jù)項和隨后對數(shù)據(jù)項進行修改的任何時刻都要對數(shù)據(jù)屬性的部分,而忽略了對其他部分的修改,使得其修改不完全,不徹底。11.2如何發(fā)現(xiàn)這類問題?確認候選數(shù)據(jù),并列出其可修改的屬性。對每個屬性列出有效值的允許范圍、約束?確定所有可修改屬性的功能位置。?對數(shù)據(jù)進行初始化,改變每個屬性以確定是否正確進行了約束。息不正確以及使用錯誤數(shù)據(jù)產(chǎn)生的無效輸出。11.3測試方法小結(jié)?應(yīng)用場合:應(yīng)用程序內(nèi)部的數(shù)據(jù)結(jié)構(gòu)存在約束。?測試方法:破壞內(nèi)部數(shù)據(jù)結(jié)構(gòu)的約束。?測試知識儲備:全面理解需求規(guī)格說明書中的內(nèi)容,確定內(nèi)部數(shù)據(jù)結(jié)構(gòu)的所有約12.1缺陷產(chǎn)生原因時,必須編寫錯誤檢查代碼。例如:除以零的問題。12.2如何發(fā)現(xiàn)這類問題找到程序中包含的數(shù)據(jù)或輸入(即操作數(shù))的計算(即操作符)、數(shù)學(xué)表達式(即操作符和操作數(shù)的組合)及對圖形的操作。另外,對多個操作數(shù)進行組合也更容易發(fā)生錯誤。例如,字符和數(shù)字都可以使用“+”操作符。對字符通過“+”把它們連成一串;對數(shù)字通過“+”來進行加法運算。如果系統(tǒng)嘗試把字符和數(shù)字相加,即進行相互矛盾的操作,就會引起軟件失效。12.3測試方法小結(jié)?應(yīng)用場合:需要進行數(shù)值計算的程序或圖形操作的程序。?測試方法:對于數(shù)值計算考慮操作數(shù)和操作符之間的限定關(guān)系,對于圖形計算還要考慮各種輸入數(shù)據(jù)之間的組合關(guān)系。?測試知識儲備:全面掌握被測軟件中操作符對操作數(shù)的要求。掌握不同的操作符和操作數(shù)具有的不同的有效和無效的取值范圍。13.1缺陷產(chǎn)生原因調(diào)用自身,很快地占用機器資源,最終產(chǎn)生溢出,使程序崩潰或掛起。產(chǎn)生這類問題的主要原因是開發(fā)人員沒有編碼來保證循環(huán)和遞歸調(diào)用的終止,通常是在循環(huán)的開始或結(jié)束時13.2如何發(fā)現(xiàn)問題在軟件中尋找可以使用遞歸調(diào)用的功能。這時可以制作一個列表,標明軟件中可能嵌入遞歸的功能的列表,然后自己引用自己來檢查程序是否能正確處13.3測試方法小結(jié)?應(yīng)用場合:需要和其它對象進行交互的地方。?測試方法:考慮對象的自我交互或復(fù)制。?測試知識儲備:全面掌握被測軟件的需求。14.1缺陷產(chǎn)生原因域范圍,有時開發(fā)人員在執(zhí)行計算時會忘記檢查這些上限。14.2如何發(fā)現(xiàn)這類問題一次又一次地執(zhí)行計算或使用很大或很小的輸入和數(shù)據(jù)進行計算,重點測試數(shù)據(jù)類型的初始值或邊界值附近的值。14.3測試方法小結(jié)?應(yīng)用場合:應(yīng)用程序執(zhí)行能夠?qū)С龃a(chǎn)生結(jié)果并進行內(nèi)部存儲的計算。?測試方法:強制數(shù)據(jù)產(chǎn)生上溢或下溢。?測試知識儲備:全面掌握被測軟件的需求,了解計算變量的上下限。15.1缺陷產(chǎn)生原因通常對孤立的功能進行測試時不會發(fā)生很多缺陷,而當(dāng)把單獨的功能和同一軟件中能會將某數(shù)據(jù)項設(shè)置為特定大小,然而另一個功能卻允許該數(shù)據(jù)項的大小可以超過第一個范圍;而此時,另一個功能修改了共享數(shù)據(jù),當(dāng)再使用這些數(shù)據(jù)時就產(chǎn)生了缺陷。15.2如何發(fā)現(xiàn)這類問題當(dāng)應(yīng)用程序在同一時間完成一個以上的功能或當(dāng)一個以上的功能在同一時另一個功能的計算。在測試前要確定哪些功能是相互依賴或共享數(shù)據(jù)的:?能應(yīng)用同樣輸入的每個功能。如果這些功能有相互重疊的輸入域,就可能存在交?有類似的輸出產(chǎn)生功能。如果某些功能結(jié)合起來產(chǎn)生單個輸出,就說明這些部件之間存在關(guān)系,應(yīng)該被一起測試。?一個功能被包含在另一個功能的計算中。例如要測試鼠標選取對象的功能,不僅要形元素放在一起,測試鼠標選取這些元素的功能。15.3測試方法小結(jié)?測試方法:以點代面,重點測試某一功能,對可能與這個功能相連的其它功能附帶?測試知識儲備:全面掌握被測軟件的需求,在測試之前對被測功能之間的依賴關(guān)聯(lián)有所掌握,另外還需要對共享數(shù)據(jù)有所掌握。16、文件系統(tǒng)超載16.1缺陷產(chǎn)生原因開發(fā)人員可能會忘記編寫代碼處理滿狀態(tài)的文件系統(tǒng),忽略了諸如CreateFile,WriteFile等操作系統(tǒng)API的錯誤檢查代碼,沒有這樣的代碼,當(dāng)顯示滿狀i-L-T、/|~h16.2如何發(fā)現(xiàn)這類問題16.3測試方法小結(jié)?應(yīng)用場合:系統(tǒng)較大,運行時需要較大的空間。?測試方法:強制磁盤系統(tǒng)滿容量或容量小于等于被測軟件運行時所需容量后,運行被測軟件或利用測試工具模擬磁盤狀況。?測試知識儲備:全面掌握被測軟件的需求,了解被測軟件處理超載狀態(tài)的文件系供多請求服務(wù)會慢下來,并且必須對應(yīng)用程序進行編程以處理這些延遲,當(dāng)延遲變得很長17.2如何發(fā)現(xiàn)這類問題者同時下載大量文件也可以使后臺擁擠;檢查被測軟件能否正確處理這種情況,應(yīng)用程序應(yīng)該給出錯誤信息或等待批示,提示用戶正在處理。?應(yīng)用場合:應(yīng)用程序的運行需要消耗大量內(nèi)存或運行時需要其它相關(guān)軟件同時運?測試方法:啟動大量程序或利用測試工具模擬磁盤狀況。?測試知識儲備:全面掌握被測軟件的需求,了解被測軟件運行時對系統(tǒng)的要求。18.1缺陷產(chǎn)生原因?損壞的介質(zhì)可能會使操作系統(tǒng)傳回錯誤代碼,這些錯誤代碼沒有在應(yīng)用程序中編?操作系統(tǒng)不能檢測出所有這樣的錯誤,操作系統(tǒng)自己也有錯誤或者損壞的介質(zhì)損壞了部分操作系統(tǒng)。18.2如何發(fā)現(xiàn)這類問題使用損壞了的介質(zhì),例如,刮傷、灰塵、磁干擾等。檢查應(yīng)保用戶數(shù)據(jù)文件不丟失、為損壞。18.3測試方法小結(jié)?應(yīng)用場合:應(yīng)用程序?qū)Π踩囊筝^高,對災(zāi)難恢復(fù)的要求較高。?測試方法:用實際損壞介質(zhì)的方法測試應(yīng)用程序。?測試知識儲備:全面掌握被測軟件的需求,了解被測軟件運行時對系統(tǒng)19.1缺陷產(chǎn)生原因AUX、COM1、COM2、COM3、COM4、CON、LPT1、LPT2、LPT3、LPT4、NUL及PRN這些操作系統(tǒng)保留字。的文件名命名規(guī)則不一致的時候,就會發(fā)生問題。19.2如何發(fā)現(xiàn)這類問題?保存文件為操作系統(tǒng)不允許的文件名,例如,文件名中含有/\:<>?*|這8個字符,測試應(yīng)用程序是否不允許輸入包含這些字符的文件名。?輸入一些應(yīng)用程序不允許使用的文件名,例如,使用過長的、含有特殊字符的、可能相互作用的字符作為文件名,檢查應(yīng)用程序能否識別該文件。19.3測試方法小結(jié)?應(yīng)用場合:幾乎所有涉及需要輸入文件名功能的應(yīng)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論