淡海英
(陜西國防工業(yè)職業(yè)技術(shù)學(xué)院,陜西 西安 710300)
白盒測試是軟件測試的一種。白盒測試把測試對象看做一個(gè)透明的盒子,測試人員必須了解程序的內(nèi)部結(jié)構(gòu)和處理過程,相比于功能測試的黑盒測試而言,白盒測試是結(jié)構(gòu)測試,被測對象是源代碼,以程序的內(nèi)部邏輯為基礎(chǔ)設(shè)計(jì)測試用例。但是對于程序本身的邏輯錯(cuò)誤白盒測試卻無能為力,尤其是需求規(guī)格說明書里要求但未實(shí)現(xiàn)的部分白盒測試更是無法進(jìn)行測試。
白盒測試的方法有三種,一是程序結(jié)構(gòu)分析,根據(jù)源代碼可以首先繪制程序的流程圖,然后根據(jù)流程圖分析程序的結(jié)構(gòu)。二是邏輯覆蓋方測試,根據(jù)程序的內(nèi)部結(jié)構(gòu),對所有的路徑進(jìn)行測試,是一種窮舉路徑的測試方法。三是基本路徑測試,根據(jù)程序的邏輯判斷,分析程序中的路徑,再進(jìn)行用例的設(shè)計(jì)。白盒測試是軟件測試中比較重要的一種測試方法,可以分為四個(gè)步驟實(shí)施,第一步,撰寫測試計(jì)劃。根據(jù)需求說明書,制定軟件測試的進(jìn)度,確定人員、范圍、技術(shù)、風(fēng)險(xiǎn)等,形成測試計(jì)劃或測試方案。第二步,撰寫測試用例。根據(jù)源代碼及其分析,按照一定規(guī)范化的方法進(jìn)行軟件結(jié)構(gòu)劃分,并進(jìn)行測試用例的設(shè)計(jì),形成測試用例表。第三步,執(zhí)行測試用例。按照之前寫好的測試用例,進(jìn)行系統(tǒng)測試的執(zhí)行,并且記錄測試結(jié)果,形成缺陷表和缺陷報(bào)告。第四步,撰寫測試總結(jié)。將前期的測試工作做總結(jié),分析用例的數(shù)量、發(fā)現(xiàn)的高、中、低缺陷數(shù),評價(jià)本系統(tǒng),形成完整的總結(jié)報(bào)告。
白盒測試總體上分為兩大類,分別是靜態(tài)方法和動(dòng)態(tài)方法。靜態(tài)分析是指按一定的步驟直接檢查源代碼的方法,包括代碼的分析、代碼審查、代碼走查,最主要的特點(diǎn)是不實(shí)際運(yùn)行程序。動(dòng)態(tài)分析是指按一定的步驟生成測試用例并運(yùn)行程序來發(fā)現(xiàn)錯(cuò)誤,包括邏輯覆蓋測試。邏輯覆蓋測試是程序內(nèi)在邏輯結(jié)構(gòu)為基礎(chǔ)的測試。包括語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋、路徑覆蓋六種測試。語句覆蓋是指設(shè)計(jì)足夠多的測試用例,使得所有的語句都被至少執(zhí)行一次。判定覆蓋是設(shè)計(jì)足夠多的測試用例使程序中的每個(gè)判定為真和為假的值都執(zhí)行一次,判定覆蓋的覆蓋標(biāo)準(zhǔn)比語句覆蓋稍微強(qiáng)一些。判定覆蓋不僅滿足了判定覆蓋,還滿足了語句覆蓋,所以它比語句覆蓋率高。但它的缺點(diǎn)仍然是無法發(fā)現(xiàn)程序段中存在的邏輯性判定錯(cuò)誤,判定/條件覆蓋是指設(shè)計(jì)足夠多的測試用例,使得判定中的每個(gè)條件為“真值”和“假值”至少執(zhí)行一次,也使得每個(gè)判定為“真值”和“假值”時(shí)至少執(zhí)行一次。條件組合覆蓋是指設(shè)計(jì)足夠多的測試用例,使得每個(gè)判定中條件的各種可能組合都至少執(zhí)行一次。路徑覆蓋是指設(shè)計(jì)足夠多的測試用例,使程序的每條可能路徑都至少執(zhí)行一次,如果程序圖中有循環(huán),則要求每個(gè)循環(huán)至少執(zhí)行一次。路徑覆蓋是覆蓋度最高的,可以覆蓋程序中所有可能的路徑。
白盒測試是軟件測試中常用的測試方法,需要測試人員熟悉程序的內(nèi)部和代碼,通過掌握六種不同的測試方法對測試對象進(jìn)行測試,從而發(fā)現(xiàn)程序中的缺陷,六種覆蓋方法各有利弊,實(shí)際測試時(shí)可以采用多種方法對程序進(jìn)行測試。