余慧敏,徐白,周楷林,李芳芳
(上海航天電子技術研究所,上海,201109)
黑盒測試又被稱為功能測試、數據驅動測試或基于軟件需求規格說明的測試,是通過使用整個軟件或某種軟件功能來嚴格的測試,而并沒有通過檢查程序的源代碼或者很清楚的了解該軟件的源代碼程序具體是怎么設計的[1]。在黑盒測試時,軟件測試員只需知道軟件要做什么而無法看到盒子里面的軟件是如何運行的。只要進行一些輸入,就能得到某種輸出結果[2]。測試人員通過輸入他們的數據然后看輸出的結果從而了解軟件怎樣工作。黑盒測試方法主要有等價類劃分法、邊界值分析法、因果圖、錯誤推測法等。
白盒測試也稱結構測試、透明盒測試、邏輯驅動測試或基于代碼的測試。白盒測試是通過程序的源代碼進行測試而不使用用戶界面。它是知道產品內部工作過程,可通過測試來檢測產品內部動作是否按照規格說明書的規定去正常進行,按照程序內部的結構測試程序,來檢驗程序中的每條通路是否都能按預定要求正確工作,動態白盒測試的測試方法主要有邏輯驅動、基路測試等。
軟件的黑盒測試意味著測試要在軟件的接口處進行。這種方法是把測試對象看做一個黑盒子,測試人員完全不考慮程序內部的邏輯結構和內部特性,只依據程序的需求規格說明書,檢查程序的功能是否符合它的功能說明。因此黑盒測試又叫功能測試。
軟件的白盒測試是對軟件的過程性細節做細致的檢查。這種方法是把測試對象看做一個打開的盒子,它允許測試人員利用程序內部的邏輯結構及有關信息,設計或選擇測試用例,對程序的所有邏輯路徑進行測試,通過在不同點檢查程序狀態,確定實際狀態是否與預期的狀態一致。因此白盒測試又稱為結構測試。白盒測試主要是想對程序模塊進行檢查[3]。
黑盒測試:設有一個檔案管理系統,要求用戶輸入以年月表示的日期。假設日期限定在1990年1月~2049年12月,并規定日期由6位數字字符組成,前面4位表示年后面2位表示月。首先劃分有效等價類和無效等價類(如表1所示),然后根據等價類設計測試用例(如表2所示)。

表1 等價類表

表2 測試用例表
白盒測試:如有如下C語言程序段,可以使用基本路徑法保證每條路徑至少執行一次。
if(a>b)
{c=1;}
else if(a==b)
{c=0;}
else
{c=-1;}
printf(“%d ”,c);
該程序段有3條獨立路徑,根據獨立路徑設計的3個測試用例如下表3所示。

表3 測試用例表
黑盒測試:某型號火力控制軟件要求最多接收指控系統8批精跟目指和8批粗跟目指給跟蹤制導雷達,超過額度則不響應;通過指控系統發送如下表4中的跟蹤制導雷達粗跟數和精跟數查看軟件是否正常響應。

表4 等價雷表

表5 測試用例表
白盒測試:某型號抗干擾軟件速度欺騙干擾判決功能,要求當航跡數大于1時將速度欺騙干擾標志置1,當航跡數為1或0時速度欺騙干擾標志置0。該功能有2條獨立路徑,根據獨立路徑設計的2個測試用例如下表6所示。

圖1 流程圖

表6 測試用例表
白盒測試和黑盒測試是軟件測試中兩種不同的測試方法。黑、白盒測試有著本質區別,又是互相聯系、相輔相成的。它們從不同的角度進行分析設計,各有重點。在現代測試理念中常將這兩種方法交叉使用,以達到更好的測試效果,使應用系統更加完善,產品的質量更高。
參考文獻
[1]楊海成.航天型號軟件工程[M].中國宇航出版社,2011:100-102.
[2]張小松,王鈺,曹躍.軟件測試[M].機械工業出版社,2014:35-37.
[3]龔昌.淺談白盒測試與黑盒測試在軟件測試中的應用[J].信息與電腦.2011(1).