當(dāng)涉及到軟件質(zhì)量時(shí)筝闹,我們希望盡可能多地以人工測(cè)試代碼,實(shí)際上腥光,對(duì)于每個(gè)測(cè)試周期关顷,重要的是要考慮多種策略來衡量測(cè)試覆蓋率,并將系統(tǒng)部署到位武福。
測(cè)試覆蓋率是測(cè)試質(zhì)量的度量之一议双,它告訴我們被測(cè)試的應(yīng)用程序有多少已經(jīng)過測(cè)試。你可以把它想象成打掃房子的地板捉片。想象一下平痰,如果我的清掃范圍標(biāo)準(zhǔn)只包括清掃臥室。按照這個(gè)標(biāo)準(zhǔn)伍纫,如果我打掃了100%的臥室宗雇,那是否意味著整個(gè)房子是干凈的?不莹规,因?yàn)檫€有廚房赔蒲,餐廳,浴室…你懂的良漱!因此舞虱,必須始終小心測(cè)試覆蓋率,認(rèn)識(shí)到有時(shí)它有局限性债热。
測(cè)試覆蓋率用于定義軟件的某些部分砾嫉,以便用測(cè)試覆蓋它們。它還告訴我們何時(shí)進(jìn)行了充分的測(cè)試窒篱,讓我們知道還需要測(cè)試什么(從而擴(kuò)大覆蓋范圍)焕刮,并幫助我們定量地了解測(cè)試的范圍舶沿。這是一個(gè)很好的衡量標(biāo)準(zhǔn),即使有 100% 的測(cè)試覆蓋率配并,我們也不能保證我們的應(yīng)用程序 100% 沒有錯(cuò)誤括荡。
有很多方法可以考慮測(cè)試覆蓋率。在這里溉旋,我們將檢查代碼覆蓋率畸冲、面向數(shù)據(jù)的覆蓋率以及測(cè)試人員可以使用的大量其他技術(shù)。
代碼覆蓋率
代碼覆蓋率是衡量測(cè)試覆蓋率最常用的指標(biāo)观腊。它測(cè)量測(cè)試用例覆蓋的行數(shù)邑闲,報(bào)告代碼中的行總數(shù)和測(cè)試執(zhí)行的行數(shù)。本質(zhì)上梧油,它是測(cè)試套件運(yùn)行時(shí)程序源代碼的執(zhí)行程度苫耸。代碼覆蓋率越高,未被發(fā)現(xiàn)的bug進(jìn)入生產(chǎn)的可能性就越小儡陨。這種測(cè)量也可以分解為不同的層次褪子;不僅包括代碼行,還包括分支骗村、邏輯構(gòu)造函數(shù)內(nèi)部的決策等嫌褪。
面向數(shù)據(jù)的覆蓋
在面向數(shù)據(jù)的覆蓋范圍中,有輸入和輸出參數(shù)胚股,每個(gè)參數(shù)都有自己的域(它們可以擁有的可能值的范圍)笼痛。如果考慮所有的可能性,你會(huì)得到一個(gè)笛卡爾積琅拌,因?yàn)榭梢詼y(cè)試每一個(gè)可能的組合雁乡。
其他類型的保險(xiǎn)
除了前面提到的方法之外囤官,還有其他幾種方法可以涵蓋正在測(cè)試的產(chǎn)品,如狀態(tài)機(jī)陕见、決策表泣侮、決策樹即彪、等價(jià)劃分和邊界值等。每種技術(shù)都有“錯(cuò)誤理論”的支持活尊。錯(cuò)誤理論考慮了程序員犯下的典型錯(cuò)誤隶校。例如,等價(jià)分區(qū)和邊界值考慮了使用“<”而不是“<=”的錯(cuò)誤蛹锰,誤解了業(yè)務(wù)邏輯等深胳。
此外,還有其他類型的測(cè)試覆蓋率與代碼行或輸入測(cè)試數(shù)據(jù)無關(guān)铜犬。我們必須涵蓋的一點(diǎn)是移動(dòng)碎片化:我們是否涵蓋了主要的移動(dòng)設(shè)備舞终、操作系統(tǒng)和屏幕尺寸轻庆?當(dāng)談到瀏覽器和操作系統(tǒng)時(shí),我們必須考慮我們的web系統(tǒng)在操作系統(tǒng)和瀏覽器的任何組合中的行為敛劝,以及我們應(yīng)該測(cè)試多少個(gè)組合余爆。最后,我們必須考慮測(cè)試環(huán)境夸盟、上下文等蛾方。
制定計(jì)劃以優(yōu)化長(zhǎng)期覆蓋范圍
假設(shè)我們?cè)诓煌臑g覽器上測(cè)試不同的特性,并且用不同的測(cè)試套件組織了不同的測(cè)試用例上陕,每個(gè)測(cè)試套件都有自己的優(yōu)先級(jí)桩砰。我們需要針對(duì)所有瀏覽器執(zhí)行最關(guān)鍵的命令,但其余的释簿,我們可以決定在不同的瀏覽器上執(zhí)行亚隅。我們永遠(yuǎn)不能保證我們已經(jīng)完成了測(cè)試,但是當(dāng)時(shí)間緊迫時(shí)辕万,必須明智地盡最大努力降低風(fēng)險(xiǎn)枢步。
結(jié)論
測(cè)試覆蓋標(biāo)準(zhǔn)非常有用,但它們并不能保證任何事情渐尿。一些標(biāo)準(zhǔn)與其他標(biāo)準(zhǔn)相關(guān)醉途,我們需要使用最適合我們需求的模塊,還要考慮每個(gè)模塊的優(yōu)先級(jí)砖茸,并根據(jù)優(yōu)先級(jí)和復(fù)雜性定義每個(gè)模塊的覆蓋范圍隘擎。最后,我們可以應(yīng)用長(zhǎng)期覆蓋率標(biāo)準(zhǔn)來優(yōu)化測(cè)試覆蓋率凉夯。
演示工具:www.eolinker.com