摘要:本文主要對軟件測試的目的、用例以及測試方法進行了分析,并探討了計算機軟件深度開發(fā)應用,希望給我們的工作起到一定指導作用。
關鍵詞:計算機軟件;軟件測試;軟件開發(fā);應用軟件
中圖分類號:TP311 文獻標識碼:A 文章編號:1007-9599 (2012) 20-0000-02
1 軟件測試概述
1.1 軟件測試的目的。G.J.Myers在1979年發(fā)表的《軟件測試之藝術》中對軟件測試進行了定義,這也是后來人們所認同并遵守的一個理念:程序測試是為了發(fā)現錯誤而執(zhí)行程序的過程,換句話說軟件測試的主要作用在于發(fā)現出存在于程序之中的錯誤,而不是對軟件無錯誤進行證明。因此,發(fā)現至今沒有被發(fā)現的錯誤將是軟件測試成功的最重要標準之一。但是bug是隨著時間和條件的不同而出現的,這就使得在真正意義上我們是無法證明程序絕對正確的。
1.2 軟件測試用例。在對軟件進行測試的過程中,軟件測試用例是核心,也是我們軟件測試成功的基礎,因此,對于測試用例的設計屬于整個測試工作中最有挑戰(zhàn)性的工作之一。一般來說,它包含了測試輸入數據、對步驟進行執(zhí)行以及與之對應的預期輸出這三部分。在軟件測試中,軟件測試用例的作用主要體現在:對測試的實施進行指導;對測試數據的規(guī)劃進行準備;幫助完成測試腳本/設計規(guī)格說明書的編寫;對測試結果度量基準進行評估;分析缺陷的標準。
1.3 軟件測試的方法。軟件測試中,我們使用的方法有很多種,而通過不同的較多對這些方法進行劃分也將得到不同的結果,比如;動態(tài)測試和靜態(tài)測試、人工測試及自動化測試、白盒測試及黑盒測試等。限于篇幅,我們僅以白盒測試及黑盒測試為例進行分析。
(1)黑盒測試。黑盒測試也被我們稱之為功能測試,其主要是利用測試來對每一功能是否能夠被正常使用進行檢測。在測試的過程中,我們將測試當做一個不可以打開的黑盒,完全不考慮其內部的特性及內部結構,只是在程序的接口測試。
黑盒測試方法是根據用戶角度,從輸入和輸出的關系來進行測試的,因此,如果外部特性本身就存在問題或者規(guī)格說明書的規(guī)定存在著不足,使用黑盒測試方法是不能夠發(fā)現這些問題的。具體來說,黑盒測試法主要測試的錯誤有:功能遺漏或者不正確;界面存在的錯誤;性能存在的錯誤;數據庫訪問出錯;初始化及終止錯誤等。
此外黑盒測試中只有利用窮舉法把所有有可能的輸入都當做測試情況才可能將程序中所有的錯誤查出。因此,我們不僅僅要對合法的輸入進行測試,還要對不合法的輸入進行測試,基于此,所謂的完全測試是不可能實現的,實際的工作中我們多使用針對性測試,這主要是通過測試案例的制訂來指導測試的實施,進而確保有組織、按步驟、有計劃的進行軟件測試。
在黑盒測試中,我們要做到能夠加以量化,只有這樣才能對軟件質量進行保障,上文中提到的測試用例就是軟件測試行為量化的一個方法。一般在黑盒測試中,測試用例設計的方法主要有:邊界值分析法、等價類劃分法、因果圖法、錯誤推測法、正交試驗設計法、判定表驅動法、功能圖法等。
(2)白盒測試。白盒測試也被稱之為邏輯驅動測試或者結構測試,相對于黑盒測試,它屬于根據程序內部結構對程序進行測試,經過白盒測試,我們一般檢測的內容是程序內部的動作是否符合設計規(guī)格說明書的規(guī)定,也就是檢測程序每一條通路工作的過程中是否按照預期的方式進行。這種方式是把被測的程序當作被打開的盒子,而我們則是依據其內部結構進行測試用例的選擇,然后測試程序全部的邏輯路徑,并通過不同的點對程序狀態(tài)進行檢查,判斷其是否和預期狀態(tài)一致。
2 計算機軟件深度開發(fā)應用
在上個世紀50年代到60年代,我們主要是通過手工方式進行大型系統(tǒng)軟件的開發(fā),這種方式不僅容易出錯,而且生產效率也比較低,很難滿足我們的需求,導致了“軟件危機”。針對這一情況,北大西洋公約組織于1968年提出了軟件工程的概念。
軟件工程大體上經歷了程序設計、軟件、軟件工程這三個時代,其中軟件工程學的主要作用在于通過當代的科學理論及技術對軟件開進行指導,進而實現以較少投資實現較高軟件質量的目的。它既屬于邊緣學科,又屬于綜合性學科,在軟件工程學中包含了計算機科學、人體工程學、管理學、系統(tǒng)工程學、經濟學以及心理學等。
2.1 軟件開發(fā)中的三個階段。通過軟件工程這種方式對軟件進行生產,其過程和建筑工程以及機械工程有很大的相似性,好比一個建筑工程自開始到最后往往會經歷設計、施工以及驗收這三個階段,而軟件產品的生產中也存在著三個階段:定義、開發(fā)以及維護。
當然,在建筑工程及軟件的開發(fā)階段也存在著一些不同,比如,建筑工程的設計藍圖一旦形成之后,在其后續(xù)的流程中將不會有回溯問題,而在軟件開發(fā)工程中,每一個步驟都有可能經歷一次或多次的修改及適應回溯問題。再如,在軟件的交付以后,依然面臨著運行維護的問題,這一點和建筑工程也有所不同。
2.2 應用軟件開發(fā)方法。針對一些較大的應用軟件,比如大型仿真訓練軟件、計算機輔助設計軟件等,是很難一人完成的,需要多人的共同配合。因此,為了確保應用軟件的質量,我們應依據軟件工程的原則及思路,采用合理的方法和依據,組織軟件人員一致的、協(xié)調的完成這一工作。當前的軟件開發(fā)方法主要可以分為:生命周期法、原型化法以及自動形式的系統(tǒng)開發(fā)法。
(1)生命周期法。軟件生命周期法主要是從時間的角度對軟件定義、開發(fā)以及維護過程中的問題進行分解,使其成為幾個小的階段,在每個階段開始及結束的時候都有非常嚴格的標準,這些標準是指在階段結束的時候要交出質量比較高的文檔。
在軟件定義過程中,我們主要是確定軟件開發(fā)總目標、工程可行性以及開發(fā)過程中應使用的策略及必須實現功能等。軟件的定義又可以分為穩(wěn)定定義、可行性研究以及需求的分析。
軟件開發(fā)則是由總體設計、詳細設計、編碼以及測試這幾個部分。其中前二者所欲系統(tǒng)設計階段,后兩個階段則屬于系統(tǒng)實現階段。
至于系統(tǒng)的維護,則主要是保證軟件能夠長久的滿足用戶需求。
(2)原型化方法。但在實際的工作中,用戶所提出的軟件目標往往是概括性的,無法對輸入、處理以及輸出需求進行詳細的描述,而我們工作人員也往往在這個階段都還沒有確定系統(tǒng)適用性、處理算法效果等,這種情況下,我們只有一邊干一邊對其進行認識,而原型化方法正是由這一思路提出的方法。
原型有三種形態(tài):紙上原型、工作原型以及現有原型。其中紙上原型主要是利用紙張及墨水的模型對軟件一些特征進行解釋;至于工作原型則是在計算機上執(zhí)行軟件的一部分功能,幫助開發(fā)中及用戶理解即將被開發(fā)的程序;而現有模型則是通過現成的,可運行的程序完成所需的功能,不過其中一部分是在新開發(fā)的基礎上進行改善。
在利用原型法進行開發(fā)的過程中,主要可以分為可行性研究階段、對系統(tǒng)基本要求進行確定的階段、建造原始系統(tǒng)的階段、開發(fā)人員及用戶的評審階段、開發(fā)人員的修改階段。
(3)自動形式的系統(tǒng)開發(fā)方法。這種方法具有一個很明顯的特點就是使用了4GT,即第四代技術,包含的比較多的軟件開發(fā)工具,使用這種方法時,軟件的開發(fā)者進需要對所要實現的內容進行詳細說明即可,而不需要探索如何去實現,4GT軟件工具將會依據系統(tǒng)的要求對規(guī)范進行確定,進而進行分析、自動設計及自動編碼。限于篇幅這里不再對其詳細分析。
3 結語
軟件測試及軟件開發(fā)是非常復雜的工作,涉及的內容和環(huán)節(jié)比較多,本文限于篇幅,僅對最重要的一些問題進行較為表面的探討。因此,我們要想真正的做好這一工作,還需要加強自身的學習和探索。
參考文獻
[1]楊小龍.基于軟件質量的測試方法與分析[J].質量探索,2009,5.
[2]陳會霞,周利華.關于軟件測試的淺議[J].中國測試技術,2010,4.