周秀枝
摘要:軟件測試是軟件質(zhì)量保證的一種重要手段,它是軟件開發(fā)過程的重要組成部分,測試過程及測試方法是靈活多變的,沒有固定可言,該文主要講述了軟件測試的概念,測試技術(shù)的方法以及目前軟件測試的現(xiàn)狀及所面臨的挑戰(zhàn)。
關(guān)鍵詞:軟件測試;測試概念;軟件測試現(xiàn)狀;挑戰(zhàn)
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2014)02-0320-02
近年來,信息技術(shù)的飛速發(fā)展,使得軟件產(chǎn)品應(yīng)用到社會的各各行業(yè)。隨著人類對計(jì)算機(jī)應(yīng)用的逐步深入,軟件質(zhì)量的要求也逐步提高,從而軟件測試越來越重要。雖然國內(nèi)軟件測試起步叫較晚,但也越來越被人們重視,據(jù)有關(guān)資料顯示,軟件測試費(fèi)用相當(dāng)于軟件開發(fā)總費(fèi)用的45%左右, 對于一些較高要求的軟件,其測試費(fèi)用很有可能是整個軟件項(xiàng)目開發(fā)所有費(fèi)用的3.~5倍,當(dāng)然隨著軟件規(guī)模的日益增大,測試問題也日益突出。軟件最終是否為人所用,沒有經(jīng)過測試的軟件產(chǎn)品,你就無法知曉它是否滿足用戶的需求,有缺陷的軟件在極端情況下可能會導(dǎo)致用戶財(cái)產(chǎn)生命安全。
1 軟件測試的概述
軟件測試是軟件質(zhì)量的保證,是使用自動化工具或人工來運(yùn)行系統(tǒng)程序的過程,進(jìn)而來發(fā)現(xiàn)現(xiàn)所運(yùn)行得到的結(jié)果和產(chǎn)品要求的條件之間的差別,并以此來評價。通俗的講,測試的目的是為了發(fā)現(xiàn)軟件中存在的錯誤,同時對軟件質(zhì)量進(jìn)行度量和評價,而不是證明該軟件是成功的,沒有錯誤的軟件世間難求。軟件測試要以用戶需求至上為基本原則,通過用最少的人力、物力、財(cái)力和時間找出軟件中的各種錯誤與缺陷,并且通過進(jìn)一步改正這些錯誤和缺陷來提高軟件的質(zhì)量。既然軟件測試是人為的,因此就不能至善至美,也不可能窮盡測試,軟件測試不可能揭示所有的缺陷。其實(shí)換一種說法,我們可以把測試過程看作是對軟件質(zhì)量的“探索”過程,這個探索不是“盲人摸象”的過程,它有一個基線即所有的測試都應(yīng)該追溯到用戶需求。
2 基于測試技術(shù)的測試方法
傳統(tǒng)的人為測試是在編碼階段,甚至是在編碼后都是錯誤的。需求分析,概要設(shè)計(jì),詳細(xì)設(shè)計(jì)及程序編碼實(shí)現(xiàn)等各階段所得的文檔都是軟件測試的對象,所以說軟件測試是貫穿于整個軟件定義期和開發(fā)期間的,從技術(shù)上劃分為黑盒測試,白盒測試及灰盒測試。
2.1白盒測試
它是基于源程序或代碼內(nèi)部邏輯結(jié)構(gòu)來設(shè)計(jì)測試用例而進(jìn)行的測試。它相當(dāng)于一個打開的盒子,測試人員可以依據(jù)所看到了解的代碼結(jié)構(gòu)來設(shè)計(jì)測試用例。白盒測試分為兩種,一種靜態(tài)一種動態(tài)。靜態(tài)的方法就是直接檢查只要按一定步驟進(jìn)行,包括桌面檢查、代碼審查等。這種方法一般是由有經(jīng)驗(yàn)的測試人員做,只是初步大致的來檢查系統(tǒng)中存在的錯誤。動態(tài)的方法就必須要生成測試用例來運(yùn)行程序發(fā)現(xiàn)錯誤,包括有基本路徑測試、條件測試數(shù)據(jù)流測試等。白盒測試一般由有經(jīng)驗(yàn)的軟件測試人員和開發(fā)人員進(jìn)行,因?yàn)橐枰私猱a(chǎn)品的內(nèi)部工作,關(guān)注程序的結(jié)構(gòu)和內(nèi)部邏輯。
2.2 黑盒測試
它是相對于白盒測試而言,它是基于產(chǎn)品的需求和功能性而不是基于系統(tǒng)的內(nèi)部設(shè)計(jì)和代碼的任何知識,通過軟件的外部表現(xiàn)來發(fā)現(xiàn)其缺陷和錯誤。同樣可以把黑盒測試的對象看作是一個封閉的黑盒子,測試人員要根據(jù)規(guī)格說明在不考慮其程序內(nèi)部結(jié)構(gòu)和和處理過程,以用戶視角進(jìn)行的測試。黑盒測試是配合白盒測試發(fā)現(xiàn)其他錯誤,它并不是白盒測試的替代品。黑盒測試試圖發(fā)現(xiàn)的錯誤主要有:系統(tǒng)功能對不對或者有沒有遺漏、界面錯誤、數(shù)據(jù)結(jié)構(gòu)或外部數(shù)據(jù)訪問是否錯誤、性能錯誤以及初始化和終止錯誤。所以說一般黑盒測試主要在測試后期執(zhí)行,而白盒測試一般在早期執(zhí)行。常用的黑盒技術(shù)有邊界值分析、因果測試、等價劃分等。
2.3灰盒測試
灰盒測試是介于白盒測試和黑盒測試間的一種有效的軟件測試技術(shù),結(jié)合了是兩種測試的有點(diǎn),它即關(guān)注與程序的內(nèi)部高層邏輯結(jié)構(gòu),也關(guān)注與程序運(yùn)行時的外部得表現(xiàn),然而這種關(guān)注不需要像白盒那樣詳細(xì)、完整,僅是通過一些表面的現(xiàn)象、事件、標(biāo)志來判斷其內(nèi)部的運(yùn)行狀態(tài),有時候輸出是正確的,但內(nèi)部實(shí)際是錯誤的,這種情況很常見,如果每次都是通過白盒測試進(jìn)行操作,結(jié)果效率會大大降低,因此采取灰盒測試是一種有效的補(bǔ)救方法。
3 軟件測試現(xiàn)狀
就國際而言,國際的軟件測試領(lǐng)域已基本成熟,在軟件業(yè)比較發(fā)達(dá)的國家,無論從投入的人力和時間上看,軟件測試都受到了公司的極大重視,他們有嚴(yán)格的測試工作標(biāo)準(zhǔn)和范圍規(guī)定,軟件測試被公司認(rèn)為不可或缺的。已美國為例,據(jù)說美國軟件測試市場已作為軟件產(chǎn)業(yè)中的一個獨(dú)特市場,不僅是軟件開發(fā)企業(yè)還是設(shè)有軟件開發(fā)部門的公司,軟件測試單位的設(shè)置都是必不可少的,其中軟件測試人員的數(shù)量更是占軟件開發(fā)工程師的75%左右。軟,每一個開發(fā)人員都會配備一名測試人員,也就是說開發(fā)人員和測試人員的比例是1:1,并且這些測試人員的水平是很高的,往往負(fù)責(zé)軟件測試質(zhì)量的質(zhì)量保證經(jīng)理的職位和軟件開發(fā)經(jīng)理是平行的。美國幾乎壟斷了全球的軟件市場,終其原因,當(dāng)然是很多發(fā)面的綜合因素,但更重要的一點(diǎn)的是當(dāng)今美國的信息化水平非常高,人們對產(chǎn)品的質(zhì)量更高,殘酷的競爭更迫使各企業(yè)在產(chǎn)品質(zhì)量方面加大投入,一定要在產(chǎn)品出廠前把質(zhì)量把關(guān)好,美國 的軟件工廠概念已經(jīng)完全形成,已CMM為標(biāo)志的適應(yīng)大規(guī)模生產(chǎn)的軟件流程管理體系已經(jīng)非常完備,使得軟件行業(yè)真正成為制造業(yè)。
就國內(nèi)而言,國內(nèi)的軟件市場才剛剛起步,雖然國家對軟件業(yè)給了很多的鼓勵政策,軟件業(yè)在國內(nèi)也有很大的發(fā)展,但是多數(shù)軟件公司還是注重代碼開發(fā),而忽略代碼質(zhì)量,忽視了測試在整個軟件工程項(xiàng)目的重要性,認(rèn)為測試只是開發(fā)的附屬品,即使有公司認(rèn)識到測試的重要性但也是停留在認(rèn)識階段,只是做做簡單的黑盒測試,功能性測試等。為什么國內(nèi)的軟件市場的表現(xiàn)令人擔(dān)憂呢?首先很多人認(rèn)為國內(nèi)的產(chǎn)品大多數(shù)是基于互聯(lián)網(wǎng)的,軟件大部分是在服務(wù)器端的,更新的成本大幅降低了,可以一味的借助網(wǎng)絡(luò)更新,在使用中發(fā)現(xiàn)錯誤然后去彌補(bǔ)。即使有一些已經(jīng)成規(guī)模、有一定的研發(fā)的大企業(yè),也沒有一套完整的測試流程體系,他們可能花費(fèi)大量的人力、物力來通過CMM,ISO的認(rèn)證,卻不能踏實(shí)的做好測試,在他們眼里,認(rèn)證才是公認(rèn)的公司實(shí)力的體現(xiàn),測試則只是一個可有可無的過程。說到底這是對測試重要性的理解還不夠透徹。另一方面費(fèi)用問題也較突出,開發(fā)方在支付軟件開發(fā)費(fèi)用后,就不愿意再為軟件測試支付費(fèi)用而增加新的成本,這其中也包含了測試工具的價格,有些軟件公司即使他們有那個心也沒那個力,昂貴的測試工具會立即扼殺他們抓測試的信心,即使有的項(xiàng)目有意委托第三方測試,可是開發(fā)方也會考慮到需要提供源代碼,擔(dān)心知識產(chǎn)權(quán)受到侵犯。軟件公司較為缺乏專業(yè)測試力量也是重要原因之一,嚴(yán)格來說,專業(yè)的測試人員要懂的技術(shù)甚至比開發(fā)的要高的多,這又要追溯到對測試的態(tài)度觀念問題??偟膩碚f,價格,技術(shù)和企業(yè)愿望是目前測試發(fā)展緩慢的原因。
4 挑戰(zhàn)
誠然,價格,技術(shù)和企業(yè)愿望是目前國內(nèi)測試走的很難的原因,當(dāng)今快速發(fā)展的企業(yè)信息化進(jìn)程導(dǎo)致軟件測試面臨著諸多挑戰(zhàn),產(chǎn)品的多樣性,復(fù)雜化使得軟件測試在技術(shù)上面臨著挑戰(zhàn)。隨著復(fù)雜的分布式應(yīng)用技術(shù)的快速發(fā)展,電子商務(wù)應(yīng)用的部署結(jié)構(gòu)日益復(fù)雜,所涉及的協(xié)議和接口標(biāo)準(zhǔn)日益增多,對應(yīng)用部署的性能評價要求也越來越嚴(yán)格,這就導(dǎo)致了測試的復(fù)雜性增加了,同時迫于市場的壓力,產(chǎn)品開發(fā)周期變的越來越短,應(yīng)用系統(tǒng)更新、升級越來越頻繁,在這種情況下必須特別關(guān)注整個應(yīng)用的完整性和可靠性。另一方面的挑戰(zhàn)來自軟件測試工程師的素質(zhì)。測試團(tuán)隊(duì)核心人物的人數(shù)可能因?yàn)楫a(chǎn)品的的測試組織機(jī)構(gòu)不同而有所不同,測試工程師的綜合素質(zhì)體現(xiàn)在:責(zé)任心、綜合技術(shù)水平、學(xué)習(xí)和解決問題的能力,還有對軟件業(yè)發(fā)展趨勢的了解。
5 總結(jié)
雖然中國的測試領(lǐng)域才剛剛開始,我們還有很多東西要學(xué),可是該如何推動我們的軟件測試業(yè),不是靠你和我,而是靠全名總動員,樹立正確的軟件測試觀,大家要培養(yǎng)這個意識,并把這個意識貫穿在研發(fā)的全過程中,將軟件項(xiàng)目管理和軟件測試結(jié)合起來,使得軟件測試業(yè)不斷發(fā)展和成熟,總有一天中國的軟件質(zhì)量會在世界上有屬于自己的一席之地的。
參考文獻(xiàn):
[1] Ron Patton .軟件測試[M].北京:機(jī)械工業(yè)出版社,2001.
[2] 鄭人杰.計(jì)算機(jī)軟件測試技術(shù)[M].北京:清華大學(xué)出版社,1999.
[3] 郁蓮.軟件測試方法與實(shí)踐[M].北京:清華大學(xué)出版社,2008.
[4] 劉浩.軟件測試簡述與展望[J].江蘇現(xiàn)代計(jì)量,2008.
[5] 吳小紅,楊海濤,王萬良.基于Web 的遠(yuǎn)程控制實(shí)驗(yàn)系統(tǒng)的設(shè)計(jì)[J].浙江工業(yè)大學(xué)學(xué)報(bào),2004,132(6):700-705.
[6] 畢波.嵌入式Web 服務(wù)器的遠(yuǎn)程監(jiān)控系統(tǒng)的實(shí)現(xiàn)[J].重慶職業(yè)技術(shù)學(xué)院學(xué)報(bào),2004,13(2):138-140.
[7] 毛志雄.軟件測試?yán)碚撆c實(shí)踐[M].北京:中國鐵道出版社,2008.
[8] 賀平.軟件測試教程[M].北京:電子工業(yè)出版社,2007.
[9] 佟偉光.軟件測試技術(shù)[M].北京:人民郵電出版社,2005.