設計思想
通過測試示波器技術,記錄黑盒測試用例對應的代碼邏輯,實現測試用例到代碼邏輯的精準記錄和雙向追溯;代碼級的缺陷定位和崩潰分析;精準的測試充分度分析。
關聯代碼的覆蓋率計算可視化技術;條件及其組合執行的可視化;實時的程式運行指標圖形輸出;人工互動式的代碼控制流程圖、函式調用圖。
智慧型回歸測試用例選取算法;基於測試用例執行剖面的用例聚類算法;動、靜態信息的高危測試漏洞檢出算法;多版本測試數據的自動聚合。
所有測試數據均是在測試執行過程中由軟體自動分析並錄入的底層代碼運行數據,記錄測試現場的情況,並基於這些可信的數據給出測試結果。
核心特性
在黑盒測試過程中,由計算機軟體去採集程式執行邏輯以及其他測試數據的過程,測試過程不需要直接面對程式代碼進行。完成測試用例和代碼的自動關聯,將功能測試直接映射到代碼層。
所有數據由系統自動、原生錄入,數據不可篡改,產生測試數據可直接用於測試的過程管理和實效分析。
支持測試數據的精準度量以及全面的、多維度的測試分析算法,將白盒測試的視角從覆蓋率擴展到智慧型測試分析。
基於測試用例和代碼的映射關係,支持快速疊代過程中回歸測試用例的自動選取算法。
精準測試主要是通過技術的改進去對協作、流程進行改進。例如通過精準測試系統可以通過測試自動描述功能的代碼實現邏輯並且可視化展示和存儲,研發可以基於這些信息對系統進行疊代和一致性修改,甚至幫助開發去理解代碼實現邏輯。通過精準測試系統的缺陷定位技術,可以基於功能角度標記ll的測試用例的執行狀態(通過/失敗)以及基於測試用例與代碼的頻譜映射關係,可以自動計算缺陷代碼的懷疑率,給出最可能出錯的代碼塊。
整體架構
精準測試是一種通用的測試分析系統,其內部算法實現與具體業務無關,對於各種類型的套用軟體都可以採用同一套方法進行確認。其最底層的方法是建立測試用例與代碼的關係,任何類型表現形式的軟體都會存在測試用例(功能)與代碼的雙向關聯關係,因此精準測試的套用範圍是廣泛的。由於精準測試本身和使用者本身的業務並沒有直接關係,因此初步的設計測試用例和執行測試用例還是用戶原有的測試體系來進行的,而一旦通過精準測試建立了測試用例和代碼的關係,那么後面將提供計算機輔助測試分析的結果。
精準測試的核心組件包含的軟體測試示波器、智慧型回歸測試用例選取、用例和代碼的雙向追溯、覆蓋率分析、缺陷定位、測試用例自動生成系統、測試用例聚類分析,這些功能完整的構成了精準測試技術體系。精準測試系統的本質是一套的計算機測試輔助分析系統,它的關鍵技術是測試用例和代碼的雙向追溯技術,通過該項技術,很多高級測試算法得以套用同時將測試和開發進行緊密的連線。
軟體測試示波器
精準測試數位化測試在黑盒功能測試過程中採集動態覆蓋率的技術組件,即軟體測試示波器, 精準測試示波器能夠在測試過程中,自動分析程式運行的一些數據指標,以波形的形式進行實時輸出,例如跟蹤顯示程式執行的邏輯塊的速率指標,程式執行的條件數速率指標等。示波器還能夠用來對程式的行為進行分析。例如可以通過示波器來判斷不同的測試用例是否為等價類因此示波器可以記錄每個功能對應的輸入準確的邏輯塊執行的數量,因此當程式的行為發生明顯變化的時候,示波器可以分析出來。
精準測試示波器在使用上對常規的測試沒有特別的干擾,示波器內部也維護一套測試用例,但是更多的是一種符號的象徵。示波器的作用是在測試用例執行的過程中採集測試用例對應的代碼邏輯的運行信息。測試工程師只要真正開始某個用例執行之前,首先選擇測試用例,其次點擊開始錄製按鈕,最後回到套用上根據預先設計的用例流程操作被測試程式即可,當執行結束後單擊結束按鈕。在執行測試用例的過程中所有代碼執行邏輯都會自動映射到這個測試用例上。人工的點擊開始和結束主要用來界定測試用例的執行邊界,示波器會把這個階段產生的程式執行信息映射到所選擇的測試用例上。
用例和代碼的雙向追溯
精準測試提出了測試用例和代碼的雙向追溯,它也是精準測試核心技術之一。即運行一個測試用例以後,精準測試可以通過程式自動的記錄和顯示這個測試用例執行的代碼。如果測試人員關注某一些代碼行,它可以追溯出哪些測試用例在運行過程中運行過這段代碼。通過這個技術特性,測試工程師的每個測試用例都可以進行量化分析和統計,這些量化數據既可以用來對測試工程師進行工作的考量,也可以提供開發人員和測試人員之間進行信息化的交流。
雙向追溯技術記錄了每個測試用例對應的程式內部的執行細節,細緻到每個條件、分支、語句塊的執行情況。開發人員可以通過雙向追溯的結果去理解程式邏輯,進行軟體維護以及進行可一致性的修改。開發和測試可以順利交流,增加測試和開發的交流效率。
雙向追溯技術分為正向追溯與反向追溯。正向追溯是指:將測試用例和代碼執行信息自動關聯,可到函式級別及代碼塊級別;通過正向追溯可直接在代碼級定位測試現場故障和缺陷邏輯,並提供最後運行的時序數據;通過正向追溯自動記錄產生功能對應的詳細設計實現,輔助軟體解耦和架構分析。
反向追溯是指:分析代碼關聯的功能,為研發分析系統和進行一致性修改以及回歸測試分析提供數據。
智慧型回歸測試用例選取算法
精準測試提的智慧型回歸測試用例選取算法 :
(1)檢查測試出的軟體問題是否得到了正確的修改;
(2)被測軟體在被修改之後,各項功能依然正確(未引入新的缺陷)。
右圖展示了回歸測試邏輯
智慧型回歸算法選取的結果 如下:
(1)適應版本疊代周期,適應大的工程項目。
(2)在回歸測試時,自動篩選測試用例,減少回歸測試的時間以及風險。
(3)降低了人工回歸分析產生的測試盲點。
(4)精確計算回歸用例的權重,測試人員在時間有限的情況下可以重點回歸受改動影響最大的用例。
灰盒模式下的代碼覆蓋率分析
測試覆蓋率是測試界公認的可用量化指標。精準測試的設計是通過軟體示波器以透明的測試再系統測試階段取採集代碼覆蓋率,然後再後台完成運算,這個過程是以灰盒的模式運行。
精準測試覆蓋率形式多樣,最高支持標準MC/DC的100%覆蓋率要求,有覆蓋率每日增長趨勢圖。通過該報表觀察整個測試進度情況,精準測試平台的覆蓋率趨勢圖通過對於團隊的質量控制,能夠對測試進度進行預判,也能夠對測試效率進行有效的識別。
測試用例的聚類分析
基於精準測試系統,構建的測試用例與代碼的的執行剖面的關係,可以對測試用例的執行進行聚類分析。根據真實的執行剖面進行聚類,將會對測試用例的聚集性屬性進行分析。測試用例的執行剖面結構矩陣的輸入為兩維數據,第一維為測試用例的名稱(ID),然後是該用例對應的函式執行剖面或者代碼塊執行剖面,然後將剖面數據向量化以後通過K-Means等標準聚類算法進行聚類分析。
精準測試的效率
精準測試是結合傳統的黑盒測試與白盒測試相結合的模式,它可以在黑盒測試過程中,通過專用程式自動採集白盒級別的運行邏輯數據,根據可視化出來的不足點和漏洞點,引導開發和測試有針對性的補充用例。
精準測試系統在長期的軟體維護過程中精準測試系統對於維護的效率提升。精準測試下的維護完全由計算機的分析系統所主導,大型軟體之所以難以維護,是因為傳統的軟體開發過程對於軟體維護更多的基於人對於軟體系統的理解,而隨著維護的進行人的記憶以及人員的變動都影響維護的效率,還有就是老的系統維護成本會不斷增加。精準測試則通過測試過程中所記錄的數據,在持續的疊代過程中記錄分析數據,隨著疊代的進行,數據記錄的累積,從而得到分析結果。