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