三級信息管理技術(shù)分章節(jié)考試要點:軟件工程(軟件測試之測試的基本概念)
軟件測試
在軟件開發(fā)的一列活動中,為了保證軟件的可靠性,人們研究并使用了很多方法進行分析、設(shè)計及編碼實現(xiàn)。但是由于軟件產(chǎn)品本身無形態(tài),它是復(fù)雜的、知識高度密集的邏輯產(chǎn)品,其中不可能沒有錯誤。物理產(chǎn)品在出廠前都要進行嚴(yán)格的檢驗,軟件產(chǎn)品也不例外。軟件開發(fā)總伴隨著軟件質(zhì)量保證的活動,而軟件測試是主要活動之一。軟件測試代表了需求分析、設(shè)計、編碼的最終復(fù)審。
測試是一項很艱苦的工作,其工作量約占軟件開發(fā)總工作量的40%以上,特別對一些關(guān)系到人的生命安全的軟件,共測試成本可能相當(dāng)于開發(fā)階段總成本的3~5倍。
(一)測試的基本概念
1.測試的目的
軟件測試的目的是盡可能多地發(fā)現(xiàn)軟件產(chǎn)品(主要是指程序)中的錯誤和缺陷。
明確測試的目的是一件非常重要的事,因為在現(xiàn)實世界中對測試工作存在著許多模糊或者錯誤的看法,這些看法嚴(yán)重影響著測試工作的順利進行。
有人認(rèn)為測試是為了證明程序是正確的,也就是說程序不再有錯誤,事實證明這是不現(xiàn)實的。因為要通過測試來發(fā)現(xiàn)程序中的所有錯誤就要窮舉所有可能的輸入數(shù)據(jù),檢查它們是否產(chǎn)生正確的結(jié)果。例如,一個需要3個16位字長的整型輸入數(shù)據(jù)的程序,輸入數(shù)據(jù)的所有組合情況大約有3×10 14 種,若每組數(shù)據(jù)的測試時間為1ms,那么即使一年365天,每天24小時地測試,也大約需要1萬年的時間。
2.測試用例
要進行測試,除了要有測試數(shù)據(jù)(或稱輸入數(shù)據(jù))外,還應(yīng)同時給出該組測試數(shù)據(jù)應(yīng)該得以怎樣的輸出結(jié)果,我們稱它為預(yù)期結(jié)果。在測試時將實際的輸出結(jié)果與預(yù)期結(jié)果比較,若不同則表示發(fā)現(xiàn)了錯誤,因此測試用例是由測試數(shù)據(jù)和預(yù)期結(jié)果構(gòu)成的。
為了發(fā)現(xiàn)程序中的錯誤,應(yīng)竭力設(shè)計能暴露錯誤的測試用例。一個好的測試用例是極有可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯誤的測試用例。一次成功的測試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯誤的測試。
3.測試的原則
基于上述測試目的,我們可以考慮以下有關(guān)測試的原則:
(1)確定預(yù)期輸出結(jié)果是測試用例必不可少的一部分。如果只有測試數(shù)據(jù)而無預(yù)期結(jié)果,那么就不易判斷測試結(jié)果是否正確。
(2)程序員應(yīng)避免測試自己的程序,程序設(shè)計機構(gòu)不應(yīng)測試自己的程序。這是因為程序中的錯誤往往是由于程序員對問題說明的誤解,由他來測試自己的程序就不易找出因這種誤解而產(chǎn)生的錯誤。此外,開發(fā)程序是一項建設(shè)性的工作,而測試則是一項破壞性的工作(證明程序有錯),這對開發(fā)人員或機構(gòu)來說在心理上是難以容忍的。為了證明自己的程序沒有錯誤或錯誤很少,他們往往不去選擇容易發(fā)現(xiàn)錯誤的測試用例,而選擇容易通過的測試用例。當(dāng)然,這并不意味著程序員都不能測試自己的程序,如單元測試通常就是由程序員自己測試的。
(3)徹底檢查每個測試結(jié)果。如果不仔細(xì)檢查測試結(jié)果,有些已經(jīng)測試出來的錯誤也可能被遺漏掉。
(4)對非法的非預(yù)期的輸入數(shù)據(jù)也要像合法的和預(yù)期的輸入數(shù)據(jù)一樣編寫測試用例。
(5)檢查程序是否做了應(yīng)做的事是成功的一半,另一半是看程序是否做了不該做的事。
(6)除了真正沒有用的程序外,一定不要扔掉測試用例。因為在改正錯誤或程序維護后還要進行重新測試。
(7)在規(guī)劃測試時不要設(shè)想程序中不會查出錯誤。
(8)程序模塊經(jīng)測試后,殘存的錯誤數(shù)目往往與已發(fā)現(xiàn)的錯誤數(shù)目成比例。實踐證明,程序中的大量錯誤僅與少量的程序模塊有關(guān),因此當(dāng)A模塊找出的錯誤比B模塊多得多時,很可能A模塊殘存的錯誤仍比B模塊殘存的錯誤多多。
4.白盒測試和黑盒測試
測試的關(guān)鍵是測試用例的設(shè)計,其方法可分成兩類:白盒測試和黑盒測試。
白盒測試是把程序看成裝在一只透明的白盒子里,測試者完全了解程序結(jié)構(gòu)和處理過程。它根據(jù)程序的內(nèi)部邏輯來設(shè)計測試用例,檢查程序中的邏輯通路是否都按預(yù)定的要求正確地工作。黑盒測試是把程序看成一只黑盒子,測試者完全不了解(或不考慮)程序的結(jié)構(gòu)和處理過程。它根據(jù)規(guī)格說明書規(guī)定的功能來設(shè)計測試用例,檢查程序的功能是否符合規(guī)格說明的要求。
相關(guān)推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |