自動化測試的每次執行,都會產生大量的日志信息。特別是當執行發生錯誤,比如數據庫異常、通訊異常等情況的時候,大量執行的自動化測試用例會報錯。
實際上,很多錯誤的類型是比較類似的,但由于測試用例的數量很大,比如一次執行20,000個測試用例,可能會產生500個錯誤。逐個分析500個錯誤日志,是一件非常消耗時間的工作。
因此,TestOne提供了自動分類算法,幫助我們首先把錯誤的日志分成不同的類型,這樣我們就可以批量處理相同類型的日志,從而大大節省了處理時間。
TestOne是澤眾軟件自主研發的一體化測試系統,基于B/S 體系結構,集自動化項目管理、測試需求管理、測試用例管理、缺陷問題管理、自動化測試執行管理、遠程真機調試、移動腳本設計等功能于一體,覆蓋了GUI界面功能自動化測試、接口自動化測試、移動自動化測試、移動APP性能測試等測試類型,完整覆蓋自動化測試項目的全過程,可快速將自動化測試管理體系建立,提高測試效率與質量。
下面,我們就來介紹一下TestOne的日志處理。
日志存放
當我們執行海量的自動化測試用例,就會生成海量的錯誤日志,比如日志文件、錯誤截圖、錯誤的視頻等等。
海量日志數據帶來的問題是:導致整個系統的效率變得低下,系統卡頓。會嚴重影響測試用例設計者的工作效率。
因此,TestOne采用了“外掛式”的日志模式,即:錯誤日志存放在獨立E/S系統內,不影響用戶的檢索效率,也不影響日常系統的使用。
E/S日志系統,還帶來了額外的兩個特性:日志分布式存儲和智能化檢索。
分布式日志系統,能夠把海量的日志信息存放在分布式系統下的不同節點之下,防止頻繁和大量的訪問帶來的性能瓶頸。此外,對于日志清理工作,也可以獨立執行,不影響主系統的功能操作。
智能化檢索,就是E/S系統自帶的一個功能,通過定義日志中出現的特征字符串,來自動化的檢索日志,查找自己需要的信息,而不需要用戶逐個查看。
錯誤自定義
對于經常發生的錯誤,或者發現了某個錯誤,用戶就可以定義一個“特征字符串”,來“掃描”整個日志,并且根據掃描結果來自動匹配。
錯誤自定義,就是指用戶可以通過定義一個“特征字符串”,來智能掃描和分析日志。
錯誤歸類
在用戶定義了“特征字符串”集合,系統就可以根據掃描結果,對錯誤進行歸類。
對于用戶而言,就可以看到不同錯誤的集合,每個集合匹配了一類的錯誤。
從自動化測試的實踐而言,一類的錯誤,往往都出自于一個原因,比如:網絡異常斷開、數據庫突然無法訪問、文件系統異常、被測試系統(AUT)出錯等,處理的方式都是一樣的。這樣,我們就從逐個查看和處理錯誤的過程,變成了只需要處理一類的錯誤,就可以完成所有的、海量的錯誤處理,從而把工作效率提升了幾十倍。
什么Elasticsearch? (來自百度百科)
Elasticsearch 是一個分布式、高擴展、高實時的搜索與數據分析引擎。它能很方便的使大量數據具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸縮性,能使數據在生產環境變得更有價值。Elasticsearch 的實現原理主要分為以下幾個步驟,首先用戶將數據提交到Elasticsearch 數據庫中,再通過分詞控制器去將對應的語句分詞,將其權重和分詞結果一并存入數據,當用戶搜索數據時候,再根據權重將結果排名,打分,再將返回結果呈現給用戶。
Elasticsearch是與名為Logstash的數據收集和日志解析引擎以及名為Kibana的分析和可視化平臺一起開發的。這三個產品被設計成一個集成解決方案,稱為“Elastic Stack”(以前稱為“ELK stack”)。
Elasticsearch可以用于搜索各種文檔。它提供可擴展的搜索,具有接近實時的搜索,并支持多租戶。Elasticsearch是分布式的,這意味著索引可以被分成分片,每個分片可以有0個或多個副本。每個節點托管一個或多個分片,并充當協調器將操作委托給正確的分片。再平衡和路由是自動完成的。相關數據通常存儲在同一個索引中,該索引由一個或多個主分片和零個或多個復制分片組成。一旦創建了索引,就不能更改主分片的數量。
Elasticsearch使用Lucene,并試圖通過JSON和Java API提供其所有特性。它支持facetting和percolating,如果新文檔與注冊查詢匹配,這對于通知非常有用。另一個特性稱為“網關”,處理索引的長期持久性;例如,在服務器崩潰的情況下,可以從網關恢復索引。Elasticsearch支持實時GET請求,適合作為NoSQL數據存儲,但缺少分布式事務。