陳佳麗
摘要:軟件測試是軟件開發過程中不可缺少的一部分,是保證軟件質量的關鍵。文中從需求不明確、提測質量差、部署環境等幾個阻礙測試進度的因素開始著手分析,不僅僅是闡述目前存在的問題與不足,也根據目前的項目實踐提出優化方法來提高軟件測試效率,同時介紹通過合理的測試工具,規范的測試行為等來實現高效能的軟件測試。
關鍵詞:軟件測試;效率;提升方法;測試環節
隨著軟件行業的高速發展、軟件復雜度的增加和規模的日益擴大,軟件的功能也從開始階段的單一化和簡單化發展為越來越復雜,軟件規模和復雜度的增加導致了軟件質量的下降,軟件質量的下降導致了軟件危機。軟件測試是提高軟件質量的有效途徑,很多企業在軟件測試工作中投入的人力、物力、財力逐漸加大,國外有些軟件公司的測試人員和開發人員的比例甚至達到1:1或2:1的程度,因此必要分析研究如何提高軟件測試效率。結合實際的項目工程開發我們大致從以下幾個方面來分析研究提高軟件測試效率的方法。
首先需求不明確在測試過程中阻礙測試進度所占據的比例是最大的。軟件需求的不確定性是客觀存在且不可避免的,對于一個開發軟件來說,軟件規模越大,研制周期越長,需求的不確定性就越大。原因主要在于:用戶的需求隨著開發進程的推進,用戶對原來模糊的或非明示的需求有了新的認識,隨時會提出需求的變更;用戶需求的獲取過程與描述形式往往采用不專業的自然語言,再加上開發人員的領域知識的局限性,往往會引發對需求的誤解。如果在測試過程中忽視驗證用戶實際需求的正確性,不考慮需求分析的結果是否合理,一味追求與需求規格說明書的一致性, 這可能導致本來可以提前發現而避免的錯誤,在后續過程中要花費大量的資源與時間來改正,甚至出現因需求分析錯誤導致的項目返工現象。很多的軟件測試工作開始于軟件工程的最后階段, 一般都在編碼之后,這樣會導致排錯的難度大大增加,測試人員應該在軟件開發的需求分析階段就參與驗證用戶需求來盡早地發現和需求相關的缺陷,避免在項目結束階段修復問題所浪費大量的資源與時間,從而提高軟件測試效率。
其次是提測質量差。在軟件測試過程中開發提測速度很快,導致項目排隊,結果介入測試時,第一條用例都跑不通;開發提測后反復修改,反復提測,反復重復驗證,項目后期通過壓縮測試時間來保證項目進度;開發時自測通過承諾這次肯定沒問題,結果測試數據稍一變通就跑不通過的情況比比皆是。這時候,冒煙測試的工作就顯得尤為重要。從開始到交付,軟件測試的過程,主要包括單元測試、集成測試、功能測試、系統測試、驗收測試。冒煙測試可能是被很多軟件測試忽略的一個過程,簡單講,冒煙測試是指在對一個新版進行系統大規模的測試之前,先驗證一下軟件的基本功能是否實現,是否具備可測試性。開展冒煙測試工作有助于盡早發現軟件代碼存在的問題,提高軟件代碼的質量和開發效率。在一些自動化落實程度比較高的項目中,如果已經有主要用例完成了自動化用例覆蓋,完全可以把自動化執行接入到提測流程中,提測前必須過自動化用例檢查,一方面可以節省開發準備環境的時間,另一方面開發對用例的關注程度也可以減弱,所有的結果和問題都可以在自動化用例實現上進行完善。
然后部署環境在阻礙測試進度中也占了一定的比例。一般來說從開發者使用腳手架創建初始項目,在本地搭建開發服務器進行項目開發,編碼完成后,經過構建生成目標環境可用的代碼,到此階段的所有工作都屬于開發環節。而部署就是在開發結束后,使得軟件在某一環境中運行起來,這個過程中會將源代碼生成可運行的軟件包,然后將軟件包放到要部署的環境中,通過一些配置使得這個軟件包在目標環境上也能夠正常工作。對于傳統的手動部署,項目新增加一個功能,就需要把本地更新-構建-發布這一套流程走一遍,看似簡單,但是一旦項目多,部署頻繁,傳統手動部署的效率就會十分低下,同時還會存在人為的誤操作性,而且這個過程既不可重復也不可靠,需要很多的時間進行調試和排錯(需要額外的時間),無法保證流程的每一個環節都被嚴格執行了,相較之下自動化部署錯誤概率很低 (會出錯),能更好配合項目進行平臺版本迭代和更新,使軟件能夠持續集成,提高運維部署效率。自動應用部署也改進了軟件的總體質量。在整個生命周期(包括部署在內)都使用好的工具,能夠把人的干預最小化;能夠節省必須等待某人做某事的時間。一旦把人的干預去掉,質量就更加可預測,會變得更好。
結合目前的軟件測試項目實踐我們可以發現通過手動測試和自動化測試的結合可以很好的提高測試的效率。目前,隨著自動化的發展,軟件測試的速度和效率大大提高,但它不能涵蓋設計、用戶體驗和可用性等各個方面。在軟件開發過程中,自動測試和手動測試的之間平衡是QA測試的未來。QA團隊檢測錯誤的速度越快,糾錯所需的時間就越少,因此,在測試資源上花錢比在發布后在錯誤上花錢更有價值。且在整個測試過程中,每一種技術、分支、情況、路線和選擇都經過了良好的測試,以便在初始就能發現故障。如果在一開始就發現了漏洞,那么就能讓修復它的費用最小化。自動化測試具有一致性和快速的優點;然而,它并未站在用戶立場上。而這就是手動測試的優勢所在,自動化測試只能依照為其編寫的腳本工作,而手工測試只能做到像QA工程師的完成度。結合這兩種測試可以在可用性、功能、速度、漏洞最小化和整體最優的用戶體驗之間取得和諧的平衡。
最后在整個測試過程中應該規范軟件配置管理,通過管理及技術手段,對軟件和文檔版本進行控制,保障軟件測試的有效性,重視并規范技術文檔的編寫,技術文檔不僅是開發人員進行信息交流的手段,也是測試人員進行測試的依據。所以軟件相關文檔應描述明確詳細,組織合理,并根據需求和設計的變更及時更新。同時為了給獨立測試人員提供更多的信息,在技術文檔中可增加各軟件模塊的重要程度、重用性及測試歷史等信息,使得獨立測試人員可以合理分配精力,對重要軟件進行重點測試,減少不必要的重復勞動,提高測試效率。