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