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