焦勝男
摘 要 隨著信息時代的到來,軟件在人們的生產(chǎn)生活中發(fā)揮著越來越大的作用。因此,為減少軟件運(yùn)行過程中的錯誤,保證軟件質(zhì)量,開發(fā)人員需在不同階段對軟件性能進(jìn)行測試。文章研究了軟件測試在軟件開發(fā)過程中的應(yīng)用,以期為軟件的開發(fā)提供參考。
關(guān)鍵詞 軟件測試;軟件開發(fā);應(yīng)用;研究
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1671-7597(2014)07-0042-02
軟件測試是軟件開發(fā)工作的重要組成部分,因為軟件測試能及時發(fā)現(xiàn)軟件存在的問題,軟件開發(fā)工程師在次基礎(chǔ)上進(jìn)行軟件調(diào)試,解決軟件運(yùn)行時出現(xiàn)的問題,能顯著提高軟件開發(fā)效率,因此,軟件測試成為軟件開發(fā)工作不可或缺的重要步驟,深受軟件開發(fā)工程師的重視。
1 軟件測試的分類及方法
1.1 軟件測試的分類
從整體上來看軟件測試由靜態(tài)測試與動態(tài)測試之分,其中動態(tài)測試包括單元測試、集成測試、確認(rèn)測試以及系統(tǒng)測試等。各種測試均能不同程度的發(fā)現(xiàn)軟件開發(fā)過程中存在的問題,下面對不同測試方法逐一進(jìn)行介紹。
1)靜態(tài)測試。所謂靜態(tài)測試指不實際運(yùn)行軟件,而是對軟件代碼、測試用例、設(shè)計審查以及需求分析等進(jìn)行分析、檢查。其中認(rèn)證、驗證以及確認(rèn)是利用靜態(tài)方法測試軟件質(zhì)量利用率較高的方法。通過靜態(tài)測試可找出30%~70%的軟件編碼以及邏輯錯誤,為后期軟件測試鋪平道路。
2)動態(tài)測試。動態(tài)測試指通過設(shè)計測試用例模擬軟件使用者的行為,對比軟件實際運(yùn)行效果與預(yù)期效果之間的差異,尋找軟件存在的問題,其和靜態(tài)測試的區(qū)別在于軟件是否運(yùn)行。動態(tài)測試較靜態(tài)測試工作量大,包括系統(tǒng)、確認(rèn)、集成、單元測試等,其中單元測試指檢驗與檢查軟件的最小單元模塊,目前主要使用白盒測試技術(shù)進(jìn)行測試且可同時對多個模塊進(jìn)行測試;集成測試指按照集成測試計劃,檢查軟件單位之間的接口是否正確;確認(rèn)測試的目的在于檢查軟件是否滿足用戶需求,因此,測試過程中需有用戶參與,當(dāng)前常使用黑盒測試方法;系統(tǒng)測試是軟件測試的重要內(nèi)容,是交付使用的最后一個環(huán)節(jié),需要對軟件運(yùn)行的軟硬件環(huán)境、性能及功能進(jìn)行測試。軟件開發(fā)過程中由黑盒測試工程師負(fù)責(zé)軟件系統(tǒng)的測試。
1.2 軟件測試的方法
軟件測試的方法包括白盒測試、黑盒測試以及綜合策略,其中白盒測試通過認(rèn)真檢查軟件的過程性細(xì)節(jié),以發(fā)現(xiàn)軟件存在的問題。白盒測試的方法很多,其中邏輯覆蓋方法較為常見。利用該種方法測試時測試人員需比較熟悉軟件的內(nèi)部結(jié)構(gòu),以設(shè)計出合理的測試用例,實現(xiàn)分支、條件、執(zhí)行語句、條件組合、分支-條件代碼的覆蓋。
黑盒測試的重點在于檢測軟件的功能,因此,不涉及軟件代碼的檢測。利用該方法能檢測出白盒測試無法發(fā)現(xiàn)的問題,是白盒測試方法的互補(bǔ)。利用黑盒測試可及時發(fā)現(xiàn)軟件與數(shù)據(jù)庫連接、初始化或終止、軟件界面、性能等是否出現(xiàn)錯誤等。黑盒測試方法又分為錯誤推測法、等價類劃分法以及邊界值分析法,其中錯誤測試法適用于經(jīng)驗豐富的開發(fā)人員,即根據(jù)軟件開發(fā)過程中錯誤頻率較高的位置進(jìn)行針對性的測試;對于窮盡的黑盒測試來講,測試程序時需要輸入所有無效與有效數(shù)據(jù),工作量非常大,并不可取。實際測試時通常輸入代表性較強(qiáng)的數(shù)據(jù),以減少測試勞動量,最大限度的發(fā)現(xiàn)軟件存在的問題。即將需要輸入的數(shù)據(jù)分成多個等價類,每個等價類中選擇代表性的數(shù)據(jù)進(jìn)行測試;軟件開發(fā)過程中循環(huán)、數(shù)據(jù)結(jié)構(gòu)以及下標(biāo)等容易出現(xiàn)問題,此時就需運(yùn)用邊界值分析法進(jìn)行測試,通過采用針對性的測試用例完成測試;綜合策略指聯(lián)合多種測試方法進(jìn)行測試,能彌補(bǔ)單一方法測試的缺陷,提高軟件測試效率。
1.3 軟件測試過程
由上文可知軟件測試過程由系統(tǒng)測試、、確認(rèn)測試、集成測試以及單元測試之分。經(jīng)過測試主要為了發(fā)現(xiàn)軟件開發(fā)過程出現(xiàn)的系統(tǒng)及功能錯誤,具體包含以下內(nèi)容:軟件開發(fā)前期未進(jìn)行充分的調(diào)研或未完全理解相關(guān)要求,導(dǎo)致開發(fā)的軟件出現(xiàn)一些功能性錯誤;未將外部環(huán)境因素考慮在內(nèi),引發(fā)系統(tǒng)錯誤。例如,調(diào)用子程序出現(xiàn)錯誤、操作系統(tǒng)及數(shù)據(jù)庫接口出現(xiàn)錯誤等;靜態(tài)與動態(tài)數(shù)據(jù)定義混淆,數(shù)據(jù)結(jié)構(gòu)、算術(shù)運(yùn)算以及程序定義出現(xiàn)偏差;編寫代碼時全局與局部變量未做明確區(qū)分,一些變量名和系統(tǒng)保留關(guān)鍵字名相同,或粗心大意導(dǎo)致編寫的語法錯誤等。
2 軟件測試在軟件開發(fā)中的應(yīng)用
軟件測試貫穿軟件開發(fā)的整個過程,為保證軟件后期的正常運(yùn)行奠定堅實的基礎(chǔ),因此,加強(qiáng)軟件測試應(yīng)用方面的研究,進(jìn)而縮短軟件開發(fā)周期,提高軟件開發(fā)效率。
1)應(yīng)用在軟件需求分析環(huán)節(jié)。對軟件進(jìn)行需求分析,軟件測試人員需對工作量、軟件測試風(fēng)險認(rèn)真的評估,仔細(xì)考慮軟件測試的可行性等,以確保軟件的開發(fā)周期、花費(fèi)費(fèi)用以及軟件功能滿足用戶需求。軟件測試人員通過分析需求的不同內(nèi)容,就出現(xiàn)的問題與用戶進(jìn)行協(xié)商,為后期的軟件測試工作創(chuàng)造良好條件。
2)應(yīng)用在軟件設(shè)計環(huán)節(jié)。軟件設(shè)計環(huán)節(jié)是軟件開發(fā)工作得以順利進(jìn)行的重要保障,如軟件系統(tǒng)設(shè)計缺乏合理性,容易引起軟件開發(fā)時邊界問題的出現(xiàn),導(dǎo)致軟件擴(kuò)展性較弱,甚至軟件開發(fā)工作的失敗。
軟件系統(tǒng)設(shè)計時測試人員不僅要掌握設(shè)計模型,對設(shè)計模型的風(fēng)險進(jìn)行評估,而且還要進(jìn)行測試計劃的編寫。另外,為保證測試設(shè)計的合理性與穩(wěn)定性,避免后期出現(xiàn)不必要的變更,測試人員工作時應(yīng)保證系統(tǒng)結(jié)構(gòu)質(zhì)量。針對具有特殊要求的業(yè)務(wù)可通過創(chuàng)建技術(shù)邊界實現(xiàn),以提高軟件系統(tǒng)的不可替代性及可持續(xù)性。
除此之外,測試人員還應(yīng)熟悉和掌握軟件產(chǎn)品的運(yùn)行環(huán)境,積極參與到軟件不同模塊、數(shù)據(jù)庫結(jié)構(gòu)等討論中,對軟件設(shè)計過程中存在的問題進(jìn)行評估,重點把握測試環(huán)節(jié)存在的重點、難點環(huán)節(jié)。同時,還需掌握軟件產(chǎn)品設(shè)計的性能以及軟件不同模塊接口問題,為后期的測試工作奠定堅實的基礎(chǔ)。
3)應(yīng)用在軟件編寫環(huán)節(jié)。編寫軟件代碼時測試人員需參與到凍結(jié)報告、編寫測試用例以及單元測試工作之中,尤其應(yīng)將測試用例的編寫當(dāng)作重要工作來抓。一般情況下,對軟件單元功能的測試軟件開發(fā)人員可以完成,但自動化測試腳本、測試用例等仍需要測試人員提供支持,因此,測試人員應(yīng)按照軟件開發(fā)要求,切實做好軟件編寫環(huán)節(jié)上的測試工作。endprint
4)應(yīng)用在軟件測試環(huán)節(jié)。對軟件進(jìn)行測試時,測試人員主要負(fù)責(zé)軟件質(zhì)量報告的發(fā)布、軟件缺陷的發(fā)現(xiàn)及檢查、測試用例的更新等工作,該環(huán)節(jié)是軟件測試應(yīng)用在軟件開發(fā)工作積極重要的環(huán)節(jié),涉及系統(tǒng)測試、確認(rèn)測試以及集成測試等測試內(nèi)容,因此,測試時應(yīng)嚴(yán)格依據(jù)測試用例實施。通過上述測試后軟件能實現(xiàn)基本的功能,不過針對一些特殊用例,還需根據(jù)實際情況進(jìn)行自由測試,最大限度的發(fā)現(xiàn)軟件存在的缺陷。另外,為保證軟件正常運(yùn)行,如沒有測試用例覆蓋新發(fā)現(xiàn)的缺陷時需及時更新測試用例。除此之外,還需跟蹤軟件缺陷,尤其對于開展的新項目而言,應(yīng)按照新報、確認(rèn)、重現(xiàn)、修復(fù)、驗證、關(guān)閉缺陷等流程實施。
5)應(yīng)用在軟件運(yùn)行維護(hù)環(huán)節(jié)。軟件運(yùn)行時測試人員主要負(fù)責(zé)測試用例的重新組合、解決客戶提出的問題、幫助客戶進(jìn)行測試的驗收等工作,尤其幫助客戶驗收測試是重要工作,而解決客戶提出的問題為關(guān)鍵,因此測試人員對客戶提出的問題應(yīng)認(rèn)真對待,即從客戶的角度出發(fā),了解其真正關(guān)心的問題。同時,認(rèn)真分析前期測試未能檢查出軟件問題的原因。另外,軟件運(yùn)行維護(hù)階段,應(yīng)根據(jù)需要及時的更新、組織一些新的測試用例,以彌補(bǔ)未設(shè)計測試用例的出現(xiàn)的問題。
綜上所述,軟件測試是軟件開發(fā)不可或缺的關(guān)鍵環(huán)節(jié),軟件測試人員應(yīng)根據(jù)軟件開發(fā)實際需要,切實做好不同環(huán)節(jié)的測試工作。例如,利用動態(tài)方法測試的同時,配合使用靜態(tài)測試方法,盡量通過測試找出軟件開發(fā)過程中存在的各種問題,在滿足軟件功能要求的基礎(chǔ)上,保證軟件工作的穩(wěn)定性。
3 總結(jié)
軟件測試能及時發(fā)現(xiàn)軟件自身存在的問題,對保證后期軟件穩(wěn)定的運(yùn)行具有重要意義。為此,測試人員應(yīng)根據(jù)軟件的功能需求,不斷總結(jié)軟件測試經(jīng)驗,進(jìn)而制定合理的軟件測試計劃,并采用高效的測試方法,提高軟件測試效率,在滿足客戶需求的前提下,確保軟件的最終質(zhì)量。
參考文獻(xiàn)
[1]王長利.軟件測試過程模型的研究與應(yīng)用[D].電子科技大學(xué),2012.
[2]路曉波.軟件開發(fā)過程中白盒測試方法和工具的研究及應(yīng)用[D].南京郵電大學(xué),2013.
[3]朱寅非.軟件測試在軟件開發(fā)過程中的應(yīng)用探析[J].無線互聯(lián)科技,2013(05):48,50.
[4]潘禎,吳永強(qiáng),王艷華.軟件測試在軟件開發(fā)中應(yīng)用的探討[J].硅谷,2011(22):156-157.
[5]朱虹.軟件測試在軟件開發(fā)過程中的應(yīng)用[J].中國新技術(shù)新產(chǎn)品,2009(22):37.endprint