劉雪霞



摘要:軟件測試是軟件開發生命周期中最重要的組成部分,在軟件開發的整個生命周期中舉足輕重。敏捷測試是針對敏捷開發的一種測試方式,注重團隊的持續反饋和質量保證,促進傳統的軟件測試流程的改進。針對目前主流的測試流程中存在的難點,文章從測試設計、測試執行、質量評估、自動化防護網等幾個方面提出改進意見,可有效解決當前軟件測試流程中存在的一些問題,為一線的軟件測試人員和軟件測試的項目管理人員提供思路和方法。
關鍵詞:軟件測試流程;測試設計;測試執行;自動化防護
中圖分類號:TP3 文獻標識碼:A
文章編號:1009-3044(2024)11-0042-03
0 引言
軟件測試通常消耗40%~50%的軟件開發時間,對于可靠性要求更高的系統,它消耗更多的精力[1]。軟件測試流程在有限的時間、成本和人力資源的條件下,如果測試流程設置正確,分配總資源的15%就可以實現適當的測試[2]。軟件測試并非在軟件產品的代碼編寫完成之后開始,而是在整個軟件產品的研發過程中一直存在。軟件測試對軟件產品系統地、全面地進行檢驗,以確保軟件產品滿足功能和性能的要求。測試流程主要包括五個環節,分別是測試需求分析、測試計劃制定、測試用例設計、執行測試用例,編寫測試報告。隨著敏捷開發的流行,敏捷軟件測試越來越受到青睞,敏捷測試常采用迭代和增量的方式進行測試。隨著敏捷開發節奏的加快,敏捷測試對整個測試流程和測試人員提出了更高的要求,從而暴露了測試流程中的一些問題,本文著重針對敏捷測試流程在實際的生產中存在的問題提出改進的方案和方法。
1 軟件測試
1.1 軟件測試定義
軟件測試是對軟件需求分析、設計規格說明和編碼的最終檢查,是保證軟件質量的關鍵步驟[3]。軟件測試是一種用來判定軟件的完整性、正確性、安全性和質量的過程。1983年,IEEE定義的軟件測試是使用人工或自動化的手段來運行或測定某個軟件系統的過程[5]。其目的在于檢驗它是否滿足規定的需求或弄清預期結果與實際結果之間的差別。
1.2 軟件測試流程
軟件測試的流程管理非常重要,它關系到軟件質量是否達標。軟件測試的生命周期覆蓋整個軟件開發階段,且有一套完整嚴格的流程來保證項目產品的正確準時交付,軟件測試介入得越早,越能節約整個開發的成本。測試流程主要包含:需求分析評審、測試計劃制定、測試設計、測試用例評審、測試用例執行、測試報告編寫,每一個環節都至關重要。
2 當前軟件測試流程深度剖析與改進
2.1 測試設計場景不全
測試設計活動一般分為針對產品新需求的測試設計和產品繼承功能的測試設計。測試設計與功能需求的關系如圖1所示。測試策略包含測試設計策略和測試執行策略,根據新需求、繼承功能特性及場景測試來設計測試用例庫,從新需求和繼承特性測試設計測試用例的基線庫,同時考慮測試因子和可靠性測試,提高測試用例的復用性。
針對測試設計場景不全問題,可以從以下幾個方面著手改進。
2.1.1 梳理測試特性樹
需求是客戶提出的問題,包括需求背景、應用場景等;特性是客戶需求的系統實現,通過開發活動把客戶問題轉變為系統功能。梳理特性樹可以幫助準確把握客戶需求。測試特性樹與軟件開發的功能樹同源,如圖2所示,測試特性樹中的一級、二級、三級特性分別對應全量功能樹中的一級、二級、三級特性,針對三級特性詳細設計測試用例,盡量避免測試場景遺漏問題。
2.1.2 梳理測試因子庫
測試因子是指測試設計中需要考量的影響因素,如環境與測試難易程度等。正確地梳理測試因子有助于避免測試遺漏。測試設計本身是一個先發散后綜合的過程,在發散階段,盡可能地考慮所有可能會對測試產生影響的因素,提取測試影響因子;綜合階段通過合適的覆蓋方法,把前者整合成測試用例。從幾個方面提取測試因子庫:分析待測試的新特性,分析繼承特性、以往積累的經驗,分析測試遺漏等,然后基于測試因子庫去做測試設計和測試用例的輸出,同時在測試設計過程中提取測試因子,通過對提取的測試因子評審取舍,填充豐富當前的測試因子庫。測試因子庫需要不斷的維護和豐富,便于后續測試設計的可持續使用。
2.1.3 梳理故障模式庫
可靠性測試的主要目的是評估產品或系統在特定條件下的可靠性和穩定性。測試軟件功能的異常情況,可以幫助確定產品或系統在正常使用期間的故障率,并確定是否需要進行改進以提高可靠性和穩定性。針對可靠性測試梳理故障模式庫,在后續版本中復用,提高測試效率和軟件版本質量。
2.1.4 現網問題回溯改進
針對現網問題及時復盤,進行測試的回溯和改進,完成測試遺漏,考慮是否加入因子庫,防止后續出現類似現網問題,確保不斷提升軟件產品質量。
2.1.5 知識技能地圖
軟件測試是一個知識密集型的過程,因而可使用對知識管理的原則和技術來管理軟件測試知識[5]。針對團隊業務,梳理測試人員需要掌握的技能和知識,以此構建測試知識地圖,便于團隊成員業務能力的提升,提高測試效率,同時需要定期維護和更新知識技能地圖。
2.2 測試執行進展跟蹤煩瑣
測試執行是軟件測試過程中的重要環節,很多原因會導致測試執行進展跟蹤煩瑣,比如測試過程中,測試人員需要對不同平臺和不同版本的功能模塊進行測試;測試工具的不完善,已有的測試工具不足以覆蓋當前的測試內容,需要手工測試,并詳細記錄測試過程和結果,無疑增加了測試的難度;多個開發迭代,測試用例多及用例可自動化率低等。可以從以下幾個方面改善測試執行進展跟蹤煩瑣。
1) 提前準備測試環境。提前準備測試環境,可提高測試人員的執行效率,縮短測試執行時間,從而有效提高產品質量。
2) 跟蹤開發人員轉測,提前反饋風險。有效的溝通和協作是確保軟件質量的關鍵之一。及時準確地跟蹤開發的需求轉測具體時間,有助于軟件質量的保證,若有風險,提前反饋,避免時間和人力成本的過度投入,節約成本。
3) 重視測試進展同步,嚴把回歸測試。迭代開發周期短,任務緊,確保每個版本所有需求,例行同步測試的進展,識別阻塞問題,并及時組織開發人員合入解決,嚴把回歸測試。
2.3 自動化防護網
自動化防護網能有效解決修改引入問題,軟件開發的過程中,經常會出現開發版本修改某些bug之后,需要測試人員再次測試版本的情況。這個過程引入的一些修改,有可能導致一些潛在的問題或錯誤,甚至影響修改前軟件的正常運行。解決此問題,重點關注建立健全自動化防護網,確保全量用例自動化每版本例行運行,實時發現修改引入問題,這將極大地提高軟件質量和交付效率。
2.4 用例自動化完成緩慢
軟件自動化測試是目前軟件開發生命周期中應用最廣泛的方法,這是確保軟件質量的主要手段。軟件測試用例自動化完成緩慢的原因可能有多種:測試用例復雜度高、缺乏統一的測試框架和測試規范、自動化依賴配置和測試環境問題??梢詮囊韵聨讉€方面著手加速測試用例的自動化完成:1) 測試團隊成員賦能,納入測試人員必備能力,測試執行完成的同時要求自動化寫作完成。2) 制定明確可行的測試計劃和測試預期目標。3) 采用合適的自動化框架,提升代碼復用率。4) 測試用例優先級排序,將優先級高的用例先完成自動化,有助于更早地發現問題。
2.5 測試質量評估
軟件測試過程中的關鍵任務之一是測試質量評估,測試質量評估是為了說明某個階段的測試開展的充分性和質量目標是否達標,并且給出質量總結結論輸出,幫助測試團隊改進測試策略和流程,為軟件質量提供有力的支撐和保證。測試質量評估除了常規的測試用例設計和覆蓋、測試執行的有效性、缺陷的管理、測試結果的分析報告等,還可以通過側重以下質量度量指標,提升測試質量評估的有效性。
2.5.1 代碼覆蓋率
基于代碼覆蓋率提升產品測試質量和測試工程能力。代碼覆蓋率著重顯示未覆蓋的代碼有多少。開發人員借助代碼覆蓋率分析未覆蓋的代碼,以此幫助測試人員完善和補充測試用例和場景,通過代碼覆蓋率,測試人員和開發人員建立協同和紐帶。
2.5.2 代碼缺陷密度
軟件代碼缺陷密度用來評估軟件代碼中缺陷的數量,它統計在特定代碼范圍內,缺陷數量與代碼行數或者函數數量的比率。缺陷密度值越大,代碼范圍內存在的缺陷數量越多,代碼質量越低,反之,缺陷密度值越小,代碼質量越高,對項目進展影響相對較小。
2.5.3 缺陷分析
缺陷數據是最有效的質量分析手段之一,反映被測對象的質量信息。缺陷分析是對軟件產品質量進行定量表示和定性分析,缺陷分析可以更準確地把控產品的開發成本、進度和質量。缺陷分析的作用和目的是:理解、評估、預測、改進。通過對缺陷數據的定量和定性分析,獲得對軟件產品的內在規律的認識,便于預測后續的基線。對比實際缺陷與質量目標的偏差,評估產品質量。建立缺陷模型,為后續制定測試計劃和調整測試策略提供依據。基于缺陷分析結果提煉改進點,對問題進行溯源,并制定改進措施。缺陷分析的方法可分為以下維度:根因分析、過程改進、分類分析、質量評估。
2.6 云測試報告
軟件測試的主要工作除了測試計劃制定、測試方案和用例設計、測試執行、回歸測試等,測試報告輸出也是關鍵性的工作之一,且必不可少。測試報告要詳細記錄測試過程和結果,包括測試用例的執行情況、缺陷的發現和修復情況等。為了確保報告的準確性和完整性,測試團隊需要投入大量的時間和精力,對測試數據進行收集、分析和整理。由于軟件版本迭代快和測試場景的復雜性等,測試報告單純由人工輸出,勢必占用太多時間,需要采取有效的方法應對。
采用自動化云平臺或者工具,自動統計需求編號,管理用例執行情況,需求發現的問題及閉環情況,做到一鍵式生成測試報告,從而減輕測試工作人員的負擔。云測試報告平臺,如圖3所示,由三個模塊組成:云測試報告模塊、云文檔管理模塊、云測試數據源管理模塊。其中,云測試報告模塊是核心模塊。云文檔管理模塊負責管理上傳的測試報告模板,云測試數據源管理模塊負責管理測試數據,如測試用例、缺陷匯總、缺陷分析等,云測試報告模塊通過模板新建云測試報告,使用云測試數據源導入相關測試數據,并進行云測試報告的在線編輯,最終生成測試報告。
3 結束語
本文針對軟件測試的部分流程進行了深刻的分析,并對測試流程中的痛點提出了改進的措施和方法,對測試場景設計不全,測試執行進展的跟蹤、自動化防護網建立與維護、用例自動化完成緩慢、測試質量評估、云測試報告等分別進行分析,提出改進措施,為一線的軟件測試人員和軟件測試的項目管理人員提供思路和方法。
參考文獻:
[1] BHADAURIA S S,KOTHARI A,PRASAD L. Design architecture class diagram for a comprehensive testing tool[J]. Oriental Journal of Computer Science and Technology,2011,4(2):281-292.
[2] VUKOVIC V,DJURKOVIC J,TRNINIC J. A business software testing process-based model design[J]. International Journal of Software Engineering and Knowledge Engineering,2018,28(5):701-749.
[3] 宮云戰. 軟件測試教程[M]. 3版. 北京:機械工業出版社,2022.
[4] 王娜,萬嵩,胡君. 軟件測試:雙色版[M]. 哈爾濱:東北林業大學出版社,2020.
[5] DE SOUZA ? F,DE ALMEIDA FALBO R,VIJAYKUMAR N L. Knowledge management initiatives in software testing:a mapping study[J]. Information and Software Technology,2015,57:378-391.
【通聯編輯:朱寶貴】