

下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、軟件功能性測(cè)試的 21 種故障模型測(cè)試的目標(biāo)是要發(fā)現(xiàn)錯(cuò)誤,因此在編寫測(cè)試用例的時(shí)候也要遵循這個(gè)目標(biāo),盡量在軟件的最薄弱環(huán)節(jié)多編寫測(cè)試用例。雖然測(cè)試時(shí)有很多單個(gè)輸入變量、多個(gè)輸入變量的組合,但 優(yōu)秀的軟件測(cè)試人員不會(huì)依靠運(yùn)氣,他們有著豐富的經(jīng)驗(yàn)和直覺, 可以從中找到哪些是需要進(jìn)行測(cè)試的,哪些不需要測(cè)試,哪些操作可能會(huì)引起軟件失效。把這些測(cè)試人員的經(jīng)驗(yàn)和直 覺盡量歸納和固化,就形成了一些故障模型。故障模型指明了故障是如何以及為什么會(huì)在軟 件執(zhí)行時(shí)引起軟件失效。在測(cè)試過程中,我們可以按照這些故障模型所提供的缺陷類型和尋 找該類缺陷的方法找到盡量多的缺陷。1輸入非法數(shù)據(jù)1.1.i i 缺陷產(chǎn)生原因開發(fā)
2、人員通常用以下3種技術(shù)來處理非法輸入:?防止不正確的輸入進(jìn)入被測(cè)軟件。過濾掉不正確的輸入,只允許合法輸入通過界面。?輸入了不正確的數(shù)據(jù)后,軟件提示錯(cuò)誤信息,拒絕不正確的輸入。?允許不正確的輸入進(jìn)入系統(tǒng)并進(jìn)行處理,軟件失效時(shí)調(diào)用異常處理程序,顯示一些錯(cuò)誤信息??梢婇_發(fā)人員除了編寫主要的功能代碼外,還必須編寫對(duì)非法輸入的檢查代碼,這些代碼經(jīng)常被遺忘,或者編寫完這部分代碼后, 開發(fā)人員很少認(rèn)真檢查, 導(dǎo)致處理非法輸入經(jīng)常出錯(cuò)。1 1 . 2 2 如何發(fā)現(xiàn)這類問題進(jìn)行測(cè)試時(shí)從輸入值的屬性出發(fā),一般考慮以下三點(diǎn):?輸入類型:鍵入無效的類型常會(huì)產(chǎn)生錯(cuò)誤信息。?輸入長(zhǎng)度:對(duì)于字符型,鍵入太多的字符常會(huì)引出錯(cuò)
3、誤信息。邊界值:輸入邊界值或超過邊界值的數(shù)據(jù)。1.1.3 3 測(cè)試方法小結(jié)?應(yīng)用場(chǎng)合:GUI的輸入。?測(cè)試方法:分別從輸入數(shù)據(jù)的 類型、長(zhǎng)度、邊界值 等方面進(jìn)行考慮。?測(cè)試信息檢查:I錯(cuò)誤信息和錯(cuò)誤要一致。I錯(cuò)誤信息的內(nèi)容為空,用戶不知道為什么出錯(cuò)。I顯示的錯(cuò)誤信息是給開發(fā)人員調(diào)試使用的,例如Error 5-unknown data”,開發(fā)人員可以通過該信息很容易找到錯(cuò)誤類型,但是用戶根本不明白,不知道做錯(cuò)了什么。?測(cè)試知識(shí)儲(chǔ)備:牢記各基本數(shù)據(jù)類型的邊界值。2輸入默認(rèn)值2.2.1 1 缺陷產(chǎn)生原因一旦軟件中使用了變量,就必須賦給初始值,如果在賦值之前就使用了這些變量,軟件就會(huì)失效,正確地使用變
4、量的順序是:聲明變量給變量賦值使用變量。通常會(huì)由于以下兩個(gè)原因使變量的默認(rèn)值不正確:?給變量賦值這一步經(jīng)常會(huì)被開發(fā)人員不經(jīng)意地路過。?開發(fā)人員有時(shí)不確定到底要賦什么初始值, 就隨便給了一個(gè)值,但用戶并不認(rèn)可該值, 這種情況下,軟件并不一定會(huì)失效,但對(duì)用戶的使用會(huì)帶來很多不便。 例如某程序把打印默 認(rèn)輸出份數(shù)設(shè)置為2份,會(huì)給用戶造成很大麻煩。2.2.2 2 如何發(fā)現(xiàn)這類問題確定應(yīng)用軟件中所使用的數(shù)據(jù)有以下一些基本原則:?查找選項(xiàng)按鈕、配置面板、安裝屏幕等。這種屏幕上顯示的數(shù)據(jù)常常在應(yīng)用程序的許多地方用到。?查閱源代碼的數(shù)據(jù)聲明部分(如果可以得到)。?確定了要測(cè)試的數(shù)據(jù),可以通過以下操作來強(qiáng)制使用
5、或不使用默認(rèn)的值:I接受軟件顯示的默認(rèn)值。有時(shí)軟件需要用戶輸入一個(gè)值,如果沒有輸入任何值,軟件就可能失效。這時(shí)可以只是簡(jiǎn)單的單擊“確定”按鈕來接受默認(rèn)值,完成這個(gè)功能測(cè)試。I鍵入空值。刪掉默認(rèn)值,使輸入域變成空值。I將默認(rèn)值改為另一個(gè)值,這樣會(huì)使應(yīng)用程序以不同的值來運(yùn)行。I將輸入值改為另一個(gè)值,然后再變以空值。一個(gè)好的軟件會(huì)這樣處理以上情況,將輸入的不合法內(nèi)容默認(rèn)為合法邊界內(nèi)的某個(gè)合理值, 或者返回錯(cuò)誤提示信息。2 2. 3 3 測(cè)試方法小結(jié)?應(yīng)用場(chǎng)合:需要有默認(rèn)值的地方。?測(cè)試方法:分別從選項(xiàng)按鈕、配置面板、安裝配置、開始界面等方面進(jìn)行考慮,強(qiáng)制使用或不使用默認(rèn)值等。?測(cè)試知識(shí)儲(chǔ)備:全面理解
6、需求規(guī)格說明書中對(duì)默認(rèn)值的要求;同時(shí)深刻理解被測(cè)軟件的行業(yè)背景。3輸入特殊字符集3.3.1 1 缺陷產(chǎn)生原因應(yīng)用程序接受字符串輸入,如果程序沒有針對(duì)特殊輸入進(jìn)行特殊編程,那么就有可能導(dǎo)致程序掛起,主要包括以下3種情況:?字符集包括普通字符和特殊字符。例如,ASCII字符集包括普通字符和特殊字符。應(yīng)用程序有時(shí)只能處理普通字符,當(dāng)輸入特殊字符時(shí)就會(huì)出現(xiàn)錯(cuò)誤。?實(shí)現(xiàn)應(yīng)用程序的程序設(shè)計(jì)語言有特定的處理一些字符和字符串的方法。例如,C語言把n、+和&這樣的字符用于特殊目的。如果將這些字符串鍵入到對(duì)話框中,程序必須進(jìn)行 錯(cuò)誤處理,否則容易產(chǎn)生錯(cuò)誤。?應(yīng)用程序有時(shí)也使用設(shè)置名稱、系統(tǒng)對(duì)象和程序的保留
7、字符串集合。只要在程序中使用了這些字符串,就可能導(dǎo)致失效。3.3.2 2 如何發(fā)現(xiàn)這類問題?根據(jù)被測(cè)軟件所處的操作系統(tǒng)、使用的程序設(shè)計(jì)語言、字符集等信息列出表格,通過測(cè)試小組的討論,標(biāo)明應(yīng)用表格中的哪些字符和數(shù)據(jù)類型作為輸入來測(cè)試。?根據(jù)經(jīng)驗(yàn),軟件很少會(huì)因?yàn)檫@種操作而崩潰,通常它會(huì)掛起沒有響應(yīng)。3.3測(cè)試方法小結(jié)?應(yīng)用場(chǎng)合:需要接受字符輸入的地方。?測(cè)試方法:根據(jù)被測(cè)軟件的具體情況輸入非法字符。?測(cè)試知識(shí)儲(chǔ)備:盡可能多地了多地了解字符集、程序設(shè)計(jì)語言和操作系統(tǒng)中的保留字符串及其特定含義,可以使我們更好地分辨這類缺陷。4輸入使緩沖區(qū)溢出的數(shù)據(jù)4.4.1 1 缺陷產(chǎn)生原因開發(fā)人員沒有考慮傳送給內(nèi)存
8、緩沖區(qū)的字符串的大小。 串,輸入更長(zhǎng)的字符串就會(huì)改寫其他的內(nèi)存存儲(chǔ)單元,4.4.2 2 如何發(fā)現(xiàn)這類問題調(diào)用的參數(shù)來進(jìn)行這種測(cè)試。?首先弄清楚要測(cè)試的輸入域的長(zhǎng)度,輸入最大字符串測(cè)試。?輸入一個(gè)比最大字符串長(zhǎng)的字符串,應(yīng)用程序可能出現(xiàn)錯(cuò)誤提示信息,提示不允許輸入;或者輸入了更長(zhǎng)的字符串使應(yīng)用程序崩潰。4.4.3 3 測(cè)試方法小結(jié)?應(yīng)用場(chǎng)合:需要接受字符輸入的地方。?測(cè)試方法:根據(jù)被測(cè)軟件的具體情況輸入最大字符串或輸入一個(gè)比最大字符串更長(zhǎng)的 字符串。?測(cè)試知識(shí)儲(chǔ)備:盡可能多地和開發(fā)人員討論,以了解和確定輸入域的合理長(zhǎng)度。如果緩沖區(qū)只能保留固定長(zhǎng)度的字符 引起操作系統(tǒng)強(qiáng)制性地終止應(yīng)用程序。當(dāng)應(yīng)用程
9、序允許輸入字母、數(shù)字時(shí),通過GUI控件(如文本框),或者通過API5輸入產(chǎn)生錯(cuò)誤的合法數(shù)據(jù)組合5.5.1 1 缺陷產(chǎn)生原因測(cè)試多個(gè)輸入值的組合,每個(gè)輸入值已被單獨(dú)測(cè)試過,但是這些值的組合可能會(huì)互相影響而 引起軟件失效。5.5.2 2 如何發(fā)現(xiàn)這類問題首先要確定測(cè)試哪些輸入組合,并弄清楚它們之間的“關(guān)系”。如果具備以下任一特性,就可以認(rèn)為這些變量是有“關(guān)系”的。?描述的是有關(guān)單個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu)的屬性和內(nèi)容。例如,輸入面板需要用戶輸入列表的“行”和“列”,這時(shí)測(cè)試人員要輸入單個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu)“列表”的屬性“行和列”。?一起用在了一個(gè)計(jì)算中,也就是將多個(gè)輸入用做一個(gè)內(nèi)部計(jì)算的操作數(shù),因此這些輸入變量具有
10、了相互“關(guān)系”。5.5.3 3 測(cè)試方法小結(jié)?應(yīng)用場(chǎng)合:輸入值之間存在依賴關(guān)系。?測(cè)試方法:輸入可能是存在問題的組合值。?測(cè)試知識(shí)儲(chǔ)備:盡可能多的內(nèi)部數(shù)據(jù)結(jié)構(gòu)的屬性和內(nèi)容,并與開發(fā)人員探討,以確定輸入的數(shù)據(jù)值。6產(chǎn)生同一個(gè)輸入的各種可能輸出6.6.1 1 缺陷產(chǎn)生原因單個(gè)輸入產(chǎn)生多種輸出的情況與先前的輸入和被測(cè)系統(tǒng)的狀態(tài)都有關(guān)系。例如,在文字處理程序中單擊“關(guān)閉”按鈕,如果文件被編輯且未被保存,程序?qū)⑻崾臼欠癖4嫖募H绻?件已被保存過,則文件直接關(guān)閉。6.6.2 2 如何發(fā)現(xiàn)這類問題測(cè)試人員必須具有關(guān)于被測(cè)系統(tǒng)軟件的業(yè)務(wù)方面的知識(shí),具備各種程序文檔,明確一個(gè)輸入可以產(chǎn)生何種輸出。我們可以據(jù)
11、此列出關(guān)于程序輸入與輸出的一個(gè)列表,然后進(jìn)行測(cè)試。6.6.3 3 測(cè)試方法小結(jié)?應(yīng)用場(chǎng)合:同一輸入對(duì)應(yīng)多個(gè)輸出的情況。?測(cè)試方法:測(cè)試輸入對(duì)應(yīng)的每一個(gè)輸出。?測(cè)試知識(shí)儲(chǔ)備:全面理解需求規(guī)格說明書中的內(nèi)容,找出輸入與輸出之間的關(guān)系。7輸出不符合業(yè)務(wù)規(guī)則的無效輸出7.7.1 1 缺陷產(chǎn)生原因有時(shí)開發(fā)人員也可能對(duì)業(yè)務(wù)了解不深刻,對(duì)有些問題也是一知半解,因此編寫出的軟件就會(huì)產(chǎn)生不符合業(yè)務(wù)邏輯的問題。另外在絕大多數(shù)情況下開發(fā)人員會(huì)忽略處理沒有遵循一般規(guī)則 的輸入,如果不對(duì)這些特殊情況進(jìn)行編程處理,軟件就會(huì)產(chǎn)生錯(cuò)誤的結(jié)果。7.7.2 2 如何發(fā)現(xiàn)這類問題測(cè)試人員應(yīng)該盡可能地學(xué)習(xí)的涉及問題的領(lǐng)域。?有時(shí)在列
12、舉出無效輸出后,也很難知道哪些輸入組合能強(qiáng)制這些輸出產(chǎn)生。這時(shí)測(cè)試人員必須先要確定哪些輸入與輸出有關(guān),然后用產(chǎn)生意外結(jié)果的輸入組合進(jìn)行測(cè)試,測(cè)試過程中要注意輸入執(zhí)行順序,用不同的順序執(zhí)行可能得到不同的結(jié)果。如果不能強(qiáng)制無效的輸出產(chǎn)生,就說明軟件沒有這方面的缺陷。7.7.3 3 測(cè)試方法小結(jié)?應(yīng)用場(chǎng)合:強(qiáng)制產(chǎn)生不符合業(yè)務(wù)背景的知識(shí)。?測(cè)試方法:列舉出所有的無效輸出,然后逐一測(cè)試。?測(cè)試知識(shí)儲(chǔ)備:全面理解需求規(guī)格說明書中的內(nèi)容,熟悉行業(yè)背景知識(shí)。8輸出屬性修改后的結(jié)果8.8.1 1 缺陷產(chǎn)生原因輸出常常具有可修改的屬性,如顏色、形狀、維數(shù)及大小等,用戶可以修改這些屬性。 在這種情況下,開發(fā)人員必須
13、編碼、設(shè)立初始或默認(rèn)屬性值,然后編碼允許用戶編輯 這些屬性。當(dāng)用戶改變了這些屬性后,內(nèi)部的相應(yīng)變量值也隨著變化,再次進(jìn)行處理時(shí), 這些值沒有被重新恢復(fù)為默認(rèn)值,輸出的屬性就被強(qiáng)制改變了。8.8.2 2 如何發(fā)現(xiàn)這類問題該測(cè)試方法可以使用在那些輸出具有可編輯性、可修改性的功能中。測(cè)試人員首先要 仔細(xì)了解能夠產(chǎn)生的輸出,特別要注意具有可編輯屬性的輸出。測(cè)試人員的任務(wù)就是 強(qiáng)制每個(gè)輸出產(chǎn)生,并編輯其屬性,然后再次強(qiáng)制輸出產(chǎn)生。8.8.3 3 測(cè)試方法小結(jié)?應(yīng)用場(chǎng)合:輸出的結(jié)果,可以由用戶修改屬性得出。?測(cè)試方法:強(qiáng)制每個(gè)輸出產(chǎn)生,并編輯其屬性,然后再次強(qiáng)制產(chǎn)生輸出。?測(cè)試知識(shí)儲(chǔ)備:全面理解需求規(guī)格說
14、明書中的內(nèi)容,了解能夠產(chǎn)生的輸出。9屏幕刷新顯示9.9.1 1 缺陷產(chǎn)生原因通常GUI軟件會(huì)產(chǎn)生刷新問題,因?yàn)镚UI在對(duì)窗口進(jìn)行覆蓋、移動(dòng)和調(diào)整大小時(shí),必 須刷新屏幕才能使對(duì)象重新顯示。但是如果經(jīng)常刷新,容易減慢應(yīng)用程序的運(yùn)行速度; 如果不刷新,又會(huì)影響用戶對(duì)程序的使用,使用戶必須停止工作,去尋找刷新的方法 才可以繼續(xù)工作。所以開發(fā)人員有時(shí)候不能很好地確定什么時(shí)候需要刷新,需要刷新 多大范圍的區(qū)域,這就發(fā)生了令人煩惱的刷新問題。9.9.2 2 如何發(fā)現(xiàn)這類問題測(cè)試刷新問題的方法是增加、刪除稱移動(dòng)屏幕上的對(duì)象,這樣會(huì)使某些對(duì)象重新顯示。 如果不能正確、及時(shí)地進(jìn)行重新顯示,就產(chǎn)生了軟件缺陷。我們可
15、以通過以下幾個(gè)方法 來檢查刷新:?從起始位置移動(dòng)對(duì)象。先移動(dòng)一點(diǎn),然后增加移動(dòng)幅度;先移動(dòng)一次或兩次,然后多次移動(dòng),確保覆蓋了所有區(qū)域。?從覆蓋對(duì)象的邊界開始一點(diǎn)點(diǎn)覆蓋,使其中一個(gè)對(duì)象遮住別一個(gè)對(duì)象。?使用不同類型的對(duì)象。如果應(yīng)用程序支持多種類型的對(duì)象,如文本對(duì)象、圖形對(duì)象等,就把這些不同對(duì)象混在一起使用。9.9.3 3 測(cè)試方法小結(jié)?應(yīng)用場(chǎng)合:一個(gè)對(duì)象包含在另一個(gè)對(duì)象中,拖動(dòng)被包含對(duì)象時(shí),可能出現(xiàn)刷新問題。?測(cè)試方法:增加、刪除和移動(dòng)屏幕上的對(duì)象。?測(cè)試知識(shí)儲(chǔ)備:全面理解需求規(guī)格說明書中的內(nèi)容,了解程序中對(duì)象之間的關(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)會(huì)逐步增加長(zhǎng)度以充滿機(jī)器內(nèi)存容量或 磁盤空間,而其它數(shù)據(jù)結(jié)構(gòu)具有固定的上限。開發(fā)人員經(jīng)常對(duì)有關(guān)數(shù)據(jù)結(jié)構(gòu)的內(nèi)容 進(jìn)行編碼,忘記結(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等上溢的測(cè)試。?對(duì)于下溢的測(cè)試,可以嘗試多刪除一個(gè)數(shù)據(jù),例如當(dāng)結(jié)構(gòu)為空時(shí),嘗試再刪除,或者添加一個(gè)數(shù)據(jù),嘗試刪除兩個(gè)數(shù)據(jù)時(shí)的情況。10.10. 3 3 測(cè)試方法小結(jié)?應(yīng)用場(chǎng)合:程序中存在數(shù)組。?測(cè)試方法:嘗試將過多的值輸入數(shù)據(jù)結(jié)構(gòu),測(cè)試上溢;對(duì)于下溢的測(cè)試,可以嘗試多刪除一個(gè)數(shù)據(jù)。?測(cè)試
17、知識(shí)準(zhǔn)備:全面理解需求規(guī)格說明書中的內(nèi)容,確定數(shù)據(jù)結(jié)構(gòu)的界限。11 數(shù)據(jù)結(jié)構(gòu)不符合約束11.11. 1 1 缺陷產(chǎn)生原因在編程過程中對(duì)內(nèi)部數(shù)據(jù)結(jié)構(gòu)都有所約束,包括大小、維數(shù)、類型、形狀、屏幕 上的位置等。我們測(cè)試的重點(diǎn)就是用戶能夠設(shè)置的屬性,這些屬性使用了一組參數(shù) 來約束。在建立數(shù)據(jù)項(xiàng)和隨后對(duì)數(shù)據(jù)項(xiàng)進(jìn)行修改的任何時(shí)刻都要對(duì)數(shù)據(jù)屬性的約束 進(jìn)行檢查。初始化代碼中修改后的代碼有錯(cuò)誤,在修改錯(cuò)誤的時(shí)候只修改了初始化 部分,而忽略了對(duì)其他部分的修改,使得其修改不完全,不徹底。11.11. 2 2 如何發(fā)現(xiàn)這類問題?確認(rèn)候選數(shù)據(jù),并列出其可修改的屬性。對(duì)每個(gè)屬性列出有效值的允許范圍、約束的條件等。?確定
18、所有可修改屬性的功能位置。?對(duì)數(shù)據(jù)進(jìn)行初始化,改變每個(gè)屬性以確定是否正確進(jìn)行了約束。如果數(shù)據(jù)約束遭到破壞,可能導(dǎo)致系統(tǒng)崩潰,或者表現(xiàn)為響應(yīng)時(shí)間延遲,錯(cuò)誤信息 不正確以及使用錯(cuò)誤數(shù)據(jù)產(chǎn)生的無效輸出。11.11. 3 3 測(cè)試方法小結(jié)?應(yīng)用場(chǎng)合:應(yīng)用程序內(nèi)部的數(shù)據(jù)結(jié)構(gòu)存在約束。?測(cè)試方法:破壞內(nèi)部數(shù)據(jù)結(jié)構(gòu)的約束。?測(cè)試知識(shí)儲(chǔ)備:全面理解需求規(guī)格說明書中的內(nèi)容,確定內(nèi)部數(shù)據(jù)結(jié)構(gòu)的所有約束。12 操作數(shù)與操作符不符12.12. 1 1 缺陷產(chǎn)生原因幾乎每個(gè)運(yùn)算符都有它無效的操作數(shù),對(duì)于具體的操作符,開發(fā)人員在使用它們時(shí), 必須編寫錯(cuò)誤檢查代碼。例如:除以零的問題。12.12. 2 2 如何發(fā)現(xiàn)這類問題
19、找到程序中包含的數(shù)據(jù)或輸入(即操作數(shù))的計(jì)算(即操作符)、數(shù)學(xué)表達(dá)式(即操作符和操作數(shù)的組合)及對(duì)圖形的操作。另外,對(duì)多個(gè)操作數(shù)進(jìn)行組合也更容易發(fā)生 錯(cuò)誤。例如,字符和數(shù)字都可以使用“+”操作符。對(duì)字符通過“+”把它們連成一串;對(duì)數(shù)字通過“+”來進(jìn)行加法運(yùn)算。如果系統(tǒng)嘗試把字符和數(shù)字相加,即進(jìn)行相互矛盾 的操作,就會(huì)引起軟件失效。12.12. 3 3 測(cè)試方法小結(jié)?應(yīng)用場(chǎng)合:需要進(jìn)行數(shù)值計(jì)算的程序或圖形操作的程序。?測(cè)試方法:對(duì)于數(shù)值計(jì)算考慮操作數(shù)和操作符之間的限定關(guān)系,對(duì)于圖形計(jì)算還要考慮各種輸入數(shù)據(jù)之間的組合關(guān)系。?測(cè)試知識(shí)儲(chǔ)備:全面掌握被測(cè)軟件中操作符對(duì)操作數(shù)的要求。掌握不同的操作符和操
20、作數(shù)具有的不同的有效和無效的取值范圍。13 遞歸調(diào)用自身13.13. 1 1 缺陷產(chǎn)生原因函數(shù)有時(shí)會(huì)遞歸調(diào)用自身,如果不限制執(zhí)行次數(shù),遞歸就會(huì)出現(xiàn)問題,它不斷地調(diào)用自 身,很快地占用機(jī)器資源,最終產(chǎn)生溢出,使程序崩潰或掛起。產(chǎn)生這類問題的主要原 因是開發(fā)人員沒有編碼來保證循環(huán)和遞歸調(diào)用的終止,通常是在循環(huán)的開始或結(jié)束時(shí)缺 少檢查條件。13.13. 2 2 如何發(fā)現(xiàn)問題在軟件中尋找可以使用遞歸調(diào)用的功能。這時(shí)可以制作一個(gè)列表,標(biāo)明軟件中可能嵌入 遞歸的功能的列表,然后自己引用自己來檢查程序是否能正確處理。13.13. 3 3 測(cè)試方法小結(jié)?應(yīng)用場(chǎng)合:需要和其它對(duì)象進(jìn)行交互的地方。?測(cè)試方法:考慮
21、對(duì)象的自我交互或復(fù)制。?測(cè)試知識(shí)儲(chǔ)備:全面掌握被測(cè)軟件的需求。14 計(jì)算結(jié)果溢出14.14. 1 1 缺陷產(chǎn)生原因當(dāng)所有的輸入和數(shù)據(jù)都有效時(shí),計(jì)算的最終結(jié)果也可以是無效的。所有變量都有值域范 圍,有時(shí)開發(fā)人員在執(zhí)行計(jì)算時(shí)會(huì)忘記檢查這些上限。14.14. 2 2 如何發(fā)現(xiàn)這類問題一次又一次地執(zhí)行計(jì)算或使用很大或很小的輸入和數(shù)據(jù)進(jìn)行計(jì)算,重點(diǎn)測(cè)試數(shù)據(jù)類型的 初始值或邊界值附近的值。14.14. 3 3 測(cè)試方法小結(jié)?應(yīng)用場(chǎng)合:應(yīng)用程序執(zhí)行能夠?qū)С龃a(chǎn)生結(jié)果并進(jìn)行內(nèi)部存儲(chǔ)的計(jì)算。?測(cè)試方法:強(qiáng)制數(shù)據(jù)產(chǎn)生上溢或下溢。?測(cè)試知識(shí)儲(chǔ)備:全面掌握被測(cè)軟件的需求,了解計(jì)算變量的上下限。15 數(shù)據(jù)共享或關(guān)聯(lián)功能
22、計(jì)算錯(cuò)誤15.15. 1 1 缺陷產(chǎn)生原因通常對(duì)孤立的功能進(jìn)行測(cè)試時(shí)不會(huì)發(fā)生很多缺陷,而當(dāng)把單獨(dú)的功能和同一軟件中的其它功能結(jié)合時(shí),就可能出現(xiàn)很多軟件缺陷。 這種缺陷的產(chǎn)生往往是在兩個(gè)或更多的功能使用了共 享數(shù)據(jù)集,而每個(gè)功能允許使用的數(shù)據(jù)范圍不同引起的。例如,一個(gè)功能可能會(huì)將某數(shù)據(jù)項(xiàng)設(shè)置為特定大小,然而另一個(gè)功能卻允許該數(shù)據(jù)項(xiàng)的大小可以超過第一個(gè)功能的處理能力。開發(fā)人員根本沒考慮到該數(shù)據(jù)項(xiàng)在其它功能處也可以修改,他們只是編碼保證在該功能中數(shù)據(jù)的合法性,而當(dāng)使用該數(shù)據(jù)時(shí),沒有再編碼來檢查可以使用的范圍;而此時(shí),另一個(gè)功能修改了共享數(shù)據(jù),當(dāng)再使用這些數(shù)據(jù)時(shí)就產(chǎn)生了缺陷。15.15.2 2 如何發(fā)
23、現(xiàn)這類問題當(dāng)應(yīng)用程序在同一時(shí)間完成一個(gè)以上的功能或當(dāng)一個(gè)以上的功能在同一時(shí)間處于運(yùn)行狀態(tài) 時(shí),就可以使用該方法進(jìn)行測(cè)試。利用一個(gè)功能影響輸入、輸入數(shù)據(jù)或另一個(gè)功能的計(jì)算。 在測(cè)試前要確定哪些功能是相互依賴或共享數(shù)據(jù)的:?能應(yīng)用同樣輸入的每個(gè)功能。如果這些功能有相互重疊的輸入域,就可能存在交互問題。?有類似的輸出產(chǎn)生功能。如果某些功能結(jié)合起來產(chǎn)生單個(gè)輸出,就說明這些部件之間存在關(guān)系,應(yīng)該被一起測(cè)試。?一個(gè)功能被包含在另一個(gè)功能的計(jì)算中。例如要測(cè)試鼠標(biāo)選取對(duì)象的功能,不僅要測(cè)度鼠標(biāo)選取屏幕上的文本的功能,還可以把包含超鏈接文本、粗體、斜體、符號(hào)及圖形元素放在一起,測(cè)試鼠標(biāo)選取這些元素的功能。151
24、5.?3 3 測(cè)試方法小結(jié)應(yīng)用場(chǎng)合:一個(gè)以上的功能在同一時(shí)間處于運(yùn)行狀態(tài)。測(cè)試方法:以點(diǎn)代面,重點(diǎn)測(cè)試某一功能,對(duì)可能與這個(gè)功能相連的其它功能附帶測(cè)試。?測(cè)試知識(shí)儲(chǔ)備:全面掌握被測(cè)軟件的需求,在測(cè)試之前對(duì)被測(cè)功能之間的依賴關(guān)聯(lián)有所掌握,另外還需要對(duì)共享數(shù)據(jù)有所掌握。16 文件系統(tǒng)超載16.16. 1 1 缺陷產(chǎn)生原因開發(fā)人員可能會(huì)忘記編寫代碼處理滿狀態(tài)的文件系統(tǒng),忽略了諸如CreateFile,WriteFile等操作系統(tǒng)API的錯(cuò)誤檢查代碼,沒有這樣的代碼,當(dāng)顯示滿狀態(tài)的文件系統(tǒng)時(shí),API調(diào)用就 會(huì)失敗,軟件就會(huì)在沒有任何警告的情況下崩潰。16.16. 2 2 如何發(fā)現(xiàn)這類問題創(chuàng)建滿容量或近
25、乎滿容量的文件系統(tǒng),然后強(qiáng)制執(zhí)行各種通過輸入或輸出訪問文件系統(tǒng)的操作;或者打開足夠多的文件,打開文件時(shí)會(huì)強(qiáng)制備份創(chuàng)建的副本,從而占用雙倍的存儲(chǔ)空間,這種操作達(dá)到一定程度時(shí),會(huì)達(dá)到該系統(tǒng)的容量,于是就能測(cè)試應(yīng)用程序處理超載狀態(tài)的文 件系統(tǒng)的能力。(通常通過磁盤配額實(shí)現(xiàn))16.16. 3 3 測(cè)試方法小結(jié)?應(yīng)用場(chǎng)合:系統(tǒng)較大,運(yùn)行時(shí)需要較大的空間。?測(cè)試方法:強(qiáng)制磁盤系統(tǒng)滿容量或容量小于等于被測(cè)軟件運(yùn)行時(shí)所需容量后,運(yùn)行被測(cè)軟件或利用測(cè)試工具模擬磁盤狀況。?測(cè)試知識(shí)儲(chǔ)備:全面掌握被測(cè)軟件的需求,了解被測(cè)軟件處理超載狀態(tài)的文件系統(tǒng)的能力。17 介質(zhì)忙或不可用17.17. 1 1 缺陷產(chǎn)生原因當(dāng)多個(gè)應(yīng)
26、用程序同時(shí)訪問硬盤(或其它存儲(chǔ)器),操作系統(tǒng)為提供多請(qǐng)求服務(wù)會(huì)慢下來,并且必須對(duì)應(yīng)用程序進(jìn)行編程以處理這些延遲,當(dāng)延遲變得很長(zhǎng)時(shí),沒有對(duì)這些錯(cuò)誤進(jìn)行響應(yīng)的應(yīng)用程序就會(huì)出現(xiàn)錯(cuò)誤。17.17. 2 2 如何發(fā)現(xiàn)這類問題通過啟動(dòng)大量應(yīng)用程序, 強(qiáng)制它們都打開并保存文件使文件系統(tǒng)處理繁忙狀態(tài);或者同時(shí)下載大量文件也可以使后臺(tái)擁擠;檢查被測(cè)軟件能否正確處理這種情況, 應(yīng)用程序應(yīng)該給出錯(cuò) 誤信息或等待批示,提示用戶正在處理。17.17. 3 3 測(cè)試方法小結(jié)?應(yīng)用場(chǎng)合:應(yīng)用程序的運(yùn)行需要消耗大量?jī)?nèi)存或運(yùn)行時(shí)需要其它相關(guān)軟件同時(shí)運(yùn)行。?測(cè)試方法:?jiǎn)?dòng)大量程序或利用測(cè)試工具模擬磁盤狀況。?測(cè)試知識(shí)儲(chǔ)備:全面掌
27、握被測(cè)軟件的需求,了解被測(cè)軟件運(yùn)行時(shí)對(duì)系統(tǒng)的要求。18 介質(zhì)損壞18.18. 1 1 缺陷產(chǎn)生原因?損壞的介質(zhì)可能會(huì)使操作系統(tǒng)傳回錯(cuò)誤代碼,這些錯(cuò)誤代碼沒有在應(yīng)用程序中編程處理。?操作系統(tǒng)不能檢測(cè)出所有這樣的錯(cuò)誤,操作系統(tǒng)自己也有錯(cuò)誤或者損壞的介質(zhì)損壞了部分操作系統(tǒng)。18.18. 2 2 如何發(fā)現(xiàn)這類問題使用損壞了的介質(zhì),例如,刮傷、灰塵、磁干擾等。檢查應(yīng)用程序?qū)﹀e(cuò)誤的處理能力,應(yīng)用 程序可以對(duì)錯(cuò)誤進(jìn)行處理或者將問題告訴用戶,并要確保用戶數(shù)據(jù)文件不丟失、為損壞。18.18. 3 3 測(cè)試方法小結(jié)?應(yīng)用場(chǎng)合:應(yīng)用程序?qū)Π踩囊筝^高,對(duì)災(zāi)難恢復(fù)的要求較高。?測(cè)試方法:用實(shí)際損壞介質(zhì)的方法測(cè)試應(yīng)用
28、程序。?測(cè)試知識(shí)儲(chǔ)備:全面掌握被測(cè)軟件的需求,了解被測(cè)軟件運(yùn)行時(shí)對(duì)系統(tǒng)的要求。19 文件名不合法19.19. 1 1 缺陷產(chǎn)生原因操作系統(tǒng)本身具有自己的文件命名規(guī)范,例如,Dos的8.3格式。在Windows中,文件名不 能超過255個(gè)字符,并且文件名不可以含有 八: ? * |這8個(gè)字符,以及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ī)則不一致的時(shí)候,就會(huì)發(fā)生問題。19.19. 2 2 如何發(fā)現(xiàn)這類問題?保存文件為操作系統(tǒng)不允許的文件名,例如,文件名中含有八: ? * |這8個(gè)字符,測(cè)試應(yīng)用程序是否不允許輸入包含這些字符的文件名。?輸入一些應(yīng)用程序不允許使用的文件名,例如,使用過長(zhǎng)的、含有特殊字符的、可能相互
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- yiaoliao供銷合同范例
- 專家技術(shù)合同范例
- 以患者體驗(yàn)為中心的智能醫(yī)療服務(wù)優(yōu)化策略研究
- 市城市供排水總公司年終工作總結(jié)模版
- 區(qū)塊鏈技術(shù)助力物流信息透明化探索
- 機(jī)器人焊接 7 項(xiàng)目四任務(wù)4.1教學(xué)設(shè)計(jì)
- 醫(yī)療教育深度融合兒童成長(zhǎng)補(bǔ)鈣教育項(xiàng)目推廣
- 萬科合同范例制度
- 個(gè)人試用期的工作總結(jié)模版
- 網(wǎng)膜炎的臨床護(hù)理
- 2024-2030年中國(guó)餐飲連鎖行業(yè)發(fā)展?fàn)顩r及投資經(jīng)營(yíng)模式分析報(bào)告
- 中儲(chǔ)糧安全生產(chǎn)培訓(xùn)
- 醫(yī)院藥品過期處理與廢物管理制度
- 2024年財(cái)會(huì)業(yè)務(wù)知識(shí)競(jìng)賽題庫及答案(600題)
- 2024年通信電源專業(yè)知識(shí)考試題庫(含答案)
- DB11T 1470-2022 鋼筋套筒灌漿連接技術(shù)規(guī)程
- 2024年游泳初級(jí)指導(dǎo)員認(rèn)證理論考試題庫(濃縮500題)
- 結(jié)直腸腺瘤中西醫(yī)結(jié)合防治指南-公示稿
- 2024秋期國(guó)家開放大學(xué)《可編程控制器應(yīng)用實(shí)訓(xùn)》一平臺(tái)在線形考(形成任務(wù)4)試題及答案
- 買賣合同法律知識(shí)及風(fēng)險(xiǎn)防范培訓(xùn)課件
- 腦出血患者術(shù)后護(hù)理論文
評(píng)論
0/150
提交評(píng)論