軟件故障的21種模型(DOC)_第1頁
軟件故障的21種模型(DOC)_第2頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、軟件功能性測試的 21 種故障模型測試的目標(biāo)是要發(fā)現(xiàn)錯誤,因此在編寫測試用例的時候也要遵循這個目標(biāo),盡量在軟件的最薄弱環(huán)節(jié)多編寫測試用例。雖然測試時有很多單個輸入變量、多個輸入變量的組合,但 優(yōu)秀的軟件測試人員不會依靠運氣,他們有著豐富的經(jīng)驗和直覺, 可以從中找到哪些是需要進行測試的,哪些不需要測試,哪些操作可能會引起軟件失效。把這些測試人員的經(jīng)驗和直 覺盡量歸納和固化,就形成了一些故障模型。故障模型指明了故障是如何以及為什么會在軟 件執(zhí)行時引起軟件失效。在測試過程中,我們可以按照這些故障模型所提供的缺陷類型和尋 找該類缺陷的方法找到盡量多的缺陷。1輸入非法數(shù)據(jù)1.1.i i 缺陷產(chǎn)生原因開發(fā)

2、人員通常用以下3種技術(shù)來處理非法輸入:?防止不正確的輸入進入被測軟件。過濾掉不正確的輸入,只允許合法輸入通過界面。?輸入了不正確的數(shù)據(jù)后,軟件提示錯誤信息,拒絕不正確的輸入。?允許不正確的輸入進入系統(tǒng)并進行處理,軟件失效時調(diào)用異常處理程序,顯示一些錯誤信息??梢婇_發(fā)人員除了編寫主要的功能代碼外,還必須編寫對非法輸入的檢查代碼,這些代碼經(jīng)常被遺忘,或者編寫完這部分代碼后, 開發(fā)人員很少認(rèn)真檢查, 導(dǎo)致處理非法輸入經(jīng)常出錯。1 1 . 2 2 如何發(fā)現(xiàn)這類問題進行測試時從輸入值的屬性出發(fā),一般考慮以下三點:?輸入類型:鍵入無效的類型常會產(chǎn)生錯誤信息。?輸入長度:對于字符型,鍵入太多的字符常會引出錯

3、誤信息。邊界值:輸入邊界值或超過邊界值的數(shù)據(jù)。1.1.3 3 測試方法小結(jié)?應(yīng)用場合:GUI的輸入。?測試方法:分別從輸入數(shù)據(jù)的 類型、長度、邊界值 等方面進行考慮。?測試信息檢查:I錯誤信息和錯誤要一致。I錯誤信息的內(nèi)容為空,用戶不知道為什么出錯。I顯示的錯誤信息是給開發(fā)人員調(diào)試使用的,例如Error 5-unknown data”,開發(fā)人員可以通過該信息很容易找到錯誤類型,但是用戶根本不明白,不知道做錯了什么。?測試知識儲備:牢記各基本數(shù)據(jù)類型的邊界值。2輸入默認(rèn)值2.2.1 1 缺陷產(chǎn)生原因一旦軟件中使用了變量,就必須賦給初始值,如果在賦值之前就使用了這些變量,軟件就會失效,正確地使用變

4、量的順序是:聲明變量給變量賦值使用變量。通常會由于以下兩個原因使變量的默認(rèn)值不正確:?給變量賦值這一步經(jīng)常會被開發(fā)人員不經(jīng)意地路過。?開發(fā)人員有時不確定到底要賦什么初始值, 就隨便給了一個值,但用戶并不認(rèn)可該值, 這種情況下,軟件并不一定會失效,但對用戶的使用會帶來很多不便。 例如某程序把打印默 認(rèn)輸出份數(shù)設(shè)置為2份,會給用戶造成很大麻煩。2.2.2 2 如何發(fā)現(xiàn)這類問題確定應(yīng)用軟件中所使用的數(shù)據(jù)有以下一些基本原則:?查找選項按鈕、配置面板、安裝屏幕等。這種屏幕上顯示的數(shù)據(jù)常常在應(yīng)用程序的許多地方用到。?查閱源代碼的數(shù)據(jù)聲明部分(如果可以得到)。?確定了要測試的數(shù)據(jù),可以通過以下操作來強制使用

5、或不使用默認(rèn)的值:I接受軟件顯示的默認(rèn)值。有時軟件需要用戶輸入一個值,如果沒有輸入任何值,軟件就可能失效。這時可以只是簡單的單擊“確定”按鈕來接受默認(rèn)值,完成這個功能測試。I鍵入空值。刪掉默認(rèn)值,使輸入域變成空值。I將默認(rèn)值改為另一個值,這樣會使應(yīng)用程序以不同的值來運行。I將輸入值改為另一個值,然后再變以空值。一個好的軟件會這樣處理以上情況,將輸入的不合法內(nèi)容默認(rèn)為合法邊界內(nèi)的某個合理值, 或者返回錯誤提示信息。2 2. 3 3 測試方法小結(jié)?應(yīng)用場合:需要有默認(rèn)值的地方。?測試方法:分別從選項按鈕、配置面板、安裝配置、開始界面等方面進行考慮,強制使用或不使用默認(rèn)值等。?測試知識儲備:全面理解

6、需求規(guī)格說明書中對默認(rèn)值的要求;同時深刻理解被測軟件的行業(yè)背景。3輸入特殊字符集3.3.1 1 缺陷產(chǎn)生原因應(yīng)用程序接受字符串輸入,如果程序沒有針對特殊輸入進行特殊編程,那么就有可能導(dǎo)致程序掛起,主要包括以下3種情況:?字符集包括普通字符和特殊字符。例如,ASCII字符集包括普通字符和特殊字符。應(yīng)用程序有時只能處理普通字符,當(dāng)輸入特殊字符時就會出現(xiàn)錯誤。?實現(xiàn)應(yīng)用程序的程序設(shè)計語言有特定的處理一些字符和字符串的方法。例如,C語言把n、+和&這樣的字符用于特殊目的。如果將這些字符串鍵入到對話框中,程序必須進行 錯誤處理,否則容易產(chǎn)生錯誤。?應(yīng)用程序有時也使用設(shè)置名稱、系統(tǒng)對象和程序的保留

7、字符串集合。只要在程序中使用了這些字符串,就可能導(dǎo)致失效。3.3.2 2 如何發(fā)現(xiàn)這類問題?根據(jù)被測軟件所處的操作系統(tǒng)、使用的程序設(shè)計語言、字符集等信息列出表格,通過測試小組的討論,標(biāo)明應(yīng)用表格中的哪些字符和數(shù)據(jù)類型作為輸入來測試。?根據(jù)經(jīng)驗,軟件很少會因為這種操作而崩潰,通常它會掛起沒有響應(yīng)。3.3測試方法小結(jié)?應(yīng)用場合:需要接受字符輸入的地方。?測試方法:根據(jù)被測軟件的具體情況輸入非法字符。?測試知識儲備:盡可能多地了多地了解字符集、程序設(shè)計語言和操作系統(tǒng)中的保留字符串及其特定含義,可以使我們更好地分辨這類缺陷。4輸入使緩沖區(qū)溢出的數(shù)據(jù)4.4.1 1 缺陷產(chǎn)生原因開發(fā)人員沒有考慮傳送給內(nèi)存

8、緩沖區(qū)的字符串的大小。 串,輸入更長的字符串就會改寫其他的內(nèi)存存儲單元,4.4.2 2 如何發(fā)現(xiàn)這類問題調(diào)用的參數(shù)來進行這種測試。?首先弄清楚要測試的輸入域的長度,輸入最大字符串測試。?輸入一個比最大字符串長的字符串,應(yīng)用程序可能出現(xiàn)錯誤提示信息,提示不允許輸入;或者輸入了更長的字符串使應(yīng)用程序崩潰。4.4.3 3 測試方法小結(jié)?應(yīng)用場合:需要接受字符輸入的地方。?測試方法:根據(jù)被測軟件的具體情況輸入最大字符串或輸入一個比最大字符串更長的 字符串。?測試知識儲備:盡可能多地和開發(fā)人員討論,以了解和確定輸入域的合理長度。如果緩沖區(qū)只能保留固定長度的字符 引起操作系統(tǒng)強制性地終止應(yīng)用程序。當(dāng)應(yīng)用程

9、序允許輸入字母、數(shù)字時,通過GUI控件(如文本框),或者通過API5輸入產(chǎn)生錯誤的合法數(shù)據(jù)組合5.5.1 1 缺陷產(chǎn)生原因測試多個輸入值的組合,每個輸入值已被單獨測試過,但是這些值的組合可能會互相影響而 引起軟件失效。5.5.2 2 如何發(fā)現(xiàn)這類問題首先要確定測試哪些輸入組合,并弄清楚它們之間的“關(guān)系”。如果具備以下任一特性,就可以認(rèn)為這些變量是有“關(guān)系”的。?描述的是有關(guān)單個內(nèi)部數(shù)據(jù)結(jié)構(gòu)的屬性和內(nèi)容。例如,輸入面板需要用戶輸入列表的“行”和“列”,這時測試人員要輸入單個內(nèi)部數(shù)據(jù)結(jié)構(gòu)“列表”的屬性“行和列”。?一起用在了一個計算中,也就是將多個輸入用做一個內(nèi)部計算的操作數(shù),因此這些輸入變量具有

10、了相互“關(guān)系”。5.5.3 3 測試方法小結(jié)?應(yīng)用場合:輸入值之間存在依賴關(guān)系。?測試方法:輸入可能是存在問題的組合值。?測試知識儲備:盡可能多的內(nèi)部數(shù)據(jù)結(jié)構(gòu)的屬性和內(nèi)容,并與開發(fā)人員探討,以確定輸入的數(shù)據(jù)值。6產(chǎn)生同一個輸入的各種可能輸出6.6.1 1 缺陷產(chǎn)生原因單個輸入產(chǎn)生多種輸出的情況與先前的輸入和被測系統(tǒng)的狀態(tài)都有關(guān)系。例如,在文字處理程序中單擊“關(guān)閉”按鈕,如果文件被編輯且未被保存,程序?qū)⑻崾臼欠癖4嫖募H绻?件已被保存過,則文件直接關(guān)閉。6.6.2 2 如何發(fā)現(xiàn)這類問題測試人員必須具有關(guān)于被測系統(tǒng)軟件的業(yè)務(wù)方面的知識,具備各種程序文檔,明確一個輸入可以產(chǎn)生何種輸出。我們可以據(jù)

11、此列出關(guān)于程序輸入與輸出的一個列表,然后進行測試。6.6.3 3 測試方法小結(jié)?應(yīng)用場合:同一輸入對應(yīng)多個輸出的情況。?測試方法:測試輸入對應(yīng)的每一個輸出。?測試知識儲備:全面理解需求規(guī)格說明書中的內(nèi)容,找出輸入與輸出之間的關(guān)系。7輸出不符合業(yè)務(wù)規(guī)則的無效輸出7.7.1 1 缺陷產(chǎn)生原因有時開發(fā)人員也可能對業(yè)務(wù)了解不深刻,對有些問題也是一知半解,因此編寫出的軟件就會產(chǎn)生不符合業(yè)務(wù)邏輯的問題。另外在絕大多數(shù)情況下開發(fā)人員會忽略處理沒有遵循一般規(guī)則 的輸入,如果不對這些特殊情況進行編程處理,軟件就會產(chǎn)生錯誤的結(jié)果。7.7.2 2 如何發(fā)現(xiàn)這類問題測試人員應(yīng)該盡可能地學(xué)習(xí)的涉及問題的領(lǐng)域。?有時在列

12、舉出無效輸出后,也很難知道哪些輸入組合能強制這些輸出產(chǎn)生。這時測試人員必須先要確定哪些輸入與輸出有關(guān),然后用產(chǎn)生意外結(jié)果的輸入組合進行測試,測試過程中要注意輸入執(zhí)行順序,用不同的順序執(zhí)行可能得到不同的結(jié)果。如果不能強制無效的輸出產(chǎn)生,就說明軟件沒有這方面的缺陷。7.7.3 3 測試方法小結(jié)?應(yīng)用場合:強制產(chǎn)生不符合業(yè)務(wù)背景的知識。?測試方法:列舉出所有的無效輸出,然后逐一測試。?測試知識儲備:全面理解需求規(guī)格說明書中的內(nèi)容,熟悉行業(yè)背景知識。8輸出屬性修改后的結(jié)果8.8.1 1 缺陷產(chǎn)生原因輸出常常具有可修改的屬性,如顏色、形狀、維數(shù)及大小等,用戶可以修改這些屬性。 在這種情況下,開發(fā)人員必須

13、編碼、設(shè)立初始或默認(rèn)屬性值,然后編碼允許用戶編輯 這些屬性。當(dāng)用戶改變了這些屬性后,內(nèi)部的相應(yīng)變量值也隨著變化,再次進行處理時, 這些值沒有被重新恢復(fù)為默認(rèn)值,輸出的屬性就被強制改變了。8.8.2 2 如何發(fā)現(xiàn)這類問題該測試方法可以使用在那些輸出具有可編輯性、可修改性的功能中。測試人員首先要 仔細(xì)了解能夠產(chǎn)生的輸出,特別要注意具有可編輯屬性的輸出。測試人員的任務(wù)就是 強制每個輸出產(chǎn)生,并編輯其屬性,然后再次強制輸出產(chǎn)生。8.8.3 3 測試方法小結(jié)?應(yīng)用場合:輸出的結(jié)果,可以由用戶修改屬性得出。?測試方法:強制每個輸出產(chǎn)生,并編輯其屬性,然后再次強制產(chǎn)生輸出。?測試知識儲備:全面理解需求規(guī)格說

14、明書中的內(nèi)容,了解能夠產(chǎn)生的輸出。9屏幕刷新顯示9.9.1 1 缺陷產(chǎn)生原因通常GUI軟件會產(chǎn)生刷新問題,因為GUI在對窗口進行覆蓋、移動和調(diào)整大小時,必 須刷新屏幕才能使對象重新顯示。但是如果經(jīng)常刷新,容易減慢應(yīng)用程序的運行速度; 如果不刷新,又會影響用戶對程序的使用,使用戶必須停止工作,去尋找刷新的方法 才可以繼續(xù)工作。所以開發(fā)人員有時候不能很好地確定什么時候需要刷新,需要刷新 多大范圍的區(qū)域,這就發(fā)生了令人煩惱的刷新問題。9.9.2 2 如何發(fā)現(xiàn)這類問題測試刷新問題的方法是增加、刪除稱移動屏幕上的對象,這樣會使某些對象重新顯示。 如果不能正確、及時地進行重新顯示,就產(chǎn)生了軟件缺陷。我們可

15、以通過以下幾個方法 來檢查刷新:?從起始位置移動對象。先移動一點,然后增加移動幅度;先移動一次或兩次,然后多次移動,確保覆蓋了所有區(qū)域。?從覆蓋對象的邊界開始一點點覆蓋,使其中一個對象遮住別一個對象。?使用不同類型的對象。如果應(yīng)用程序支持多種類型的對象,如文本對象、圖形對象等,就把這些不同對象混在一起使用。9.9.3 3 測試方法小結(jié)?應(yīng)用場合:一個對象包含在另一個對象中,拖動被包含對象時,可能出現(xiàn)刷新問題。?測試方法:增加、刪除和移動屏幕上的對象。?測試知識儲備:全面理解需求規(guī)格說明書中的內(nèi)容,了解程序中對象之間的關(guān)系。10 數(shù)據(jù)結(jié)構(gòu)溢出10.10. 1 1 缺陷產(chǎn)生原因所有數(shù)據(jù)結(jié)構(gòu)的大小都

16、有上限。一些數(shù)據(jù)結(jié)構(gòu)會逐步增加長度以充滿機器內(nèi)存容量或 磁盤空間,而其它數(shù)據(jù)結(jié)構(gòu)具有固定的上限。開發(fā)人員經(jīng)常對有關(guān)數(shù)據(jù)結(jié)構(gòu)的內(nèi)容 進行編碼,忘記結(jié)構(gòu)本身的物理局限。10.10. 2 2 如何發(fā)現(xiàn)這類問題?確定數(shù)據(jù)結(jié)構(gòu)的界限,嘗試將過多的值輸入數(shù)據(jù)結(jié)構(gòu)。應(yīng)該特別注意界限為數(shù)據(jù)類型的邊界256、1024、32768等上溢的測試。?對于下溢的測試,可以嘗試多刪除一個數(shù)據(jù),例如當(dāng)結(jié)構(gòu)為空時,嘗試再刪除,或者添加一個數(shù)據(jù),嘗試刪除兩個數(shù)據(jù)時的情況。10.10. 3 3 測試方法小結(jié)?應(yīng)用場合:程序中存在數(shù)組。?測試方法:嘗試將過多的值輸入數(shù)據(jù)結(jié)構(gòu),測試上溢;對于下溢的測試,可以嘗試多刪除一個數(shù)據(jù)。?測試

17、知識準(zhǔn)備:全面理解需求規(guī)格說明書中的內(nèi)容,確定數(shù)據(jù)結(jié)構(gòu)的界限。11 數(shù)據(jù)結(jié)構(gòu)不符合約束11.11. 1 1 缺陷產(chǎn)生原因在編程過程中對內(nèi)部數(shù)據(jù)結(jié)構(gòu)都有所約束,包括大小、維數(shù)、類型、形狀、屏幕 上的位置等。我們測試的重點就是用戶能夠設(shè)置的屬性,這些屬性使用了一組參數(shù) 來約束。在建立數(shù)據(jù)項和隨后對數(shù)據(jù)項進行修改的任何時刻都要對數(shù)據(jù)屬性的約束 進行檢查。初始化代碼中修改后的代碼有錯誤,在修改錯誤的時候只修改了初始化 部分,而忽略了對其他部分的修改,使得其修改不完全,不徹底。11.11. 2 2 如何發(fā)現(xiàn)這類問題?確認(rèn)候選數(shù)據(jù),并列出其可修改的屬性。對每個屬性列出有效值的允許范圍、約束的條件等。?確定

18、所有可修改屬性的功能位置。?對數(shù)據(jù)進行初始化,改變每個屬性以確定是否正確進行了約束。如果數(shù)據(jù)約束遭到破壞,可能導(dǎo)致系統(tǒng)崩潰,或者表現(xiàn)為響應(yīng)時間延遲,錯誤信息 不正確以及使用錯誤數(shù)據(jù)產(chǎn)生的無效輸出。11.11. 3 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 操作數(shù)與操作符不符12.12. 1 1 缺陷產(chǎn)生原因幾乎每個運算符都有它無效的操作數(shù),對于具體的操作符,開發(fā)人員在使用它們時, 必須編寫錯誤檢查代碼。例如:除以零的問題。12.12. 2 2 如何發(fā)現(xiàn)這類問題

19、找到程序中包含的數(shù)據(jù)或輸入(即操作數(shù))的計算(即操作符)、數(shù)學(xué)表達(dá)式(即操作符和操作數(shù)的組合)及對圖形的操作。另外,對多個操作數(shù)進行組合也更容易發(fā)生 錯誤。例如,字符和數(shù)字都可以使用“+”操作符。對字符通過“+”把它們連成一串;對數(shù)字通過“+”來進行加法運算。如果系統(tǒng)嘗試把字符和數(shù)字相加,即進行相互矛盾 的操作,就會引起軟件失效。12.12. 3 3 測試方法小結(jié)?應(yīng)用場合:需要進行數(shù)值計算的程序或圖形操作的程序。?測試方法:對于數(shù)值計算考慮操作數(shù)和操作符之間的限定關(guān)系,對于圖形計算還要考慮各種輸入數(shù)據(jù)之間的組合關(guān)系。?測試知識儲備:全面掌握被測軟件中操作符對操作數(shù)的要求。掌握不同的操作符和操

20、作數(shù)具有的不同的有效和無效的取值范圍。13 遞歸調(diào)用自身13.13. 1 1 缺陷產(chǎn)生原因函數(shù)有時會遞歸調(diào)用自身,如果不限制執(zhí)行次數(shù),遞歸就會出現(xiàn)問題,它不斷地調(diào)用自 身,很快地占用機器資源,最終產(chǎn)生溢出,使程序崩潰或掛起。產(chǎn)生這類問題的主要原 因是開發(fā)人員沒有編碼來保證循環(huán)和遞歸調(diào)用的終止,通常是在循環(huán)的開始或結(jié)束時缺 少檢查條件。13.13. 2 2 如何發(fā)現(xiàn)問題在軟件中尋找可以使用遞歸調(diào)用的功能。這時可以制作一個列表,標(biāo)明軟件中可能嵌入 遞歸的功能的列表,然后自己引用自己來檢查程序是否能正確處理。13.13. 3 3 測試方法小結(jié)?應(yīng)用場合:需要和其它對象進行交互的地方。?測試方法:考慮

21、對象的自我交互或復(fù)制。?測試知識儲備:全面掌握被測軟件的需求。14 計算結(jié)果溢出14.14. 1 1 缺陷產(chǎn)生原因當(dāng)所有的輸入和數(shù)據(jù)都有效時,計算的最終結(jié)果也可以是無效的。所有變量都有值域范 圍,有時開發(fā)人員在執(zhí)行計算時會忘記檢查這些上限。14.14. 2 2 如何發(fā)現(xiàn)這類問題一次又一次地執(zhí)行計算或使用很大或很小的輸入和數(shù)據(jù)進行計算,重點測試數(shù)據(jù)類型的 初始值或邊界值附近的值。14.14. 3 3 測試方法小結(jié)?應(yīng)用場合:應(yīng)用程序執(zhí)行能夠?qū)С龃a(chǎn)生結(jié)果并進行內(nèi)部存儲的計算。?測試方法:強制數(shù)據(jù)產(chǎn)生上溢或下溢。?測試知識儲備:全面掌握被測軟件的需求,了解計算變量的上下限。15 數(shù)據(jù)共享或關(guān)聯(lián)功能

22、計算錯誤15.15. 1 1 缺陷產(chǎn)生原因通常對孤立的功能進行測試時不會發(fā)生很多缺陷,而當(dāng)把單獨的功能和同一軟件中的其它功能結(jié)合時,就可能出現(xiàn)很多軟件缺陷。 這種缺陷的產(chǎn)生往往是在兩個或更多的功能使用了共 享數(shù)據(jù)集,而每個功能允許使用的數(shù)據(jù)范圍不同引起的。例如,一個功能可能會將某數(shù)據(jù)項設(shè)置為特定大小,然而另一個功能卻允許該數(shù)據(jù)項的大小可以超過第一個功能的處理能力。開發(fā)人員根本沒考慮到該數(shù)據(jù)項在其它功能處也可以修改,他們只是編碼保證在該功能中數(shù)據(jù)的合法性,而當(dāng)使用該數(shù)據(jù)時,沒有再編碼來檢查可以使用的范圍;而此時,另一個功能修改了共享數(shù)據(jù),當(dāng)再使用這些數(shù)據(jù)時就產(chǎn)生了缺陷。15.15.2 2 如何發(fā)

23、現(xiàn)這類問題當(dāng)應(yīng)用程序在同一時間完成一個以上的功能或當(dāng)一個以上的功能在同一時間處于運行狀態(tài) 時,就可以使用該方法進行測試。利用一個功能影響輸入、輸入數(shù)據(jù)或另一個功能的計算。 在測試前要確定哪些功能是相互依賴或共享數(shù)據(jù)的:?能應(yīng)用同樣輸入的每個功能。如果這些功能有相互重疊的輸入域,就可能存在交互問題。?有類似的輸出產(chǎn)生功能。如果某些功能結(jié)合起來產(chǎn)生單個輸出,就說明這些部件之間存在關(guān)系,應(yīng)該被一起測試。?一個功能被包含在另一個功能的計算中。例如要測試鼠標(biāo)選取對象的功能,不僅要測度鼠標(biāo)選取屏幕上的文本的功能,還可以把包含超鏈接文本、粗體、斜體、符號及圖形元素放在一起,測試鼠標(biāo)選取這些元素的功能。151

24、5.?3 3 測試方法小結(jié)應(yīng)用場合:一個以上的功能在同一時間處于運行狀態(tài)。測試方法:以點代面,重點測試某一功能,對可能與這個功能相連的其它功能附帶測試。?測試知識儲備:全面掌握被測軟件的需求,在測試之前對被測功能之間的依賴關(guān)聯(lián)有所掌握,另外還需要對共享數(shù)據(jù)有所掌握。16 文件系統(tǒng)超載16.16. 1 1 缺陷產(chǎn)生原因開發(fā)人員可能會忘記編寫代碼處理滿狀態(tài)的文件系統(tǒng),忽略了諸如CreateFile,WriteFile等操作系統(tǒng)API的錯誤檢查代碼,沒有這樣的代碼,當(dāng)顯示滿狀態(tài)的文件系統(tǒng)時,API調(diào)用就 會失敗,軟件就會在沒有任何警告的情況下崩潰。16.16. 2 2 如何發(fā)現(xiàn)這類問題創(chuàng)建滿容量或近

25、乎滿容量的文件系統(tǒng),然后強制執(zhí)行各種通過輸入或輸出訪問文件系統(tǒng)的操作;或者打開足夠多的文件,打開文件時會強制備份創(chuàng)建的副本,從而占用雙倍的存儲空間,這種操作達(dá)到一定程度時,會達(dá)到該系統(tǒng)的容量,于是就能測試應(yīng)用程序處理超載狀態(tài)的文 件系統(tǒng)的能力。(通常通過磁盤配額實現(xiàn))16.16. 3 3 測試方法小結(jié)?應(yīng)用場合:系統(tǒng)較大,運行時需要較大的空間。?測試方法:強制磁盤系統(tǒng)滿容量或容量小于等于被測軟件運行時所需容量后,運行被測軟件或利用測試工具模擬磁盤狀況。?測試知識儲備:全面掌握被測軟件的需求,了解被測軟件處理超載狀態(tài)的文件系統(tǒng)的能力。17 介質(zhì)忙或不可用17.17. 1 1 缺陷產(chǎn)生原因當(dāng)多個應(yīng)

26、用程序同時訪問硬盤(或其它存儲器),操作系統(tǒng)為提供多請求服務(wù)會慢下來,并且必須對應(yīng)用程序進行編程以處理這些延遲,當(dāng)延遲變得很長時,沒有對這些錯誤進行響應(yīng)的應(yīng)用程序就會出現(xiàn)錯誤。17.17. 2 2 如何發(fā)現(xiàn)這類問題通過啟動大量應(yīng)用程序, 強制它們都打開并保存文件使文件系統(tǒng)處理繁忙狀態(tài);或者同時下載大量文件也可以使后臺擁擠;檢查被測軟件能否正確處理這種情況, 應(yīng)用程序應(yīng)該給出錯 誤信息或等待批示,提示用戶正在處理。17.17. 3 3 測試方法小結(jié)?應(yīng)用場合:應(yīng)用程序的運行需要消耗大量內(nèi)存或運行時需要其它相關(guān)軟件同時運行。?測試方法:啟動大量程序或利用測試工具模擬磁盤狀況。?測試知識儲備:全面掌

27、握被測軟件的需求,了解被測軟件運行時對系統(tǒng)的要求。18 介質(zhì)損壞18.18. 1 1 缺陷產(chǎn)生原因?損壞的介質(zhì)可能會使操作系統(tǒng)傳回錯誤代碼,這些錯誤代碼沒有在應(yīng)用程序中編程處理。?操作系統(tǒng)不能檢測出所有這樣的錯誤,操作系統(tǒng)自己也有錯誤或者損壞的介質(zhì)損壞了部分操作系統(tǒng)。18.18. 2 2 如何發(fā)現(xiàn)這類問題使用損壞了的介質(zhì),例如,刮傷、灰塵、磁干擾等。檢查應(yīng)用程序?qū)﹀e誤的處理能力,應(yīng)用 程序可以對錯誤進行處理或者將問題告訴用戶,并要確保用戶數(shù)據(jù)文件不丟失、為損壞。18.18. 3 3 測試方法小結(jié)?應(yīng)用場合:應(yīng)用程序?qū)Π踩囊筝^高,對災(zāi)難恢復(fù)的要求較高。?測試方法:用實際損壞介質(zhì)的方法測試應(yīng)用

28、程序。?測試知識儲備:全面掌握被測軟件的需求,了解被測軟件運行時對系統(tǒng)的要求。19 文件名不合法19.19. 1 1 缺陷產(chǎn)生原因操作系統(tǒng)本身具有自己的文件命名規(guī)范,例如,Dos的8.3格式。在Windows中,文件名不 能超過255個字符,并且文件名不可以含有 八: ? * |這8個字符,以及AUX、COM1、COM2、COM3、COM4、CON、LPT1、LPT2、LPT3、LPT4、NUL及PRN這些操作系統(tǒng) 保留字。開發(fā)人員在應(yīng)用程序中使用不相同的規(guī)則管理文件名,當(dāng)應(yīng)用程序和操作系統(tǒng)使用的文件名命名規(guī)則不一致的時候,就會發(fā)生問題。19.19. 2 2 如何發(fā)現(xiàn)這類問題?保存文件為操作系統(tǒng)不允許的文件名,例如,文件名中含有八: ? * |這8個字符,測試應(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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論