精準測試與開源工具Jacoco的覆蓋率能力大PK

2021-09-27 05:08:05 字數 2819 閱讀 4312

覆蓋率技術可以說是測試理論中最基本的技術體系,但由於傳統覆蓋率並沒有很好的適應新型軟體開發模型,導致應用場景越來越窄。比如:jacoco等同類工具,仍停留在傳統白盒覆蓋技術的技術演化層面,目前基本僅適用在瀑布模式的開發體系下。最新的測試黑馬技術—「精準測試」覆蓋率功能是企業級、面向敏捷迭代場景、全新的覆蓋率技術。它明確提出了用例層級覆蓋率的概念,並將用例層級覆蓋率技術廣泛應用於智慧型的測試分析演算法。

精準測試的專利技術之一:測試用例與**的雙向追溯,可以簡單理解為:所有分析和計算依賴於測試用例維度的覆蓋資訊。它創新性的將覆蓋率統計維度從全域性維度顯示,降維到了測試用例這一細節,使覆蓋率的放大作用遠超出原有能力。它如同放大鏡一樣,使測試分析、測試演算法以及測試資料真正做到一覽無餘,不錯過任何重要細節。

jacoco是傳統的白盒覆蓋率工具,不具備將覆蓋率與用例關聯的功能,很遺憾的不具備精準測試的所有高階特性。

下面僅就「覆蓋率」這一功能,將精準測試與jacoco為代表的傳統白盒覆蓋工具進行乙個簡單比對:

1 覆蓋率分析能力pk

jacoco:作為傳統白盒功能的代表,它的應用模式是部署在後台,採集所有執行**的覆蓋率,所有使用者請求和功能的覆蓋資料為混合統計,範圍僅圍繞在看覆蓋率上。但這種覆蓋資訊的弊端是:它從全系統維度來統計,導致顆粒度太大,無法詳細定位和深度分析覆蓋率的真正問題。

精準測試:可以像調焦距一樣,在併發訪問的後台服務中,將某個測試用例的執行路徑分離出來,進行各種細緻分析。它用例級的雙向追溯的覆蓋資訊,帶有執行時序,可以很快定位缺陷發生時刻**的執行路徑(類似於重現單步除錯場景),與此同時,還可以對測試人員的用例執**況,進行非常精確的**級跟蹤。

2 對於敏捷測試的響應能力pk

jacoco:不適應於敏捷迭代過程對於覆蓋率的企業級需求。當**發生變更後,jacoco將重新採集覆蓋率,各個發布版本採集的結果孤立存在。現代企業通常每天會發布多個版本,孤島式無對比分析的覆蓋率結果,價值不大。因為每組測試執行通常是在每個版本上跑一部分用例,而不是瀑布模型下在乙個版本上進行所有用例的測試。

精準測試:在覆蓋率計算和應用上有累積覆蓋率、增量覆蓋率、相關覆蓋率、高風險覆蓋分析、可變分母覆蓋等諸多創新辦法,隨時響應敏捷迭代需求。

1)累積覆蓋率:精準測試可以將多個測試覆蓋進行累計和投影,這樣就無所謂中間發布多少個版本、每個版本上跑多少個用例,可以自由選擇看乙個階段的總體覆蓋率。

2)增量覆蓋率:由於企業軟體體量龐大,因此無論如何測試都很難滿足100%覆蓋率的要求。所以通常企業更關注的是增量覆蓋率,即新發布版本相比上乙個測試版本修改後的**覆蓋情況。精準測試由於每個版本發布的時候都有詳細的**靜態分析資料支援,因此它可以智慧型標識版本差異,並將版本差異的**覆蓋進行高亮顯示,幫助企業關注新增/調整**部分的覆蓋率。

3)相關覆蓋率:精準測試創新性提出了相關覆蓋率技術,即把乙個功能模組相關的**作為計算的分母計算覆蓋率。這樣非常有利於在敏捷迭代場景下,只測試部分功能的覆蓋率分析。相關覆蓋率可用於支援功能模組(用例分類)級別的覆蓋率,從業務角度統計某乙個功能模組相關**範圍的覆蓋率,明確指出某乙個功能範圍的測試覆蓋充分度,而不是傳統的全域性**覆蓋率。

4)高風險覆蓋分析:精準測試支援基於靜態資料和動態資料高風險的模組檢出,引導使用者把精力投入到最高風險的模組覆蓋邏輯補充上。

5)可變分母覆蓋:精準測試支援多種系列的企業級覆蓋計算要求,例如通過介面設定,將某些確定不需要或者無法覆蓋的**(例如暫時保留的無效**)從覆蓋率計算結果中排出,整體重新進行覆蓋率的計算。支援某乙個**路徑下(某一程度模組)範圍內的**覆蓋等高階特性。

3 覆蓋率視覺化能力 pk

jacoco:基於位元組碼插裝,沒有全面的程式靜態分析過程,因此無法將覆蓋率通過靜態分析得到的視覺化圖形結合清晰展示覆蓋率資訊。另外,jacoco必須提供原始碼才能看懂覆蓋率。

精準測試:具有多種函式呼叫圖,控制流程圖上展示覆蓋率資訊,可以在沒有原始碼的情況下,基於精準分析結果,結合動態覆蓋率檢視,清晰展示程式的覆蓋和執行路徑資訊。

4 覆蓋率統計能力 pk

jacoco:以行覆蓋和分支覆蓋為主。jacoco是傳統行覆蓋,基本上每行都需要進行插裝。在結合**展示覆蓋的檢視方面,無法取得程式的深入靜態資訊,因此一般只能再**檢視上以顏色表達是否覆蓋。

精準測試:支援覆蓋率計算視覺化、多覆蓋率演算法標準及深度的資料分析。

1)支援覆蓋率計算視覺化,覆蓋率是如何計算的都表達的非常清晰(貢獻覆蓋率的分子分母對應的程式元素、數量),方便使用者去深入理解覆蓋率的含義和資訊。

2)精準測試支援更加深度的條件以及條件組合級別以及航天級mc/dc的覆蓋率標準。精準測試提供的語句覆蓋是基本塊覆蓋,乙個順序的**段因為有靜態分析結果的支撐,只需要乙個插裝點。

3)精準測試對程式的靜態結構有深度的分析資料,因此它的**展示檢視很清晰,程式結構都可以繪製出來,**覆蓋率檢視看起來非常清晰。例如中間沒有跳轉的基本塊會在展示效果上繪製為乙個整體,並有是否覆蓋標識,而不是每行都要進行標識。

5 高度產品化特性 pk

jacoco:屬於開源範疇,採用位元組碼插裝(指令層級),插裝後的**不可見不可維護,出現問題後很難排查原因,很難定位和修復,商用使用風險較高。每次獲取一次覆蓋資料都需要訪問乙個網頁位址顯示的重新生成。

jacoco的應用模式是部署在後台採集,無前端顯示。出現異常時,測試人員無法知曉自己執行的測試用例是否有效。

精準測試:由星雲測試(www.teststars.cc) 主導研發,自主可控。在產品化特性有不可比擬的優越性:

1)基於原始碼插裝,插裝**可見且開放,非常利於企業應用排查問題和進行流程整合等。萬一出現特殊語法問題引起插裝問題,使用者可以隨時檢視並自行處理,不會因為極個別情況影響產品應用。

2)覆蓋率資訊是實時彙總的,通過客戶端可以由多個有檢視許可權的使用者(包括開發、測試以及管理人員)實時查閱。

3)軟體示波器可實時傳輸測試過程中的資料,對於傳輸過程中測試執行覆蓋率採集是否有效,可進行視覺化的故障排查。

安卓 Jacoco 精準測試應用

jacoco 精準測試 不依賴原始碼執行 介面測試也能直 出覆蓋度 知道什麼樣的用例保證哪塊的 更好的精準度測試 1.實現jacoco instrumentation操作 後面通過命令直接啟動該instrument,最下面有 注意最後啟動了 instrumentedactivity public c...

開源的測試工具

文章 七劍下天山,獨領自動化測試技術 介紹了一些開源測試工具,非常有用,所以把它列出來 1 莫問劍 selenium 的 web功能測試,變化無窮 氣勢磅礴。第 3章介紹了 selenium 旗下的四大金剛 selenium ide core remore control 和grid 及其應用,從而...

開源軟體測試工具 開源軟體更新工具

開源軟體測試工具 將軟體安裝在使用者系統上後,如何保持更新?雖然linux使用者通常具有乙個程式包管理系統來從他們選擇的儲存庫中提取最新版本,但其他系統的使用者卻不太幸運。我們已基於google的稱為omaha的開源協議,開發了一種開源工具來協助此過程。幾年前,作為chromium專案的一部分,go...