如何使用ThreadingTest提升軟件安全性檢測效率(下)算法
能夠給用戶展現一系列關於軟件系統的總體信息。如:類或者函數以及類的成員函數的總數目,調用關係或者類的繼承關係的深度、層次結構、語句總行數和整體複雜度,總體的測試覆蓋率(分累積的結果和最後一次運行的結果,可選擇語句、分支和MC/DC測試覆蓋率標準)、總體的性能分析結果以及各模塊所佔的用時比例、以及全局變量和靜態變量的分析結果等;同時,又給出了各個模塊具體的信息,包括:各模塊的源碼行數和複雜度、測試覆蓋率分析結果、扇入扇出信息,高亮顯示一個模塊及其全部相關的模塊,或者以任何一個模塊爲根生成局部子樹等。安全
函數調用圖的特性:數據結構
1. 支持百萬圖元級別的超高速圖形繪製技術。ide
2. 支持全屏以及超平滑的放大與縮小技術、平滑的移動技術。函數
3. 支持按照類分組彙集布圖以及按照函數調用關係布圖,層次數量可自由定義。工具
4. 支持逐級的子樹展開和下鑽功能。性能
5. 支持在函數圖元上覆蓋率顯示,以及覆蓋率與函數相關信息的顯示。測試
6. 可追溯:函數調用圖是「活」的,不是靜止不動的,能夠選擇圖中任何一個模塊而追溯全部調用它的路徑和相關模塊以及被他調用的模塊,用於修改模塊不一致性缺陷的預防等。網站
7. 可交互操做,例如高亮顯示一個模塊及其相關模塊,或者單獨繪製一個模塊的調用關係。spa
8. 可選取函數調用圖中任何一個模塊爲根生成局部子圖,而且生成子圖的相關信息,使得團隊的各個組羣或者我的能夠方便的獲得相關的局部信息。
9. 實現各模塊與邏輯框圖的連接:完成宏觀(函數調用圖)與微觀視圖(控制流程圖)的結合,發揮更好的可視化效果
函數調用匯集圖:
以類對函數進行分組,經過圖表把同一類的函數彙集在一塊兒進行展現。
類繼承圖:
顯示的是當前項目全部類的集成和派生關係。
經過函數的if-else,while,for,do-while,switch-case等控制語句結構繪製組成的流程關係的展現圖;配合下方的源代碼展現界面,顯示能清晰查看函數內部運行邏輯和結構、條件的真假運行情況、MC/DC的知足率等。
特性:
1. 可視化的控制流程圖,對主要的控制邏輯語句對應有清晰的圖元顯示,支持嵌套顯示以及串聯顯示。
2. 點擊控制流圖的每一個圖元能夠看到對應的代碼段以及代碼段的執行次數、覆蓋率狀況。
3. 在控制流圖的代碼段,當條件語句成爲選中熱點後,能夠看到條件語句的各個子條件的各類組合執行的真假狀況。
4. 支持縮略圖的顯示,可平滑的進行縮放以及全屏顯示。
5. 能夠與函數調用圖相互自動連接、追溯、轉換。
函數列表:
針對整個程序的全部函數,按照各類覆蓋率、複雜度進行排序,幫助用戶能快速的定位查看全部的函數信息,並經過和函數調用圖、控制流程圖、覆蓋率可視化圖以及累計覆蓋率圖的快速切換,使得用戶在查看和解決實際問題上提供了方便。
在安全性檢測過程當中,一般須要對代碼的設計錯誤進行檢測,而TT提供的CallGraph可以對程序邏輯進行逆向工程,經過逆向的分析結果,測試人員就能夠得到可視化的程序調用結構圖,也就是程序設計的圖形化表達,經過CallGraph所表達的函數的調用邏輯關係以及ControlFlow所表達的程序控制流,能夠協助開發人員和測試人員快速的檢測出程序的設計錯誤。
TT內部支持根據程序的控制流特性對程序進行標準的格式化,所以格式化過程的日誌是對代碼書寫規範性進行檢查。
經過TT的靜態分析功能,對不建議採用的語法進行檢測,例如函數遞歸調用以及goto語句能夠進行檢測。
複雜軟件不穩定,也經不起不可預測的行爲。因此,咱們努力使軟件的複雜度變小。若是有條件採用某種自動化工具,能夠經過工具對軟件設計或/和代碼進行控制,用圖形化的方法反映出軟件結構中的控制流和數據流,經過連結數/調用數、節點數、嵌套深度等這樣一些結構關係的檢查,得到複雜度的度量,將會得到很好的效果。
TT在對代碼的分析過程當中,TT能夠直接給出代碼複雜度的計算結果,一般複雜度越高的軟件模塊更容易引入缺陷,也更加容易引入安全性問題,高度複雜的數據結構難以完全測試,能夠採用TT等複雜性評估技術來標示出須要進一步改進的區域,以便提高軟件的安全性。
TT支持功能測試過程當中的可持續測試技術,即覆蓋率合併,對於多個版本實現智能覆蓋率合併,之前述的函數級多版本對比爲基礎,經過覆蓋率合併算法,準確統計出當前最新版本的累積覆蓋率,從而極大減小測試工程師的重複測試工做。
經過TT的系統級白盒測試功能,咱們能夠經過在功能測試過程當中,部署上TT,而後對全部的測試用例的白盒覆蓋率進行彙總,通過多輪多個用例的測試之後,TT能夠清晰的展現未覆蓋的代碼,這些代碼從安全性角度來說能夠分爲兩類:
1.有些代碼爲垃圾代碼或者不達到代碼,從安全角度來說,這些代碼都程序都存在潛在的安全性威脅,須要進行處理。
2.軟件測試過程當中不充分,這些沒有執行的代碼,極可能存在潛在的安全漏洞,須要補充用例進行測試,保證測試的全面性和充分性。
目前ThreadingTest我的版是無償使用的,能夠在技術網站了解詳情,網址:www.teststars.cc,也能夠在星雲測試網站下載:若是您在安裝與試用過程當中有任何疑問,您能夠加入QQ技術羣-"符號執行-穿線測試「,QQ號爲:「339834199"