張曉敏
(福建信息職業(yè)技術學院,福建 福州 350003)
在企業(yè)軟件測試發(fā)展過程中,伴隨著軟件產品種類、功能與版本的增多,手工測試難以滿足測試效率與質量的要求,一方面會提高開發(fā)成本,導致人工費用占比不斷擴大;另一方面無法保證最終的軟件質量,降低測試效率,增加項目風險[1]。在軟件質量與效率的雙重壓力下,自動化測試開始提上日程,其實施過程呈螺旋形上升態(tài)勢,主要包含原型啟動、向上爬升、蓬勃發(fā)展、暫時阻滯與新的上升5個階段。整個自動化測試開展的時間跨度依測試團隊與軟件規(guī)模的不同需要2年到數年不等,本文以作者在一家數據通信產品研發(fā)生產企業(yè)主持承擔的網絡設備嵌入式軟件自動化測試團隊組建、技術開發(fā)及項目實施為主要研究對象,分析過程中遇到的主要問題與解決對策。
啟動階段進行自動化測試框架與設計方法的探索,輸出自動化測試原型,驗證思路的可行性,這個階段歷時近1年。
(1)需求與可行性分析:輸出初步的自動化測試需求,進行可行性分析,依據資源與技術難度判斷短中長期能取得的預期效果。
(2)前期調研與原型開發(fā):選取具有典型意義且實現(xiàn)周期較短的測試用例作為自動化測試開發(fā)對象,選取專用網絡設備測試儀表為自動化測試基礎,輸出總體規(guī)劃與開發(fā)指南第一稿。
(3)自動化測試用例編寫:在原型可行的基礎上,完成部分優(yōu)先級高的測試用例自動化,并輸出第一版自動化測試公共庫,用于支撐后續(xù)開發(fā)。
(4)前期經驗總結:制訂自動化測試軟件開發(fā)流程與規(guī)范,明確手工測試用例自動化轉化要求與做法。
該階段相關測試用例自動化后執(zhí)行時間縮短50%以上,初期自動化測試用例數量還很少,自動化率低于10%。
設定初期的自動化測試目標,并在項目中正式引入自動化測試。
(1)已有測試用例的自動化:提升舊功能的自動化測試率是提升項目回歸測試效率的重點。
(2)項目新增用例的自動化:成為項目提升測試效率的重要組成部分。
(3)自動化測試質量提升:減少由于自動化測試用例導致的測試失敗。本案例自動化測試失敗率從實施前半年的65%降至30%,準確性與易用性有效提高。
(4)自動化測試方法優(yōu)化:前期更多依賴專業(yè)的網絡產品測試設備,該階段開始基于PC 開發(fā)自動化測試。測試條件預判斷、測試日志分析工具等手段的引入,提升了自動化執(zhí)行效率;自動化測試統(tǒng)一管理平臺的預研與設計,完善了自動化測試管理過程。
在本案例中,該階段歷時18 個月左右,自動化率達到40%,可節(jié)約40%左右的手工測試資源。
自動化測試對項目測試效率的提升作用日益明顯,自動化測試的發(fā)展進入蓬勃茁壯期,主要工作如下:
(1)自動化測試用例大幅增加:每周、每月、每年的自動化測試用例產出按目標穩(wěn)步提升,積累到較為可觀的數量。
(2)自動化測試納入軟件開發(fā)流程:自動化測試成為項目的固化環(huán)節(jié),每個項目必須設定自動化測試用例設計、編寫與執(zhí)行的目標。自動化測試在受到流程規(guī)范與項目目標約束的同時,也為項目目標的達成做出更大的貢獻。
(3)自動化測試技術提升:公共庫優(yōu)化、自動化統(tǒng)一管理平臺、應對新產品的自動化測試框架、故障注入工具[2]等一系列技術研發(fā)在這個階段持續(xù)開展。
這是自動化測試發(fā)展的“黃金時代”,大致持續(xù)2年時間,自動化測試用例近1萬個,自動化率達到75%。項目全面使用自動化測試,回歸測試效率大幅提升,自動化測試優(yōu)勢明顯[3],為測試質量與效率提供有力支撐。表1給出前3個階段的自動化測試用例數量、覆蓋率與測試失敗率等數據,可看出數據上升明顯。
表1 前3個階段自動化測試統(tǒng)計數據
自動化測試經歷了4~5年的發(fā)展后,進入了相對停滯的狀態(tài)。主要表現(xiàn)在自動化測試仍在運行,但新增用例少,自動化覆蓋率下降,主要原因有:
(1)自動化測試問題積累而未決。自動化用例執(zhí)行失敗過多、測試環(huán)境不穩(wěn)定、測試結果不準確等問題層出不窮,項目組對自動化測試失去信心。
(2)自動化測試技術未跟上產品發(fā)展的需求。網絡設備中雙(多)機備份、應用層技術等較復雜的功能對自動化測試技術提出了新的要求。
(3)自動化測試資源相對減少。主要是新產品、新功能手工測試占用了更多的測試人力資源,這種情況與自動化測試啟動初期相似。
該階段自動化測試用例的數量少量增加,但自動化率下降,如果要提升自動化率,則相關的自動化測試程序以及設施維護成本也會在很大程度上有所提升[4]。
新產品的不斷出現(xiàn)對自動化測試提出新的要求,自動化測試支持嵌入式、C/S(Client/Server,客戶端/服務器)、B/S(Browser/Server,瀏覽器/服務器)、云端軟件,滿足瀑布或敏捷等多種開發(fā)模式,不同的自動化測試框架齊頭并進。
(1)注重自動化測試技術的積累與投入,包括建立靈活、可擴展的自動化測試框架[5],新產品線與新功能所需測試技術的分析實踐等。
(2)問題解決及時閉環(huán)。每個自動化測試執(zhí)行失敗項都能夠在計劃時間內完成分析、得出結論并解決。
在這個階段,測試團隊不僅關注自動化測試用例數量或比例,而開始通過各條產品線自動化測試的均衡性、測試問題的解決情況、自動化測試技術積累的程度等綜合考量自動化測試的實施水平與效果。
從上文可以看出,自動化測試實施的5個階段均存在著不同類型、不同程度的問題,結合實際實施情況對相應問題進行原因分析,并探索解決方法。
3.1.1 自動化測試目標定位不準確
(1)認為自動化測試是縮短軟件項目周期的“銀彈”:自動化測試對縮短項目周期的幫助與項目的成熟度、類型等密切關聯(lián),對于需求變化大的新功能、新產品類項目,由于需求、設計與代碼都在快速變更,自動化測試投入產出比較低。
(2)要求自動化測試發(fā)現(xiàn)新缺陷:自動化測試一般用于重復執(zhí)行已執(zhí)行過的測試用例,發(fā)現(xiàn)新缺陷的可能性很小,目標重在提升測試效率。當釋放出更多的人力用于改進測試設計質量,或運行更多手工測試用例,從而對發(fā)現(xiàn)缺陷產生間接貢獻。
(3)過于關注舊用例自動化:隨著新增用例的大幅增長,項目自動化率提升較為緩慢。
3.1.2 自動化測試效率低
(1)執(zhí)行與分析時間長:主要原因在于測試環(huán)境不穩(wěn)定導致測試用例無效執(zhí)行,失敗信息匱乏導致結果分析時間耗費大。
(2)自動化測試用例維護更新慢:自動化用例數量增加,修改維護工作量加大。
3.1.3 自動化測試質量不足
(1)測試質量制約自動化質量:在測試方案儲備少,測試覆蓋率低、測試缺陷遺漏多的情況下,自動化測試作用無法充分發(fā)揮。
(2)重“量”輕“質”:前期以提升自動化測試率為主要目標,自動化測試用例數量達到一定水平,質量重視不足。自動化測試的可維護性也是質量的一部分,應充分保證自動化用例的正確性與有效性。
(3)自動化測試技術不適應軟件更新需求:大部分資源投入在自動化測試用例編寫上,自動化測試技術更新相對緩慢,無法適應新版本軟件的測試需求。
針對自動化測試常見的目標、效率與質量方面的問題及原因,在實施過程中從認識、技術、數據分析等多個方面尋找、實踐解決方法,歸納總結如表2所示。
表2 自動化測試問題與解決方法分析表
通過本自動化測試案例的實施,摸索、總結適用于網絡設備相關軟件產品的自動化測試實踐過程,主要包含5大部分工作:
(1)前期準備:進行自動化測試啟動基礎分析及需求調研。
(2)原型開發(fā):自動化測試工具調研,選取少量有代表性的測試用例進行原型開發(fā)、驗證,儲備相應技術、設計與開發(fā)規(guī)范。
(3)納入項目流程:遵循軟件項目開發(fā)流程進行自動化測試設計、開發(fā)與執(zhí)行。
(4)自動化測試技術更新:使用各類新的自動化測試技術、方法與工具,提升自動化測試質量與效率。
(5)新產品自動化測試:適應軟件產品更新需求,自動化測試進入可持續(xù)、良性發(fā)展。
最佳實踐過程如圖1所示。
圖1 軟件自動化測試實踐過程
本文以一個測試團隊組織、開展自動化測試的真實過程為案例,分析自動化測試實施過程中在目標定位、測試效率與測試質量等方面的常見問題,并從項目管理的目標設定、數據分析,自動化測試統(tǒng)一管理平臺、日志分析工具、測試環(huán)境固化等技術,以及人員培訓等方面提出相應的解決方法,可供軟件測試團隊從無到有構建自動化測試時參考。雖然本案例的實施持續(xù)了7、8年,但自動化測試的腳步仍未停歇,我們期望構建適應性更強的自動化測試框架,實現(xiàn)軟件開發(fā)測試全過程的自動化,使得大規(guī)模軟件團隊的協(xié)作和硬件資源的使用效率[5]得到進一步提升。