Threadingtest(簡稱「TT」)是一款跨平臺、多語言、集測試與輔助開發於一體的智能測試工具平臺android
一、智能化:鏈接開發與測試之間的穿線技術c++
第五代白盒覆蓋率技術(實現美軍標DO-178B MC/DC白盒結構測試技術,實現100%覆蓋率)windows
二、可視化:超高速、大型、互動的圖形化系統多線程
實時的示波器級的測試數據檢測分佈式
多個版本的代碼比對視圖ide
三、支持多種語言、平臺和應用:一期已經發布了對J2EE應用的版本以及針對Android應用的版本函數
二期將發佈蘋果移動應用版本以及c/c++版本工具
三期向多線程高速運轉的遊戲類應用擴展。性能
支持Android/MAC OS X/Windows XP/7/2003/vista/Linux/Unix等多個系統環境單元測試
四、編譯技術:100%Java語法支持,最高支持Java1.7版本
一、鏈接開發與測試之間的穿線技術
測試用例與程序代碼的雙向穿線
將覆蓋率分析結果做爲穿線鏈接開發與測試
幫助測試人員可視化開發人員單元測試結果
基於穿線技術實現的智能化迴歸測試用例選取技術
二、第五代覆蓋率技術
多版本的累計覆蓋率技術
無需監管的覆蓋率蒐集
支持在程序結構圖、控制流程圖等多種圖形上顯示覆蓋率
支持分佈式測試
實現美軍標DO-178B MC/DC白盒結構測試技術
三、超高速、大型、互動的圖形化系統
支持百萬圖元級別的超高速圖形繪製技術
支持全屏以及超平滑的放大與縮小技術、平滑的移動技術
支持按照類分組彙集布圖以及按照函數調用關係布圖,層次數量可自由定義
支持逐級的子樹展開和下鑽功能。
四、實時執行邊作測試邊看示波器
實時的被測應用執行監控示波器
被測應用的每個動做能夠被示波器檢測到
能夠從執行數據塊數量、函數數量、條件數量等多個指標進行實時的監控
下面就讓咱們對CSDN上,Android開源遊戲項目捕魚達人遊戲進行深度的測試演示。
(1)安裝JDK並配置JDK環境變量,要求1.6以上版本
配置環境變量 步驟:
a)右擊「個人電腦」-->"高級"-->"環境變量"
b)在系統變量裏新建JAVA_HOME變量,變量值爲:C:\jdk1.7.0_01(根據本身的安裝路徑填寫)
c)新建classpath變量,變量值爲:
.;C:\jdk1.7.0_01\lib\dt.jar;C:\jdk1.7.0_01\lib\tools.jar;(程序根據本身的安裝路徑填寫)
d)在path變量(已存在不用新建)添加變值:
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin(注意變量值之間用「;」隔開)
(2)安裝Android SDK並配置其環境變量,Android SDK按照版本依靠測試Android項目所用版本,沒有其餘特別要求。
配置環境變量 步驟:
a)右擊「個人電腦」-->"高級"-->"環境變量"
b)在path變量值添加platform-tools的目錄路徑,例如
E:\android-sdk_r20.0.3-windows\android-sdk-windows\platform-tools
(3)安裝TT,完成後申請試用碼,將申請回執右鍵附件的key.key文件放置TT安裝根目錄下,TT的示波器界面可正常使用。
申請key.key表格的填寫:
測試一個工程以前,首先要在TT上編譯被測項目,編譯完成後TT面板上會加載被測項目和項目的相關信息。編譯步驟以下:
1.TT主界面工具欄File->ManageProject,進入多版本管理界面。
2.點擊Add按鈕,添加一個新的項目。
s4這種s4這種
2.繼續點擊Add按鈕,在新建的項目下面添加一個新的版本
4.進入編譯界面,配置編譯選項卡,點擊build進行編譯。
5.點擊build以後會出現編譯輸出信息的窗口,編譯完成以後會彈出Build Finish!的提示窗口,而且在用戶指定的APK安裝包生成的路徑下生成了相應的apk包,這兩個apk包之間是沒有區別的。要跑測試用例,接受測試數據前,應安裝這兩個apk包中的任意一個。
ThreadingTest支持USB鏈接、wifi熱點以及模擬器三種方式進行測試數據傳輸,您能夠選擇如下任何一種方式進行測試體驗。(案例以USB鏈接方式作簡單介紹)
(1)打開移動設備USB調試(注:移動設備須要打開USB調試,安裝相應的移動設備驅動程序)
(2)確保Android設備於PC機鏈接正常(您能夠採用百度手機助手或者360助手等方便查看鏈接狀況),將上述生成的APK安裝到USB鏈接的Android設備上。
(3)設置本機IP(注:USB接受數據必須修改ThreadingTest接收端IP爲文件爲本機IP),點擊View菜單點選DTCView進入DTC監控界面點擊設置ip按鈕設置本機ip。
第一步:啓動端口映射以前,請先檢查Android SDK是否配置了環境變量
點擊「開始」-->「運行」-->輸入「adb」-->"Enter",若是能正常打印用法說明配置正確能夠進行第二步操做,若是沒有配置正確請參考「ThreadingTest Android App Edition安裝配置」進行Android SDK的安裝以及環境變量配置。
第二步:在ThreadingTest的安裝目錄下,查找adb-android.bat文件,點擊執行,啓動端口映射。
(1)點擊TT工具欄View->DTCView進入示波器界面
2)在示波器界面的左側,建立測試用例,針對捕魚達人小遊戲設計的測試用例列表以下:
一級測試用例類型 |
二級測試用例類型 |
測試用例名稱 |
測試用例描述 |
遊戲模式 |
簡單模式 |
在界面不作任何操做 |
不對遊戲界面作操做,時間消耗完結束 |
***強度爲1進行遊戲 |
在默認的***強度狀況下進行捕魚操做 |
||
轉換***強度進行遊戲 |
測試轉換***強度進行遊戲 |
||
遊戲中點擊暫停繼續按鈕 |
測試捕魚界面的暫停/繼續按鈕 |
||
遊戲界面去除音效的設置 |
測試音效設置 |
||
普通模式 |
在界面不作任何操做 |
同普通模式 |
|
***強度爲1進行遊戲 |
同普通模式 |
||
轉換***強度進行遊戲 |
同普通模式 |
||
遊戲中點擊暫停繼續按鈕 |
同普通模式 |
||
遊戲界面去除音效的設置 |
同普通模式 |
||
困難模式 |
在界面不作任何操做 |
同普通模式 |
|
***強度爲1進行遊戲 |
同普通模式 |
||
轉換***強度進行遊戲 |
同普通模式 |
||
遊戲中點擊暫停繼續按鈕 |
同普通模式 |
||
遊戲界面去除音效的設置 |
同普通模式 |
||
遊戲設置 |
音效調節 |
在遊戲設置選項中,調節音量,作測試 |
第一步:在TT中創建上述表格中的測試用例結構,右鍵DTCView界面左側,添加測試用例類型,以下截圖:
第二步:在一個測試用例添加完成以後,右擊該測試用例類型,選擇添加測試用例類型或者測試用例,按照設計的測試用例類型結構完成。下圖是測試用例添加窗口
(7)選擇示波器界面中剛創建的用例,選擇start進行數據接收。鏈接移動設備有USB和熱點等多種方式能夠點擊help得到相關說明。
主界面的CallGraph、ControlFlow、ListView三個視圖是能夠相互切換的,咱們能夠經過查看每一個函數的各個覆蓋率的數據,若是覆蓋率沒有達到100%的,能夠選擇查看函數的那部分代碼或者分支執行的測試用例沒有覆蓋到。
ListView視圖是以列表的形式顯示了項目包含的全部函數的各類覆蓋率信息和複雜度信息的統計數據,支持翻頁、跳轉指定頁,按各列升序排序等功能。
設置跳轉到CoverageView中的函數調轉,選中的函數的SC0=80% ,SC1=88.9%,SC1+=88.9%,JC0=5, JC1=11,JC1+=9。
例如:SC0塊測試覆蓋。若是程序的全部可見段(程序塊)至少被執行一次,則該段程序的SC0覆蓋率達到了100%。
SC0= 被執行的塊個數/該段程序包含的塊個數(便可見段個數),JC0=一段程序的塊的個數。也就是JC0是SC0的分母。一樣JC1是SC1的分母,JC1+是SC1+的分母。
(1)以SC0爲例子,怎麼查看那些塊沒有被測試用例組覆蓋到,引導測試人員完善測試用例,達到100%覆蓋。
跳轉到CoverageView界面,以下圖,選擇Coverage->SC0,覆蓋率是80%,該覆蓋塊包含的靜態代碼塊是5,覆蓋到的是4塊,能夠看到藍色的Block:978沒有覆蓋到,若是測試用例知足了if(i<5) 這個條件,那麼Block:978塊就會被覆蓋到。
固然咱們也能夠在ControlFlow視圖部分看到相應的代碼執行覆蓋狀況,以下圖咱們能夠看到return true;這個語句的執行次數爲0,if(i<10)中的i<10的真分支沒有被執行,只有假分支被執行過。
(2)TT提供的段覆蓋包括SC0,SC1,SC1+,那TT爲何光段覆蓋率就會提供三種呢?
咱們都知道普通的段覆蓋被看作最弱的覆蓋率,而大多數軟件測試過程當中所提到的段覆蓋就是TT的 SC0覆蓋,這種覆蓋率標準只考慮覆蓋代碼中的執行語句塊,卻不考慮各類語句結構的分支覆蓋狀況等,所以每每被看作比較弱的覆蓋,但倒是很必要的一種覆蓋量度。TT考慮到普通的段覆蓋的缺點,所以在SC0的基礎上提出了SC1以及SC1+覆蓋率,都是SC0覆蓋率的增強版。
SC1——標準段測試覆蓋。若是程序的全部頂端不可見段至少被執行一次而且知足SC0 100%覆蓋,則該程序的一組測試用例知足SC1 100%覆蓋。
SC1=被執行的代碼塊(包括不可見段0以及不可見段2)/該段程序包含的塊個數(包括不可見段0以及不可見段2)
不可見段0(if和swicth)判斷體結束後的不可見段,即if和switch中條件斷定式不知足的狀況,會存在一個不可見段
不可見段2(for、while和do-while)循環體結束後的不可見段,即for、while、do-while循環條件不知足時,會正常跳出循環,這時會存在一個不可見段。
SC1+——加強標準段測試覆蓋。若是程序的全部低端循環邊界不可見段至少被執行一次而且知足SC1 100%覆蓋,則該程序的一組測試用例知足 SC1+ 100%。
SC1+=被執行的代碼塊(包括不可見段0,不可見段2以及不可見段1)/該段程序包含的塊個數(包括不可見段0,以及不可見段2以及不可見段1)
不可見段1(for和while)非正常的結束循環體時的不可見段,也就是指for和while循環體一次都沒有被執行的狀況,這時會存在一個不可見段。
上述那個例子的覆蓋率信息是SC0=80% ,SC1=88.9%,SC1+=88.9%,SC1和SC1+相同,那這就意味着這個函數代碼中沒有for以及while循環,SC0和SC1不一樣意味着這個函數代碼中存在條件語句。
SC0各段的覆蓋狀況
SC1各段的覆蓋狀況
上圖中紅色框的爲條件的隱藏段,也就是當條件不知足時所走的分支,4個隱藏代碼塊都被執行過,也就意味着這4個條件的假分支都至少被執行過一次。能夠轉換到ControlFlow視圖部分,這些條件的假分支是都被執行過的。
TT除了提供了幾種段覆蓋率統計,也提供了條件斷定的多種覆蓋率,具體的有條件爲真(TURE),條件爲假(FALSE)、條件真假(BOTH)、分支覆蓋又稱斷定覆蓋(Branch覆蓋)、條件/斷定覆蓋(C/DC)、修正的條件斷定/覆蓋(MC/DC)。TT囊括了幾乎全部的條件斷定類的覆蓋率。給測試人用提供程序中各類條件斷定式中各條件以及各斷定的真假分支執行狀況以及各類相關複雜度統計數據,直觀、多方位、幾近全面的邏輯表達式的分支覆蓋統計讓繁雜的測試變得容易、簡單、精準。
經過ControlFlow視圖部分,選中代碼中條件斷定式,右側窗口會顯示各個條件、條件組合以及整個斷定表達式的真假分支被執行的狀況,表示執行過、表示沒有被執行。測試人員能夠根據執行狀況,去補充增長相應的測試用例,完善測試,達到100%覆蓋測試。若是測試人員不能很好的設計補充測試用例,能夠和開發人員進行溝通,肯定沒被覆蓋的分支如何設計測試用例。經過TT很直觀很準確的定位到那塊代碼或那些分支沒有被覆蓋,讓測試和開發很好的協同工做,減小了溝通時間,同時也減小了溝通障礙。
在軟件開發過程當中,保證代碼質量時,每每會被要求控制代碼複雜度。複雜度稱爲代碼量度是通過了很長的一段歷史經歷的,令大多人熟知的圈複雜度簡稱CC也是這段歷史的產物,每一個公司都會有對圈複雜度的一個告警值。
TT經過複雜度分析,給出多種複雜度的計算值,對於高複雜度的模塊應考慮重構。對於高複雜度的模塊,還能夠進一步得知其控制流程圖和邏輯框圖的複雜程度。控制好複雜度能有效地加強軟件產品的可維護性,下降bug的發生率,同時也讓軟件產品的測試工做能更好的進行。
TT提供的複雜度除了以前提到的JC0,JC1,JC1+,CC0(包含case語句在內的圈複雜度)、CC1(不包含case在內的圈複雜度)以及JC2(條件-段的測試複雜度)
JC2=全部可見段+不可間段+全部條件斷定語句個數。
在ListView裏面咱們能夠點擊某個複雜度對函數進行升序降序排列,對於高複雜度的,點擊調轉到ControlFlow圖部分查看對應的控制流程圖。能夠和開發人員溝通,對模塊進行優化,控制複雜度,使得測試工做更好展開。
點擊工具欄View->Analyzer Report進入報表界面。
(1)基本信息統計部分
主要是對當前項目的當前版本的行數統計、包數量統計、文件數量統計、類數量統計、函數數量統計以及測試用例數量統計。
(2)覆蓋率扇形圖
TT我的版的目前的覆蓋率的劃分是固定的,劃分了4個區域分別是0%~25%、25%~50%、50%~75%、75%~100%。TT的企業版的這些數據區間是能夠自動設置的,企業能夠根據項目的要求設定合適的有針對性的覆蓋率區間。
下圖爲本次案例的覆蓋率統計,能夠看到設計的測試用例的仍是沒有充分測試的,須要有針對性的增長測試用例完善測試。
文件的各個覆蓋率統計扇形圖
類的各個覆蓋率統計扇形圖
函數的各個覆蓋率統計扇形圖
(3)複雜度扇形圖
TT的我的版針對複雜度的劃分區間是根據行業經驗值來劃分的,歷史研究認爲複雜度大於10會存在很大的出錯風險。咱們能夠看到整個源代碼中絕大多數的函數的複雜度都是<10,只有少數的函數還須要進一步優化改進。
(4)覆蓋率統計
LRV:表示最後一次運行時的覆蓋率
CLV:表示累積覆蓋率
橫座標表示:SC0,SC1,SC1+,TRUE,FALSE,BOTH,BRANCH,CDC,MCDC 九種不一樣類型的函數覆蓋率;
縱座標表示: 不一樣類型覆蓋率*100的數值;
(5)覆蓋率按天的增加曲線圖
橫軸表示不一樣的日期;縱軸表示覆蓋率*100的數值;
***圖形部分表示覆蓋率的變化走勢
(6)排行榜
TT提供的排行榜有
1.函數複雜度排行(顯示覆雜度最高的10個函數以及對應的複雜度)
2.函數熱度排行(執行次數最多的10個函數以及執行次數)
3.測試用例貢獻度排行(測試覆蓋率作多的10個測試用例)
4.正向追溯排行(測試覆蓋函數最多的10個測試用例,根據波及到的函數數量排行)
5.逆向追溯排行(波及到的用例數最多的10個函數)
6.扇入扇出最多的函數排行
7.條件複雜度排行(按照子條件的數量排行,列出MC/DC覆蓋率)
支持分佈式應用的集成測試
當用戶的系統爲分佈式系統,由多個組件在集成環境下同時對外提供服務的狀況下,TT支持對這個分佈式環境的各個組件及其交互的聯合測試。便可以看到一個外部請求,對很少個子系統之間的全部的執行狀況。
支持多用戶同時測試與測試數據的有效隔離
TT容許多個用戶同時對被測應用測試,而不一樣用戶針對不一樣用例即時在同一時刻作的測試而產生的測試數據之間也不會發生任何混淆的狀況
對移動端白盒測試技術或者性能測試感興趣,請加入羣符號執行 339834199
軟件試用申請官網:www.threadingtest.com