




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1會(huì)計(jì)學(xué)ThreadingTest白盒測試白盒測試04對外集訓(xùn)對外集訓(xùn)穿線測試的理念穿線測試的理念什么是穿線測試?n通過技術(shù)手段,將開發(fā)者和測試者的工作組件串聯(lián)起(穿針引線),實(shí)現(xiàn)功能測試與對應(yīng)的程序源代碼執(zhí)行邏輯的雙向穿線,并在此基礎(chǔ)之上將開發(fā)與測試兩個(gè)過程進(jìn)行緊密的連接。 (DevOPS技術(shù):是建立開發(fā)與運(yùn)維之間的聯(lián)系,打破二者之間的信息鴻溝。)穿線測試穿線測試- ThreadingTest- ThreadingTest什么是ThreadingTestnThreadingTest(簡稱“TT”)是一款白盒測試軟件,將黑盒測試與白盒測試過程以及方法進(jìn)行完美的融合,以黑盒的測試過程及方法,產(chǎn)生
2、白盒測試的數(shù)據(jù),同時(shí)TT也是全球首款純軟件類的商用級別的移動(dòng)端白盒測試工具,可以對各種類型的移動(dòng)類應(yīng)用進(jìn)行測試。TT是一款真正對軟件測試過程和結(jié)果進(jìn)行深度量化分析的智能測試工具更是一款測試數(shù)據(jù)數(shù)字化管理工具。產(chǎn)品結(jié)構(gòu)連接開發(fā)與測試之間的穿線技術(shù)連接開發(fā)與測試之間的穿線技術(shù)穿線測試通過技術(shù)手段,讓開發(fā)與測試從某種對立關(guān)系,變?yōu)橛押玫膮f(xié)作關(guān)系,且二者可以充分互動(dòng)。 自動(dòng)建立的測試制品(測試用例)與開發(fā)制品(代碼邏輯)之間的雙向追溯。雙向追溯雙向追溯(圖)反向追溯界面(圖)正向追溯界面圍繞雙向追溯結(jié)果的高效互動(dòng)圍繞雙向追溯結(jié)果的高效互動(dòng)測試人員通過“點(diǎn)點(diǎn)點(diǎn)”也可以拿到每輪測試過后的量化數(shù)據(jù),和開發(fā)人
3、員有依據(jù)的討論如何對覆蓋率低的補(bǔ)充用例,讓測試人員關(guān)注更具技術(shù)含量的工作。徹底共享測試與開發(fā)信息,測試用例將被開發(fā)人員使用到需求確認(rèn)以及做代碼變更時(shí)候的支撐數(shù)據(jù)。1無需測試人員的故障描述、重現(xiàn)等流程,開發(fā)可以實(shí)時(shí)看用例執(zhí)行的程序內(nèi)部細(xì)節(jié),快速定位問題點(diǎn)。2測試人員通過“點(diǎn)點(diǎn)點(diǎn)”也可以拿到每輪測試過后的量化數(shù)據(jù),和開發(fā)人員有依據(jù)的討論如何對覆蓋率低的補(bǔ)充用例,讓測試人員關(guān)注更具技術(shù)含量的工作。3徹底共享測試與開發(fā)信息,測試用例將被開發(fā)人員使用到需求確認(rèn)以及做代碼變更時(shí)候的支撐數(shù)據(jù)。多個(gè)測試階段的穿線多個(gè)測試階段的穿線穿線測試的另外一個(gè)核心理念是將單元測試、集成測試、系統(tǒng)測試等多個(gè)測試結(jié)果串聯(lián)并且
4、共享。測試人員可以看到開發(fā)人員單元測試的測試結(jié)果,這樣就可以將重點(diǎn)放到功能驗(yàn)證,提高測試的效率。開發(fā)人員可以直接得到遠(yuǎn)距離的測試結(jié)果。并且快速排查缺陷。1穿線測試的另外一個(gè)核心理念是將單元測試、集成測試、系統(tǒng)測試等多個(gè)測試結(jié)果串聯(lián)并且共享。2測試人員可以看到開發(fā)人員單元測試的測試結(jié)果,這樣就可以將重點(diǎn)放到功能驗(yàn)證,提高測試的效率。3開發(fā)人員可以直接得到遠(yuǎn)距離的測試結(jié)果。并且快速排查缺陷。 穿線測試通過一些列專利技術(shù),實(shí)現(xiàn)了所有第4代白盒測試技術(shù),并在此基礎(chǔ)上做了較大的創(chuàng)新穿線測試的白盒技術(shù)穿線測試的白盒技術(shù)是否可重復(fù)測試是否測試評估是否自動(dòng)測試是否持續(xù)測試是否可雙向追溯第一代否否否否否第二代是
5、是否否否第三代是是是否否第四代是是是是否穿線測試是是是是是 黑與白的對比黑與白的對比- -最有效的測試?yán)碚撟钣行У臏y試?yán)碚摵诤袦y試方法白盒測試方法黑與白結(jié)合使用的測試方法(穿線測試)通過上述3種方法示意圖我們可以看到:傳統(tǒng)的黑盒測試在70%前的階段,查找BUG是非常迅速的,但之后有可能幾天都發(fā)現(xiàn)不了一個(gè)BUG。傳統(tǒng)白盒測試雖然穩(wěn)步上升,但卻因?yàn)榉N種因素導(dǎo)致其測試時(shí)間過長。結(jié)合使用方式:采用前70%用黑盒的測試方式,快速的定位BUG以及制作測試用例和測試覆蓋率,當(dāng)超越黑盒測試的差錯(cuò)瓶頸區(qū)后,采用黑盒所得到的覆蓋率信息,使用白盒的測試方法來發(fā)現(xiàn)隱蔽性強(qiáng)的缺陷和漏測點(diǎn)。提供精確量化的8種覆蓋率指標(biāo)和
6、測試評估數(shù)據(jù)。支持航天航空最高規(guī)格的MC/DC覆蓋率標(biāo)準(zhǔn)。提供精確量化的8種覆蓋率指標(biāo)和測試評估數(shù)據(jù)。支持航天航空最高規(guī)格的MC/DC覆蓋率標(biāo)準(zhǔn)。實(shí)現(xiàn)可持續(xù)的測試環(huán)境下多版本的覆蓋率結(jié)果累積。支持企業(yè)分布式的測試環(huán)境全新的應(yīng)用功能全新的應(yīng)用功能1提供精確量化的8種覆蓋率指標(biāo)和測試評估數(shù)據(jù)。支持航天航空最高規(guī)格的MC/DC覆蓋率標(biāo)準(zhǔn)。2實(shí)現(xiàn)可持續(xù)的測試環(huán)境下多版本的覆蓋率結(jié)果累積。3支持企業(yè)分布式的測試環(huán)境。 TT的引入,在幾乎對原有常規(guī)黑盒測試流程不干擾的情況下,以優(yōu)雅的形式完成白盒測試。智能的穿線方法,不改變原有測試流程智能的穿線方法,不改變原有測試流程穿線測試介于黑盒與白盒之間,既關(guān)注功能
7、的輸入輸出的正確性測試,也注重內(nèi)部結(jié)構(gòu)的測試。既包含了黑盒和白盒的優(yōu)點(diǎn),又彌補(bǔ)了兩者的不足。與黑盒測試無縫對接TT以其獨(dú)特的技術(shù)特性,協(xié)同開發(fā)和測試人員進(jìn)行高效的溝通互動(dòng),讓開發(fā)和測試融為一體,通過2+1(測試、開發(fā)+TT)的模式。智能的穿線方法,不改變原有測試流程智能的穿線方法,不改變原有測試流程超高速、大型、互動(dòng)的圖形化系統(tǒng)超高速、大型、互動(dòng)的圖形化系統(tǒng)TT支持程序結(jié)構(gòu)圖、類繼承圖、函數(shù)控制流程圖等多種圖形的動(dòng)態(tài)顯示。 其中”函數(shù)調(diào)用圖”圖形具有以下高級特性n支持百萬圖元級別的超高速圖形繪制技術(shù)。n支持全屏以及超平滑的放大與縮小技術(shù)、平滑的移動(dòng)技術(shù)。n支持按照類分組聚集布圖以及按照函數(shù)調(diào)用
8、關(guān)系布圖,層次數(shù)量可自由定義。n支持逐級的子樹展開和下鉆功能。n支持在函數(shù)圖元上顯示覆蓋率與函數(shù)相關(guān)信息的顯示。超高速、大型、互動(dòng)的圖形化系統(tǒng)超高速、大型、互動(dòng)的圖形化系統(tǒng)函數(shù)調(diào)用圖超高速、大型、互動(dòng)的圖形化系統(tǒng)超高速、大型、互動(dòng)的圖形化系統(tǒng)控制流程圖軟件示波器軟件示波器邊做測試邊看“示波器”, TT率先引入了測試過程軟件示波器的概念,在實(shí)際測試的過程中,測試員可以看到類似于心電圖的數(shù)據(jù)獲取模式??梢钥吹皆谶\(yùn)行游戲過程中,示波器會(huì)把游戲運(yùn)行的塊、條件、函數(shù)的數(shù)量以心電圖的形式顯示出來。軟件示波器軟件示波器示波器心電圖展示方式和Console模式帶來的優(yōu)點(diǎn)n可視化觀察程序運(yùn)行情況。波形可直觀反應(yīng)
9、程序行為。n在console中能看到最近的函數(shù)運(yùn)行堆棧。n通過波形分析程序在各種硬件平臺(tái)上的運(yùn)行性能。n可輔助判斷等價(jià)類以及分析程序行為的變化。 TT示波器的Console模式,讓測試人員在測試過程中顯示獲取的函數(shù)名稱(顯示前50條)。并可以按自己需求以3秒-1分鐘的自動(dòng)刷新或手動(dòng)刷新獲取函數(shù)的列表。(1)為自動(dòng)時(shí)間和手動(dòng)刷新條。(2)為獲取的函數(shù)所在類名、函數(shù)名、函數(shù)的參數(shù)。穿線測試應(yīng)用價(jià)值穿線測試應(yīng)用價(jià)值使軟件開發(fā)商、需求方、第三方測試商成本降低至少25%以上。打破軟件開發(fā)者和軟件測試者的交流障礙,建立透明追溯機(jī)制。n通過技術(shù)手段建立開發(fā)與測試的高效互動(dòng)與聯(lián)系,大幅解放生產(chǎn)力。n徹底改變測
10、試過程枯燥、無技術(shù)含量現(xiàn)狀,測試過程變得有趣、實(shí)時(shí)可監(jiān)控。n5GWM,將可實(shí)施白盒測試技術(shù)正式帶入業(yè)界。n現(xiàn)與敏捷開發(fā)的配合,支持增量開發(fā)、需求變更、缺陷預(yù)防。n傻瓜似簡潔操作模式,內(nèi)部實(shí)現(xiàn)復(fù)雜,操作簡單易理解,可向全球開發(fā)、測試人員推廣。n在安全事件加速去IOE背景下,率先實(shí)現(xiàn)國產(chǎn)商用級的專業(yè)測試工具。觀觀ThreadingTest的進(jìn)化史的進(jìn)化史2個(gè)人基礎(chǔ)版?zhèn)€人基礎(chǔ)版 - - 單機(jī)版單機(jī)版1.1.企業(yè)私有云版企業(yè)私有云版2.2.在線云測試在線云測試3.3.專家測試專家測試1.TT測試產(chǎn)品,分基礎(chǔ)個(gè)人和企業(yè)私有云版2.專家測試,基于我們穿線測試方法以及測試標(biāo)準(zhǔn),對用戶做專家測試服務(wù),希望希望
11、儲(chǔ)備并培養(yǎng)專家測試團(tuán)隊(duì)儲(chǔ)備并培養(yǎng)專家測試團(tuán)隊(duì)3.星云測試,是基于在穿線測試?yán)砟詈头椒ù罱ǖ脑茰y是平臺(tái),我們可以提供給用戶專業(yè)的測試平臺(tái)和數(shù)字化分析匯總ThreadingTestThreadingTest工具介紹工具介紹3 ThreadingTest(簡稱“TT”)是一款白盒測試軟件,將黑盒測試與白盒測試過程以及方法進(jìn)行完美的融合,以黑盒的測試過程及方法,產(chǎn)生白盒測試的數(shù)據(jù),同時(shí)TT也是全球首款純軟件類的商用級別的移動(dòng)端白盒測試工具,可以對各種類型的移動(dòng)類應(yīng)用進(jìn)行測試。TT是一款真正對軟件測試過程和結(jié)果進(jìn)行深度量化分析的智能測試工具更是一款測試數(shù)據(jù)數(shù)字化管理工具。穿線測試的測試過程:穿線測試的測
12、試過程: 個(gè)人基礎(chǔ)版?zhèn)€人基礎(chǔ)版 1.用TT編譯工程2.連接并映射TT和測試設(shè)備(例Android:真機(jī)/模擬器)3.編寫并執(zhí)行測試用例,示波器接受實(shí)時(shí)的測試數(shù)據(jù)4.通過個(gè)人版開放的功能去做白盒測試分析 企業(yè)環(huán)境中使用企業(yè)環(huán)境中使用 1.開發(fā)工程師使用TT編譯組建去編譯打包工程(APK)2.測試工程師通過安裝APK,連接TT測試客戶端進(jìn)行測試數(shù)據(jù)收集3.ITC企業(yè)私有云自動(dòng)匯總測試數(shù)據(jù),測試工程作白盒測試分析ThreadingTestThreadingTest使用常見問題使用常見問題TTTT插樁編譯類問題:插樁編譯類問題: 1.如果項(xiàng)目存在較為復(fù)雜的項(xiàng)目依賴,個(gè)人版的一鍵式編譯方式可能會(huì)編譯打不
13、成功 解決方案跟TT的技術(shù)支持溝通并走TT企業(yè)版申請的流程 2.出現(xiàn)語法錯(cuò)誤,請反饋給TT的技術(shù)支持,技術(shù)支持會(huì)給出解決方案 3.如果項(xiàng)目不是eclipse結(jié)構(gòu)的,也會(huì)出現(xiàn)個(gè)人版一鍵式編譯方式失效 解決方案跟TT的技術(shù)支持溝通并走TT企業(yè)版申請的流程 TTTT連接類問題,一般表現(xiàn)為接受不到測試數(shù)據(jù)連接類問題,一般表現(xiàn)為接受不到測試數(shù)據(jù)可能的原因可能的原因: : 1.做端口映射的端口5037被別的應(yīng)用占用,一般會(huì)占用的有(手機(jī)助手、豌豆莢、360軟件管理)查看并殺死該進(jìn)程之后重新做端口映射 2.設(shè)置本機(jī)IP和端口映射的順序反了,正確的順序是設(shè)置IP-端口映射 3.被測Android程序的Mani
14、fest文件中沒有加數(shù)據(jù)傳輸?shù)臋?quán)限,因此接受不到數(shù)據(jù),應(yīng)加上對應(yīng)的權(quán)限之后重新打包APK,安裝并測試 4.公司網(wǎng)可能存在防水墻、防火墻,這個(gè)也會(huì)會(huì)導(dǎo)致端口映射不成功 白盒測試白盒測試靜態(tài)分析靜態(tài)分析4 白盒測試又稱透明盒測試,軟件測試的主要方法之一,測試應(yīng)用程序的內(nèi)部結(jié)構(gòu)和運(yùn)作運(yùn)作。 函數(shù)函數(shù) 調(diào)用圖調(diào)用圖控制控制流程圖流程圖代碼邏輯代碼邏輯復(fù)雜度分析復(fù)雜度分析靜態(tài)分析常用的方法:靜態(tài)分析常用的方法: 白盒測試工程師在做靜態(tài)分析的時(shí)候需要對程序進(jìn)行函數(shù)調(diào)用圖和控制流程圖的繪制,工作量較大,另外代碼邏輯復(fù)雜度分析人工分析也比較耗費(fèi)時(shí)間 通過查看函數(shù)調(diào)用關(guān)系圖,可以檢查函數(shù)之間的調(diào)用關(guān)系是否符合要
15、求,是否存在遞歸調(diào)用,函數(shù)的調(diào)用是否過深,有沒有存在獨(dú)立的沒有被調(diào)用的函數(shù)。從而可以發(fā)現(xiàn)系統(tǒng)是否存在結(jié)構(gòu)缺陷,發(fā)現(xiàn)哪些函數(shù)是重要的,哪些是次要的,需要使用什么級別的覆蓋要求ThreadingTestThreadingTest代碼結(jié)構(gòu)自動(dòng)圖形化繪制代碼結(jié)構(gòu)自動(dòng)圖形化繪制函數(shù)調(diào)用函數(shù)調(diào)用關(guān)系圖關(guān)系圖 01支持百萬圖元級別的超高速圖形繪制技術(shù)。 02支持全屏以及超平滑的放大與縮小技術(shù)、平滑的移動(dòng)技術(shù) 03支持按照類分組聚集布圖以及按照函數(shù)調(diào)用關(guān)系布圖,層次數(shù)量可自由定義。 04支持逐級的子樹展開和下鉆功能。 05支持在函數(shù)圖元上顯示覆蓋率與函數(shù)相關(guān)信息的顯示allGraphallGraph Thre
16、adingTestThreadingTest的函數(shù)調(diào)用圖具有以下高的函數(shù)調(diào)用圖具有以下高級特性級特性 程序流程圖是最容易理解的一種程序控制結(jié)構(gòu)的圖形表示法??刂屏骺刂屏鞒虉D程圖可視化的控制流程圖,對主要的控制邏輯語句對應(yīng)有清晰的圖元顯示,支持嵌套顯示以及串聯(lián)顯示。點(diǎn)擊控制流圖的每個(gè)圖元可以看到對應(yīng)的代碼段以及代碼段的執(zhí)行次數(shù)、覆蓋率情況。在控制流圖的代碼段,當(dāng)條件語句成為選中熱點(diǎn)后,可以看到條件語句的各個(gè)子條件的各種組合執(zhí)行的真假情況。支持縮略圖的顯示,可平滑的進(jìn)行縮放以及全屏顯示。01020304ontrolFlowontrolFlow ThreadingTestThreadingTest的
17、控制流程圖具有以下的控制流程圖具有以下高級特性高級特性復(fù)雜度復(fù)雜度分析分析 代碼復(fù)雜度指:代碼中所含分支語句的數(shù)目,包括“if”,“for”, “while”, “do-while”,“switch-case”等語句。對于高復(fù)雜度的模塊來進(jìn)行重構(gòu),或者進(jìn)一步模塊化。 通過高復(fù)雜度的模塊的控制流程圖和邏輯框圖的復(fù)雜程度可以讓測試工程師與軟件維護(hù)者判斷該軟件產(chǎn)品的可測試性和可維護(hù)性。nJC0JC0基本段的測試復(fù)雜性基本段的測試復(fù)雜性 JC0 =一段代碼中包含的所有可見段(可執(zhí)行的代碼塊)的個(gè)數(shù)nJC1JC1標(biāo)準(zhǔn)段測試復(fù)雜性標(biāo)準(zhǔn)段測試復(fù)雜性 JC1 =一段程序包含的標(biāo)準(zhǔn)段的個(gè)數(shù)(所有可見段+不可見段
18、0+不可見段2)nJC1+JC1+增強(qiáng)標(biāo)準(zhǔn)段測試復(fù)雜性增強(qiáng)標(biāo)準(zhǔn)段測試復(fù)雜性 JC1+ =一段程序包含的增強(qiáng)標(biāo)準(zhǔn)段的個(gè)數(shù) (所有可見段+不可見段0+不可見段2+不可見段1)nJC2JC2條件條件- -段的測試復(fù)雜性段的測試復(fù)雜性 JC2=所有可見段+不可見段+所有條件判斷語句個(gè)數(shù)。nCyclomaticCyclomatic循環(huán)度量復(fù)雜性循環(huán)度量復(fù)雜性 Cyclomatic Complexity又稱圈復(fù)雜度/循環(huán)復(fù)雜度,圈復(fù)雜度大說明程序代碼可能質(zhì)低且難于測試和維護(hù)不可見段不可見段0 0(if和swicth)判斷體結(jié)束后的不可見段,即if和switch中條件判定式不滿足的情況,會(huì)存在一個(gè)不可見段不
19、可見段不可見段2 2(for、while和do-while)循環(huán)體結(jié)束后的不可見段,即for、while、do-while循環(huán)條件不滿足時(shí)會(huì)正常跳出循環(huán),這時(shí)會(huì)存在一個(gè)不可見段。不可見段不可見段1 1(for和while)非正常的結(jié)束循環(huán)體時(shí)的不可見段,也就是指for和while循環(huán)體一次都沒有被執(zhí)行的情況,這時(shí)會(huì)存在一個(gè)不可見段。1. 幫助測試工程師判斷軟件產(chǎn)品的可測試性,高復(fù)雜度的軟件可測試性差、需要花費(fèi)的測試成本高。2. 幫助軟件維護(hù)者判斷軟件產(chǎn)品的可維護(hù)性,高復(fù)雜度的軟件可維護(hù)性差,維護(hù)成本高。3. 幫助測試工程師做測試的復(fù)雜性分析,高復(fù)雜度的代碼需要設(shè)計(jì)較多或者較為充分的測試用例來達(dá)
20、到測試目的。4. 有了自動(dòng)化的復(fù)雜度的分析,開發(fā)人員就可以針對性的對代碼重構(gòu)或者模塊化,提高代碼的可維護(hù)性、可測試性、可讀性,強(qiáng)化代碼結(jié)構(gòu),降低bug風(fēng)險(xiǎn)。omplexityomplexity可以幫助我們做些什么?可以幫助我們做些什么?白盒測試白盒測試動(dòng)態(tài)分析動(dòng)態(tài)分析5 什么是白盒測試的動(dòng)態(tài)分析法? 動(dòng)態(tài)分析的主要特點(diǎn)是當(dāng)軟件系統(tǒng)在模擬的或真實(shí)的環(huán)境中軟件系統(tǒng)行為的分析。在動(dòng)態(tài)分析技術(shù)中,最重要的技術(shù)是路徑和分支測試。 邏輯覆蓋法是最常見的動(dòng)態(tài)分析方法之一,是以程序的內(nèi)部邏輯結(jié)構(gòu)為基礎(chǔ)的測試用例設(shè)計(jì)技術(shù)。它要求測試人員十分清楚程序的邏輯結(jié)構(gòu),考慮的是測試用例對程序內(nèi)部邏輯覆蓋的程序。 Thre
21、adingTest是如何做到自動(dòng)獲取程序內(nèi)部邏輯覆蓋信息的? ThreadingTest通過自主研發(fā)的自動(dòng)插樁技術(shù),在不破壞被測試程序原有邏輯完整性的前提下,在程序的相應(yīng)位置上插入一些探針。通過探針收集程序的運(yùn)行特征數(shù)據(jù)?;趯@些特征數(shù)據(jù)的分析,揭示程序的內(nèi)部行為和特征。 01 語句覆蓋 02路徑覆蓋 05條件-判定覆蓋 04條件覆蓋 03判定覆蓋 06修正條件-判定覆蓋ThreadingTest實(shí)現(xiàn)了自動(dòng)統(tǒng)計(jì)多種覆蓋率,達(dá)到商業(yè)規(guī)范段覆蓋SC0、SC1、SC1+TTTT覆蓋率種類覆蓋率種類條件判定覆蓋Branch 判定覆蓋TRUE、FALSE、BOTH 條件覆蓋C/DC-條件/判定覆蓋MC
22、/DC-修訂的條件/判定覆蓋覆蓋率 = 測試覆蓋到的程序段的個(gè)數(shù) / 要統(tǒng)計(jì)的程序段的個(gè)數(shù)nSC0SC0= 被執(zhí)行的塊個(gè)數(shù) / 該段程序包含的塊個(gè)數(shù)(即可見段個(gè)數(shù))。nSC1SC1=被執(zhí)行的代碼塊(包括不可見段0以及不可見段2)/該段程序包含的塊個(gè)數(shù)(包括不可見段0以及不可見段2)。nSC1+SC1+=被執(zhí)行的代碼塊(包括不可見段0,不可見段2以及不可見段1)/該段程序包含的塊個(gè)數(shù)(包括不可見段0,不可見段2以及不可見段1 )。不可見段不可見段0 0(if和swicth)判斷體結(jié)束后的不可見段,即if和switch中條件判定式不滿足的情況,會(huì)存在一個(gè)不可見段不可見段不可見段2 2(for、wh
23、ile和do-while)循環(huán)體結(jié)束后的不可見段,即for、while、do-while循環(huán)條件不滿足時(shí)會(huì)正常跳出循環(huán),這時(shí)會(huì)存在一個(gè)不可見段。不可見段不可見段1 1(for和while)非正常的結(jié)束循環(huán)體時(shí)的不可見段,也就是指for和while循環(huán)體一次都沒有被執(zhí)行的情況,這時(shí)會(huì)存在一個(gè)不可見段。覆蓋率(SCn) = 測試覆蓋到的程序段的個(gè)數(shù) / 要統(tǒng)計(jì)的程序段的個(gè)數(shù)(JCn)判定覆蓋n【BranchBranch】 設(shè)計(jì)若干測試用例,運(yùn)行被測程序,使得程序中每個(gè)判斷的取“真”分支和取“假”分支至少經(jīng)歷一次,即判斷真假值均曾被滿足。條件覆蓋n【TRUETRUE】 設(shè)計(jì)若干測試用例,運(yùn)行被測程序
24、,使得程序在每個(gè)條件中取“真”分支至少經(jīng)歷一次。即TRUE達(dá)成100。n【FALSEFALSE】 設(shè)計(jì)若干測試用例,運(yùn)行被測程序,使得程序在每個(gè)條件中取“假”分支至少經(jīng)歷一次。即FALSE達(dá)成100。n【BOTHBOTH】 設(shè)計(jì)若干測試用例,運(yùn)行被測程序,使得程序在每個(gè)條件中取“真”和“假”分支至少經(jīng)歷一次。即BOTH達(dá)成100。條件/判定覆蓋n【C/DCC/DC】 設(shè)計(jì)足夠的測試用例,使得判斷條件中的所有條件可能至少執(zhí)行一次取值,同時(shí),所有判斷的可能結(jié)果至少執(zhí)行一次。即C/DC達(dá)成100。修訂的條件/判定覆蓋n【MC/DCMC/DC】 MC/DC是DO-178B Level A認(rèn)證標(biāo)準(zhǔn)中規(guī)定
25、的,歐美民用航空器強(qiáng)制要求遵守該標(biāo)準(zhǔn)。 1、程序中的每一個(gè)出口、入口都被調(diào)用至少一次。2、程序中判定的每一個(gè)條件都執(zhí)行所有可能的輸出至少一次,程序中每一個(gè)判定結(jié)果執(zhí)行所有可能的輸出至少一次。3、在每個(gè)判定中的每個(gè)條件都曾獨(dú)立的影響判定的結(jié)果至少一次, (獨(dú)立影響意思是在其他的條件不變的情況下,改變一個(gè)條件),即每個(gè)條件對結(jié)果都獨(dú)立起作用。public boolean canBeCaughtByBullet(BulletSprite bulletSprite) if(name = Fish_Name.SARDINE) return CapturedProbability.getInstance(
26、).SardineCanBeCapturedByBullet(bulletSprite.getRank(); else if(name = Fish_Name.CLOWNFISH) return CapturedProbability.getInstance().ClownFishCanBeCapturedByBullet(bulletSprite.getRank(); else if(name = Fish_Name.PUFFERFISH) return CapturedProbability.getInstance().PufferFishCanBeCapturedByBullet(bul
27、letSprite.getRank(); else if(name = Fish_Name.TORTOISE) return CapturedProbability.getInstance().TortoiseCanBeCapturedByBullet(bulletSprite.getRank(); else if(name = Fish_Name.SHARK) return CapturedProbability.getInstance().SharkCanBeCapturedByBullet(bulletSprite.getRank(); return false; SC0: 綠色部分為段
28、覆蓋的代碼,總共六條,如果要滿足全部段覆蓋需要設(shè)計(jì)5個(gè)測試用例(當(dāng)每個(gè)條件滿足時(shí)候, return false 都將被執(zhí)行,所以只需設(shè)計(jì)5個(gè)測試用例就能滿足SC0)SC1:當(dāng)5種條件都不滿足時(shí)候,將產(chǎn)生一個(gè)隱藏分支測試完全充分需要設(shè)計(jì)6個(gè)測試用例例1: SCO和 SC1的計(jì)算例2: SCO、SC1、SC1+的計(jì)算public void creat_Curve_Group(Fish_Name fishName, ArrayList movingFishList, TiledTextureRegion fishTextureRegion, Scene scene) Move_Direction d
29、irection=this.getDirection(); int a=Math.abs(random.nextInt()%41-20; while(a=0) a=Math.abs(random.nextInt()%41-20; for(int i = 0; i Configure Build Path,添加robotium-solo-X-X.jar到Libraries中。(3)使用Robotium的測試用例代碼框架和Instrumentation用例類似,都是繼承ActivityInstrumentationTestCase2基類 注意:如果是用Robotium做集成測試的話,使用的是Act
30、ivityInstrumentationTestCase2基類,如果是單個(gè)Activity,可以選擇繼承ActivityInstrumentationTestCase2泛型類。(4)編寫測試用例,在測試準(zhǔn)備函數(shù)setUp中可以通過getInstrumentation()和getActivity()方法獲取當(dāng)前測試的儀表盤對象和待測應(yīng)用啟動(dòng)的活動(dòng)對象,并創(chuàng)建自動(dòng)化測試的solo對象(5)在測試結(jié)尾tearDown中,會(huì)調(diào)用Robotium api關(guān)閉所有已打開的活動(dòng),為后面執(zhí)行測試用例恢復(fù)測試環(huán)境RobotiumRobotium編寫集成測試用例編寫集成測試用例public class DemoT
31、estLogin extends ActivityInstrumentationTestCase2SuppressWarnings(unchecked)public DemoTestLogin() throws ClassNotFoundException super(Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME);/ TODO 自動(dòng)生成的構(gòu)造函數(shù)存根private static String LAUNCHER_ACTIVITY_FULL_CLASSNAME = com.kaixin.android.activity.LoginActivity;
32、private Solo _solo;Overrideprotected void setUp() throws Exception / TODO 自動(dòng)生成的方法存根_solo = new Solo(getInstrumentation(), getActivity();Overrideprotected void tearDown() throws Exception / TODO 自動(dòng)生成的方法存根 _solo.finishOpenedActivities();public void test登陸() throws Exception /登錄的測試用例編寫多元化的獲取多元化的獲取ViewV
33、iew:方式工具說明通過R.id獲取ViewSolo.getView(com.example.android.notepad.R.id.menu_add)在有源碼情況下非常方便,沒有源碼不可用通過resource id name 獲取View:solo.getView(“menu_add”) 查看ID方式為:HierarchyViewer.bat工具Uiautomatorviewer.bat工具不需要源碼,就能定位viewHierarchyViewer:需要開發(fā)機(jī)、模擬器,市面商用機(jī)需要破解才能使用一般有風(fēng)險(xiǎn),速度慢。UiautomatorViewer:需要android4.2以上才能獲取控件
34、ID通過文字獲取View:local.findViewsByTest(“add”)所見即所得,無需分析工具輔助定位,缺點(diǎn)是程序改動(dòng)文字會(huì)導(dǎo)致代碼失效,沒有上面2種穩(wěn)定測試用例執(zhí)行演示測試用例執(zhí)行演示Robotium Robotium 與與TTTT集成集成TT擴(kuò)展Instrumentation與Robotium對接1、TT通過擴(kuò)展Instrumentation框架并提供出來相關(guān)SDK以及接口來實(shí)現(xiàn)robotium與 TT的深度結(jié)合2、在原有的robotium開發(fā)過程中只需要改變相關(guān)測試類派生的相關(guān)基類就可以使用TT 相關(guān)api接口,能很容開發(fā)出基于robotium的自動(dòng)化白盒測試程序,和傳統(tǒng)的
35、robotium的測試流程幾乎沒有差別 3、結(jié)合robotium的自動(dòng)化測試框架以及TT的代碼級的測試結(jié)果統(tǒng)計(jì),可以更加清晰透 明的可以同時(shí)得出功能級、代碼級的測試結(jié)果 Robotium Robotium 與與TTTT集成集成TT擴(kuò)展Instrumentation接口說明 TT在重載了Instrumentation測試類的setUp和tearDown函數(shù)的測試類中,需要分別調(diào)用super.setUp()和super.tearDown()函數(shù),否則無法對數(shù)據(jù)進(jìn)行進(jìn)行測試用例的區(qū)分,如果沒有需進(jìn)行初始化和資源釋放則不用繼承setUp()和tearDown()函數(shù),如下是TT擴(kuò)展接口派生說明只列舉部
36、分其余類似InstrumentationInstrumentation接口開發(fā)接口開發(fā) 使用Android JUnit Test測試,也存在兩種測試方法,測試驅(qū)動(dòng)與測試代碼在同一工程下和測試驅(qū)動(dòng)和測試代碼位于不同工程,兩者之間并無巨大差異,只是在測試時(shí),前者只安裝一個(gè)App,后者安裝兩個(gè)App,本例子是采用的同一個(gè)工程下面,有如下步驟 1、修改工程AndroidManifest.xml文件InstrumentationInstrumentation接口開發(fā)接口開發(fā)2、測試用例開發(fā),要使用ThreadingTest進(jìn)行Android Junit測試類的編寫,需要將所有的測試類寫到一個(gè)單獨(dú)的文件夾
37、下,在進(jìn)行編譯工程時(shí),使用參數(shù)-filter將其從編譯路徑中排除,不對其進(jìn)行插樁,如下圖所示被測源碼放在src文件夾中,測試驅(qū)動(dòng)代碼放在test_src文件下。3、引入ThreadingTest Android jar包,JavaParser-Android.jar和通信包jeromq-0.3.0-SNAPSHOT.jar,添加至構(gòu)建路徑下InstrumentationInstrumentation接口開發(fā)接口開發(fā)4、將繼承Android JUnit Test類換成繼承ThreadingTest Android JUnit Test類,ThreadingTest Android JUnit T
38、est類中與Android JUnit Test相對應(yīng)的類為在類名前加TT。例如與InstrumentationTestCase相對應(yīng)的類為TTInstrumentationTestCase,TT Android JUnit Test類所在的包為com.zoa.android.test5、在重載了setUp和tearDown函數(shù)的測試類中,需要分別調(diào)用super.setUp()和super.tearDown()函數(shù),否則無法對數(shù)據(jù)進(jìn)行測試用例的區(qū)分,如果沒無需進(jìn)行初始化和資源釋放則不用繼承setUp()和tearDown()函數(shù)6、其他操作、測試用例方法開發(fā)同原有robotium相同Instr
39、umentationInstrumentation接口開發(fā)接口開發(fā)7、TT編譯工程 8、TT編譯生成apk運(yùn)行robotium并使用TT監(jiān)控接受測試數(shù)據(jù)。 TT1.8版本編譯界面基于基于TTTT的的robotiumrobotium測試用例的運(yùn)行測試用例的運(yùn)行 由于采用測試用例的自動(dòng)生成,基于TT的robotium開發(fā),測試程序需要和TT存在握手消息,首先需要保證TT處于示波器監(jiān)控開啟狀態(tài),并手動(dòng)創(chuàng)建自動(dòng)生成測試用例所要?jiǎng)?chuàng)建的用例,目前基于有3種方式可以啟動(dòng)測試用例。運(yùn)行測試類有三種方式,包括:1、命令行方式 使用adb命令啟動(dòng)Android測試2、eclipse中選擇Android JUnit
40、 Test運(yùn)行方式 在eclipse中,右擊測試工程,選擇run as - Android JUnit Test3、模擬器或者安裝有Devtools的真機(jī)中,使用Dev Tools 安裝Dev Tools工具后,運(yùn)行選擇Instrumentation下顯示的與 android:label同名的標(biāo)簽運(yùn)行instrumentation測試使用使用TTTT擴(kuò)展擴(kuò)展InstrumentationInstrumentation運(yùn)行實(shí)例運(yùn)行實(shí)例安裝經(jīng)過TT編譯的測試apk之后可以通過以上3種方式來啟動(dòng)apk測試注:如果遇到以下錯(cuò)誤可能是測試apk和被測試apk簽名不一致導(dǎo)致,需要卸載掉之前的安裝包在次運(yùn)行
41、即可 牛牛文庫文檔分享ThreadingTestThreadingTest使用常見問題使用常見問題TTTT插樁編譯類問題:插樁編譯類問題: 1.如果項(xiàng)目存在較為復(fù)雜的項(xiàng)目依賴,個(gè)人版的一鍵式編譯方式可能會(huì)編譯打不成功 解決方案跟TT的技術(shù)支持溝通并走TT企業(yè)版申請的流程 2.出現(xiàn)語法錯(cuò)誤,請反饋給TT的技術(shù)支持,技術(shù)支持會(huì)給出解決方案 3.如果項(xiàng)目不是eclipse結(jié)構(gòu)的,也會(huì)出現(xiàn)個(gè)人版一鍵式編譯方式失效 解決方案跟TT的技術(shù)支持溝通并走TT企業(yè)版申請的流程 程序流程圖是最容易理解的一種程序控制結(jié)構(gòu)的圖形表示法??刂屏骺刂屏鞒虉D程圖nJC0JC0基本段的測試復(fù)雜性基本段的測試復(fù)雜性 JC0 =一段代碼中包含的所有可見段(可執(zhí)行的代碼塊)的個(gè)數(shù)nJC1JC1標(biāo)準(zhǔn)段測試復(fù)雜性標(biāo)準(zhǔn)段測試復(fù)雜性 JC1 =一段程序包含的標(biāo)準(zhǔn)段的個(gè)數(shù)(所有可見段+不可見段0+不可見段2)nJC1+JC1+增強(qiáng)標(biāo)準(zhǔn)段測試復(fù)雜性增強(qiáng)標(biāo)準(zhǔn)段測試復(fù)雜性 JC1+ =一段程序包含的增強(qiáng)標(biāo)準(zhǔn)段的個(gè)數(shù) (所有可見段+不可見段0+不可見段2+不可見段1)nJC2JC2條件條件- -段的測試復(fù)雜性段的測試復(fù)雜性 JC2=所有可見段+不可見段+所有條件判斷語句個(gè)數(shù)。nCyclomaticCyclomatic循環(huán)度量復(fù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 北京鏈家購房合同范本
- 產(chǎn)品攝影廣告合同范例
- 劇目買斷合同范本
- 融資收費(fèi)合同范本
- 勞動(dòng)合同范本解除
- 單位車輛外包服務(wù)合同范本
- 分期出租房合同范本
- 醫(yī)療服務(wù)協(xié)議合同范本
- 單位招聘保安合同范本
- 分項(xiàng)付款合同范本
- PySide學(xué)習(xí)教程
- 數(shù)據(jù)結(jié)構(gòu)英文教學(xué)課件:chapter1 Introduction
- 人教三年級數(shù)學(xué)下冊表格式全冊
- 事業(yè)單位綜合基礎(chǔ)知識(shí)考試題庫 綜合基礎(chǔ)知識(shí)考試題庫.doc
- 優(yōu)秀教研組評比制度及實(shí)施細(xì)則
- 譯林初中英語教材目錄
- 物業(yè)交付后工程維修工作機(jī)制
- 農(nóng)作物病蟲害專業(yè)化統(tǒng)防統(tǒng)治管理辦法
- JJF 1752-2019全自動(dòng)封閉型發(fā)光免疫分析儀校準(zhǔn)規(guī)范(高清版)
- GB 1886.300-2018 食品安全國家標(biāo)準(zhǔn) 食品添加劑 離子交換樹脂(高清版)
- 食品經(jīng)營單位經(jīng)營場所和設(shè)備布局、操作流程示意圖模板
評論
0/150
提交評論