精準(zhǔn)測試誕生的背景
現(xiàn)代社會是建立在各種以計(jì)算機(jī)為基石的軟件技術(shù)基礎(chǔ)之上的匆篓。隨著日新月異的需求變化,軟件系統(tǒng)越來越復(fù)雜。很多人覺得軟件開發(fā)才是重要環(huán)節(jié)协怒,但實(shí)際上,無法對大型軟件進(jìn)行有效的質(zhì)量把控卑笨,就無法真正構(gòu)建與維護(hù)大型軟件孕暇。——系統(tǒng)中任何一個(gè)錯(cuò)誤都可能導(dǎo)致整個(gè)系統(tǒng)的崩潰赤兴,造成無法彌補(bǔ)的損失妖滔,系統(tǒng)的任何一個(gè)微小的修改都可能引入新的缺陷導(dǎo)致維護(hù)困難重重。
然而桶良,如何從極端龐大復(fù)雜的系統(tǒng)中迅速及時(shí)地找到故障所在座舍,卻是行業(yè)的一大難點(diǎn)。目前國內(nèi)軟件測試基本處于兩種狀態(tài):一是絕大多數(shù)企業(yè)采用功能(黑盒)測試陨帆,二是部分對軟件產(chǎn)品有高可靠性要求的關(guān)鍵軟件曲秉,企業(yè)會使用代碼級的白盒測試工具,但這兩種傳統(tǒng)的測試辦法在目前的軟件智能化趨勢下疲牵,更像是用竹竿打怪獸承二,完全沒辦法應(yīng)付的。
功能(黑盒)測試纲爸,測試者看不到程序內(nèi)部邏輯結(jié)構(gòu)亥鸠,這種辦法對軟件可靠性要求不高的應(yīng)用來講問題不是很大,但是對于大型金融保險(xiǎn)识啦、工業(yè)軟件负蚊、航天軍工等關(guān)鍵系統(tǒng)就意味著時(shí)刻攜帶隱形的巨大風(fēng)險(xiǎn)。為此颓哮,功能測試后期需要極高的人力投入才能完成復(fù)雜邏輯的用例分析和設(shè)計(jì)家妆。然而對于黑盒測試來說,由于我們無法獲知內(nèi)部的邏輯構(gòu)造冕茅,程序越大伤极,殺蟲劑效應(yīng)越明顯腰鬼。而行業(yè)內(nèi)當(dāng)作銀彈的自動化測試,當(dāng)自動化程序本身規(guī)模擴(kuò)大以后塑荒,它的維護(hù)本身就存在了很嚴(yán)重的問題熄赡。
代碼級(白盒)測試工具一般重點(diǎn)應(yīng)用在研發(fā)階段的單元測試上,滿足了客戶的部分高可靠性需求齿税,但由于其價(jià)格高昂彼硫、技術(shù)老化,僅適合于小規(guī)模迭代瀑布式開發(fā)的軟件凌箕,無法完成復(fù)雜的系統(tǒng)級別的測試以及分布式基于云的測試拧篮,更無法適應(yīng)敏捷迭代的開發(fā)模式。而且值得一提的是牵舱,目前白盒測試工具基本都是國外產(chǎn)品串绩,通常這些產(chǎn)品無法完成深度的定制化功能以及快速的用戶響應(yīng),代碼安全也是一個(gè)較大的問題芜壁。
隨著國內(nèi)軍民各項(xiàng)大型核心軟件系統(tǒng)的上馬礁凡,研發(fā)一種面向高復(fù)雜度大型軟件、自主可控的高性能智能精準(zhǔn)測試平臺慧妄,顯得迫在眉睫顷牌。正是在這種時(shí)代背景下,2012年初塞淹,星云測試團(tuán)隊(duì)開始心無旁騖的研發(fā)征程窟蓝。精準(zhǔn)測試是個(gè)交叉學(xué)科,里面涉及到編譯器饱普、測試分析运挫、圖形技術(shù)、高性能通信與存儲套耕,軟件的研發(fā)等多項(xiàng)底層技術(shù)谁帕。經(jīng)歷無數(shù)個(gè)不眠之夜對技術(shù)難點(diǎn)突破的煎熬與最佳解決方案的反復(fù)推敲,星云精準(zhǔn)測試產(chǎn)品在諸多方面率先實(shí)現(xiàn)了重大技術(shù)創(chuàng)新箍铲,成功突破了白盒測試使用難度大雇卷、價(jià)格高昂的桎梏鬓椭,有效消弭了國外高端測試產(chǎn)品壟斷的壁壘颠猴。星云精準(zhǔn)測試產(chǎn)品更偏向于軟件測試業(yè)界的“灰盒測試”,即用簡單的黑盒操作辦法小染,可以同時(shí)得到單元級和系統(tǒng)級的精準(zhǔn)測試數(shù)據(jù)翘瓮。
“星云精準(zhǔn)測試”在眾多性能上大幅超越國外進(jìn)口高端白盒測試工具產(chǎn)品,并在數(shù)據(jù)追溯裤翩、覆蓋率可視化资盅、智能回歸调榄、智能缺陷定位、分布式數(shù)據(jù)穿透與追蹤等特性上有突出貢獻(xiàn)呵扛∶壳欤“星云精準(zhǔn)測試VIP大企業(yè)離線版云平臺”在整體測試功能上的優(yōu)異特性,成功獲得了一批重要大型企業(yè)的高度認(rèn)可及產(chǎn)品采購今穿。
星云精準(zhǔn)測試的首發(fā)版本為:穿線測試ThreadingTest缤灵,2014年6月6日上線,側(cè)重于系統(tǒng)級白盒測試技術(shù)蓝晒,測試用例和代碼邏輯的雙向追溯技術(shù)腮出,測試示波器技術(shù),覆蓋率可視化技術(shù)芝薇。2015年8月6日胚嘲,“穿線測試”正式更名為“星云精準(zhǔn)測試”洛二。在繼承穿線測試整體技術(shù)上馋劈,星云精準(zhǔn)測試增強(qiáng)了回歸測試用例的自動選取技術(shù),缺陷最后執(zhí)行時(shí)序分析晾嘶、智能缺陷定位侣滩、敏捷環(huán)境下多版本白盒測試數(shù)據(jù)的聚合、聚類分析变擒、結(jié)合代碼結(jié)構(gòu)與動態(tài)數(shù)據(jù)的測試漏洞檢出君珠、代碼安全特性,全面的測試管理特性等幾十種優(yōu)秀功能娇斑。目前有“星云精準(zhǔn)測試VIP大企業(yè)離線版云平臺”策添、“星云精準(zhǔn)測試PASS在線云平臺www.teststars.cc“、“全自動測試用例驅(qū)動生成系統(tǒng)Wings”等多種工具產(chǎn)品毫缆。
星云精準(zhǔn)測試旗下產(chǎn)品平臺有Horn唯竹、Paw、Shell苦丁、Wings等系列產(chǎn)品浸颓。適用語言和平臺暫為: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操作系統(tǒng)尽超、WinCE嵌入式平臺等官撼。為響應(yīng)廣大用戶的需求,目前正在進(jìn)一步擴(kuò)展適應(yīng)的語言和平臺覆蓋面似谁。
通過精準(zhǔn)測試傲绣,即繼承了傳統(tǒng)功能測試前期的高效率運(yùn)行區(qū)間,又能在后期通過系統(tǒng)的數(shù)據(jù)巩踏,讓開發(fā)秃诵、測試充分協(xié)同,完成全程高效的測試塞琼。
(1)將測試團(tuán)隊(duì)的價(jià)值放大菠净,能夠?qū)㈤_發(fā)與測試更加緊密的連接起來,互為支撐彪杉。
(2)采用精準(zhǔn)毅往、可信測試技術(shù),測試管理的難度大幅度降低派近。
(3)降低企業(yè)對人員的過度依賴攀唯,通過系統(tǒng)適應(yīng)人員的變更。
圖1-1 精準(zhǔn)測試在大型系統(tǒng)的效率運(yùn)行分析
星云精準(zhǔn)測試渴丸,既保證了傳統(tǒng)功能測試前期的高效率運(yùn)行區(qū)間侯嘀,又能在后期通過系統(tǒng)的數(shù)據(jù),讓開發(fā)谱轨、測試充分協(xié)同戒幔,完成全程高效的自動化精準(zhǔn)測試。
第二章 精準(zhǔn)測試的定義
精準(zhǔn)測試:是一種國際首創(chuàng)的軟件測試技術(shù)碟嘴,旨在建立大型軟件系統(tǒng)的測試數(shù)據(jù)與源代碼之間高度的可視化追溯機(jī)制溪食,實(shí)現(xiàn)精準(zhǔn)缺陷預(yù)防及定位。它有力的打破了軟件開發(fā)娜扇、測試错沃、維護(hù)及管理人員等之間的數(shù)據(jù)交流屏障,支持超大型應(yīng)用從開發(fā)雀瓢、迭代枢析、維護(hù)全流程的可視化精準(zhǔn)測試跟蹤和測試分析。即使是初級測試人員也能易于學(xué)習(xí)掌握刃麸,用黑盒測試的方法實(shí)現(xiàn)精準(zhǔn)化測試醒叁。
精準(zhǔn)測試使軟件測試從完全依賴人工記錄、驗(yàn)證泊业,轉(zhuǎn)換為機(jī)器智能的全過程精準(zhǔn)把沼、可視、可信的全新檢測模式吁伺。精準(zhǔn)測試數(shù)據(jù)和黑盒測試優(yōu)雅對接饮睬,在不改變常規(guī)測試流程的情況下,就可以獲得大量的精準(zhǔn)分析數(shù)據(jù)篮奄,并直接引導(dǎo)用戶進(jìn)行高效的后續(xù)測試與質(zhì)量風(fēng)險(xiǎn)評估捆愁。用戶手動“點(diǎn)測“或者與自動化對接被測試應(yīng)用的同時(shí),可以快速記錄對應(yīng)的代碼執(zhí)行邏輯并實(shí)施同步運(yùn)算和分析窟却,給出被測試應(yīng)用的質(zhì)量診斷報(bào)告昼丑。例如測試過程中的關(guān)鍵模塊漏測分析、測試充分度度量夸赫、代碼靜態(tài)質(zhì)量分析以及崩潰的代碼級的捕獲和分析等菩帝。
精準(zhǔn)測試有著超強(qiáng)的數(shù)據(jù)追溯機(jī)制,通過建立用例和代碼運(yùn)行時(shí)數(shù)據(jù)的映射關(guān)系茬腿,能夠很好的協(xié)同開發(fā)和測試工作胁附;它適用于當(dāng)前流行的敏捷開發(fā)、測試體系滓彰,在版本迭代中控妻,能夠準(zhǔn)確的計(jì)算出由于版本迭代影響和波及的測試用例,快速給出測試復(fù)雜度報(bào)告并核確定測試范圍優(yōu)先級揭绑,極大減少上線風(fēng)險(xiǎn)弓候。在團(tuán)隊(duì)管理上,精準(zhǔn)測試亦產(chǎn)出數(shù)十張過程及管理的不同剖面報(bào)表他匪,以滿足各級管理需求菇存。
第三章 精準(zhǔn)測試的基礎(chǔ)架構(gòu)介紹
=============================
3.1 精準(zhǔn)測試的技術(shù)架構(gòu)
星云精準(zhǔn)測試的技術(shù)架構(gòu):通過對源代碼的插裝分析出代碼的靜態(tài)結(jié)構(gòu)信息,運(yùn)行插裝后的代碼邦蜜,測試工程師通過人工或自動化的執(zhí)行用例依鸥,軟件示波器通過采集到的這些數(shù)據(jù),進(jìn)行相關(guān)密集運(yùn)算悼沈,得到測試數(shù)據(jù)贱迟。結(jié)合之前已有的代碼靜態(tài)結(jié)構(gòu)信息姐扮,在星云客戶端可實(shí)現(xiàn)用例與函數(shù)直接的互相追溯,再通過星云測試工具的企業(yè)項(xiàng)功能衣吠,缺陷定位茶敏、用例聚類分析、回歸測試用例和最小測試用例集得到相應(yīng)的測試數(shù)據(jù)缚俏,星云測試通過報(bào)表的形式展示測試數(shù)據(jù)惊搏,導(dǎo)出批量測試報(bào)告。
精準(zhǔn)測試從某個(gè)層面來講忧换,是賦予了測試用例真正的生命力恬惯,傳統(tǒng)的測試用例僅僅是一些只能夠依賴人去理解和分析的文本文件而已,在計(jì)算機(jī)和算法層面則沒有存在意義和價(jià)值亚茬。下圖是精準(zhǔn)測試的整體架構(gòu)圖:
圖3-1-1 精準(zhǔn)測試的總體架構(gòu)圖
大家首先可能會比較好奇酪耳,“用例魔方”的概念是怎么來的?測試用例魔方是在精準(zhǔn)測試的設(shè)計(jì)才写、開發(fā)和商業(yè)實(shí)踐中自然產(chǎn)生的功能集合的一個(gè)統(tǒng)稱葡兑。當(dāng)我們把精準(zhǔn)測試的和用例分析相關(guān)的功能畫成架構(gòu)圖形表示的時(shí)候,它自然而然地看起來就像魔方赞草,所謂“魔”則是精準(zhǔn)測試核心算法所賦予的超能力讹堤。
上圖是星云精準(zhǔn)測試系統(tǒng)的總體結(jié)構(gòu)圖,“測試魔方”即分布在左上角區(qū)域厨疙。大家知道精準(zhǔn)測試的核心技術(shù)是測試用例與代碼的追溯關(guān)系的建立洲守,而在此之上就可以構(gòu)建測試魔方的核心功能區(qū)。如下:
圖3-1-2 精準(zhǔn)測試的測試魔方
所謂“方”實(shí)際上是代表測試用例的集合沾凄,每個(gè)測試用例用一個(gè)小方塊標(biāo)識梗醇,所有測試用例的集合用一個(gè)大方塊。精準(zhǔn)測試體系中撒蟀,測試用例對應(yīng)的代碼邏輯都可以實(shí)現(xiàn)全自動的追溯和存儲叙谨,因此測試用例就具備了進(jìn)行深入分析的基礎(chǔ)。在精準(zhǔn)測試的用例魔方中保屯,目前存在三個(gè)面(隨著后續(xù)功能的增加手负,將增加分析的面),即回歸測試用例選取姑尺、測試用例聚類分析竟终、測試用最小化,同時(shí)輔之以智能缺陷定位技術(shù)切蟋。下面對精準(zhǔn)測試的功能做詳細(xì)的說明统捶。
3.2 軟件示波器
精準(zhǔn)測試采集到的測試數(shù)據(jù)在軟件示波器頁面,通過可視化的窗口展示,實(shí)時(shí)展示采集到的塊喘鸟、條件和函數(shù)信息匆绣,在下方列表實(shí)時(shí)展示函數(shù)調(diào)用信息。軟件示波器采集到的測試數(shù)據(jù)迷守,完美實(shí)現(xiàn)了用例與代碼的自動關(guān)聯(lián)犬绒。通過測試數(shù)據(jù)的反向追溯分析旺入,開發(fā)人員可進(jìn)行一致性修改兑凿,避免修改引入新的缺陷,通過正向追溯結(jié)果茵瘾,開發(fā)可對用例的執(zhí)行進(jìn)行全面掌握礼华,可用于快速修復(fù)缺陷和詳細(xì)實(shí)現(xiàn)確認(rèn)。
用例與代碼的在追溯是精準(zhǔn)測試的基礎(chǔ)功能拗秘,后面的高級算法都在這個(gè)基礎(chǔ)上展開圣絮,用例和代碼的追溯就像一個(gè)全景的調(diào)試器,只要功能由測試人員進(jìn)過運(yùn)行雕旨,所有的內(nèi)部代碼執(zhí)行邏輯瞬間就可以展示出來扮匠。
軟件示波器中的測試用例可以從現(xiàn)有的測試管理系統(tǒng)導(dǎo)入進(jìn)來,當(dāng)準(zhǔn)備開始執(zhí)行一個(gè)用例的時(shí)候凡涩,選中用例點(diǎn)擊開始棒搜,然后驅(qū)動被測試系統(tǒng)運(yùn)行,那么軟件示波器就會采集到程序內(nèi)部運(yùn)行邏輯對應(yīng)的波形信息活箕,當(dāng)用例執(zhí)行結(jié)束力麸,點(diǎn)擊停止。這個(gè)用例運(yùn)行階段的數(shù)據(jù)暖侨,通過開始和結(jié)束的邊界就記錄下來了梦鉴。
軟件示波器主要起到有效的可視化測試過程的作用垂攘。在執(zhí)行用例過程中,如果沒有采集到測試數(shù)據(jù)或者程序出現(xiàn)崩潰的情況埃叭,軟件示波器就像人的心臟并沒有跳動一樣,一根橫線拉直悉罕。正常采集到數(shù)據(jù)赤屋,將有持續(xù)的波形展示出來,高效而精準(zhǔn)地監(jiān)控到程序細(xì)微的運(yùn)行狀況蛮粮。它可以精密捕獲每個(gè)軟件單元任何微小的運(yùn)行波動和行為改變益缎,并支持多次運(yùn)行數(shù)據(jù)的比對。
同時(shí)軟件示波器也提供一個(gè)輔助的等價(jià)類劃分的功能然想,它將一個(gè)用例從開始到結(jié)束所執(zhí)行的路徑信息終值莺奔,完整記錄下來。如果兩個(gè)用例終值不一樣,就可以確定為不是等價(jià)類令哟。對于很多從功能表面很難界定是否等價(jià)類的測試用例恼琼,軟件示波器可以給出精確結(jié)果。
通過軟件示波器高速采集程序數(shù)據(jù):
(1)只要測試開始執(zhí)行屏富,即可以透明方式采集功能運(yùn)行過程中對應(yīng)的程序的運(yùn)行邏輯晴竞。
(2)在系統(tǒng)高速運(yùn)轉(zhuǎn)下采集,可保證對原有應(yīng)用無干擾狠半,超過1500w/s的采集速率噩死。
(3)可采集程序的條件,執(zhí)行路徑神年,執(zhí)行參數(shù)已维,內(nèi)存使用等動態(tài)運(yùn)行數(shù)據(jù)。
軟件示波器的采集速度極快已日,目前最高可以每秒鐘采集1500萬條測試數(shù)據(jù)垛耳,對被測試程序的性能影響非常小。
圖3-2-1 軟件示波器
為了方便客戶在對測試時(shí)的實(shí)時(shí)數(shù)據(jù)監(jiān)測飘千,數(shù)據(jù)實(shí)時(shí)動態(tài)刷新的時(shí)候能夠方便看到數(shù)據(jù)堂鲜,星云做出了實(shí)時(shí)數(shù)據(jù)監(jiān)測的懸浮窗,這樣就能在運(yùn)行項(xiàng)目的時(shí)候就能更方便的看出數(shù)據(jù)的變化
[圖片上傳失敗...(image-90e25b-1552642677877)]
圖3-2-2 軟件示波器懸浮窗
只要將鼠標(biāo)移至懸浮窗就可以看到這條測試用例的ID和名稱
懸浮窗的塊护奈,條件和函數(shù)就是動態(tài)實(shí)時(shí)監(jiān)測界面的塊塊缔莲,條件和函數(shù)
懸浮窗的額綠色按鈕表示開始,中間的紅色按鈕表示暫停逆济,后面的按鈕表示通知
后面的圓圈分別表示了塊酌予,條件和函數(shù)的消息數(shù),中間的圓圈表示了測試用例運(yùn)行時(shí)間
1位置:鼠標(biāo)點(diǎn)擊可以收放左側(cè)的數(shù)據(jù)塊
2位置:點(diǎn)擊鼠標(biāo)左鍵開始接收當(dāng)前用例的運(yùn)行的數(shù)據(jù) 快捷鍵:Space
3位置:點(diǎn)擊鼠標(biāo)左鍵暫停當(dāng)前接收 快捷鍵:Ctrl+Shift+Space
4位置:點(diǎn)擊鼠標(biāo)左鍵停止當(dāng)前用例的數(shù)據(jù)接收 快捷鍵Space
5位置:類/塊數(shù)據(jù)類型切換[視圖切換] 快捷鍵:Ctrl+Shift+Q
3.3精準(zhǔn)測試的雙向追溯
精準(zhǔn)測試提出了測試用例和代碼的雙向追溯奖慌,它也是精準(zhǔn)測試核心技術(shù)之一抛虫。即運(yùn)行一個(gè)測試用例以后,精準(zhǔn)測試可以通過程序自動的記錄和顯示這個(gè)測試用例執(zhí)行的代碼简僧。如果測試人員關(guān)注某一些代碼行建椰,它可以追溯出哪些測試用例在運(yùn)行過程中運(yùn)行過這段代碼。通過這個(gè)技術(shù)特性岛马,測試工程師的每個(gè)測試用例都可以進(jìn)行量化分析和統(tǒng)計(jì)棉姐,這些量化數(shù)據(jù)既可以用來對測試工程師進(jìn)行工作的考量,也可以提供開發(fā)人員和測試人員之間進(jìn)行信息化的交流啦逆。
雙向追溯技術(shù)記錄了每個(gè)測試用例對應(yīng)的程序內(nèi)部的執(zhí)行細(xì)節(jié)伞矩,細(xì)致到每個(gè)條件、分支夏志、語句塊的執(zhí)行情況乃坤。開發(fā)人員可以通過雙向追溯的結(jié)果去理解程序邏輯,進(jìn)行軟件維護(hù)以及進(jìn)行可一致性的修改。開發(fā)和測試可以順利交流湿诊,增加測試和開發(fā)的交流效率狱杰。
雙向追溯技術(shù)正向追溯
將測試用例和代碼執(zhí)行信息自動關(guān)聯(lián),可到函數(shù)級別及代碼塊級別厅须;通過正向追溯可直接在代碼級定位測試現(xiàn)場故障和缺陷邏輯仿畸,并提供最后運(yùn)行的時(shí)序數(shù)據(jù);通過正向追溯自動記錄產(chǎn)生功能對應(yīng)的詳細(xì)設(shè)計(jì)實(shí)現(xiàn)朗和,輔助軟件解耦和架構(gòu)分析错沽。
圖3.3-1 雙向追溯(正向)-測試用例追溯到代碼
圖3.3-2 雙向追溯(正向)-測試用例追溯到代碼
雙向追溯技術(shù)反向追溯
將代碼執(zhí)行、函數(shù)例隆、代碼塊級別和測試用例執(zhí)行信息自動關(guān)聯(lián)甥捺,通過反向追溯可直接在觀察代碼變動所影響的測試范圍抢蚀,幫助開發(fā)人員代碼修改影響功能范圍評估與測試人員對代碼修改部分所影響的測試用例進(jìn)行評估镀层。
圖3.3-3 雙向追溯(反向)-代碼追溯到測試用例
圖3.3-4 雙向追溯(反向)-代碼追溯到測試用例
數(shù)據(jù)追溯技術(shù)-追溯測試用例的全景調(diào)用
精準(zhǔn)測試通過正向追溯把測試用例運(yùn)行的代碼執(zhí)行進(jìn)行了全景繪制,在全景圖中皿曲,測試人員可以有效的觀察到函數(shù)之間的整體的調(diào)用與走向唱逢,觀察出被測模塊與上層之間的調(diào)用關(guān)系
圖3.3-5 測試用例運(yùn)行的代碼整體調(diào)用
數(shù)據(jù)追溯技術(shù)-針對多系統(tǒng)多模塊(微服務(wù))的追溯
對于系統(tǒng)之間或模塊之間往往通過HTTP、HTTPS屋休、等通信協(xié)議進(jìn)行坞古,而星云測試通過agent技術(shù),把測試用例進(jìn)行過的多個(gè)系統(tǒng)或多個(gè)模塊之間的調(diào)用進(jìn)行了記錄并繪制成展示圖劫樟,測試人員可以很直觀的觀察出測試用例從起始點(diǎn)到進(jìn)行的各系統(tǒng)或各模塊之間的調(diào)用關(guān)系圖痪枫。
圖3.3-5 多業(yè)務(wù)模塊數(shù)據(jù)穿透之間的調(diào)用
3.4 分布式結(jié)構(gòu)下的數(shù)據(jù)穿透
微服務(wù)是一個(gè)新興的軟件架構(gòu),它把一個(gè)大型的單個(gè)應(yīng)用程序和服務(wù)拆分為數(shù)十個(gè)的支持微服務(wù)叠艳,獨(dú)立部署奶陈、互相隔離,通過擴(kuò)展組件來處理功能瓶頸問題附较,比傳統(tǒng)的應(yīng)用程序更能有效利用計(jì)算資源吃粒。微服務(wù)之間無需關(guān)心對方的模型,它通過事先約定好的接口進(jìn)行數(shù)據(jù)流轉(zhuǎn)拒课,使業(yè)務(wù)可以高效響應(yīng)市場變化徐勃。但微服務(wù)一個(gè)明顯的表象就是隨著服務(wù)的增多,傳統(tǒng)的測試模式受到很大制約早像,無法有效進(jìn)行下去僻肖,威脅到整體系統(tǒng)質(zhì)量。
星云測試(www.teststars.cc)發(fā)布分布式微服務(wù)精準(zhǔn)測試解決方案卢鹦,是目前市場上唯一可達(dá)到在復(fù)雜分布式系統(tǒng)中跨多個(gè)服務(wù)器進(jìn)行代碼白盒級分析臀脏,并實(shí)現(xiàn)請求分布式追蹤的測試平臺。其中產(chǎn)品內(nèi)的穿透模塊,可以支持各種主流微服務(wù)通信架構(gòu)谁榜,例如httpclient幅聘,springcloud以及消息隊(duì)列,將并發(fā)訪問場景下跨多個(gè)服務(wù)多組代碼邏輯分離并重建追蹤出來窃植。實(shí)現(xiàn)了業(yè)務(wù)邏輯的代碼在開發(fā)層面通過微服務(wù)離散后帝蒿,在測試階段則可以反向復(fù)原整個(gè)完整代碼執(zhí)行視圖。精準(zhǔn)測試?yán)锩娴拇┚€概念(Threadingtest)增加了第三層含義巷怜,即針對的分布式服務(wù)的穿透能力葛超。
星云測試針對復(fù)雜的分布式系統(tǒng)中跨多個(gè)服務(wù)器(比如啟動多個(gè)spring
boot)進(jìn)行代碼白盒級分析提供分析,實(shí)現(xiàn)請求分布式追蹤延塑,產(chǎn)品內(nèi)的穿透模塊绣张,可以支持各種主流微服務(wù)通信架構(gòu),例如httpclient关带,springcloud侥涵、dubbo以及消息隊(duì)列等。
星云測試將多個(gè)用戶并發(fā)執(zhí)行測試用例場景下跨多個(gè)服務(wù)多組代碼邏輯分離并重建追蹤出來宋雏。
默認(rèn)情況用戶標(biāo)識采用瀏覽器的cookie值芜飘,測試前端瀏覽器設(shè)置。
微服務(wù)支持以下協(xié)議:
h:HTTP3磨总,HTTP4嗦明,OKHTTP,org.springframework.http.client蚪燕,cn.hutool.http娶牌,dubbo,feign客戶端
**圖3.4 微服務(wù)**
第四章 精準(zhǔn)測試的核心組件與功能
精準(zhǔn)測試的核心組件與功能包含:軟件測試示波器馆纳、用例和代碼的雙向追溯诗良、智能回歸測試用例選取、覆蓋率分析厕诡、缺陷定位累榜、測試用例聚類分析、測試用例自動生成系統(tǒng)灵嫌,這些功能完整的構(gòu)成了精準(zhǔn)測試技術(shù)體系壹罚。
精準(zhǔn)測試系統(tǒng)的本質(zhì)是一套強(qiáng)大的計(jì)算機(jī)開發(fā)與測試系統(tǒng),實(shí)現(xiàn)數(shù)據(jù)可視化聯(lián)動的輔助分析系統(tǒng)寿羞,它的關(guān)鍵技術(shù)是測試用例和代碼的雙向追溯技術(shù)猖凛。在這項(xiàng)技術(shù)的基礎(chǔ)上,很多高級測試算法得以應(yīng)用同時(shí)將測試和開發(fā)進(jìn)行非常緊密的連接绪穆。精準(zhǔn)測試系統(tǒng)并沒有取代人工設(shè)計(jì)用例辨泳、執(zhí)行用例的過程虱岂,但是通過對該過程深入到代碼層的分析,可以相當(dāng)大的程度改進(jìn)人工測試所產(chǎn)生的各種問題菠红。
接下來將從風(fēng)險(xiǎn)控制第岖、工作協(xié)同、敏捷迭代试溯、團(tuán)隊(duì)管理蔑滓、知識庫累積五個(gè)方面詳細(xì)解析精準(zhǔn)測試的核心組件與其功能。
4.1 風(fēng)險(xiǎn)控制
4.1.1 七種測試覆蓋率
星云精準(zhǔn)測試提供7種測試覆蓋率:分別為:SC0語句塊覆蓋率遇绞、Ture覆蓋率键袱、Both覆蓋率、CDC覆蓋率摹闽、Branch覆蓋率蹄咖、MC/DC覆蓋率。
精準(zhǔn)測試支持查看一個(gè)模塊的范圍內(nèi)的覆蓋率付鹿,以及把一些代碼排除出計(jì)算范圍重新進(jìn)行計(jì)算等高級功能澜汤,也可以查看到新增代碼部分的覆蓋率情況。通過對這些覆蓋率數(shù)據(jù)的分析倘屹,可以將風(fēng)險(xiǎn)控制到最低银亲。
圖4-1.1-1 七種測試覆蓋率
MC/DC覆蓋率可視化
星云精準(zhǔn)測試覆蓋可視化技術(shù)使每種覆蓋率如何計(jì)算、分子分母分別對應(yīng)程序的哪些單元纽匙,展示的非常清晰。
星云測試提供MC/DC覆蓋率拍谐,即修正判定條件覆蓋烛缔,該覆蓋率數(shù)據(jù) MC/DC是DO-178B Level
A認(rèn)證標(biāo)準(zhǔn)中規(guī)定的,歐美民用航空器強(qiáng)制要求遵守該標(biāo)準(zhǔn)轩拨。對于金融系統(tǒng)的一些關(guān)鍵模塊践瓷,也可以采用這個(gè)覆蓋率標(biāo)準(zhǔn),MC/DC覆蓋率可以基本保證被測試軟件不存在缺陷亡蓉。
MC/DC覆蓋是指所有符合條件中的子條件晕翠,在保持其他子條件不變的情況下,它自己的真假變化就會引起整個(gè)條件結(jié)果的變化砍濒,如果符合條件中的每個(gè)子條件都滿足了淋肾,那么整個(gè)條件的MC/DC就滿足了。星云精準(zhǔn)測試提供相關(guān)的條件組合的結(jié)果展示爸邢,直接分析MC/DC覆蓋率的滿足情況樊卓。
圖4-1.1-2 MC/DC覆蓋率可視化
4.1.2 新增代碼覆蓋率
敏捷模式下迭代頻繁,測試人員往往被要求對本次變動或者新增的功能進(jìn)行回歸杠河,但實(shí)際過程中新版本的代碼經(jīng)常由很多開發(fā)進(jìn)行修改碌尔,容易出現(xiàn)彼此不知道或遇到有代碼潔癖的浇辜,改了別人的代碼,大家都不知道唾戚。通常情況是柳洋,要么測試范圍定小了,遺漏了叹坦;要么測試范圍過大膳灶,付出過多代價(jià),而精準(zhǔn)測試通過新版本與老版本之間的差異進(jìn)行比對立由,給出變動和新增的代碼的范圍轧钓,幫助測試人員對本次要求的變動代碼和新增代碼進(jìn)行針對性的覆蓋率統(tǒng)計(jì)展示。
圖4.1.2 新增代碼覆蓋率
4.1.3測試覆蓋率范圍篩選與再統(tǒng)計(jì)
在做精準(zhǔn)測試或統(tǒng)計(jì)覆蓋率時(shí)锐膜,往往測試管理者毕箍、開發(fā)人員、測試人員為了保證測試覆蓋率的正確性道盏,會對某個(gè)方法而柑、類進(jìn)行查看或在統(tǒng)計(jì)中把代碼中一些廢棄的函數(shù)或特殊測試不到代碼進(jìn)行移除,從而讓測試代碼覆蓋統(tǒng)計(jì)率達(dá)到更加準(zhǔn)確荷逞。星云精準(zhǔn)測試在設(shè)計(jì)中媒咳,通過多種搜索、方法种远、類涩澡、模塊過濾等功能把需要統(tǒng)計(jì)的范圍進(jìn)行縮小或不需要的統(tǒng)計(jì)的進(jìn)行去除,并根據(jù)用戶的選擇進(jìn)行覆蓋率再統(tǒng)計(jì)展示坠敷。
圖4.1.3 測試覆蓋率范圍篩選與再統(tǒng)計(jì)
4.2 工作協(xié)同
4.2.1 打通開發(fā)與測試的隔閡
精準(zhǔn)測試打通開發(fā)與測試的協(xié)同工作通道妙同,使得開發(fā)與測試能夠更好的溝通,提高工作效率膝迎。傳統(tǒng)模式下粥帚,開發(fā)人員關(guān)注的是代碼,測試人員關(guān)注的是業(yè)務(wù)角度的測試用例限次,他們沒有直接關(guān)聯(lián)芒涡。開發(fā)和測試的溝通,基本就是采用自然語言卖漫、Excel表格费尽、內(nèi)部系統(tǒng)溝通,存在大量的問題懊亡。例如測試工程師發(fā)現(xiàn)一個(gè)缺陷依啰,提交到缺陷系統(tǒng),開發(fā)需要花費(fèi)大量時(shí)間理解店枣、準(zhǔn)備數(shù)據(jù)速警、復(fù)現(xiàn)叹誉、調(diào)試,直到最后的修正闷旧。因?yàn)闃I(yè)務(wù)上的功能執(zhí)行和代碼并沒有明確的關(guān)系长豁,通常測試工程師執(zhí)行完功能測試用例后,讓開發(fā)人員幫助評審也非常困難忙灼。
若測試工程師提供的測試結(jié)果都是比較模糊的功能邏輯描述匠襟,重現(xiàn)缺陷需要花費(fèi)大量的時(shí)間。開發(fā)人員修改代碼后该园,對于變更描述酸舍,以及變更引起的關(guān)聯(lián)問題描述通常也都很模糊,導(dǎo)致測試又出現(xiàn)新問題里初。
企業(yè)采用精準(zhǔn)測試技術(shù)后啃勉,通過執(zhí)行用例可以直接追溯到對應(yīng)執(zhí)行的程序代碼塊,這樣的數(shù)據(jù)化溝通双妨,將使開發(fā)人員和測試人員之間的協(xié)同工作效率大大提高淮阐。
圖4.2.1 協(xié)同模式
4.2.2 源碼動靜態(tài)數(shù)據(jù)的統(tǒng)一
星云精準(zhǔn)測試通過插裝得到的項(xiàng)目靜態(tài)結(jié)構(gòu)信息,結(jié)合測試后采集到的測試數(shù)據(jù)刁品,能夠精準(zhǔn)記錄測試的過程泣特,通過這些靜態(tài)數(shù)據(jù)和動態(tài)數(shù)據(jù)視圖,便于開發(fā)人員基于圖形化結(jié)果進(jìn)行快速分析挑随。
對于不懂開發(fā)的測試工程師状您,通過程序控制流程圖的圖形以及通過顏色表示的覆蓋信息,可以直接看到程序內(nèi)部漏測的邏輯是什么镀裤,也可以通過這些結(jié)果直接與開發(fā)溝通竞阐,進(jìn)行輔助用例和邏輯的補(bǔ)充。
因?yàn)閮?nèi)部邏輯能夠圖形化的打開和看到暑劝,可以有力保證黑盒測試后期,開發(fā)快速理解和介入瓶頸問題颗搂,保持全程測試的高效執(zhí)行担猛。
圖4.2.2-1 源碼靜態(tài)結(jié)構(gòu)與動態(tài)測試數(shù)據(jù)統(tǒng)一圖(函數(shù)調(diào)用圖)
圖4.2.2-2 源碼靜態(tài)結(jié)構(gòu)與動態(tài)測試數(shù)據(jù)統(tǒng)一圖(控制流程圖)
圖4.2.2-3 源碼靜態(tài)結(jié)構(gòu)與動態(tài)測試數(shù)據(jù)統(tǒng)一圖(簡易流程圖)
下圖展示的是一個(gè)函數(shù)的靜態(tài)結(jié)構(gòu),與動態(tài)測試數(shù)據(jù)結(jié)合的流程圖丢氢,如圖框架是靜態(tài)結(jié)構(gòu)傅联,綠色顯示部分是覆蓋到的代碼塊。
圖 4.2.2-4源碼靜態(tài)結(jié)構(gòu)與動態(tài)測試數(shù)據(jù)統(tǒng)一視圖
4.2.3 缺陷最后執(zhí)行時(shí)序分析
星云測試采集數(shù)據(jù)時(shí)疚察,可自動捕獲缺陷或崩潰發(fā)生時(shí)之前程序執(zhí)行的詳細(xì)路徑信息蒸走。當(dāng)缺陷發(fā)生后,開發(fā)人員能夠直接看到缺陷出現(xiàn)時(shí)貌嫡,代碼執(zhí)行的時(shí)序和路徑信息比驻,直接定位缺陷和排查問題该溯,節(jié)省大量的溝通以及復(fù)現(xiàn)和調(diào)試的時(shí)間成本。
IT工程師可直接觀察到程序出現(xiàn)缺陷后别惦,最后執(zhí)行的50個(gè)代碼塊狈茉、條件、判斷的執(zhí)行信息掸掸。配合示波器來觀察氯庆,當(dāng)功能執(zhí)行發(fā)現(xiàn)缺陷或崩潰時(shí),示波器可以設(shè)置成手動或者自動停止扰付,清晰記錄最后執(zhí)行的50個(gè)代碼序列的相關(guān)詳細(xì)信息堤撵,以供查詢和分析。
自動記錄崩潰發(fā)生時(shí)刻之前程序執(zhí)行的詳細(xì)路徑信息羽莺,捕獲難以重現(xiàn)的缺陷并快速解決:
最后50個(gè)代碼塊实昨。最后50個(gè)條件。最后50個(gè)判定執(zhí)行禽翼。
除了在研發(fā)環(huán)境內(nèi)屠橄,也可以在用戶現(xiàn)場精準(zhǔn)定位缺陷,而無需再用戶現(xiàn)場部署任何代碼闰挡。
圖4.2.3 缺陷最后執(zhí)行時(shí)序分析
4.2.4 智能缺陷定位
星云測試對企業(yè)級用戶提供缺陷定位功能锐墙。通過測試人員標(biāo)記用例執(zhí)行狀態(tài)和軟件示波器自動記錄的程序,可自動分析缺陷出現(xiàn)的可疑代碼塊长酗。
傳統(tǒng)測試僅僅能夠發(fā)現(xiàn)缺陷溪北,無法幫助開發(fā)提供有價(jià)值的代碼層級的數(shù)據(jù)。通過智能缺陷定位技術(shù)夺脾,測試工程師通過幾組用例之拨,例如有的正確,有的失敗咧叭,尤其是輸入差別不大蚀乔,讓被測程序表現(xiàn)為正確和失敗的情況。精準(zhǔn)測試通過功能上的狀態(tài)以及用例對應(yīng)的內(nèi)部執(zhí)行代碼邏輯的差異分析菲茬,可以直接分析出現(xiàn)問題的代碼吉挣,隨后按照可疑度進(jìn)行排序。如圖:
通過測試人員在功能測試階段標(biāo)記的用例執(zhí)行狀態(tài)婉弹,以及軟件示波器自動記錄的程序
運(yùn)行頻譜睬魂,自動分析缺陷的出現(xiàn)的代碼塊。
(1)對于同類測試用例镀赌,經(jīng)過多組測試可給出非常有效的結(jié)果氯哮。
(2)列出的可疑代碼,可直接通過測試過程給出商佛,提升測試的價(jià)值及產(chǎn)出喉钢。
圖4.2.4-1 通過功能測試頻譜法分析進(jìn)行智能缺陷定位
選擇可疑度算法姆打、得到可疑度高的代碼塊,關(guān)聯(lián)源碼后出牧,可根據(jù)代碼可視化查看具體位置穴肘。可疑度計(jì)算有一個(gè)公式舔痕,并不復(fù)雜评抚,通常每個(gè)代碼塊有2個(gè)變量谜酒,四種狀態(tài)值蝎土。分別是:是否執(zhí)行、是否通過芋齿,這樣每代碼塊都有一個(gè)可疑度值啸如。
星云精準(zhǔn)測試提供3種常用計(jì)算公式侍匙,供大家參考。
其中aep表示通過且覆蓋到該塊的測試用例的個(gè)數(shù)叮雳、anp表示通過且未覆蓋到該塊的測試用例的個(gè)數(shù)想暗、aef表示未通過且覆蓋到該塊的測試用例的個(gè)數(shù)、anf表示未通過且覆蓋到該塊的測試用例的個(gè)數(shù)帘不。結(jié)果表示該塊的可疑度说莫。
圖4.2.4-2 智能缺陷定位展示
4.3 敏捷迭代
4.3.1 敏捷迭代下多版本白盒測試數(shù)據(jù)的聚合
白盒覆蓋數(shù)據(jù)通常與代碼先關(guān),而敏捷環(huán)境下代碼每天都會發(fā)布幾個(gè)版本寞焙,代碼變更后白盒數(shù)據(jù)就無效了储狭。
星云測試結(jié)合目前快速迭代的開發(fā)模式,通過分析代碼增量捣郊,結(jié)合不同版本覆蓋率辽狈,支持累計(jì)的合并計(jì)算,將多個(gè)敏捷局部測試的數(shù)據(jù)匯總到最新代碼視圖上統(tǒng)一展示呛牲。
星云精準(zhǔn)測試的“敏捷環(huán)境下多版本白盒測試數(shù)據(jù)的聚合”功能刮萌,可以通過內(nèi)部累加一個(gè)測試周期內(nèi)的總體覆蓋,并在最新代碼視圖上投影娘扩。用戶可以看到在一個(gè)敏捷周期內(nèi)的總體覆蓋情況尊勿,雖然每個(gè)敏捷版本可能只是關(guān)注某一部分功能。例如一個(gè)函數(shù)如果一直從某個(gè)版本后一直未發(fā)生代碼變化畜侦,那么從變化點(diǎn)以后的覆蓋率就可以累加而之前就丟棄掉。
星云精準(zhǔn)測試-敏捷環(huán)境下多版本白盒測試數(shù)據(jù)的聚合如圖所示躯保。
圖4.3.1-1敏捷環(huán)境下多版本白盒測試數(shù)據(jù)的聚合
精準(zhǔn)測試所有數(shù)據(jù)分析結(jié)果都特別考慮了快速迭代的開發(fā)模式旋膳。
(1)所有版本的測試數(shù)據(jù),支持累計(jì)的合并計(jì)算途事,將多個(gè)敏捷局部測試的數(shù)據(jù)匯總到最新代碼視圖上統(tǒng)一展示验懊。
(2)可以任意選擇版本合并擅羞,觀察任何時(shí)間節(jié)點(diǎn)的累計(jì)數(shù)據(jù)。
**圖4.3.1-2敏捷環(huán)境下多版本白盒測試數(shù)據(jù)的報(bào)表**
4.3.2 聚類分析
星云精準(zhǔn)測試提供的聚類分析功能义图,根據(jù)測試用例的函數(shù)執(zhí)行剖面的向量化信息减俏,對測試用例進(jìn)行精確的空間距離計(jì)算后執(zhí)行聚類分析。聚類結(jié)果可以分析被錯(cuò)誤執(zhí)行的用例碱工,例如不相關(guān)的功能點(diǎn)聚類到一起娃承,則說明其測試執(zhí)行可能存在錯(cuò)誤。
另外也可以輔助找到缺陷分布的密集區(qū)域怕篷。大部分情況下历筝,缺陷分布會呈現(xiàn)2/8的聚集特性。在時(shí)間緊張的情況下廊谓,我們可以通過聚類結(jié)果梳猪,每個(gè)類選取中心點(diǎn)以及周邊幾個(gè)用例。如果沒有問題蒸痹,就可以去測試其他聚類春弥,如果發(fā)現(xiàn)一個(gè)類缺陷概率高,那么這個(gè)類就需要進(jìn)行重點(diǎn)測試叠荠。通過聚類結(jié)果也可以分析測試用例的分布密度等信息匿沛,輔助進(jìn)行測試決策。
星云精準(zhǔn)測試-通過用例聚類分析識別缺陷密集分布區(qū)域
(1)通過聚類結(jié)果給出測試密度蝙叛,聚類圈中的密度越高俺祠,則說明該功能模塊測試越密集
圖4.3.2-1 測試密度
(2)聚類結(jié)果可以分析被錯(cuò)誤執(zhí)行的用例,例如不相關(guān)的功能點(diǎn)別聚類到一起借帘,則說明其測試執(zhí)行可能存在錯(cuò)誤蜘渣。
圖4.3.2-2 聚類分析
(3)從類中檢出中心點(diǎn)測試用例以及隨機(jī)的其他用例,可以快速確定類中是否存在較多缺陷肺然,快速定位缺陷的分布蔫缸,并進(jìn)行重點(diǎn)測試。
4.3.3 漏洞檢出
星云精準(zhǔn)測試际起,結(jié)合代碼結(jié)構(gòu)和動態(tài)數(shù)據(jù)綜合分析拾碌,通過計(jì)算直接篩選出潛在的高危測試漏洞,可以在短期內(nèi)確定高危漏測模塊街望。針對性的解決方案校翔,幫助用戶快速找到嚴(yán)重缺陷。
當(dāng)測試時(shí)間不充分的時(shí)候灾前,首先可以先看測試漏洞列表防症。列表里將顯示通過靜態(tài)信息和動態(tài)信息計(jì)算,得到的最高風(fēng)險(xiǎn)的漏測點(diǎn)模塊。我們通過復(fù)雜度進(jìn)行計(jì)算蔫敲,復(fù)雜度高的模塊饲嗽。一般來講是重要模塊并且邏輯復(fù)雜,如果動態(tài)覆蓋比較低奈嘿,將被篩選出來貌虾。
第二,處于調(diào)用和被調(diào)用中間的模塊裙犹,因?yàn)閷儆谥虚g關(guān)鍵模塊尽狠,我們也會計(jì)算它的扇入扇出和動態(tài)覆蓋率信息。如果比率很高伯诬,也會被認(rèn)為是高風(fēng)險(xiǎn)模塊篩選晚唇、高亮標(biāo)示出來。
從測試效率角度考量盗似,我們建議在基本的功能黑盒測試完成后哩陕,先看這些高危模塊,補(bǔ)充他們的覆蓋率赫舒。在時(shí)間不充分的時(shí)候悍及,優(yōu)先測試這些高危模塊。星云精準(zhǔn)測試-結(jié)合代碼結(jié)構(gòu)與動態(tài)數(shù)據(jù)的測試漏洞檢出接癌。
圖4.3.3漏洞檢測列表
4.3.4 精準(zhǔn)測試與自動化測試對接
星云精準(zhǔn)測試提供了一個(gè)通用的自動化接口調(diào)用包心赶,為眾多的自動化工具進(jìn)行調(diào)用,可以無縫的對接各種主流的自動化工具缺猛,測試人員無需改變原有的測試腳本流程缨叫,即可執(zhí)行原有的自動化并在星云精準(zhǔn)測試軟件示波器中自動建立測試用例并且與執(zhí)行的代碼進(jìn)行相關(guān)聯(lián)。
星云精準(zhǔn)測試與自動化對接還能通過其精準(zhǔn)測試的回歸荔燎、新增代碼覆蓋率進(jìn)行相結(jié)合使用達(dá)到新版本發(fā)布全自動的回歸測試耻姥。
圖4.3.4星云測試自動化流程
4.3.5 最小測試用例集
星云精準(zhǔn)測試通過每個(gè)測試用例對應(yīng)的代碼進(jìn)行統(tǒng)計(jì)計(jì)算,給出測試用例之間的冗余部分有咨,即滿足當(dāng)前代碼覆蓋率所需要的運(yùn)行的最小測試用例集合琐簇,主要用于對項(xiàng)目后期大量增長的自動化測試用例進(jìn)行評審操作,從而降低對自動化用例的維護(hù)成本座享。
圖4.3.5星云測試最小測試用例集
4.4 團(tuán)隊(duì)管理
4.4.1 精準(zhǔn)測試的企業(yè)私有云可信化報(bào)表
星云測試提供云報(bào)表婉商,來實(shí)時(shí)精準(zhǔn)的追蹤測試進(jìn)度。星云測試web端的報(bào)表系統(tǒng)渣叛,當(dāng)客戶端錄入測試用例并采集數(shù)據(jù)后丈秩,將在web端產(chǎn)生實(shí)時(shí)的、具備高可信度的測試情況報(bào)表淳衙。
該報(bào)表與普通的測試管理系統(tǒng)不同:普通的測試管理系統(tǒng)有人為錄入數(shù)據(jù)的情況癣籽,數(shù)據(jù)本身的真實(shí)性就沒辦法保證挽唉。精準(zhǔn)測試提供的報(bào)表,底層數(shù)據(jù)來自于執(zhí)行測試用例時(shí)候代碼數(shù)據(jù)的采集筷狼,通過專用接口上傳,完全無法篡改和偽造匠童。星云精準(zhǔn)測試-企業(yè)私有云端實(shí)時(shí)埂材、精準(zhǔn)、可信質(zhì)量跟蹤汤求。
(1)通過瀏覽器登錄測試系統(tǒng)俏险,選擇需要跟蹤的項(xiàng)目,就可以實(shí)時(shí)的對整個(gè)測試的質(zhì)量扬绪、進(jìn)度竖独、人員進(jìn)行精準(zhǔn)的分析和管理。
(2)
企業(yè)私有云端管理系統(tǒng)展示的數(shù)據(jù)基于精準(zhǔn)測試數(shù)據(jù)的分析挤牛,所有數(shù)據(jù)原生精確莹痢,支持移動測試+本地測試。
(3)
測試團(tuán)隊(duì)墓赴、開發(fā)團(tuán)隊(duì)竞膳、甲方負(fù)責(zé)人等多種角色都可以登錄系統(tǒng),從各個(gè)層面對測試诫硕、軟件質(zhì)量進(jìn)行分析坦辟。
圖4.4.1-1 項(xiàng)目匯總展示
星云精準(zhǔn)測試項(xiàng)目匯總中,包含了項(xiàng)目信息章办、版本信息锉走、測試匯總信息、測試過程監(jiān)控趨勢圖藕届、測試設(shè)備組成和分布圖挪蹭、各版本覆蓋率匯總圖、復(fù)雜度匯總圖等翰舌。
從另外一個(gè)角度來看嚣潜,精準(zhǔn)測試大企業(yè)版本也可以讓不同區(qū)域、不同時(shí)間的測試人員實(shí)現(xiàn)協(xié)同測試與協(xié)同管理椅贱,最終達(dá)到多人同地測試懂算、多人異地測試、數(shù)據(jù)實(shí)時(shí)匯總共享與追蹤庇麦、測試過程與完成度一目了然的管理目標(biāo)计技。
項(xiàng)目信息
圖4.4.1-3 測試信息匯總
測試用例通過率:無BUG的測試用例
BUG累計(jì):測試用例運(yùn)行完畢后提交的BUG數(shù)
當(dāng)前版本覆蓋率(SC0):(執(zhí)行過可見段數(shù)/可見段數(shù))*100%的比例
覆蓋率增長:相比前一天的SC0增長差值
高復(fù)雜度預(yù)警函數(shù)個(gè)數(shù):高復(fù)雜度的函數(shù)個(gè)數(shù)
4.4.2 精準(zhǔn)測試的企業(yè)私有云-測試效率的直觀展示
星云測試報(bào)告可直觀分析每天的測試效率,通過代碼模塊和復(fù)雜度關(guān)系圖山橄,看到函數(shù)群落測試情況分布及趨勢垮媒,可直觀精準(zhǔn)識別系統(tǒng)測試所處階段。
例如通過每日增長覆蓋,我們可以看到整個(gè)團(tuán)隊(duì)的工作效率睡雇。一般系統(tǒng)都是在剛開始測試的時(shí)候覆蓋率增長快萌衬,到了黑盒測試的瓶頸點(diǎn),就上升很慢了它抱。管理者可以通過報(bào)表秕豫,清晰的看到整個(gè)團(tuán)隊(duì)的效率趨勢,并采取相關(guān)策略观蓄。
覆蓋率和復(fù)雜度的關(guān)系圖混移,可以很直觀的看到測試的質(zhì)量。如果測試不充分的時(shí)候侮穿,復(fù)雜度高的模塊通常覆蓋率都比較低歌径,分布自一個(gè)左上角的區(qū)域,當(dāng)測試深入進(jìn)行亲茅,這些點(diǎn)就會向右側(cè)移動回铛。管理者可以非常直觀的看到系統(tǒng)測試的充分程度和上線的質(zhì)量把握。
(黑盒效率換擋點(diǎn)+測試深度運(yùn)動趨勢)
(1)累計(jì)覆蓋率增長視圖直觀分析每天的測試實(shí)效以及確定從系統(tǒng)黑盒測試轉(zhuǎn)換到精準(zhǔn)測試的最佳時(shí)點(diǎn)芯急。
(2)代碼模塊覆蓋率和復(fù)雜度關(guān)系圖勺届,看到函數(shù)群落測試情況分布以及運(yùn)動趨勢,可以直觀精確識別系統(tǒng)測試所處階段娶耍。
圖4.4.2-1 覆蓋率每日增長趨勢圖與黑盒測試瓶頸
圖4.4.2-2 測試效率換檔點(diǎn)與測試深度趨勢觀察表
函數(shù)|類|文件復(fù)雜度和覆蓋率關(guān)系圖,以散點(diǎn)圖的形式展示各種復(fù)雜度和覆蓋率的關(guān)系免姿,更清晰的掌握各種程度覆蓋率的分布。
圖中點(diǎn):代表每個(gè)函數(shù)榕酒,點(diǎn)擊后可以看到相關(guān)信息胚膊。
縱向:代表復(fù)雜度不同級別,取各種覆蓋率值想鹰,點(diǎn)擊自動進(jìn)行切換到相應(yīng)的復(fù)雜度
橫向:代表覆蓋率不同級別紊婉,取各種覆蓋率值,點(diǎn)擊自動進(jìn)行切換到相應(yīng)的覆蓋率
紅圈62:代表當(dāng)前版本所選的復(fù)雜度類型中最高復(fù)雜度值
籃圈100:代表當(dāng)前版本所選的覆蓋率類型中最高覆蓋率值
4.4.3 精準(zhǔn)測試的企業(yè)私有云-測試用例排行圖
測試用例排行圖辑舷,可直觀展示參與測試工程師所執(zhí)行的用例數(shù)喻犁、通過率和缺陷率,真實(shí)記錄并分析每個(gè)測試用例的實(shí)效性何缓。星云精準(zhǔn)測試-測試工程師實(shí)效精準(zhǔn)分析系統(tǒng)肢础,將參與的測試工程師所執(zhí)行的用例從邏輯覆蓋映射到代碼覆蓋,真實(shí)記錄并分析每個(gè)互聯(lián)網(wǎng)測試參與者的工作實(shí)效碌廓。以邏輯覆蓋為基準(zhǔn)的而不是用例數(shù)量為考核標(biāo)準(zhǔn)传轰。
圖4.4.3 測試用例排行圖
4.5 知識庫累積
4.5.1 精準(zhǔn)測試數(shù)據(jù)的價(jià)值
星云測試采集的測試數(shù)據(jù)和插裝后分析到的靜態(tài)結(jié)構(gòu)信息將作為大型企業(yè)系統(tǒng)大數(shù)據(jù)分析的基礎(chǔ)數(shù)據(jù)。
星云精準(zhǔn)測試-測試數(shù)據(jù)價(jià)值
(1)代碼級的程序靜態(tài)信息以及測試用例對應(yīng)的海量動態(tài)測試的數(shù)據(jù)谷婆,這些多維度數(shù)據(jù)將作為大型企業(yè)系統(tǒng)大數(shù)據(jù)分析的基礎(chǔ)數(shù)據(jù)慨蛙。
(2)對本企業(yè)大量軟件質(zhì)量數(shù)據(jù)進(jìn)行挖掘和分析辽聊,找到相關(guān)質(zhì)量技術(shù)標(biāo)準(zhǔn)衡量的合理區(qū)間,避免常規(guī)錯(cuò)誤期贫。
(3)通過數(shù)據(jù)分析確定優(yōu)異的開發(fā)方法和技術(shù)構(gòu)件跟匆。
(4)通過質(zhì)量大數(shù)據(jù)的分析結(jié)果,選擇更加合理的技術(shù)方法唯灵,在設(shè)計(jì)階段避免已知的缺陷贾铝。
4.5.2 精準(zhǔn)測試智能回歸測試用例智能選取
通過對測試數(shù)據(jù)分析,星云精準(zhǔn)測試可自動篩選測試用例埠帕。在回歸測試時(shí),大大減少回歸測試的時(shí)間及風(fēng)險(xiǎn)玖绿,如圖通過對版本a和版本b測試數(shù)據(jù)分析敛瓷,通過歷史數(shù)據(jù)的比對,可在版本c上全自動得到回歸優(yōu)先級高的用例斑匪。
圖4.5.2-1 精準(zhǔn)測試智能回歸測試用例的選取
適應(yīng)快速的版本迭代周期呐籽,適應(yīng)龐大的工程項(xiàng)目。
(2)在回歸測試時(shí)蚀瘸,自動篩選測試用例狡蝶,大大減少了回歸測試的時(shí)間以及風(fēng)險(xiǎn)。
(3)降低了傳統(tǒng)人工回歸分析產(chǎn)生的測試盲點(diǎn)贮勃。
(4)精確計(jì)算回歸用例的權(quán)重贪惹,測試人員在時(shí)間有限的情況下可以重點(diǎn)回歸受改動影響最大的用例。
圖4.5.2-2 回歸測試用例選取界面
4.5.3 精準(zhǔn)測試在回歸測試中的性能評估
回歸性能寂嘉,通常一般回歸都是基于人對于系統(tǒng)的判斷來做的奏瞬,一般來講國際上的統(tǒng)計(jì)每修改6行代碼就會引入一個(gè)未知的缺陷。由人來進(jìn)行回歸用例集的判斷泉孩,隨著時(shí)間的延續(xù)硼端,記憶將不可逆轉(zhuǎn)地發(fā)生損耗并丟失,加之原團(tuán)隊(duì)人員的不斷變更寓搬,老的系統(tǒng)維護(hù)越來越難珍昨,修改引入新的缺陷要越來越難風(fēng)險(xiǎn)。
通過星云精準(zhǔn)測試企業(yè)離線平臺句喷,內(nèi)置程序?qū)⒊掷m(xù)镣典、高效地全自動記錄本企業(yè)自有的各系統(tǒng)測試用例和代碼的關(guān)系數(shù)據(jù),不用人工干預(yù)和記錄脏嚷。使用一段時(shí)間后骆撇,企業(yè)會得到越來越精確的數(shù)據(jù),若加以有效利用父叙,將發(fā)揮相關(guān)元數(shù)據(jù)及大數(shù)據(jù)的爆發(fā)性的價(jià)值神郊。
圖4.5.3 智能回歸測試用例選取的性能評估
第五章 精準(zhǔn)測試的管理報(bào)表分析
星云精準(zhǔn)測試報(bào)表體系肴裙,是根據(jù)大型企業(yè)實(shí)際工作中的訴求而設(shè)計(jì)。報(bào)表涉及內(nèi)容很多涌乳,包括項(xiàng)目信息蜻懦、測試過程及總結(jié)信息、團(tuán)隊(duì)效率信息等夕晓,數(shù)字化展示企業(yè)分布式開發(fā)與測試過程宛乃、驗(yàn)收和維護(hù)全過程。它深度解決軟件測試短板蒸辆,數(shù)字化跟蹤征炼、追溯、輸出開發(fā)與測試每一步信息躬贡。
它把原來很多需要人工錄入的數(shù)據(jù)谆奥,由平臺代為自動化機(jī)器處理,確保所有的數(shù)據(jù)都是可信的拂玻、不可篡改的酸些。它自動把測試用例、測試設(shè)備檐蚜、測試數(shù)據(jù)魄懂、測試人員、測試時(shí)間等信息進(jìn)行關(guān)聯(lián)分析闯第,企業(yè)管理人員可以利用機(jī)器原生數(shù)據(jù)市栗,對測試全過程進(jìn)行精準(zhǔn)的數(shù)字化管理。
5.1 項(xiàng)目指標(biāo)
此項(xiàng)中將展示項(xiàng)目中各個(gè)指標(biāo)匯總信息乡括,如:程序代碼信息匯總肃廓,測試漏洞、程序覆蓋率指標(biāo)诲泌、代碼違規(guī)統(tǒng)計(jì)盲赊、代碼重復(fù)度、程度復(fù)雜度指標(biāo)敷扫、程序Crash情況等哀蘑。
圖5.1 項(xiàng)目指標(biāo)匯總圖
5.1.1 程序代碼信息匯總
程序代碼信息匯總中顯示當(dāng)前代碼基本信息、代碼注釋比例葵第、代碼可維護(hù)性绘迁。它能有效地檢查出代碼的整體狀況,并指出相應(yīng)的薄弱點(diǎn)卒密。
圖5.1.1 程序代碼信息匯總
上述指標(biāo)缀台,需要使用到以下數(shù)據(jù)并對應(yīng)映射表來確定:可分析性、可修改性哮奇、穩(wěn)定性膛腐、可測試性的最終等級睛约。
5.1.2 程序覆蓋率指標(biāo)
程序覆蓋率指標(biāo):該值是程序測試過程中代碼段的覆蓋率數(shù)值
圖5.1.2-1程序覆蓋率指標(biāo)
圖5.1.2-2覆蓋率百分比
程序復(fù)雜度指標(biāo):給出程序復(fù)雜度相關(guān)信息,以及文件哲身、類辩涝、函數(shù)三個(gè)級別復(fù)雜度分級柱狀圖。(基于CC0計(jì)算)CCO表示的是圈復(fù)雜度
圖5.1.2-3 程序復(fù)雜度指標(biāo)
5.2測試用例-按日趨勢圖
圖5.2 按日趨勢圖
5.2.1測試用例匯總信息
圖5.2.1 項(xiàng)目信息
5.2.2測試用例按日趨勢圖
折線圖和柱形圖可以在不同的圖形示例中切換勘天,還原顯示默認(rèn)折線圖
縱軸坐標(biāo):代表數(shù)量怔揩,取值范圍為自動適應(yīng)最高值
橫軸坐標(biāo):代表日期時(shí)間
圖5.2.2測試用例按日趨勢圖
5.3測試用例-測試用例列表
圖5.3-1 測試用例列表的詳細(xì)信息
顯示制作的測試用例的詳細(xì)信息,包括測試用例的名稱脯丝、創(chuàng)建時(shí)間商膊、執(zhí)行時(shí)間、關(guān)聯(lián)函數(shù)宠进、覆蓋率占比翘狱、運(yùn)行狀態(tài)、測試人員等
圖5.3-2 測試用例排行與貢獻(xiàn)
5.3.1 星云精準(zhǔn)測試軟件示波器(測試用例跟蹤)
5.3.1.1 測試用例描述
對選定測試用例表述其詳細(xì)信息砰苍,包括測試用的所屬模塊、日期阱高、錄制人赚导、執(zhí)行時(shí)間等。
圖5.3.1.1 測試用例描述圖
5.3.1.2 錄制記錄
記錄示波器最后的接收的塊赤惊、條件吼旧、函數(shù)的總信息,分最新一次和上一次未舟,用于等價(jià)類測試比對圈暗。
圖5.3.1.2-1最新與上一次軟件示波器接收信息對比
按時(shí)間倒序排列示波器接收到的函數(shù),記錄程序最后運(yùn)行的函數(shù)狀況裕膀,用于定位程序錯(cuò)誤和測試用例運(yùn)行過程中的邏輯分析员串。
圖5.3.1.2-2 軟件示波器接收函數(shù)圖
5.4測試缺陷-Bug信息匯總
圖5.4Bug缺陷匯總
5.4.1 Bug按日趨勢圖和Bug類型分布組合
Bug按日趨勢圖直觀地反映Bug提交趨勢。
點(diǎn)擊折線圖上的點(diǎn)會顯示相應(yīng)的Bug組成昼扛。
圖5.4.1 BUG按日趨勢圖
5.4.2 Bug提交排行榜
給出提交Bug的測試工程師的排行榜寸齐。
彩條圖可以選擇按照Bug級別顯示,也可以選擇按照Bug類型顯示抄谐。
圖5.4.2BUG提交排行榜
5.5測試缺陷-Bug詳細(xì)列表
圖5.5-1 bug詳細(xì)列表
顯示提交的BUG的詳細(xì)信息渺鹦、包括提交人、BUG類型蛹含、對應(yīng)的測試用例等毅厚。
圖5.5-2BUG詳細(xì)信息圖
5.6覆蓋率-按日增長趨勢圖
圖5.6 按日增長趨勢圖
5.6.1 覆蓋率信息匯總
可以查看當(dāng)前版本覆蓋率的信息,可以選擇多種覆蓋率進(jìn)行查看以及各個(gè)測試模塊占覆蓋率的比浦箱。
圖5.6.1 覆蓋率信息匯總圖
5.6.2 覆蓋率按日增長曲線圖
覆蓋率按日增長曲線圖吸耿,讓管理者更好的把握測試過程祠锣。
圖5.6.2 每日覆蓋率增長曲線圖
5.6.3 雷達(dá)圖
根據(jù)項(xiàng)目的需要,測試人員可以自己設(shè)置覆蓋率的上限珍语,通過雷達(dá)圖展示是否達(dá)到預(yù)期锤岸。
覆蓋率指標(biāo)是否要每項(xiàng)都到100%才算測試結(jié)束?在覆蓋率達(dá)標(biāo)方面板乙,用戶可以按每個(gè)應(yīng)用的實(shí)際情況進(jìn)行達(dá)標(biāo)線設(shè)置是偷。
給出數(shù)字化覆蓋率展示的用意在于:讓測試人員通過觀察,能更好的補(bǔ)充完善測試用例募逞。雷達(dá)圖的目的蛋铆,是為了當(dāng)測試人員觀察是否達(dá)到預(yù)期。
圖5.6.3 覆蓋率總雷達(dá)圖
5.6.4 函數(shù)|類|文件覆蓋率統(tǒng)計(jì)
分析匯總了函數(shù)放接、類刺啦、文件的各個(gè)覆蓋率量度值,更清晰的掌握目標(biāo)代碼覆蓋率纠脾。
圖內(nèi)容:顯示當(dāng)前版本的文件玛瘸、類、函數(shù)在各個(gè)覆蓋率之間的分布苟蹈。
縱向:代表覆蓋率的不同級別糊渊,取各種覆蓋率值,點(diǎn)擊后自動進(jìn)行切換到相應(yīng)的覆蓋率
橫向:代表覆蓋率%區(qū)間慧脱,取值0-20渺绒、20-40、40-60菱鸥、60-80宗兼、80-100
總量:代表當(dāng)前版本的函數(shù)總量
圖5.6.4 函數(shù)|類|文件覆蓋率統(tǒng)計(jì)圖
5.7覆蓋率列表
圖5.7覆蓋率列表
5.7.1 覆蓋率列表與單函數(shù)的覆蓋率、復(fù)雜度雷達(dá)圖
通過對單個(gè)函數(shù)的覆蓋率的雷達(dá)圖設(shè)置氮采,用數(shù)字化的形式展示核心模塊的測試充分度殷绍。
圖5.7.1蓋率列表與單函數(shù)的覆蓋率、復(fù)雜度雷達(dá)圖
5.7.2 函數(shù)對應(yīng)的調(diào)用關(guān)系圖
選擇函數(shù)列表的中的函數(shù)扳抽,對應(yīng)展示該函數(shù)的調(diào)用關(guān)系篡帕,總3層。
圖5.7.2 選擇單函數(shù)調(diào)用關(guān)系圖
5.8復(fù)雜度-函數(shù)|類|包復(fù)雜度統(tǒng)計(jì)
圖5.8 函數(shù)/類/文件復(fù)雜度統(tǒng)計(jì)
5.8.1 復(fù)雜度統(tǒng)計(jì)信息
為了正對復(fù)雜度的風(fēng)險(xiǎn)贸呢,星云精準(zhǔn)測試給出了預(yù)警報(bào)告表和復(fù)雜度詳細(xì)列表镰烧。
對于安全系數(shù)高的客戶,測試人員可以要求開發(fā)進(jìn)行重新設(shè)計(jì)降低風(fēng)險(xiǎn)楞陷。
圖5.8.1 復(fù)雜度預(yù)警
5.8.2 復(fù)雜度列表
星云精準(zhǔn)測試報(bào)表中怔鳖,展示所有函數(shù)的復(fù)雜度信息。
點(diǎn)擊某一函數(shù)固蛾,會在列表下方繪制對應(yīng)的雷達(dá)統(tǒng)計(jì)圖结执。
圖5.8.2復(fù)雜度列表
微信掃碼下載精準(zhǔn)測試白皮書