淺談軟件開(kāi)發(fā)階段的測試 軟件測試
隨著(zhù)軟件開(kāi)發(fā)技術(shù)的發(fā)展,軟件測試技術(shù)也開(kāi)始得到人們越來(lái)越多的重視,但人們普遍的觀(guān)念認為測試活動(dòng)是在軟件開(kāi)發(fā)的中后期才需要介入的研發(fā)步驟,有的開(kāi)發(fā)人員甚至認為測試活動(dòng)不屬于研發(fā)過(guò)程,而僅僅是軟件開(kāi)發(fā)完成后依賴(lài)黑盒測試…來(lái)保證軟件產(chǎn)品質(zhì)量的一個(gè)過(guò)程。事實(shí)證明,軟件測試是軟件開(kāi)發(fā)過(guò)程中的重要階段,是確保軟件質(zhì)量的關(guān)鍵,尤其越是早期的測試活動(dòng),對軟件產(chǎn)品質(zhì)量的影響越是事半功倍。因此,軟件開(kāi)發(fā)階段的測試活動(dòng)是軟件開(kāi)發(fā)中不容忽視的一個(gè)重要環(huán)節。
一、軟件測試的概念
軟件測試是發(fā)現錯誤的過(guò)程;蛘哒f(shuō),軟件測試是根據軟件開(kāi)發(fā)各階段的規格說(shuō)明和程序的內部結構而精心設計一批測試用例j,利用這些測試用例去運行程序,以發(fā)現程序錯誤的過(guò)程。
從實(shí)際測試過(guò)程來(lái)看,軟件測試過(guò)程是由一系列不同的測試階段所組成。軟件開(kāi)發(fā)階段的測試可分為:需求分析審查、設計審查、代碼審查、單元測試、集成測試和系統測試等。需求分析審查、設計審查、單元測試中的代碼評審及各階段測試用例的評審都是通過(guò)對相關(guān)文檔或代碼的走讀活動(dòng)來(lái)實(shí)現的,這種評審活動(dòng)稱(chēng)之為靜態(tài)測試。靜態(tài)測試能發(fā)現文檔中存在的問(wèn)題(也只能通過(guò)靜態(tài)測試實(shí)現),通過(guò)對文檔存在問(wèn)題的分析或其他軟件評審方法來(lái)發(fā)現需求分析、軟件設計等中的問(wèn)題。它能有效地檢查代碼是否具有可讀性和可維護性,是否遵守編程規范,包括代碼風(fēng)格、變量/對類(lèi)的命名、注釋行等。靜態(tài)測試已被當做一種自動(dòng)化的、主要的代碼校驗方法,它的查錯和分析功能是其他方法所不能替代的。
單元測試、集成測試及系統測試等是通過(guò)運行軟件來(lái)檢驗軟件的動(dòng)態(tài)行為和運行結果正確性的測試方法,它們稱(chēng)之為動(dòng)態(tài)測試。
二、測試活動(dòng)在軟件開(kāi)發(fā)各個(gè)階段的應用與目標
1.需求分析審查
需求分析是對用戶(hù)需求進(jìn)行確認和整理后對用戶(hù)的需求進(jìn)行性能、安全性、可維護性等項的劃分,并將其細化為多個(gè)實(shí)現點(diǎn),將用戶(hù)的需求與軟件的設計目標進(jìn)行關(guān)聯(lián),生成需求規格說(shuō)明書(shū)。它不僅是系統測試和用戶(hù)文檔的基礎,也是所有子系統項目規劃、設計和編碼的基礎。因此,它描述的準確性至關(guān)重要,對其評審即靜態(tài)測試活動(dòng)是不可掉以輕心的。軟件需求規格說(shuō)明書(shū)的評審是由評審專(zhuān)家組在對其仔細研讀的基礎上,站在各自的角度全方位地查找缺陷的過(guò)程。主要看其是否盡可能完整地描述系統預期的外部行為和用戶(hù)的可視化行為;在功能點(diǎn)的描述上是否具有二義性;在實(shí)現上是否具有可行性;通過(guò)會(huì )議方式將缺陷確認、整理、修改到評審專(zhuān)家組認可。
2.設計審查
軟件設計分為概要設計和詳細設計,它依據需求規格說(shuō)明書(shū)對系統的具體實(shí)現進(jìn)行描述。概要設計是站在較高的層面上將整個(gè)系統進(jìn)行模塊劃分,并將各功能項盡可能合理地安排在各個(gè)模塊中來(lái)實(shí)現;根據系統的復雜度,可在每個(gè)模塊中再進(jìn)行下一級子模塊的劃分。詳細設計則深入到每一級子模塊當中,涉及到每個(gè)功能的具體實(shí)現流程、使用的數據結構乃至函數級的具體實(shí)現流程。它不但要考慮是否能更好地完成需求規格中向用戶(hù)承諾的性能,還要兼顧其可靠性等質(zhì)量保障。對軟件設計的審查是通過(guò)評審專(zhuān)家對設計文檔進(jìn)行預審后,在評審會(huì )議上與設計人員將問(wèn)題一一確認來(lái)實(shí)現。
評審專(zhuān)家依據需求規格說(shuō)明書(shū)審查設計是否覆蓋到用戶(hù)提出的每個(gè)功能點(diǎn),對每個(gè)函數流程或偽代碼進(jìn)行邏輯與語(yǔ)句的審查,更重要的、也是最容易忽視的是要求評審專(zhuān)家要以自己的經(jīng)驗,重點(diǎn)對設計中使用的數據結構、函數執行效率、資源訪(fǎng)問(wèn)沖突風(fēng)險等進(jìn)行合理評估,以便盡早地把這些對系統開(kāi)發(fā)有著(zhù)顛覆性影響的問(wèn)題在編碼及單元測試之前排除。
3.代碼審查
代碼審查是通過(guò)代碼走讀的方式來(lái)實(shí)現的。代碼走讀是開(kāi)發(fā)人員在對某個(gè)模塊的代碼(必須編譯通過(guò))依據設計說(shuō)明書(shū)完成編碼后,進(jìn)行的代碼評審活動(dòng)。代碼走讀前要在內部統一標準,明確質(zhì)量目標。評審中,除了看編碼是否緊扣設計外,走讀還應兼顧三個(gè)層面:第一個(gè)層可稱(chēng)之為單元走讀,關(guān)注的是“單元”,一般是一個(gè)方法或一個(gè)類(lèi),需要查找代碼層面的錯誤,比如數據庫網(wǎng)絡(luò )資源的回收、一些異常的捕捉、空指針的檢查及關(guān)鍵字的使用是否正確等;第二個(gè)層面可稱(chēng)之為集成走讀,關(guān)注的是接口和流程,包括傳人的參數檢查、返回值檢查及流程能否順利地進(jìn)行和正確串聯(lián)等;第三個(gè)層面可稱(chēng)之為系統走讀,關(guān)注的是功能層面和業(yè)務(wù)邏輯,這時(shí)發(fā)現更多的應該是邏輯錯誤和功能缺陷。
當然,在走讀過(guò)程中這三個(gè)層面不是截然分開(kāi)的,很多時(shí)候是并行的、互相交織和滲透的。代碼走讀的另一個(gè)重要內容是看代碼是否遵守編程規范引,是否具有可讀性和可維護性,注釋是否充足等。按編程規范編碼對提高代碼的可讀性以及降低編碼的出錯率至關(guān)重要,在大型項目中,具備可讀性、規范性的代碼更是日后進(jìn)行有效維護的保障。因此,代碼走讀不僅可以保證代碼的質(zhì)量,更能有效地促進(jìn)整個(gè)項目的編碼水平。
4.單元測試
單元測試是對軟件中的基本組成單位進(jìn)行測試,檢驗其函數的正確性(包括功能正常,輸出正確)。
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/