摘要:在軟件開發(fā)過程中,人們已經(jīng)會使用多種保證軟件質(zhì)量的方法來開發(fā)軟件,但是在工作中的錯誤是難免的,這樣開發(fā)出來的產(chǎn)品或者系統(tǒng)或多或少的會隱藏著許多錯誤和缺陷,所以軟件測試是軟件開發(fā)中必不可少的一項(xiàng)任重道遠(yuǎn)的環(huán)節(jié)。
關(guān)鍵詞:軟件工程;軟件開發(fā)過程;軟件測試。
中圖分類號:TP311.52 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9599 (2012) 09-0000-02
軟件事故是我們最不愿意看到的現(xiàn)象,一旦出現(xiàn)軟件事故則其帶來的損失是非常巨大的,早期有美國的火箭爆炸,近年又有溫州的動車追尾。所以由此可見軟件測試在軟件開發(fā)過程中是非常重要的。
一、認(rèn)識軟件測試
軟件工程中,軟件測試就是在軟件正事投入行業(yè)使用前,對軟件的需求分許、系統(tǒng)設(shè)計(jì)和程序源代碼進(jìn)行最后的復(fù)查檢測,是確保軟件質(zhì)量的關(guān)鍵。是為了發(fā)現(xiàn)軟件錯誤而執(zhí)行程序的過程。是利用測試工具按照測試方案和流程對產(chǎn)品進(jìn)行功能和性能測試,甚至可以根據(jù)需要編寫不同的測試工具,設(shè)計(jì)和維護(hù)測試系統(tǒng),對測試方案可能出現(xiàn)的問題進(jìn)行分析和評估。執(zhí)行測試用例后,需要跟蹤故障,以確保開發(fā)的產(chǎn)品適合需求。
軟件測試在軟件生存期中有兩個(gè)主要的階段:一個(gè)是在編寫出每一個(gè)模塊之后就對其進(jìn)行測試,亦可稱為單元測試或者模塊測試。這一階段主要是對某模塊的程序段進(jìn)行測試或者對其體現(xiàn)的單一功能進(jìn)行測試。第二個(gè)階段是對軟件系統(tǒng)進(jìn)行的各種綜合測試。
二、軟件測試的對象
軟件測試并不是簡單的程序測試,測試程序能不能運(yùn)行是不夠的。軟件測試應(yīng)該貫穿于軟件定義與開發(fā)的整個(gè)期間。所以,軟件的需求分析、系統(tǒng)設(shè)計(jì)、程序編碼以及各階段產(chǎn)生的說明文檔,如規(guī)格說明、概要設(shè)計(jì)等都應(yīng)列入軟件測試的對象。另外由于程序的各個(gè)開發(fā)階段是相互銜接的,前一階段的工作如果出現(xiàn)的問題不及時(shí)解決的話很自然的會影響到下一階段的。為了把握好沒一階段的正確性,我們需要進(jìn)行各種確認(rèn)和驗(yàn)證的工作。
確認(rèn)包括需求規(guī)格說明的確認(rèn)和程序的確認(rèn),而程序包括靜態(tài)和動態(tài)的確認(rèn),靜態(tài)的確認(rèn)一般經(jīng)過人工的分析,動態(tài)的確認(rèn)主要是通過動態(tài)分析和程序測試來檢查程序的執(zhí)行情況。
驗(yàn)證就是要想辦法證明該軟件在軟件生存期各個(gè)階段中的邏輯協(xié)調(diào)性、完備性和正確性。例如測試用戶的要求和程序運(yùn)行的結(jié)果是否相符、測試用戶的需求與系統(tǒng)分析員的報(bào)告是否準(zhǔn)確、測試需求說明書和設(shè)計(jì)說明書是否匹配、設(shè)計(jì)說明書和源程序是否吻合。
三、軟件測試的目的及應(yīng)把握的原則
在說此問題之前我們先來認(rèn)識下基于不同的立場時(shí)存在的兩種測試目的,一個(gè)是用戶角度,一個(gè)是軟件開發(fā)者角度。從用戶角度出發(fā),用戶總是希望通過軟件的測試盡可能的發(fā)現(xiàn)軟件中的隱蔽錯誤和缺陷,以此作為是否接受該軟件的度量。另外以軟件開發(fā)者角度來測試,他們則希望測試那些成為在軟件產(chǎn)品中沒有錯誤的過程,驗(yàn)證該軟件已正確地實(shí)現(xiàn)了用戶的要求,增強(qiáng)用戶對軟件質(zhì)量的認(rèn)可。所以他們多會選擇一些導(dǎo)致程序失效概率小的測試模塊,回避那些容易暴露程序錯誤的測試用例。也不會刻意去檢查排除程序中可能存在的副作用語句。可見這樣的測試對于軟件的質(zhì)量來說是毫無意義的。因?yàn)樵诔绦蛑袝嬖谥S多預(yù)料不到的問題,而這些問題往往要在特定的環(huán)境下才能體現(xiàn)出來。如果不把重心放在力求找出這種錯誤的基礎(chǔ)上,便會把這些錯誤遺留到運(yùn)行階段中。所以軟件測試時(shí)要多站在用戶的角度思考,把目標(biāo)確定為揭露程序中存在的錯誤。要力求以最少的時(shí)間和人力找出軟件中隱藏的各種錯誤和缺陷。
根據(jù)上述的軟件測試目的在軟件測試中我們要把握以下幾個(gè)原則:
(一)把“盡早和不斷的進(jìn)行軟件測試”牢記于心
由于軟件開發(fā)各個(gè)階段工作的多樣性,以及人員的配伍關(guān)系等因素,使得每個(gè)環(huán)節(jié)都有可能產(chǎn)生錯誤,所以要把軟件測試貫穿到每一個(gè)軟件開發(fā)的環(huán)節(jié)中去,端正態(tài)度認(rèn)真的完成各個(gè)階段的技術(shù)審核,這樣才能盡早的發(fā)現(xiàn)和預(yù)防錯誤,把出現(xiàn)的錯誤掐死在萌芽階段沒從而提高軟件質(zhì)量。
(二)測試用例要包含輸入數(shù)據(jù)和與輸入數(shù)據(jù)相對應(yīng)的預(yù)期輸出結(jié)果
測試前要根據(jù)測試的要求選擇適合該程序段使用的測試用例,這種測試用例主要用來檢驗(yàn)程序員編制的程序是否有誤。所以采用輸入數(shù)據(jù)和與輸入數(shù)據(jù)相對應(yīng)的預(yù)期輸出結(jié)果作為測試用例能更快捷的指出程序片段是否有誤。
(三)程序員應(yīng)避免測試自己的程序
測試工作需要客觀的態(tài)度和冷靜的情緒,人們通常不愿意否定自己的勞動成果。正是因?yàn)槌鲇诖朔N心理影響,如果程序員檢查自己的程序時(shí)難免會對軟件規(guī)格說明的理解產(chǎn)生偏差。因此由其他程序員來檢查應(yīng)該會更客觀,更有效果。當(dāng)然在此我們不能把測試程序和調(diào)試程序相混淆。
(四)設(shè)計(jì)測試用例時(shí)不可忽略不合理的輸入條件
合理的輸入條件是指能驗(yàn)證程序正確性的條件,而不合理的輸入條件則包含輸入異常、臨界或者容易引起異變的條件。人們在進(jìn)行測試時(shí)往往過多的考慮正常的條件而忽視不太合理的輸入條件。在軟件的正常使用中,人們常會應(yīng)為操作的失誤而對該程序輸入各種不合理的輸入比如打錯鍵盤或非法輸入等。這種錯誤輕則導(dǎo)致錯誤的運(yùn)算,嚴(yán)重會導(dǎo)致軟件的失效。因此不合理的輸入條件不可忽略。
(五)注意測試中的群集現(xiàn)象
測試時(shí)如果某些程序段出現(xiàn)的錯誤較多,則應(yīng)加大力度對該程序段進(jìn)行詳細(xì)認(rèn)真的檢查,因?yàn)閾?jù)經(jīng)驗(yàn)表明測試后的程序殘存錯誤與該程序段中已發(fā)現(xiàn)的錯誤的數(shù)目成正比。
(六)認(rèn)真執(zhí)行測試,杜絕測試的隨意性
指定詳細(xì)的測試計(jì)劃。計(jì)劃應(yīng)包括:軟件的功能,輸入和輸出,各功能測試的進(jìn)度安排,測試用例的選擇等等,還需多查閱相關(guān)文獻(xiàn)力求全面。
(七)妥善的保管測試計(jì)劃、測試用例、出錯統(tǒng)計(jì)和分析報(bào)告等,為日后的軟件維護(hù)提供便捷的服務(wù)。
總之,在軟件開發(fā)工程中軟件測試是一個(gè)必不可少的工作環(huán)節(jié),如果沒有此環(huán)節(jié)的支撐,開發(fā)出來的軟件產(chǎn)品注定會很快被淘汰。所以為了對用戶負(fù)責(zé),對國家和人民負(fù)責(zé)軟件開發(fā)者特別是大中型軟件的開發(fā)項(xiàng)目必須要嚴(yán)格的的對軟件開發(fā)的一系列活動進(jìn)行妥善的軟件測試,這樣才能更好的確保軟件的質(zhì)量,提高軟件的健壯性和可移植性。
參考文獻(xiàn):
[1]解敏.軟件測試技術(shù)的管理與預(yù)測研究,陜西師范大學(xué),2010
[2]劉燕俐.軟件測試發(fā)展創(chuàng)新探究,新疆油田公司數(shù)據(jù)公司,中國管理信息化,2012
[作者簡介]
陳杰(1983-),男,柳州人,畢業(yè)于廣西工學(xué)院計(jì)算機(jī)專業(yè)