測試用例作為軟件測試過程中最重要的資產之一,對于保證軟件質量起到了至關重要的作用。隨著自動化測試技術的不斷發展,測試用例的數量也日益增多,并廣泛應用于項目測試中。實際的測試工作中,執行失敗用例的人工分析往往耗時耗力。目前,業界主流日志分析工具主要用于系統性能分析,缺少錯誤信息的分析及總結。然而當前普遍存在的問題是,隨著執行測試用例數量的增長,對報錯測試用例的分析成本變得更高,導致缺陷修復效率低。
本文提出了一種自動化日志分析模式,通過配置日志存放的服務器路徑,獲取日志文件,自動化檢測日志文件中的錯誤關鍵字,對執行失敗的案例進行分類并進行分析,幫助測試人員快速定位錯誤根源,提高缺陷修復效率。
自動化日志分析機制
“自動化日志分析”快速定位模式由日志文件獲取模塊、日志文本解析模塊及關鍵詞抓取模塊、報錯信息分類模塊、日志報錯信息特征庫組成。自動化日志分析模型如圖1所示。

圖1 自動化日志分析模型
1.日志文件獲取模塊。一個項目的程序及批量腳本執行日志通常具有存放路徑集中、日志名稱格式統一等特點,通過配置測試環境服務器的地址和執行日志存放路徑,當程序或腳本執行之后,在指定服務器的指定路徑下獲取日志文件,取至本地,傳入工具中。


圖2 日志文件上傳與文件路徑圖
2.日志文本解析及關鍵詞抓取模塊。執行結果日志通常大且復雜,必須通過解析才能獲取有用信息。該模塊根據日志文本的編碼格式,提取出文本內容,將文本中的信息抽取成一條一條的日志報錯信息串,然后根據設定的特征值標簽,抓取文本關鍵詞作為特征詞條,并按照組成特征向量各個維度,將每一條信息串表示成向量形式。
3.報錯信息分類模塊。對待分類的報錯信息特征向量進行計算和分析,將其與日志報錯信息特征庫中已明確分類的錯誤信息特征向量的相似度一一計算出來,根據計算結果將特征向量分到相應類別中。根據各維度特征值,輸出分析結果文檔:報錯位置、錯誤類別、錯誤詳情等信息。

圖3 日志輸出結果展示
4.日志報錯信息特征庫。日志報錯信息特征庫存放已明確分類,具有代表性的錯誤信息特征向量,作為樣本提供比較和分類的依據。日志報錯信息主要包括數據庫報錯、程序異常、通訊問題、環境問題等,將各類報錯樣本的共同特征:函數名、錯誤碼、錯誤信息、堆棧跟蹤信息等提煉出來,作為組成特征向量的各維度分量,將各條樣本表示成特征向量的形式,存放在日志報錯信息特征庫中。
自動化日志分析應用
在開展自動化測試時,測試用例數量龐大,即使失敗率很低,失敗用例的絕對數量也經常達到幾十或幾百個;批量交易測試時,一個項目的批量腳本量通常為幾十到幾百個,并且執行結果依賴開發人員判斷及分析,測試人員難以主動把握測試結果。如果用傳統的人工分析手段,就需要研發工程師投入大量時間和精力,效率低。本文提出的自動化日志分析機制可有效解決以上問題,且可廣泛應用于以下三種情況。
1.回歸測試。每一個系統的日志文件錯誤類型有其特點,特征信息庫相對變化較少,當適應其他功能改造,本身產品功能沒有改動時,執行大量的自動化案例進行回歸測試,借助自動化日志分析工具,可清晰抓取出錯誤信息,提升回歸測試效率。
2.批量交易測試。一個大型項目中,批量腳本通常達到幾十到幾百,一個作業鏈中可能有多個節點,調用多個程序或腳本。執行結果失敗經常無法確定錯誤發生在哪個環節,借助自動化日志分析,減少開發和測試的溝通成本,加速問題定位。
3.對比測試。當架構調整、系統遷移、基礎軟硬件升級時,需要遷移前后的交易對比測試,遷移項目通常涉及開發人員多、交易繁雜,新舊系統基礎語言及數據庫差異大,引入自動化日志分析,可減少測試工作量,節約時間,保障大型遷移項目的順利推進。
總結與展望
日志文件作為排查和定位程序及腳本問題的主要工具,涵蓋了大量的有用信息。直接對日志進行分析存在缺陷無法直觀分類展示,缺陷定位和追蹤難度大等問題。相比于傳統的人工分析模式,在自動化日志分析框架下,通過采用內部算法,根據設定的特征值,檢測該路徑下相關日志文件中的錯誤關鍵字,對失敗的案例進行分類,可以輸出分析結果文檔,進而降低開發和測試的溝通成本,提升缺陷修復效率、彰顯測試價值。
上官雨寶
Anna艷娜
Anna艷娜
Andrew
X0_0X
尚思卓越
威脅棱鏡
看雪學苑
HACK學習呀
信息安全與通信保密雜志社