最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

軟件測試 | 白盒的測試方法

2023-05-19 15:28 作者:愛測軟件測試  | 我要投稿

白盒測試又稱為結(jié)構(gòu)測試、透明盒測試、邏輯驅(qū)動測試或基于代碼的測試。白盒測試是一種測試用例設(shè)計方法。盒子指的是被測試的軟件,白盒指的是盒子是可視的,即清楚盒子內(nèi)部的東西以及里面是如何運(yùn)作的。白盒法在全面了解程序內(nèi)部邏輯結(jié)構(gòu)的基礎(chǔ)上,對所有邏輯路徑進(jìn)行測試。白盒法是窮舉路徑測試。在使用這一方法時,測試者必須檢查程序的內(nèi)部結(jié)構(gòu),從檢查程序的邏輯結(jié)構(gòu)著手,得出測試數(shù)據(jù)。

白盒測試是在程序不同地方設(shè)立檢查點,用來檢查程序的狀態(tài),以確定實際運(yùn)行狀態(tài)與預(yù)期狀態(tài)是否一致。

1.白盒測試的度量

白盒測試是根據(jù)待測產(chǎn)品的內(nèi)部實現(xiàn)細(xì)節(jié)來設(shè)計測試用例。白盒測試涵蓋單元測試、集成測試。一般使用代碼覆蓋率作為白盒測試的主要度量指標(biāo)。

2.代碼覆蓋率常見概念

(1)語句覆蓋:每行代碼都要覆蓋至少一次(覆蓋是測試人員之間常用的交流語言,也即測試到的地方稱為覆蓋)。

(2)判定覆蓋:判定表達(dá)式的真假至少覆蓋一次。

(3)條件覆蓋:使每個判定表達(dá)式中的每一個條件都取到各種可能的值。

(4)判定/條件覆蓋:判定覆蓋于條件覆蓋都需要覆蓋到。

(5)條件組合覆蓋:判定表達(dá)式中的所有條件組合都需要覆蓋。

(6)分支覆蓋:控制流中的每條邊都要被覆蓋一次。

(7)路徑覆蓋:所有的路徑都要盡量覆蓋。

(8)指令覆蓋:一行代碼會被編譯為多條指令,盡可能地覆蓋所有指令。

(9)方法覆蓋:每個方法至少要被覆蓋一次。

(10)類覆蓋:每個類至少被覆蓋一次。

3.覆蓋率統(tǒng)計的工具

(1)EMMA:是一個開源、面向Java程序的測試覆蓋率收集和報告工具。它通過對編譯后的Java字節(jié)碼文件進(jìn)行插樁,在測試執(zhí)行過程中收集覆蓋率信息,并通過支持多種報表格式對覆蓋率結(jié)果進(jìn)行展示。

(2)Cobertura:是一款優(yōu)秀的開源測試覆蓋率統(tǒng)計工具,它與單元測試代碼結(jié)合,標(biāo)記并分析在測試包運(yùn)行時執(zhí)行了哪些代碼和沒有執(zhí)行哪些代碼,以及所經(jīng)過的條件分支,來測量測試覆蓋率。除了找出未測試到的代碼并發(fā)現(xiàn)Bug外,Cobertura還可以通過標(biāo)記無用的、執(zhí)行不到的代碼來優(yōu)化代碼,最終生成一份美觀、詳盡的HTML覆蓋率檢測報告。

(3)JaCoCo:是一個開源的覆蓋率統(tǒng)計工具,針對Java語言,是現(xiàn)在流行的覆蓋率統(tǒng)計工具。

4.流程覆蓋

流程覆蓋用路徑覆蓋率表達(dá),是利用代碼執(zhí)行流代表流程。執(zhí)行時需要對流程進(jìn)行裁剪獲取一個適合的小規(guī)模的業(yè)務(wù)子集。

流程覆蓋率 = 測試經(jīng)過的路徑 / 業(yè)務(wù)子集路徑

5.精準(zhǔn)化測試

精準(zhǔn)化測試是一套計算機(jī)測試輔助分析系統(tǒng)。精準(zhǔn)化測試的核心組件包含軟件測試示波器、用例和代碼的雙向追溯、智能回歸測試用例選取、覆蓋率分析、缺陷定位、測試用例聚類分析、測試用例自動生成系統(tǒng)。這些組件的功能完整地構(gòu)成了精準(zhǔn)化測試技術(shù)體系。

精準(zhǔn)化測試強(qiáng)調(diào)代碼調(diào)用鏈與黑盒測試用例之間的關(guān)聯(lián)。可以根據(jù)代碼變更自動分析影響范圍。例如,研發(fā)人員修改了1行代碼,功能用例代碼有1000行,但實際上很多用例和這1行代碼是沒有關(guān)系的,精準(zhǔn)化測試可以判斷出有哪些測試用例和改動的這一行代碼有關(guān)系。例如1000個測試用例當(dāng)中,只有20個和修改的代碼有關(guān)系。那么測試的范圍可以大大縮減,測試效率就會提高。

精準(zhǔn)化測試還有一個很有價值的作用,就是在黑盒測試過程中,借助代碼流程覆蓋率指導(dǎo)測試活動。例如,在黑盒測試結(jié)束之后,觀察代碼的覆蓋情況,發(fā)現(xiàn)有一些路徑?jīng)]有被覆蓋到,這個時候就需要繼續(xù)補(bǔ)充測試用例,一直到代碼可以很全面地被覆蓋。這是系統(tǒng)測試與底層白盒測試相結(jié)合的一個方法。

精準(zhǔn)化測試還可以用線上數(shù)據(jù)推導(dǎo)有效的測試用例。例如測試一個系統(tǒng),這個系統(tǒng)有大量歷史數(shù)據(jù),這時就可以提取其中一段運(yùn)行時間的數(shù)據(jù),使用這些數(shù)據(jù)繼續(xù)測試這個系統(tǒng)。測試完成后統(tǒng)計這些測試數(shù)據(jù)中哪些數(shù)據(jù)對于測試覆蓋率的增加是有幫助的,可以使用大數(shù)據(jù)的方法,自動提取出對于測試覆蓋率有增益效果的數(shù)據(jù)。這些測試數(shù)據(jù)實際上屬于同一個集合,在這種集合中,只取一部分測試數(shù)據(jù)就可以。利用線上數(shù)據(jù)反推有效測試用例也是精準(zhǔn)化測試的重要作用。

由于精準(zhǔn)化測試需要測試人員對白盒測試相當(dāng)了解,對測試人員的技能要求比較高,所以實現(xiàn)起來有一定的難度。目前,行業(yè)中還沒有開源的精準(zhǔn)化測試的工具。現(xiàn)階段只能通過JaCoCo工具,自主地去實現(xiàn)精準(zhǔn)化測試。


軟件測試 | 白盒的測試方法的評論 (共 條)

分享到微博請遵守國家法律
大英县| 大名县| 平泉县| 蚌埠市| 深圳市| 上虞市| 柏乡县| 汕头市| 镇原县| 沭阳县| 湘阴县| 府谷县| 当涂县| 中宁县| 汾阳市| 朔州市| 临海市| 思茅市| 宽城| 交口县| 彭山县| 乐都县| 泊头市| 青田县| 渝中区| 类乌齐县| 辛集市| 鞍山市| 克东县| 灌云县| 临城县| 南通市| 尚志市| 桦甸市| 石台县| 孝感市| 原平市| 西青区| 海盐县| 永川市| 松潘县|