軟件測試的基本流程
軟件測試和軟件開發一樣,是一個比較復雜的工作過程,如果無章法可循,隨意進行測試勢必會造成測試工作的混亂。為了使測試工作標准化、規范化,並且快速、高效、高質量的完成測試工作,需要制訂完整且具體的測試流程。
軟件測試的流程
不同類型的軟件產品測試的方式和重點不一樣,測試流程也會不一樣。同樣類型的軟件產品,不同公司所指定的測試流程也會不一樣。雖然不同軟件的詳細測試步驟不同,但它們所遵循的最基本的測試流程是一樣的:分析測試需求-制定測試計划-設計測試用例-執行測試-編寫測試報告。下面對軟件測試基本流程進行簡單介紹。
(1)分析測試需求
測試人員在制訂測試計划之前需要先對軟件需求進行分析,以便對要開發的軟件產品有個清晰的人認識,從而明確測試對象及測試工作的范圍和測試重點。
在分析測試需求時還可以獲取一些測試數據,作為測試計划的基本依據,為后續的測試打好基礎。
測試需求分析其實也就是對軟件需求進行測試,測試人員可以發現軟件需求中不合理的地方,如需求描述是否完整,准確無歧義,需求優先級安排是否合理等。測試人員一般會根據軟件開發需求文檔制作一個軟件需求規格說明書檢查列表,按照各個檢查項對軟件需求進行分析校驗如圖所示
上表列出了需要對軟件需求進行什么樣的檢查,測試人員按照檢查項逐條檢查和判斷,如果滿足要求則選擇【是】,如果不滿足要求則選擇【否】,如果某個檢查項不適用則選擇【NA】。表1-3只是一個通用的軟件需求規格說明檢查列表,在實際測試中,要根據具體的測試項目進行適當的增減或修改。
在分析測試需求時要注意,被確定的測試需求必須是可核實的,測試需求必須有一個可觀察,可評測的結果。無法核實的需求就不是測試需求。測試需求分析還要和客戶進行交流,以澄清某些混淆,確保測試人員與客戶盡早地對項目達成共識。
(2)指定測試計划
測試工作貫穿於整個軟件開發生命周期,是一項龐大而復雜地工作,需要制定一個完整且詳細地測試計划作為指導。測試計划是整個測試工作地導航圖,但它並不是一成不變的,隨着項目推進或需求變更,測試計划也會不斷發生改變,因此測試計划的制定是隨着項目發展不斷調整,逐步完善的過程。
測試計划一般要做好以下工作安排。
①確定測試范圍:明確哪些對象是需要測試的,哪些對象不是需要測試的。
②制定測試策略:測試策略是測試計划中最重要的部分,它將要測試的內容划分出不同的優先級,並確定測試重點。根據測試模塊的特點和測試類型(如功能測試,性能測試)選定測試環境和測試方法(如人工測試、自動化測試)。
③安排測試資源:通過衡量測試難度、時間、工作量等因素對測試資源進行合理安排,包括人員分配、工具配置等。
④安排測試進度:根據軟件開發計划、產品的整體計划來安排測試工作的進度,同時還要考慮各部分工作的變化。在安排工作進度時,最好在各項測試工作之間預留一個緩沖時間以應對計划變更。
⑤預估測試風險:羅列出測試工作過程中可能會出現的不確定因素,並制定應對策略。
(3)設計測試用例
測試用例(Test Case)指的是一套詳細的測試方案,包括測試環境、測試步驟、測試數據和預期結果。不同的公司會有不同的測試用例模板,雖然它們在風格和樣式上有所不同,但本質上是一樣的,都包括了測試用例的基本要素。
測試用例編寫的原則是盡量以最少的測試用例達到最大測試覆蓋率。測試用例常用的設計方法包括等價類划分、邊界值分析法、因果圖與判定表法、正交實驗設計法、邏輯覆蓋法等,這些設計方法在后面的章節中會陸續交接。
(4)執行測試
執行測試就是按照測試用例進行測試的過程,這是測試人員最主要的活動階段。在執行測試時要根據測試用例的優先級進行。測試執行過程看似簡單,只要按照測試用例完成測試工作即可,但實則並不是如此。測試用例的數目非常多,測試人員需要完成所有測試用例的執行,每個測試用例都可能會發現很多缺陷,測試人員要做好測試記錄與跟蹤,衡量缺陷的質量並編寫缺陷報告。
當提交后的缺陷被開發人員修改之后,測試人員需要進行回歸測試。如果系統對測試用例產生了缺陷免疫,測試人員則需要編寫新的測試用例。在單元測試、集成測試、系統測試、驗收測試各個階段都要進行功能測試、性能測試等,這個工作量無疑是巨大的。除此之外,測試人員還需要對文檔資料,如用戶手冊,安裝手冊,使用說明等進行測試。因此不要簡單的認為執行測試就是按部就班地完成任務,可以說這個階段是測試人員最重要地工作階段。
(5)編寫測試報告
測試報告是對一個測試活動地總結,對項目測試過程進行歸納,對測試數據進行統計,對項目地測試質量進行客觀評價。不同公司的測試報告模板雖不相同,但測試報告編寫的要點都是一樣的,一般都是先對軟件進行簡單介紹,然后說明這份報告是對該產品的測試過程進行總結,對測試質量進行評價。
一份完整的測試報告必須包含以下幾個要點。
引言:描述測試報告編寫目的、報告中出現的專業術語解釋及參考資料等。
測試概要:介紹項目背景、測試時間、測試地點及測試人員等信息。
測試內容及執行情況:描述本地測試模塊的版本,測試類型,使用的測試用例設計方法及測試通過覆蓋率,依據測試的通過情況提供對測試執行過程的評估結論,並給出測試執行活動的改進建議,以供后續測試執行活動借鑒參考。
缺陷統計與分析:統計本次測試所發現的缺陷數目、類型等,分析缺陷產生的原因,給出規避措施等建議,同時還要記錄殘留缺陷與為解決問題。
測試結論與建議:從需求符合度、功能正確性、性能指標等多個維度對版本質量進行總體評價,給出具體明確的結論。
測試報告的數據是真實的,每一條結論的得出都要有評價依據,不能是主觀臆斷的。
測試的准入准出
測試的准入住處是指什么情況下可以開始當前版本的測試工作,什么情況下可以結束當前版本的測試工作。不同項目、不同公司的測試准入准出標准都會有所不同。下面介紹一些通用的測試准入准出標准。
測試准入標准如下:
(1)開發編碼結束,開發人員在開發環境中已經進行了單元測試,即開發人員完成自測。
(2)軟件需求上規定的功能都已經實現。如果沒有完全實現,開發人員提供測試范圍。
(3)測試項目通過基本的冒煙測試,界面上的功能均已經實現,符合設計規定的功能。
(4)被測試項目的代碼符合軟件編碼規范並已通過評審。
(5)開發人員提交了測試申請並提供了相應的文檔資料。
測試准出如下:
(1)測試項目滿足客戶需求。
(2)所有測試用例都已經通過評審並成功執行。
(3)測試覆蓋率已經達到要求。
(4)所有發現的缺陷都記錄在缺陷管理系統。
(5)一、二級錯誤修復率達到100%。
(6)三、四級錯誤修復率達到了95%。
(7)所有遺留問題都有解決方案
(8)測試項目的功能、性能、安全性等都滿足要求。
(9)完成系統測試總結報告。
有時,在測試過程中可能會出現一些意外情況導致測試工作暫停,這個暫停並不是上述所說的測試結束,而是非正常的。測試中需要暫停的情況包括以下幾種。
(1)測試人員進行冒煙測試時發現重大缺陷,導致測試無法正常進行,需要暫停並返回開發。
(2)測試人員進行冒煙測試時發現Bug過多,可以申請暫停測試,返回開發。
(3)測試項目需要更新調整而暫停,測試共奏也要相應暫停。
(4)如果測試人員有其它優先級更高的任務,可以申請暫停測試。