精準測試白皮書v3.0-2019最新版

精準測試誕生的背景

 
現代社會是建立在各種以計算機爲基石的軟件技術基礎之上的。隨着日新月異的需求變化,軟件系統越來越複雜。很多人覺得軟件開發纔是重要環節,但實際上,無法對大型軟件進行有效的質量把控,就無法真正構建與維護大型軟件。——系統中任何一個錯誤都可能導致整個系統的崩潰,造成無法彌補的損失,系統的任何一個微小的修改都可能引入新的缺陷導致維護困難重重。

 
然而,如何從極端龐大複雜的系統中迅速及時地找到故障所在,卻是行業的一大難點。目前國內軟件測試基本處於兩種狀態:一是絕大多數企業採用功能(黑盒)測試,二是部分對軟件產品有高可靠性要求的關鍵軟件,企業會使用代碼級的白盒測試工具,但這兩種傳統的測試辦法在目前的軟件智能化趨勢下,更像是用竹竿打怪獸,完全沒辦法應付的。
 
功能(黑盒)測試,測試者看不到程序內部邏輯結構,這種辦法對軟件可靠性要求不高的應用來講問題不是很大,但是對於大型金融保險、工業軟件、航天軍工等關鍵系統就意味着時刻攜帶隱形的巨大風險。爲此,功能測試後期需要極高的人力投入才能完成複雜邏輯的用例分析和設計。然而對於黑盒測試來說,由於我們無法獲知內部的邏輯構造,程序越大,殺蟲劑效應越明顯。而行業內當作銀彈的自動化測試,當自動化程序本身規模擴大以後,它的維護本身就存在了很嚴重的問題。
 
代碼級(白盒)測試工具一般重點應用在研發階段的單元測試上,滿足了客戶的部分高可靠性需求,但由於其價格高昂、技術老化,僅適合於小規模迭代瀑布式開發的軟件,無法完成複雜的系統級別的測試以及分佈式基於雲的測試,更無法適應敏捷迭代的開發模式。而且值得一提的是,目前白盒測試工具基本都是國外產品,通常這些產品無法完成深度的定製化功能以及快速的用戶響應,代碼安全也是一個較大的問題。
 
隨着國內軍民各項大型核心軟件系統的上馬,研發一種面向高複雜度大型軟件、自主可控的高性能智能精準測試平臺,顯得迫在眉睫。正是在這種時代背景下,2012年初,星雲測試團隊開始心無旁騖的研發征程。精準測試是個交叉學科,裏面涉及到編譯器、測試分析、圖形技術、高性能通信與存儲,軟件的研發等多項底層技術。經歷無數個不眠之夜對技術難點突破的煎熬與最佳解決方案的反覆推敲,星雲精準測試產品在諸多方面率先實現了重大技術創新,成功突破了白盒測試使用難度大、價格高昂的桎梏,有效消弭了國外高端測試產品壟斷的壁壘。星雲精準測試產品更偏向於軟件測試業界的“灰盒測試”,即用簡單的黑盒操作辦法,可以同時得到單元級和系統級的精準測試數據。
 
“星雲精準測試”在衆多性能上大幅超越國外進口高端白盒測試工具產品,並在數據追溯、覆蓋率可視化、智能迴歸、智能缺陷定位、分佈式數據穿透與追蹤等特性上有突出貢獻。“星雲精準測試VIP大企業離線版雲平臺”在整體測試功能上的優異特性,成功獲得了一批重要大型企業的高度認可及產品採購。
 
星雲精準測試的首發版本爲:穿線測試ThreadingTest,2014年6月6日上線,側重於系統級白盒測試技術,測試用例和代碼邏輯的雙向追溯技術,測試示波器技術,覆蓋率可視化技術。2015年8月6日,“穿線測試”正式更名爲“星雲精準測試”。在繼承穿線測試整體技術上,星雲精準測試增強了迴歸測試用例的自動選取技術,缺陷最後執行時序分析、智能缺陷定位、敏捷環境下多版本白盒測試數據的聚合、聚類分析、結合代碼結構與動態數據的測試漏洞檢出、代碼安全特性,全面的測試管理特性等幾十種優秀功能。目前有“星雲精準測試VIP大企業離線版雲平臺”、“星雲精準測試PASS在線雲平臺www.teststars.cc“、“全自動測試用例驅動生成系統Wings”等多種工具產品。
 
星雲精準測試旗下產品平臺有Horn、Paw、Shell、Wings等系列產品。適用語言和平臺暫爲:Java、Object-C、C89、C99、C++0X11、C#等;適用平臺:Android、J2EE(、Web)、Java
Desktop、iOS、MacOS、Linux(X86、X64、mips、arm、powerpc、UNIX(AIX)、VXworks、Windows(visualstudio.net)、Windows操作系統、WinCE嵌入式平臺等。爲響應廣大用戶的需求,目前正在進一步擴展適應的語言和平臺覆蓋面。
 
通過精準測試,即繼承了傳統功能測試前期的高效率運行區間,又能在後期通過系統的數據,讓開發、測試充分協同,完成全程高效的測試。

(1)將測試團隊的價值放大,能夠將開發與測試更加緊密的連接起來,互爲支撐。

(2)採用精準、可信測試技術,測試管理的難度大幅度降低。

(3)降低企業對人員的過度依賴,通過系統適應人員的變更。

精準測試白皮書v3.0-2019最新版

               圖1-1 精準測試在大型系統的效率運行分析

星雲精準測試,既保證了傳統功能測試前期的高效率運行區間,又能在後期通過系統的數據,讓開發、測試充分協同,完成全程高效的自動化精準測試。

第二章 精準測試的定義

精準測試:是一種國際首創的軟件測試技術,旨在建立大型軟件系統的測試數據與源代碼之間高度的可視化追溯機制,實現精準缺陷預防及定位。它有力的打破了軟件開發、測試、維護及管理人員等之間的數據交流屏障,支持超大型應用從開發、迭代、維護全流程的可視化精準測試跟蹤和測試分析。即使是初級測試人員也能易於學習掌握,用黑盒測試的方法實現精準化測試。
 
精準測試使軟件測試從完全依賴人工記錄、驗證,轉換爲機器智能的全過程精準、可視、可信的全新檢測模式。精準測試數據和黑盒測試優雅對接,在不改變常規測試流程的情況下,就可以獲得大量的精準分析數據,並直接引導用戶進行高效的後續測試與質量風險評估。用戶手動“點測“或者與自動化對接被測試應用的同時,可以快速記錄對應的代碼執行邏輯並實施同步運算和分析,給出被測試應用的質量診斷報告。例如測試過程中的關鍵模塊漏測分析、測試充分度度量、代碼靜態質量分析以及崩潰的代碼級的捕獲和分析等。
 
精準測試有着超強的數據追溯機制,通過建立用例和代碼運行時數據的映射關係,能夠很好的協同開發和測試工作;它適用於當前流行的敏捷開發、測試體系,在版本迭代中,能夠準確的計算出由於版本迭代影響和波及的測試用例,快速給出測試複雜度報告並核確定測試範圍優先級,極大減少上線風險。在團隊管理上,精準測試亦產出數十張過程及管理的不同剖面報表,以滿足各級管理需求。

  
第三章 精準測試的基礎架構介紹

3.1 精準測試的技術架構

 
星雲精準測試的技術架構:通過對源代碼的插裝分析出代碼的靜態結構信息,運行插裝後的代碼,測試工程師通過人工或自動化的執行用例,軟件示波器通過採集到的這些數據,進行相關密集運算,得到測試數據。結合之前已有的代碼靜態結構信息,在星雲客戶端可實現用例與函數直接的互相追溯,再通過星雲測試工具的企業項功能,缺陷定位、用例聚類分析、迴歸測試用例和最小測試用例集得到相應的測試數據,星雲測試通過報表的形式展示測試數據,導出批量測試報告。
 
 精準測試從某個層面來講,是賦予了測試用例真正的生命力,傳統的測試用例僅僅是一些只能夠依賴人去理解和分析的文本文件而已,在計算機和算法層面則沒有存在意義和價值。下圖是精準測試的整體架構圖:

精準測試白皮書v3.0-2019最新版

                 
             圖3-1-1 精準測試的總體架構圖
 
大家首先可能會比較好奇,“用例魔方”的概念是怎麼來的?測試用例魔方是在精準測試的設計、開發和商業實踐中自然產生的功能集合的一個統稱。當我們把精準測試的和用例分析相關的功能畫成架構圖形表示的時候,它自然而然地看起來就像魔方,所謂“魔”則是精準測試核心算法所賦予的超能力。
上圖是星雲精準測試系統的總體結構圖,“測試魔方”即分佈在左上角區域。大家知道精準測試的核心技術是測試用例與代碼的追溯關係的建立,而在此之上就可以構建測試魔方的核心功能區。如下:
 
精準測試白皮書v3.0-2019最新版
 
                  圖3-1-2 精準測試的測試魔方

所謂“方”實際上是代表測試用例的集合,每個測試用例用一個小方塊標識,所有測試用例的集合用一個大方塊。精準測試體系中,測試用例對應的代碼邏輯都可以實現全自動的追溯和存儲,因此測試用例就具備了進行深入分析的基礎。在精準測試的用例魔方中,目前存在三個面(隨着後續功能的增加,將增加分析的面),即迴歸測試用例選取、測試用例聚類分析、測試用最小化,同時輔之以智能缺陷定位技術。下面對精準測試的功能做詳細的說明。

3.2 軟件示波器

  
精準測試採集到的測試數據在軟件示波器頁面,通過可視化的窗口展示,實時展示採集到的塊、條件和函數信息,在下方列表實時展示函數調用信息。軟件示波器採集到的測試數據,完美實現了用例與代碼的自動關聯。通過測試數據的反向追溯分析,開發人員可進行一致性修改,避免修改引入新的缺陷,通過正向追溯結果,開發可對用例的執行進行全面掌握,可用於快速修復缺陷和詳細實現確認。
 
用例與代碼的在追溯是精準測試的基礎功能,後面的高級算法都在這個基礎上展開,用例和代碼的追溯就像一個全景的調試器,只要功能由測試人員進過運行,所有的內部代碼執行邏輯瞬間就可以展示出來。
 
軟件示波器中的測試用例可以從現有的測試管理系統導入進來,當準備開始執行一個用例的時候,選中用例點擊開始,然後驅動被測試系統運行,那麼軟件示波器就會採集到程序內部運行邏輯對應的波形信息,當用例執行結束,點擊停止。這個用例運行階段的數據,通過開始和結束的邊界就記錄下來了。
 
軟件示波器主要起到有效的可視化測試過程的作用。在執行用例過程中,如果沒有採集到測試數據或者程序出現崩潰的情況,軟件示波器就像人的心臟並沒有跳動一樣,一根橫線拉直。正常採集到數據,將有持續的波形展示出來,高效而精準地監控到程序細微的運行狀況。它可以精密捕獲每個軟件單元任何微小的運行波動和行爲改變,並支持多次運行數據的比對。
 
同時軟件示波器也提供一個輔助的等價類劃分的功能,它將一個用例從開始到結束所執行的路徑信息終值,完整記錄下來。如果兩個用例終值不一樣,就可以確定爲不是等價類。對於很多從功能表面很難界定是否等價類的測試用例,軟件示波器可以給出精確結果。
 
通過軟件示波器高速採集程序數據:

(1)只要測試開始執行,即可以透明方式採集功能運行過程中對應的程序的運行邏輯。

(2)在系統高速運轉下采集,可保證對原有應用無干擾,超過1500w/s的採集速率。

(3)可採集程序的條件,執行路徑,執行參數,內存使用等動態運行數據。
 
軟件示波器的採集速度極快,目前最高可以每秒鐘採集1500萬條測試數據,對被測試程序的性能影響非常小。
 
精準測試白皮書v3.0-2019最新版

                圖3-2-1 軟件示波器

爲了方便客戶在對測試時的實時數據監測,數據實時動態刷新的時候能夠方便看到數據,星雲做出了實時數據監測的懸浮窗,這樣就能在運行項目的時候就能更方便的看出數據的變化

精準測試白皮書v3.0-2019最新版精準測試白皮書v3.0-2019最新版

               圖3-2-2 軟件示波器懸浮窗

只要將鼠標移至懸浮窗就可以看到這條測試用例的ID和名稱

懸浮窗的塊,條件和函數就是動態實時監測界面的塊塊,條件和函數

懸浮窗的額綠色按鈕表示開始,中間的紅色按鈕表示暫停,後面的按鈕表示通知

後面的圓圈分別表示了塊,條件和函數的消息數,中間的圓圈表示了測試用例運行時間

1位置:鼠標點擊可以收放左側的數據塊

2位置:點擊鼠標左鍵開始接收當前用例的運行的數據 快捷鍵:Space

3位置:點擊鼠標左鍵暫停當前接收 快捷鍵:Ctrl+Shift+Space

4位置:點擊鼠標左鍵停止當前用例的數據接收 快捷鍵Space

5位置:類/塊數據類型切換[視圖切換] 快捷鍵:Ctrl+Shift+Q

3.3精準測試的雙向追溯

精準測試提出了測試用例和代碼的雙向追溯,它也是精準測試核心技術之一。即運行一個測試用例以後,精準測試可以通過程序自動的記錄和顯示這個測試用例執行的代碼。如果測試人員關注某一些代碼行,它可以追溯出哪些測試用例在運行過程中運行過這段代碼。通過這個技術特性,測試工程師的每個測試用例都可以進行量化分析和統計,這些量化數據既可以用來對測試工程師進行工作的考量,也可以提供開發人員和測試人員之間進行信息化的交流。 
 
雙向追溯技術記錄了每個測試用例對應的程序內部的執行細節,細緻到每個條件、分支、語句塊的執行情況。開發人員可以通過雙向追溯的結果去理解程序邏輯,進行軟件維護以及進行可一致性的修改。開發和測試可以順利交流,增加測試和開發的交流效率。 
 
 

雙向追溯技術正向追溯

將測試用例和代碼執行信息自動關聯,可到函數級別及代碼塊級別;通過正向追溯可直接在代碼級定位測試現場故障和缺陷邏輯,並提供最後運行的時序數據;通過正向追溯自動記錄產生功能對應的詳細設計實現,輔助軟件解耦和架構分析。

精準測試白皮書v3.0-2019最新版

            圖3.3-1 雙向追溯(正向)-測試用例追溯到代碼

精準測試白皮書v3.0-2019最新版

           圖3.3-2 雙向追溯(正向)-測試用例追溯到代碼

雙向追溯技術反向追溯

將代碼執行、函數、代碼塊級別和測試用例執行信息自動關聯,通過反向追溯可直接在觀察代碼變動所影響的測試範圍,幫助開發人員代碼修改影響功能範圍評估與測試人員對代碼修改部分所影響的測試用例進行評估。

精準測試白皮書v3.0-2019最新版

              圖3.3-3 雙向追溯(反向)-代碼追溯到測試用例

精準測試白皮書v3.0-2019最新版

             圖3.3-4 雙向追溯(反向)-代碼追溯到測試用例

數據追溯技術-追溯測試用例的全景調用

 
精準測試通過正向追溯把測試用例運行的代碼執行進行了全景繪製,在全景圖中,測試人員可以有效的觀察到函數之間的整體的調用與走向,觀察出被測模塊與上層之間的調用關係

精準測試白皮書v3.0-2019最新版

             圖3.3-5 測試用例運行的代碼整體調用

數據追溯技術-針對多系統多模塊(微服務)的追溯

 
對於系統之間或模塊之間往往通過HTTP、HTTPS、等通信協議進行,而星雲測試通過agent技術,把測試用例進行過的多個系統或多個模塊之間的調用進行了記錄並繪製成展示圖,測試人員可以很直觀的觀察出測試用例從起始點到進行的各系統或各模塊之間的調用關係圖。

精準測試白皮書v3.0-2019最新版

            圖3.3-5 多業務模塊數據穿透之間的調用

3.4 分佈式結構下的數據穿透

微服務是一個新興的軟件架構,它把一個大型的單個應用程序和服務拆分爲數十個的支持微服務,獨立部署、互相隔離,通過擴展組件來處理功能瓶頸問題,比傳統的應用程序更能有效利用計算資源。微服務之間無需關心對方的模型,它通過事先約定好的接口進行數據流轉,使業務可以高效響應市場變化。但微服務一個明顯的表象就是隨着服務的增多,傳統的測試模式受到很大制約,無法有效進行下去,威脅到整體系統質量。

星雲測試(www.teststars.cc)發佈分佈式微服務精準測試解決方案,是目前市場上唯一可達到在複雜分佈式系統中跨多個服務器進行代碼白盒級分析,並實現請求分佈式追蹤的測試平臺。其中產品內的穿透模塊,可以支持各種主流微服務通信架構,例如httpclient,springcloud以及消息隊列,將併發訪問場景下跨多個服務多組代碼邏輯分離並重建追蹤出來。實現了業務邏輯的代碼在開發層面通過微服務離散後,在測試階段則可以反向復原整個完整代碼執行視圖。精準測試裏面的穿線概念(Threadingtest)增加了第三層含義,即針對的分佈式服務的穿透能力。

星雲測試針對複雜的分佈式系統中跨多個服務器(比如啓動多個spring
boot)進行代碼白盒級分析提供分析,實現請求分佈式追蹤,產品內的穿透模塊,可以支持各種主流微服務通信架構,例如httpclient,springcloud、dubbo以及消息隊列等。

星雲測試將多個用戶併發執行測試用例場景下跨多個服務多組代碼邏輯分離並重建追蹤出來。

默認情況用戶標識採用瀏覽器的cookie值,測試前端瀏覽器設置。

微服務支持以下協議:

h:HTTP3,HTTP4,OKHTTP,org.springframework.http.client,cn.hutool.http,dubbo,feign客戶端
精準測試白皮書v3.0-2019最新版

                                                  **圖3.4 微服務**

第四章 精準測試的核心組件與功能

精準測試的核心組件與功能包含:軟件測試示波器、用例和代碼的雙向追溯、智能迴歸測試用例選取、覆蓋率分析、缺陷定位、測試用例聚類分析、測試用例自動生成系統,這些功能完整的構成了精準測試技術體系。

精準測試系統的本質是一套強大的計算機開發與測試系統,實現數據可視化聯動的輔助分析系統,它的關鍵技術是測試用例和代碼的雙向追溯技術。在這項技術的基礎上,很多高級測試算法得以應用同時將測試和開發進行非常緊密的連接。精準測試系統並沒有取代人工設計用例、執行用例的過程,但是通過對該過程深入到代碼層的分析,可以相當大的程度改進人工測試所產生的各種問題。

接下來將從風險控制、工作協同、敏捷迭代、團隊管理、知識庫累積五個方面詳細解析精準測試的核心組件與其功能。

4.1 風險控制

4.1.1 七種測試覆蓋率

星雲精準測試提供7種測試覆蓋率:分別爲:SC0語句塊覆蓋率、Ture覆蓋率、Both覆蓋率、CDC覆蓋率、Branch覆蓋率、MC/DC覆蓋率。

精準測試支持查看一個模塊的範圍內的覆蓋率,以及把一些代碼排除出計算範圍重新進行計算等高級功能,也可以查看到新增代碼部分的覆蓋率情況。通過對這些覆蓋率數據的分析,可以將風險控制到最低。

精準測試白皮書v3.0-2019最新版
 
                  圖4-1.1-1 七種測試覆蓋率

MC/DC覆蓋率可視化

星雲精準測試覆蓋可視化技術使每種覆蓋率如何計算、分子分母分別對應程序的哪些單元,展示的非常清晰。

星雲測試提供MC/DC覆蓋率,即修正判定條件覆蓋,該覆蓋率數據 MC/DC是DO-178B Level
A認證標準中規定的,歐美民用航空器強制要求遵守該標準。對於金融系統的一些關鍵模塊,也可以採用這個覆蓋率標準,MC/DC覆蓋率可以基本保證被測試軟件不存在缺陷。

MC/DC覆蓋是指所有符合條件中的子條件,在保持其他子條件不變的情況下,它自己的真假變化就會引起整個條件結果的變化,如果符合條件中的每個子條件都滿足了,那麼整個條件的MC/DC就滿足了。星雲精準測試提供相關的條件組合的結果展示,直接分析MC/DC覆蓋率的滿足情況。

精準測試白皮書v3.0-2019最新版

                圖4-1.1-2 MC/DC覆蓋率可視化

4.1.2 新增代碼覆蓋率

 
敏捷模式下迭代頻繁,測試人員往往被要求對本次變動或者新增的功能進行迴歸,但實際過程中新版本的代碼經常由很多開發進行修改,容易出現彼此不知道或遇到有代碼潔癖的,改了別人的代碼,大家都不知道。通常情況是,要麼測試範圍定小了,遺漏了;要麼測試範圍過大,付出過多代價,而精準測試通過新版本與老版本之間的差異進行比對,給出變動和新增的代碼的範圍,幫助測試人員對本次要求的變動代碼和新增代碼進行針對性的覆蓋率統計展示。

 精準測試白皮書v3.0-2019最新版

                 圖4.1.2 新增代碼覆蓋率

4.1.3測試覆蓋率範圍篩選與再統計

  
在做精準測試或統計覆蓋率時,往往測試管理者、開發人員、測試人員爲了保證測試覆蓋率的正確性,會對某個方法、類進行查看或在統計中把代碼中一些廢棄的函數或特殊測試不到代碼進行移除,從而讓測試代碼覆蓋統計率達到更加準確。星雲精準測試在設計中,通過多種搜索、方法、類、模塊過濾等功能把需要統計的範圍進行縮小或不需要的統計的進行去除,並根據用戶的選擇進行覆蓋率再統計展示。

 精準測試白皮書v3.0-2019最新版

                圖4.1.3 測試覆蓋率範圍篩選與再統計
4.2 工作協同

4.2.1 打通開發與測試的隔閡

 
精準測試打通開發與測試的協同工作通道,使得開發與測試能夠更好的溝通,提高工作效率。傳統模式下,開發人員關注的是代碼,測試人員關注的是業務角度的測試用例,他們沒有直接關聯。開發和測試的溝通,基本就是採用自然語言、Excel表格、內部系統溝通,存在大量的問題。例如測試工程師發現一個缺陷,提交到缺陷系統,開發需要花費大量時間理解、準備數據、復現、調試,直到最後的修正。因爲業務上的功能執行和代碼並沒有明確的關係,通常測試工程師執行完功能測試用例後,讓開發人員幫助評審也非常困難。

若測試工程師提供的測試結果都是比較模糊的功能邏輯描述,重現缺陷需要花費大量的時間。開發人員修改代碼後,對於變更描述,以及變更引起的關聯問題描述通常也都很模糊,導致測試又出現新問題。

企業採用精準測試技術後,通過執行用例可以直接追溯到對應執行的程序代碼塊,這樣的數據化溝通,將使開發人員和測試人員之間的協同工作效率大大提高。

精準測試白皮書v3.0-2019最新版

                 圖4.2.1 協同模式

4.2.2 源碼動靜態數據的統一

 
星雲精準測試通過插裝得到的項目靜態結構信息,結合測試後採集到的測試數據,能夠精準記錄測試的過程,通過這些靜態數據和動態數據視圖,便於開發人員基於圖形化結果進行快速分析。

對於不懂開發的測試工程師,通過程序控制流程圖的圖形以及通過顏色表示的覆蓋信息,可以直接看到程序內部漏測的邏輯是什麼,也可以通過這些結果直接與開發溝通,進行輔助用例和邏輯的補充。

因爲內部邏輯能夠圖形化的打開和看到,可以有力保證黑盒測試後期,開發快速理解和介入瓶頸問題,保持全程測試的高效執行。

精準測試白皮書v3.0-2019最新版

          圖4.2.2-1 源碼靜態結構與動態測試數據統一圖(函數調用圖)
 
精準測試白皮書v3.0-2019最新版

          圖4.2.2-2 源碼靜態結構與動態測試數據統一圖(控制流程圖)
 
精準測試白皮書v3.0-2019最新版

          圖4.2.2-3 源碼靜態結構與動態測試數據統一圖(簡易流程圖)
 
下圖展示的是一個函數的靜態結構,與動態測試數據結合的流程圖,如圖框架是靜態結構,綠色顯示部分是覆蓋到的代碼塊。
 
精準測試白皮書v3.0-2019最新版

           圖 4.2.2-4源碼靜態結構與動態測試數據統一視圖
 

4.2.3 缺陷最後執行時序分析

 
星雲測試採集數據時,可自動捕獲缺陷或崩潰發生時之前程序執行的詳細路徑信息。當缺陷發生後,開發人員能夠直接看到缺陷出現時,代碼執行的時序和路徑信息,直接定位缺陷和排查問題,節省大量的溝通以及復現和調試的時間成本。

IT工程師可直接觀察到程序出現缺陷後,最後執行的50個代碼塊、條件、判斷的執行信息。配合示波器來觀察,當功能執行發現缺陷或崩潰時,示波器可以設置成手動或者自動停止,清晰記錄最後執行的50個代碼序列的相關詳細信息,以供查詢和分析。

自動記錄崩潰發生時刻之前程序執行的詳細路徑信息,捕獲難以重現的缺陷並快速解決:

最後50個代碼塊。最後50個條件。最後50個判定執行。

除了在研發環境內,也可以在用戶現場精準定位缺陷,而無需再用戶現場部署任何代碼。

精準測試白皮書v3.0-2019最新版

              圖4.2.3 缺陷最後執行時序分析

4.2.4 智能缺陷定位

 
星雲測試對企業級用戶提供缺陷定位功能。通過測試人員標記用例執行狀態和軟件示波器自動記錄的程序,可自動分析缺陷出現的可疑代碼塊。

傳統測試僅僅能夠發現缺陷,無法幫助開發提供有價值的代碼層級的數據。通過智能缺陷定位技術,測試工程師通過幾組用例,例如有的正確,有的失敗,尤其是輸入差別不大,讓被測程序表現爲正確和失敗的情況。精準測試通過功能上的狀態以及用例對應的內部執行代碼邏輯的差異分析,可以直接分析出現問題的代碼,隨後按照可疑度進行排序。如圖:

通過測試人員在功能測試階段標記的用例執行狀態,以及軟件示波器自動記錄的程序
運行頻譜,自動分析缺陷的出現的代碼塊。

(1)對於同類測試用例,經過多組測試可給出非常有效的結果。

(2)列出的可疑代碼,可直接通過測試過程給出,提升測試的價值及產出。

精準測試白皮書v3.0-2019最新版

          圖4.2.4-1 通過功能測試頻譜法分析進行智能缺陷定位

選擇可疑度算法、得到可疑度高的代碼塊,關聯源碼後,可根據代碼可視化查看具體位置。可疑度計算有一個公式,並不複雜,通常每個代碼塊有2個變量,四種狀態值。分別是:是否執行、是否通過,這樣每代碼塊都有一個可疑度值。

星雲精準測試提供3種常用計算公式,供大家參考。
 
精準測試白皮書v3.0-2019最新版

其中aep表示通過且覆蓋到該塊的測試用例的個數、anp表示通過且未覆蓋到該塊的測試用例的個數、aef表示未通過且覆蓋到該塊的測試用例的個數、anf表示未通過且覆蓋到該塊的測試用例的個數。結果表示該塊的可疑度。

精準測試白皮書v3.0-2019最新版

             圖4.2.4-2 智能缺陷定位展示

4.3 敏捷迭代

 

4.3.1 敏捷迭代下多版本白盒測試數據的聚合

 
白盒覆蓋數據通常與代碼先關,而敏捷環境下代碼每天都會發布幾個版本,代碼變更後白盒數據就無效了。

星雲測試結合目前快速迭代的開發模式,通過分析代碼增量,結合不同版本覆蓋率,支持累計的合併計算,將多個敏捷局部測試的數據彙總到最新代碼視圖上統一展示。

星雲精準測試的“敏捷環境下多版本白盒測試數據的聚合”功能,可以通過內部累加一個測試周期內的總體覆蓋,並在最新代碼視圖上投影。用戶可以看到在一個敏捷週期內的總體覆蓋情況,雖然每個敏捷版本可能只是關注某一部分功能。例如一個函數如果一直從某個版本後一直未發生代碼變化,那麼從變化點以後的覆蓋率就可以累加而之前就丟棄掉。

星雲精準測試-敏捷環境下多版本白盒測試數據的聚合如圖所示。

精準測試白皮書v3.0-2019最新版

            圖4.3.1-1敏捷環境下多版本白盒測試數據的聚合
 
精準測試所有數據分析結果都特別考慮了快速迭代的開發模式。

(1)所有版本的測試數據,支持累計的合併計算,將多個敏捷局部測試的數據彙總到最新代碼視圖上統一展示。

(2)可以任意選擇版本合併,觀察任何時間節點的累計數據。
 
精準測試白皮書v3.0-2019最新版

                                 **圖4.3.1-2敏捷環境下多版本白盒測試數據的報表**

 

4.3.2 聚類分析

 
星雲精準測試提供的聚類分析功能,根據測試用例的函數執行剖面的向量化信息,對測試用例進行精確的空間距離計算後執行聚類分析。聚類結果可以分析被錯誤執行的用例,例如不相關的功能點聚類到一起,則說明其測試執行可能存在錯誤。

另外也可以輔助找到缺陷分佈的密集區域。大部分情況下,缺陷分佈會呈現2/8的聚集特性。在時間緊張的情況下,我們可以通過聚類結果,每個類選取中心點以及周邊幾個用例。如果沒有問題,就可以去測試其他聚類,如果發現一個類缺陷概率高,那麼這個類就需要進行重點測試。通過聚類結果也可以分析測試用例的分佈密度等信息,輔助進行測試決策。

星雲精準測試-通過用例聚類分析識別缺陷密集分佈區域

(1)通過聚類結果給出測試密度,聚類圈中的密度越高,則說明該功能模塊測試越密集

精準測試白皮書v3.0-2019最新版

               圖4.3.2-1 測試密度
 
(2)聚類結果可以分析被錯誤執行的用例,例如不相關的功能點別聚類到一起,則說明其測試執行可能存在錯誤。

精準測試白皮書v3.0-2019最新版

                圖4.3.2-2 聚類分析
 
(3)從類中檢出中心點測試用例以及隨機的其他用例,可以快速確定類中是否存在較多缺陷,快速定位缺陷的分佈,並進行重點測試。
 

4.3.3 漏洞檢出

 
星雲精準測試,結合代碼結構和動態數據綜合分析,通過計算直接篩選出潛在的高危測試漏洞,可以在短期內確定高危漏測模塊。針對性的解決方案,幫助用戶快速找到嚴重缺陷。

當測試時間不充分的時候,首先可以先看測試漏洞列表。列表裏將顯示通過靜態信息和動態信息計算,得到的最高風險的漏測點模塊。我們通過複雜度進行計算,複雜度高的模塊。一般來講是重要模塊並且邏輯複雜,如果動態覆蓋比較低,將被篩選出來。

第二,處於調用和被調用中間的模塊,因爲屬於中間關鍵模塊,我們也會計算它的扇入扇出和動態覆蓋率信息。如果比率很高,也會被認爲是高風險模塊篩選、高亮標示出來。

從測試效率角度考量,我們建議在基本的功能黑盒測試完成後,先看這些高危模塊,補充他們的覆蓋率。在時間不充分的時候,優先測試這些高危模塊。星雲精準測試-結合代碼結構與動態數據的測試漏洞檢出。

精準測試白皮書v3.0-2019最新版

                 圖4.3.3漏洞檢測列表
 

4.3.4 精準測試與自動化測試對接

 
星雲精準測試提供了一個通用的自動化接口調用包,爲衆多的自動化工具進行調用,可以無縫的對接各種主流的自動化工具,測試人員無需改變原有的測試腳本流程,即可執行原有的自動化並在星雲精準測試軟件示波器中自動建立測試用例並且與執行的代碼進行相關聯。

星雲精準測試與自動化對接還能通過其精準測試的迴歸、新增代碼覆蓋率進行相結合使用達到新版本發佈全自動的迴歸測試。

精準測試白皮書v3.0-2019最新版

                 圖4.3.4星雲測試自動化流程
 

4.3.5 最小測試用例集

 
星雲精準測試通過每個測試用例對應的代碼進行統計計算,給出測試用例之間的冗餘部分,即滿足當前代碼覆蓋率所需要的運行的最小測試用例集合,主要用於對項目後期大量增長的自動化測試用例進行評審操作,從而降低對自動化用例的維護成本。

精準測試白皮書v3.0-2019最新版

                 圖4.3.5星雲測試最小測試用例集
 
4.4 團隊管理

 

4.4.1 精準測試的企業私有云可信化報表

 
星雲測試提供雲報表,來實時精準的追蹤測試進度。星雲測試web端的報表系統,當客戶端錄入測試用例並採集數據後,將在web端產生實時的、具備高可信度的測試情況報表。

該報表與普通的測試管理系統不同:普通的測試管理系統有人爲錄入數據的情況,數據本身的真實性就沒辦法保證。精準測試提供的報表,底層數據來自於執行測試用例時候代碼數據的採集,通過專用接口上傳,完全無法篡改和僞造。星雲精準測試-企業私有云端實時、精準、可信質量跟蹤。

(1)通過瀏覽器登錄測試系統,選擇需要跟蹤的項目,就可以實時的對整個測試的質量、進度、人員進行精準的分析和管理。

(2)
企業私有云端管理系統展示的數據基於精準測試數據的分析,所有數據原生精確,支持移動測試+本地測試。

(3)
測試團隊、開發團隊、甲方負責人等多種角色都可以登錄系統,從各個層面對測試、軟件質量進行分析。

精準測試白皮書v3.0-2019最新版

                 圖4.4.1-1 項目彙總展示

星雲精準測試項目彙總中,包含了項目信息、版本信息、測試彙總信息、測試過程監控趨勢圖、測試設備組成和分佈圖、各版本覆蓋率彙總圖、複雜度彙總圖等。

從另外一個角度來看,精準測試大企業版本也可以讓不同區域、不同時間的測試人員實現協同測試與協同管理,最終達到多人同地測試、多人異地測試、數據實時彙總共享與追蹤、測試過程與完成度一目瞭然的管理目標。
 
項目信息

精準測試白皮書v3.0-2019最新版

                  圖4.4.1-3 測試信息彙總

測試用例通過率:無BUG的測試用例

BUG累計:測試用例運行完畢後提交的BUG數

當前版本覆蓋率(SC0):(執行過可見段數/可見段數)*100%的比例

覆蓋率增長:相比前一天的SC0增長差值

高複雜度預警函數個數:高複雜度的函數個數
 

4.4.2 精準測試的企業私有云-測試效率的直觀展示

 
星雲測試報告可直觀分析每天的測試效率,通過代碼模塊和複雜度關係圖,看到函數羣落測試情況分佈及趨勢,可直觀精準識別系統測試所處階段。

例如通過每日增長覆蓋,我們可以看到整個團隊的工作效率。一般系統都是在剛開始測試的時候覆蓋率增長快,到了黑盒測試的瓶頸點,就上升很慢了。管理者可以通過報表,清晰的看到整個團隊的效率趨勢,並採取相關策略。

覆蓋率和複雜度的關係圖,可以很直觀的看到測試的質量。如果測試不充分的時候,複雜度高的模塊通常覆蓋率都比較低,分佈自一個左上角的區域,當測試深入進行,這些點就會向右側移動。管理者可以非常直觀的看到系統測試的充分程度和上線的質量把握。

(黑盒效率換擋點+測試深度運動趨勢)

(1)累計覆蓋率增長視圖直觀分析每天的測試實效以及確定從系統黑盒測試轉換到精準測試的最佳時點。

(2)代碼模塊覆蓋率和複雜度關係圖,看到函數羣落測試情況分佈以及運動趨勢,可以直觀精確識別系統測試所處階段。

精準測試白皮書v3.0-2019最新版

             圖4.4.2-1 覆蓋率每日增長趨勢圖與黑盒測試瓶頸

精準測試白皮書v3.0-2019最新版

             圖4.4.2-2 測試效率換檔點與測試深度趨勢觀察表

函數|類|文件複雜度和覆蓋率關係圖,以散點圖的形式展示各種複雜度和覆蓋率的關係,更清晰的掌握各種程度覆蓋率的分佈。

圖中點:代表每個函數,點擊後可以看到相關信息。

縱向:代表複雜度不同級別,取各種覆蓋率值,點擊自動進行切換到相應的複雜度

橫向:代表覆蓋率不同級別,取各種覆蓋率值,點擊自動進行切換到相應的覆蓋率

紅圈62:代表當前版本所選的複雜度類型中最高複雜度值

籃圈100:代表當前版本所選的覆蓋率類型中最高覆蓋率值
 

4.4.3 精準測試的企業私有云-測試用例排行圖

 
測試用例排行圖,可直觀展示參與測試工程師所執行的用例數、通過率和缺陷率,真實記錄並分析每個測試用例的實效性。星雲精準測試-測試工程師實效精準分析系統,將參與的測試工程師所執行的用例從邏輯覆蓋映射到代碼覆蓋,真實記錄並分析每個互聯網測試參與者的工作實效。以邏輯覆蓋爲基準的而不是用例數量爲考覈標準。

精準測試白皮書v3.0-2019最新版
 
精準測試白皮書v3.0-2019最新版

                  圖4.4.3 測試用例排行圖

4.5 知識庫累積

 

4.5.1 精準測試數據的價值

 
星雲測試採集的測試數據和插裝後分析到的靜態結構信息將作爲大型企業系統大數據分析的基礎數據。

星雲精準測試-測試數據價值

(1)代碼級的程序靜態信息以及測試用例對應的海量動態測試的數據,這些多維度數據將作爲大型企業系統大數據分析的基礎數據。

(2)對本企業大量軟件質量數據進行挖掘和分析,找到相關質量技術標準衡量的合理區間,避免常規錯誤。

(3)通過數據分析確定優異的開發方法和技術構件。

(4)通過質量大數據的分析結果,選擇更加合理的技術方法,在設計階段避免已知的缺陷。

4.5.2 精準測試智能迴歸測試用例智能選取

通過對測試數據分析,星雲精準測試可自動篩選測試用例。在迴歸測試時,大大減少迴歸測試的時間及風險,如圖通過對版本a和版本b測試數據分析,通過歷史數據的比對,可在版本c上全自動得到迴歸優先級高的用例。

精準測試白皮書v3.0-2019最新版
 
            圖4.5.2-1 精準測試智能迴歸測試用例的選取

  1. 適應快速的版本迭代週期,適應龐大的工程項目。

  2. (2)在迴歸測試時,自動篩選測試用例,大大減少了迴歸測試的時間以及風險。

  3. (3)降低了傳統人工迴歸分析產生的測試盲點。

  4. (4)精確計算迴歸用例的權重,測試人員在時間有限的情況下可以重點回歸受改動影響最大的用例。

精準測試白皮書v3.0-2019最新版

             圖4.5.2-2 迴歸測試用例選取界面

4.5.3 精準測試在迴歸測試中的性能評估

 
迴歸性能,通常一般迴歸都是基於人對於系統的判斷來做的,一般來講國際上的統計每修改6行代碼就會引入一個未知的缺陷。由人來進行迴歸用例集的判斷,隨着時間的延續,記憶將不可逆轉地發生損耗並丟失,加之原團隊人員的不斷變更,老的系統維護越來越難,修改引入新的缺陷要越來越難風險。

通過星雲精準測試企業離線平臺,內置程序將持續、高效地全自動記錄本企業自有的各系統測試用例和代碼的關係數據,不用人工干預和記錄。使用一段時間後,企業會得到越來越精確的數據,若加以有效利用,將發揮相關元數據及大數據的爆發性的價值。

精準測試白皮書v3.0-2019最新版

             圖4.5.3 智能迴歸測試用例選取的性能評估

第五章 精準測試的管理報表分析

星雲精準測試報表體系,是根據大型企業實際工作中的訴求而設計。報表涉及內容很多,包括項目信息、測試過程及總結信息、團隊效率信息等,數字化展示企業分佈式開發與測試過程、驗收和維護全過程。它深度解決軟件測試短板,數字化跟蹤、追溯、輸出開發與測試每一步信息。

它把原來很多需要人工錄入的數據,由平臺代爲自動化機器處理,確保所有的數據都是可信的、不可篡改的。它自動把測試用例、測試設備、測試數據、測試人員、測試時間等信息進行關聯分析,企業管理人員可以利用機器原生數據,對測試全過程進行精準的數字化管理。
 
5.1 項目指標

 
此項中將展示項目中各個指標彙總信息,如:程序代碼信息彙總,測試漏洞、程序覆蓋率指標、代碼違規統計、代碼重複度、程度複雜度指標、程序Crash情況等。

精準測試白皮書v3.0-2019最新版

               圖5.1 項目指標彙總圖

5.1.1 程序代碼信息彙總

 
程序代碼信息彙總中顯示當前代碼基本信息、代碼註釋比例、代碼可維護性。它能有效地檢查出代碼的整體狀況,並指出相應的薄弱點。

精準測試白皮書v3.0-2019最新版

             圖5.1.1 程序代碼信息彙總

上述指標,需要使用到以下數據並對應映射表來確定:可分析性、可修改性、穩定性、可測試性的最終等級。
 

5.1.2 程序覆蓋率指標

 
程序覆蓋率指標:該值是程序測試過程中代碼段的覆蓋率數值

精準測試白皮書v3.0-2019最新版

             圖5.1.2-1程序覆蓋率指標

精準測試白皮書v3.0-2019最新版

             圖5.1.2-2覆蓋率百分比

程序複雜度指標:給出程序複雜度相關信息,以及文件、類、函數三個級別複雜度分級柱狀圖。(基於CC0計算)CCO表示的是圈複雜度

精準測試白皮書v3.0-2019最新版

              圖5.1.2-3 程序複雜度指標

5.2測試用例-按日趨勢圖

 
精準測試白皮書v3.0-2019最新版
                圖5.2 按日趨勢圖

5.2.1測試用例彙總信息

 
精準測試白皮書v3.0-2019最新版

               圖5.2.1 項目信息

5.2.2測試用例按日趨勢圖

折線圖和柱形圖可以在不同的圖形示例中切換,還原顯示默認折線圖

縱軸座標:代表數量,取值範圍爲自動適應最高值

橫軸座標:代表日期時間

精準測試白皮書v3.0-2019最新版

              圖5.2.2測試用例按日趨勢圖

5.3測試用例-測試用例列表

 
精準測試白皮書v3.0-2019最新版

            圖5.3-1 測試用例列表的詳細信息

顯示製作的測試用例的詳細信息,包括測試用例的名稱、創建時間、執行時間、關聯函數、覆蓋率佔比、運行狀態、測試人員等

精準測試白皮書v3.0-2019最新版

            圖5.3-2 測試用例排行與貢獻
 

5.3.1 星雲精準測試軟件示波器(測試用例跟蹤)

5.3.1.1 測試用例描述

 
對選定測試用例表述其詳細信息,包括測試用的所屬模塊、日期、錄製人、執行時間等。

精準測試白皮書v3.0-2019最新版

              圖5.3.1.1 測試用例描述圖
 

5.3.1.2 錄製記錄

 
記錄示波器最後的接收的塊、條件、函數的總信息,分最新一次和上一次,用於等價類測試比對。
精準測試白皮書v3.0-2019最新版

     圖5.3.1.2-1最新與上一次軟件示波器接收信息對比

按時間倒序排列示波器接收到的函數,記錄程序最後運行的函數狀況,用於定位程序錯誤和測試用例運行過程中的邏輯分析。

精準測試白皮書v3.0-2019最新版

              圖5.3.1.2-2 軟件示波器接收函數圖

5.4測試缺陷-Bug信息彙總

精準測試白皮書v3.0-2019最新版

              圖5.4Bug缺陷彙總

5.4.1 Bug按日趨勢圖和Bug類型分佈組合

 
Bug按日趨勢圖直觀地反映Bug提交趨勢。

點擊折線圖上的點會顯示相應的Bug組成。

精準測試白皮書v3.0-2019最新版

              圖5.4.1 BUG按日趨勢圖

5.4.2 Bug提交排行榜

給出提交Bug的測試工程師的排行榜。

彩條圖可以選擇按照Bug級別顯示,也可以選擇按照Bug類型顯示。

精準測試白皮書v3.0-2019最新版
             圖5.4.2BUG提交排行榜

5.5測試缺陷-Bug詳細列表

精準測試白皮書v3.0-2019最新版

               圖5.5-1 bug詳細列表

顯示提交的BUG的詳細信息、包括提交人、BUG類型、對應的測試用例等。

精準測試白皮書v3.0-2019最新版

              圖5.5-2BUG詳細信息圖

5.6覆蓋率-按日增長趨勢圖

精準測試白皮書v3.0-2019最新版

              圖5.6 按日增長趨勢圖

5.6.1 覆蓋率信息彙總

 
可以查看當前版本覆蓋率的信息,可以選擇多種覆蓋率進行查看以及各個測試模塊佔覆蓋率的比。

精準測試白皮書v3.0-2019最新版

             圖5.6.1 覆蓋率信息彙總圖

5.6.2 覆蓋率按日增長曲線圖

覆蓋率按日增長曲線圖,讓管理者更好的把握測試過程。

精準測試白皮書v3.0-2019最新版

            圖5.6.2 每日覆蓋率增長曲線圖

5.6.3 雷達圖

 
根據項目的需要,測試人員可以自己設置覆蓋率的上限,通過雷達圖展示是否達到預期。

覆蓋率指標是否要每項都到100%纔算測試結束?在覆蓋率達標方面,用戶可以按每個應用的實際情況進行達標線設置。

給出數字化覆蓋率展示的用意在於:讓測試人員通過觀察,能更好的補充完善測試用例。雷達圖的目的,是爲了當測試人員觀察是否達到預期。

精準測試白皮書v3.0-2019最新版

            圖5.6.3 覆蓋率總雷達圖

5.6.4 函數|類|文件覆蓋率統計

 
分析彙總了函數、類、文件的各個覆蓋率量度值,更清晰的掌握目標代碼覆蓋率。

圖內容:顯示當前版本的文件、類、函數在各個覆蓋率之間的分佈。

縱向:代表覆蓋率的不同級別,取各種覆蓋率值,點擊後自動進行切換到相應的覆蓋率

橫向:代表覆蓋率%區間,取值0-20、20-40、40-60、60-80、80-100

總量:代表當前版本的函數總量

精準測試白皮書v3.0-2019最新版

          圖5.6.4 函數|類|文件覆蓋率統計圖

5.7覆蓋率列表

精準測試白皮書v3.0-2019最新版

             圖5.7覆蓋率列表

5.7.1 覆蓋率列表與單函數的覆蓋率、複雜度雷達圖

 
通過對單個函數的覆蓋率的雷達圖設置,用數字化的形式展示核心模塊的測試充分度。

精準測試白皮書v3.0-2019最新版

         圖5.7.1蓋率列表與單函數的覆蓋率、複雜度雷達圖

5.7.2 函數對應的調用關係圖

選擇函數列表的中的函數,對應展示該函數的調用關係,總3層。

精準測試白皮書v3.0-2019最新版

           圖5.7.2 選擇單函數調用關係圖

5.8複雜度-函數|類|包複雜度統計

精準測試白皮書v3.0-2019最新版

           圖5.8 函數/類/文件複雜度統計

5.8.1 複雜度統計信息

爲了正對複雜度的風險,星雲精準測試給出了預警報告表和複雜度詳細列表。

對於安全係數高的客戶,測試人員可以要求開發進行重新設計降低風險。
精準測試白皮書v3.0-2019最新版

                圖5.8.1 複雜度預警

5.8.2 複雜度列表

星雲精準測試報表中,展示所有函數的複雜度信息。

點擊某一函數,會在列表下方繪製對應的雷達統計圖。

精準測試白皮書v3.0-2019最新版

              圖5.8.2複雜度列表

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章