精準測試的動因、概念、特性與價值

精準測試的動因、概念、特性與價值


前言:

在測試領域,精準測試已經成了測試數字化的代名詞,漸漸得到測試開發人員的關注,也是測試行業一個具有挑戰性的議題,本文試圖回答以下幾個問題:

  • 有必要做精準測試嗎?
  • 什麼是精準測試?
  • 精準測試適合的項目類型與關鍵特性是什麼?
  • 設計和實現一個精準測試方案,要點與價值有哪些?

目錄:

一、非精準測試的五宗罪

二、精準測試:一種可追溯的軟件測試技術

三、精準測試的核心:數據與追溯

四、精準測試的關鍵特性

五、精準測試體系方案的價值和實現

六、不同類型對精準測試的需求程度

七、總結

一、非精準測試的五宗罪

精準測試這一理念之所以產生,主要是基於如下的6個方面的考慮:

  • 測試過程和規範無法滿足要求
  • 項目驗收缺少具備公信力的手段
  • 傳統的手工測試效率較低
  • 測試與開發的斷層
  • 新技術架構的挑戰

雖然測試流程很規範,但是軟件質量還是不如意

精準測試的動因、概念、特性與價值

隨著測試行業的發展,軟件測試做得越來越規範,但大部分的測試還是基於對業務的理解,與真實業務數據還有差距,準確性難以保證,測試結果無法精確的對軟件質量進行定義和判斷,系統上線後,問題開始暴露出來,使用體驗差,更有甚者造成巨大的經濟損失。歸根結底,就是因為測試不充分,沒有引入精準的測試分析,僅依靠測試經驗是根本無法判斷的。

軟件項目驗收缺少好的運行檢測手段,檢測結果缺少技術公信力

精準測試的動因、概念、特性與價值

軟件是拿來使用的。雖然軟件項目驗收過程中驗收的內容比較多,包括合同約定內容、技術協議、開發文檔、產品文檔、用戶文檔、程序代碼等,但客戶最關心的是他們的業務能否真的在系統中落地運行,並且運行良好,單憑投入少量人力進行業務功能的驗證,抽樣的檢測結果不代表軟件全部,可信性不具備技術公信力。

傳統的手工測試,測試執行無法精準量化控制,測試效率比較低

精準測試的動因、概念、特性與價值

使用傳統的手工測試,採用的是基於人工評定的黑盒測試方法,打造高可靠性的軟件產品需要投入大量人工成本。由於測試執行無法精準量化控制,憑主觀定性評價結果為主,對人力經驗依賴大,人員變動情況大,質量抖動厲害,看不到明確測試差距和量化目標。雖然在不斷的執行測試,但缺陷發現率並不高,無效的測試消耗了大量的測試成本。

測試人員不能精準把握缺陷現場,與開發人員協同工作困難

精準測試的動因、概念、特性與價值

缺陷處理的一般流程是:測試人員執行用例,發現缺陷就提交缺陷系統,開發人員看到缺陷,進行重現或遠程調試。如果測試給開發提供的測試結果都是比較模糊的功能邏輯描述,重現缺陷需要花費大量的時間。如果測試人員採用了精準測試技術,通過執行的用例就可以找到對應執行的程序代碼塊,這樣解決問題就會快很多,開發人員和測試人員之間的協同工作就會輕鬆好多。

分佈式、微服務架構,軟件越來越複雜,測試挑戰性越來越大

精準測試的動因、概念、特性與價值

採用分佈式/微服務架構,使軟件系統越來越複雜,測試的挑戰性越來越大,採用傳統的測試方法執行測試,系統質量也難以保證。

在移動互聯網大力發展時代,軟件開發對質量要求越來越高,而迭代開發要求項目週期越來越短,快速的版本驗證面臨挑戰。

二、精準測試:一種可追溯的軟件測試技術

從字面理解,精準就是非常準確。非常準確需要用數字說話。

在測試領域,精準測試是一套計算機測試輔助分析系統,對測試過程的活動進行監控,將採集到的監控數據進行分析,得到精準的量化數據,使用這些量化數據進行質量評價,利用這些分析數據可以促進測試過程的不斷完善,形成度量及分析閉環。精準測試是一種可追溯的軟件測試技術。

精準測試的動因、概念、特性與價值

三、精準測試的核心:數據與追溯

精準測試的動因、概念、特性與價值

精準測試的核心思想就是使用非常精確和智能的軟件來解決軟件測試的問題,從根本上引領從經驗型方法向技術型方法的轉型。質量的評估不再靠經驗,而是通過精準的數據來判定。

精準測試沒有改變傳統的軟件測試方法,區別只在於,由軟件去採集測試過程執行的代碼邏輯及測試數據的過程,自動建立測試用例與程序代碼之間的邏輯關係。在測試過程加入軟件的採集過程,可以形成正向和逆向的追溯。

通過正向追溯,開發人員可以看到測試人員執行用例的代碼細節,以方便進行缺陷的修復,測試數據可以直接為開發調試提供依據,快速定位並修復缺陷。

通過逆向追溯,測試人員通過修改的源代碼快速確定測試用例的範圍,極大減少迴歸測試的盲目性和工作量,快速修訂測試用例,達到測試覆蓋率最大化。

四、精準測試的關鍵特性

軟件測試示波器

在功能測試過程中自動分析程序運行的一些數據指標,以波形的形式進行實時輸出。示波器是一種實時的監控,實時的計算測試過程數據並展現。

用例和代碼雙向追溯

執行一個測試用例以後,精準測試通過程序自動的記錄和顯示這個測試用例執行的代碼。如果測試人員關注某一些代碼行,它可以追溯出哪些用例在執行過程中運行過這段代碼。

智能篩選迴歸用例集

根據代碼的變動範圍來直接精確的定位需要回歸的用例,這樣使迴歸測試所需的時間更短,迴歸的範圍更準確。

測試覆蓋率精確分析

精準測試覆蓋率形式多樣,最高支持標準MC/DC(修訂的條件/判定覆蓋)的100%覆蓋率要求。

軟件缺陷快速定位

根據缺陷與用例的對應關係,快速找到執行用例對應的代碼行。

五、精準測試體系方案的價值和實現

根據前文所講到的需求、概念和關鍵特性,我們可以設計出如下的一種精準測試體系。這也是我們的技術團隊一直在客戶現場採用的測試方案。

組成部分

精準測試的動因、概念、特性與價值

精準測試體系主要以持續集成平臺、統一測試平臺和測試監控分析平臺為測試能力支撐。

通過持續集成完成代碼的構建編譯、靜態代碼掃描和測試環境部署;

使用統一測試平臺實現自動化測試迴歸;

通過測試監控分析平臺,精確、詳盡的記錄測試用例運行的情況,提供大量原生分析性數據,進行事後的缺陷分析、追蹤,建立測試用例與程序代碼的關聯,實現測試用例和程序代碼的雙向追溯,真正實現數據化的測試管理。

測試過程

精準測試的整體過程如下圖所示:

精準測試的動因、概念、特性與價值

精準測試需要結合持續集成、持續部署和持續測試的過程,並結合白盒測試技術和黑盒測試技術,實現代碼規範、質量和安全掃描,完成單元測試及覆蓋率的評測,通過自動化測試的手段實現系統的功能測試。通過測試監控分析平臺,從靜態測試和動態測試兩個維度實現軟件質量的精準化評估。

雙向追溯

精準測試的核心流程就是通過測試監控分析平臺實現測試用例和程序代碼的雙向追溯。

精準測試的動因、概念、特性與價值

在測試監控分析平臺的幫助下,實現測試用例和海量的代碼執行信息自動關聯,精確到函數級別及代碼塊級別。測試人員可以知道測試用例到底測試了哪些功能,覆蓋了哪些代碼。

精準測試的動因、概念、特性與價值

上圖就是測試用例到被測代碼的正向追溯,通過正向追溯可直接在代碼級定位測試現場故障和缺陷邏輯,並提供最後運行的時序數據;通過正向追溯自動記錄產生功能對應的詳細設計實現,輔助軟件解耦和架構分析;通過正向追溯,可以迅速定位缺陷對應的代碼執行邏輯,幫助開發人員快速修復缺陷,可追蹤難復現缺陷。

相反,在測試監控分析平臺的幫助下,可以實現程序代碼到測試用例的反向追溯。下圖就是反射追溯的一個過程展示。

精準測試的動因、概念、特性與價值

通過反向追溯,我們很容易就能確定代碼塊對應的測試集,獲取到的增量代碼,通過智能用例選取算法,可以準確的確定需要回歸的測試用例。精準的確定迴歸測試範圍,避免了全量回歸造成測試資源的浪費,既保證了質量又縮短了版本的迭代週期。

代碼覆蓋

有了精準測試,覆蓋率統計不再是白盒測試的技術專利。使用精準測試技術,系統測試也可以實現程序的覆蓋率分析,而且可以不需要源代碼,實現運行代碼的指令覆蓋、分支覆蓋、圈複雜度、行覆蓋和方法覆蓋的統計分析。

精準測試的動因、概念、特性與價值

程序代碼的覆蓋率統計可以是單次執行的數據,也可以是多次執行的累計數據,獲得一段時間內或多人測試執行的累計效果,支持在軟件研發週期內整體評估測試的覆蓋程度。

傳統的黑盒測試技術屬於經驗型模糊測試,質量、進度不可視,產生的無效勞動較多,系統與人員的管理成本極高,軟件質量風險高。

精準測試的動因、概念、特性與價值

傳統的黑盒測試大約70%的缺陷很容易發現,但之後缺陷的發現效率會急劇的下降。而傳統的白盒測試技術直接面對代碼測試,難度大、效率低,僅關注覆蓋率,無系統性。精準測試是採用傳統黑盒測試與白盒測試相結合的模式,它可以在黑盒測試過程中,通過專用軟件自動採集白盒級別的運行邏輯數據,根據可視化出來的不足點和漏洞點,引導開發和測試有針對性的補充測試用例,提高缺陷發現效率。

建設理念

精準測試體系的建立也是一個系統化的工程,需要長遠規劃,循序漸進,並逐步完善。需要以理論為基礎,以實踐為準繩,持續改進,讓精準測試體系使測試更加智能化,對質量評估更精準。

精準測試的動因、概念、特性與價值

六、不同項目類型對精準測試的需求程度

精準測試的動因、概念、特性與價值

並非是所有的項目類型,都適用精準測試,精準測試的核心需求是來自於對軟件質量的較高要求,而不同的項目類型對質量的敏感程度是不同的。

移動互聯網型的產品一般需求響應快,而且產品發佈成本低,採用灰度發佈,使用A/B測試方法替代傳統的功能測試即使用小流量測試新功能,如有問題迅速下線,對發佈質量並不太敏感。

項目型的產品一般以用戶為中心,需要準確把握用戶的需求,需要進行系統測試,通常採用用戶測試的方式對項目進行驗收,對項目的上線質量比較敏感。

產品型的產品需求由自己把握,產品的研發週期相對較長,通常都有獨立的測試團隊,需要按照一定的規程執行測試,由開發人員進行單元測試,由測試人員進行集成測試和系統測試,而且滿足一定的質量目標才允許發佈,對發佈質量要求較高。

七、總結

精準測試的核心是以自動化的軟件對軟件測試過程數據進行記錄,從而實現雙向的追溯:從開發到測試的正向追溯以及從測試到開發的逆向追溯。

通過雙向追溯,我們可以實現軟件質量的實時監控,迴歸用例的智能篩選,測試覆蓋率的精準分析以及軟件缺陷的快速定位。

但精準測試並非適用於所有的軟件項目類型,互聯網應用、項目級應用和產品級應用,對軟件質量的需求,也就是對精準測試的要求是逐漸遞增的。

精準測試的誕生,核心動因是對於軟件質量的要求。無論是項目驗收公信力手段、測試效率管控、測試與開發人員的協同以及複雜的分佈式架構帶來的挑戰,無不圍繞著對軟件質量的需求滿足。而軟件質量的最終價值,是用戶體驗的提升。在Gartner提出數字化轉型的雙模式理念後,各個領域都在尋找各自業務領域裡應用和實踐數字化轉型的方案,對精準測試的實現過程,實際上也是軟件測試過程數字化的一種體現。精準測試通過提升軟件質量,改善了用戶體驗,從而賦予企業數字化轉型更可靠的軟件能力。

精選提問:

問1:為啥叫示波器,不叫dashboard?

答:示波器的概念源自於一種電子測量儀器,在軟件測試中用於記錄軟件運行狀態,通過實時分析以波形曲線形式進行呈現,它是一種技術或一種方法,類似電子電路示波器、心電圖,是一種類比的叫法。

問2:什麼叫測試監控分析平臺?這些由哪些組成呢?

答:包括插樁組件、Agent、數據傳輸、數據分析、報表展示等組件。

問3:這是你們普元公司自己開發的嗎?

答:是的。

問4:統一測試平臺也是你們普元的嗎?

答:統一測試平臺是普元的自動化測試平臺,詳情請見:移動應用的左膀右臂:持續集成與自動化測試

精準測試的動因、概念、特性與價值

關於作者:王俊其,普元軟件產品部統一測試平臺產品經理,十餘年的開發與測試工作經驗,一直專注於持續集成與自動化測試領域技術的研究,帶領團隊成功實施多個有關金融、保險、證券等客戶的持續集成與自動化測試項目,現擔任普元統一測試平臺產品經理,全面負責測試產品研發、售前諮詢、項目實施等工作。


分享到:


相關文章: