功能性測(cè)試軟件的6種常見(jiàn)故障模型
1 輸出不符合業(yè)務(wù)規(guī)則的無(wú)效輸出
1.1缺陷產(chǎn)生原因
有時(shí)開(kāi)發(fā)人員也可能對(duì)業(yè)務(wù)了解不深刻,對(duì)有些問(wèn)題也是一知半解,因此編寫(xiě)出的軟件就會(huì)產(chǎn)生不符合業(yè)務(wù)邏輯的問(wèn)題。另外在絕大多數(shù)情況下開(kāi)發(fā)人員會(huì)忽略處理沒(méi)有遵循一般規(guī)則的輸進(jìn),如果不對(duì)這些特殊情況進(jìn)行編程處理,軟件就會(huì)產(chǎn)生錯(cuò)誤的結(jié)果。
1.2如何發(fā)現(xiàn)這類(lèi)問(wèn)題
測(cè)試人員應(yīng)該盡可能地學(xué)習(xí)的涉及問(wèn)題的領(lǐng)域。
有時(shí)在列舉出無(wú)效輸出后,也很難知道哪些輸進(jìn)組合能強(qiáng)制這些輸出產(chǎn)生。這時(shí)測(cè)試人員必須先要確定哪些輸入與輸出有關(guān),然后用產(chǎn)生意外結(jié)果的輸入組合進(jìn)行測(cè)試,測(cè)試過(guò)程中要留意輸入執(zhí)行順序,用不同的順序執(zhí)行可能得到不同的結(jié)果。如果不能強(qiáng)制無(wú)效的輸出產(chǎn)生,就說(shuō)明軟件沒(méi)有這方面的缺陷。
1.3測(cè)試方法小結(jié)
應(yīng)用場(chǎng)合:強(qiáng)制產(chǎn)生不符合業(yè)務(wù)背景的知識(shí)。
測(cè)試方法:列舉出所有的無(wú)效輸出,然后逐一測(cè)試。
測(cè)試知識(shí)儲(chǔ)備:全面理解需求規(guī)格說(shuō)明書(shū)中的內(nèi)容,熟悉行業(yè)背景知識(shí)。
2 輸出屬性修改后的結(jié)果
2.1缺陷產(chǎn)生原因
輸出經(jīng)常具有可修改的屬性,如顏色、形狀、維數(shù)及大小等,用戶(hù)可以修改這些屬性。在這種情況下,開(kāi)發(fā)人員必須編碼、設(shè)立初始或默認(rèn)屬性值,然后編碼允許用戶(hù)編輯這些屬性。當(dāng)用戶(hù)改變了這些屬性后,內(nèi)部的相應(yīng)變量值也隨著變化,再次進(jìn)行處理時(shí),這些值沒(méi)有被重新恢復(fù)為默認(rèn)值,輸出的屬性就被強(qiáng)制改變了。
2.2如何發(fā)現(xiàn)這類(lèi)問(wèn)題
該測(cè)試方法可以使用模型公司在那些輸出具有可編輯性、可修改性的功能中。測(cè)試人員首先要仔細(xì)了解能夠產(chǎn)生的輸出,特別要留意具有可編輯屬性的輸出。測(cè)試人員的任務(wù)就是強(qiáng)制每個(gè)輸出產(chǎn)生,并編輯其屬性,然后再次強(qiáng)制輸出產(chǎn)生。
2.3測(cè)試方法小結(jié)
應(yīng)用場(chǎng)合:輸出的結(jié)果,可以由用戶(hù)修改屬性得出。
測(cè)試方法:強(qiáng)制每個(gè)輸出產(chǎn)生,并編輯其屬性,然后再次強(qiáng)制產(chǎn)生輸出。
測(cè)試知識(shí)儲(chǔ)備:全面理解需求規(guī)格說(shuō)明書(shū)中的內(nèi)容,了解能夠產(chǎn)生的輸出。
3 屏幕刷新顯示
3.1缺陷產(chǎn)生原因
通常GUI軟件會(huì)產(chǎn)生刷新問(wèn)題,由于GUI在對(duì)窗口進(jìn)行覆蓋、移動(dòng)和調(diào)整大小時(shí),必須刷新屏幕才能使對(duì)象重新顯示。但是如果經(jīng)常刷新,輕易減慢應(yīng)用程序的運(yùn)行速度;如果不刷新,又會(huì)影響用戶(hù)對(duì)程序的使用,使用戶(hù)必須停止工作,去尋找刷新的方法才可以繼續(xù)工作。所以開(kāi)發(fā)人員有時(shí)候不能很好地確定什么時(shí)候需要刷新,需要刷新多大范圍的區(qū)域,這就發(fā)生了令人煩惱的刷新問(wèn)題。
3.2如何發(fā)現(xiàn)這類(lèi)問(wèn)題
測(cè)試刷新問(wèn)題的方法是增加、刪除稱(chēng)移動(dòng)屏幕上的對(duì)象,這樣會(huì)使某些對(duì)象重新顯示。如果不能正確、及時(shí)地進(jìn)行重新顯示,就產(chǎn)生了軟件缺陷。我們可以通過(guò)以下幾個(gè)方法來(lái)檢查刷新:
從起始位置移動(dòng)對(duì)象。先移動(dòng)一點(diǎn),然后增加移動(dòng)幅度;先移動(dòng)一次或兩次,然后多次移動(dòng),確保覆蓋了所有區(qū)域。
從覆蓋對(duì)象的邊界開(kāi)始一點(diǎn)點(diǎn)覆蓋,使其中一個(gè)對(duì)象遮住別一個(gè)對(duì)象。
使用不同類(lèi)型的對(duì)象。如果應(yīng)用程序支持多種類(lèi)型的對(duì)象,如文本對(duì)象、圖形對(duì)象等,就把這些不同對(duì)象混在一起使用。
3.3測(cè)試方法小結(jié)
應(yīng)用場(chǎng)合:一個(gè)對(duì)象包含在另一個(gè)對(duì)象中,拖動(dòng)被包含教學(xué)模型對(duì)象時(shí),可能出現(xiàn)刷新問(wèn)題。
測(cè)試方法:增加、刪除和移動(dòng)屏幕上的對(duì)象。
測(cè)試知識(shí)儲(chǔ)備:全面理解需求規(guī)格說(shuō)明書(shū)中的內(nèi)容,了解程序中對(duì)象之間的關(guān)系。
4 數(shù)據(jù)結(jié)構(gòu)溢出
4.1缺陷產(chǎn)生原因
所有數(shù)據(jù)結(jié)構(gòu)的大小都有上限。一些數(shù)據(jù)結(jié)構(gòu)會(huì)逐步增加長(zhǎng)度以布滿(mǎn)機(jī)器內(nèi)存容量或磁盤(pán)空間,而其它數(shù)據(jù)結(jié)構(gòu)具有固定的上限。開(kāi)發(fā)人員經(jīng)常對(duì)有關(guān)數(shù)據(jù)結(jié)構(gòu)的內(nèi)容進(jìn)行編碼,忘記結(jié)構(gòu)本身的物理局限。
4.2如何發(fā)現(xiàn)這類(lèi)問(wèn)題
確定數(shù)據(jù)結(jié)構(gòu)的界限,嘗試將過(guò)多的值輸入數(shù)據(jù)結(jié)構(gòu)。應(yīng)該特別留意界限為數(shù)據(jù)類(lèi)型的邊界256、1024、等上溢的測(cè)試。
對(duì)于下溢的測(cè)試,可以嘗試多刪除一個(gè)數(shù)據(jù),例如當(dāng)結(jié)構(gòu)為空時(shí),嘗試再刪除,或者添加一個(gè)數(shù)據(jù),嘗試刪除兩個(gè)數(shù)據(jù)時(shí)的情況。
4.3測(cè)試方法小結(jié)
應(yīng)用場(chǎng)合:程序中存在數(shù)組。
www.hnfuyijia.com 測(cè)試方法:嘗試將過(guò)多的值輸入數(shù)據(jù)結(jié)構(gòu),測(cè)試上溢;對(duì)于下溢的測(cè)試,
可以嘗試多刪除一個(gè)數(shù)據(jù)。
測(cè)試知識(shí)準(zhǔn)備:全面理解需求規(guī)格說(shuō)明書(shū)中的內(nèi)容,確定數(shù)據(jù)結(jié)構(gòu)的界限。壁紙漆價(jià)格
5 數(shù)據(jù)結(jié)構(gòu)不符合約束
5.1缺陷產(chǎn)生原因
在編程過(guò)程中對(duì)內(nèi)部數(shù)據(jù)結(jié)構(gòu)都有所約束,包括大小、維數(shù)、類(lèi)型、形狀、屏幕上的位置等。我們測(cè)試的重點(diǎn)就是用戶(hù)能夠設(shè)置的屬性,這些屬性使用了一組參數(shù)來(lái)約束。在建立數(shù)據(jù)項(xiàng)和隨后對(duì)數(shù)據(jù)項(xiàng)進(jìn)行修改的任何時(shí)刻都要對(duì)數(shù)據(jù)屬性的約束進(jìn)行檢查。初始化代碼中修改后的代碼有錯(cuò)誤,在修改錯(cuò)誤的時(shí)候只修改了初始化部分,而忽略了對(duì)其他部分的修改,使得其修改不完全,不徹底。
5.2如何發(fā)現(xiàn)這類(lèi)問(wèn)題
確認(rèn)候選數(shù)據(jù),并列出其可修改的屬性。對(duì)每個(gè)屬性列出有效值的允許范圍、約束的條件等。
確定所有可修改屬性的功能位置。
對(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)生的無(wú)效輸出。
5.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ī)格說(shuō)明書(shū)中的內(nèi)容,確定內(nèi)部數(shù)據(jù)結(jié)構(gòu)的所有約束。
6 操縱數(shù)與操縱符不符
6.1缺陷產(chǎn)生原因
幾乎每個(gè)運(yùn)算符都有它無(wú)效的操縱數(shù),對(duì)于具體的操縱符,開(kāi)發(fā)人員在使用它們時(shí),必須編寫(xiě)錯(cuò)誤檢查代碼。例如:除以零的問(wèn)題。
6.2如何發(fā)現(xiàn)這類(lèi)問(wèn)題
找到程序中包含的數(shù)據(jù)或輸入(即操作數(shù))的計(jì)算(即操作符)、數(shù)學(xué)表達(dá)式(即操作符和操作數(shù)的組合)及對(duì)圖形的操作。另外,對(duì)多個(gè)操作數(shù)進(jìn)行組合也更輕易發(fā)生錯(cuò)誤。例如,字符和數(shù)字都可以使用“+”操作符。對(duì)字符通過(guò)“+”把它們連成一串;對(duì)數(shù)字通過(guò)“+”來(lái)進(jìn)行加法運(yùn)算。如果系統(tǒng)嘗試把字符和數(shù)字相加,即進(jìn)行相互矛盾的操作,就會(huì)引起軟件失效。
6.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ù)的要求。把握不同的操作符和操作數(shù)具有的不同的有效和無(wú)效的取值范圍。
7 遞回調(diào)用自身
7.1缺陷產(chǎn)生原因
函數(shù)有時(shí)會(huì)遞歸調(diào)用自身,如果不限制執(zhí)行次數(shù),遞歸就會(huì)出現(xiàn)問(wèn)題,它不斷地調(diào)用自身,很快地占用機(jī)器資源,最終產(chǎn)生溢出,使程序崩潰或掛起。產(chǎn)生這類(lèi)問(wèn)題的主要原因是開(kāi)發(fā)人員沒(méi)有編碼來(lái)保證循環(huán)和遞歸調(diào)用的終止,通常是在循環(huán)的開(kāi)始或結(jié)束時(shí)缺少檢查條件。
7.2如何發(fā)現(xiàn)問(wèn)題
在軟件中尋找可以使用遞歸調(diào)用的功能。這時(shí)化工模型可以制作一個(gè)列表,標(biāo)明軟件中可能嵌入遞歸的功能的列表,然后自己引用自己來(lái)檢查程序是否能正確處理。
7.3測(cè)試方法小結(jié)
應(yīng)用場(chǎng)合:需要和其它對(duì)象進(jìn)行交互的地方。
測(cè)試方法:考慮對(duì)象的自我交互或復(fù)制。
測(cè)試知識(shí)儲(chǔ)備:全面把握被測(cè)軟件的需求。