西北民族大學(xué)數(shù)學(xué)與計算機科學(xué)學(xué)院 妥澤花
隨著IT行業(yè)的高速發(fā)展,軟件的開發(fā)已經(jīng)成為助力提升國家經(jīng)濟水平的重要手段。與此同時,軟件產(chǎn)品的升級也成為公司提升軟件產(chǎn)品自身價值的不二選擇。軟件升級的本質(zhì)是功能的提升與完善,如何評判軟件產(chǎn)品的好與壞,軟件測試是必不可少的環(huán)節(jié)。本文主要針對軟件測試方法中的黑盒測試與白盒測試進行比較探究,研究這兩種截然不同的測試方法對軟件產(chǎn)品的測評影響。
黑盒測試其實是我們平常所說的“功能測試”,它主要測試的是產(chǎn)品功能是否可以實現(xiàn),不在乎產(chǎn)品內(nèi)部的結(jié)構(gòu),只針對產(chǎn)品的功能做出檢測評價。測試過程中,通常會將程序看作一個不能打開的黑盒子,在測試人員無法從外面看見產(chǎn)品內(nèi)部結(jié)構(gòu)的情況下,對軟件界面和軟件功能進行測試。由于無法看清產(chǎn)品的內(nèi)部結(jié)構(gòu),《軟件需求規(guī)格說明書》成為幫助軟件測試人員明確測試目標(biāo)的主要依據(jù)。
白盒測試又被稱為“透明盒測試”或“結(jié)構(gòu)測試”。在測試時,將程序看作一個“白盒子”(或“透明盒”),程序的內(nèi)部結(jié)構(gòu)透明化,對軟件產(chǎn)品進行測試。但有一個必要條件,那就是,測試人員在測試之前必須對產(chǎn)品的內(nèi)部結(jié)構(gòu)進行熟悉和掌握,從而通過各種編程語言設(shè)計測試用例,實現(xiàn)軟件的測試。測試大部分情況下,都是對數(shù)據(jù)的引用與定義進行數(shù)據(jù)測試。其次,還包括對程序的邏輯路徑進行覆蓋測試。
眾所周知,黑盒測試與白盒測試是軟件測試方法中兩種相對的方法。對于不同的程序、開發(fā)軟件應(yīng)使用不同的測試方法對其進行測試。用何種測試方法主要取決于軟件產(chǎn)品的功能設(shè)計、邏輯設(shè)計等?,F(xiàn)對如何從這兩種測試方法中進行選擇做出探究。
隨著軟件技術(shù)的不斷成熟與完善,軟件測試的規(guī)模和復(fù)雜度在不斷地加大,軟件測試也逐漸形成了一套完整的體系,逐漸走向規(guī)范化。
從兩者的定義出發(fā),黑盒測試的測試出發(fā)點就比較明確了,即功能是否可以實現(xiàn)。由于無法得知產(chǎn)品的邏輯結(jié)構(gòu),所以這種方法不能幫助測試人員進行全面的測試。而白盒測試則不同,白盒測試的測試出發(fā)點是:根據(jù)產(chǎn)品的內(nèi)部結(jié)構(gòu)測試產(chǎn)品的功能是否可以實現(xiàn)。因測試人員對產(chǎn)品有了事先的了解,所以測試人員可以將測試的過程更加精細化、完整化。
顯而易見,這兩種測試方法的測試出發(fā)點確實是不同的,這使得兩種方法在進行測試時的關(guān)注點也不同,繼而側(cè)重點也會有所差異的。使用不同的測試方法,設(shè)計測試用例的思路基本上都是固定的。這種固定思維有時可以幫助測試人員更快的制定測試用例,但有可能會阻礙測試人員發(fā)現(xiàn)一些比較容易忽視的錯誤。
有測試經(jīng)驗的人員肯定知道黑盒測試和白盒測試的測試覆蓋范圍是不同的。即便是同一個程序,用不同的測試方法所設(shè)計的測試用例也是不同的。為什么會有所差異呢?下面做出具體分析。
首先,軟件規(guī)格說明書(Specification)是黑盒進行測試的依據(jù)。因此,軟件規(guī)格說明書中所記錄的功能需求、性能需求是它設(shè)計測試用例的主要依據(jù)。軟件規(guī)格說明書中要求的多少也就決定了黑盒測試設(shè)計用例的多少。
與黑盒測試不同,白盒測試會更加關(guān)注代碼本身,所以測試用例的數(shù)量與代碼的復(fù)雜程度、代碼的數(shù)量等息息相關(guān)。這些因素,不僅使測試用例的數(shù)量劇增,更使得測試任務(wù)所需要的執(zhí)行時間劇增,極大可能會使測試人員無法按時完成測試任務(wù)。
從理論的角度上講,白盒測試是可以進行完全的覆蓋測試的。但是,由于其他未知的、無法控制的因素,可能很難作到全面覆蓋。不過,它依舊是項目研發(fā)驗證測試覆蓋率的重要手段。
可以得出,白盒測試的覆蓋范圍是廣而全,即覆蓋面廣、測試全面;而黑盒測試的覆蓋范圍則是準(zhǔn)而明,即測試用例精準(zhǔn)、設(shè)計目標(biāo)明確。雖然白盒測試更加全面,但黑盒測試也有屬于它的優(yōu)點。因為黑盒測試設(shè)計的測試用例數(shù)量較少,所以可以有效縮減測試時間,并且降低測試成本。
兩種測試方法對測試人員的要求如表1所示。
表1 兩種測試方法對測試人員的不同要求
看過兩種測試方法對測試人員的要求的人可能會說,黑盒測試不需要研究代碼,那黑盒測試肯定比白盒測試簡單。事實并非如此,有時候黑盒測試比白盒測試更加具有挑戰(zhàn)性。由于對內(nèi)部結(jié)構(gòu)的不清楚,就會加大測試的難度。通過對IT行業(yè)測試人員數(shù)量的探究發(fā)現(xiàn),有很多轉(zhuǎn)行的人,都會選擇做“黑盒測試”,因為它的起點比較低,更容易上手,但是要想更好的完成測試還是需要專業(yè)的測試人員。
軟件開發(fā)是有階段性的,軟件的開發(fā)是一步步發(fā)展而來的,從無到有,這是需要過程的。按照開發(fā)過程的時間進行劃分,可以將其劃分為前、中、后期三個階段。這三個階段對軟件開發(fā)人員的要求不同,對軟件測試人員的要求也不同。而這兩種相對的測試方法也在不同的階段發(fā)揮著它們的作用。具體情況,如圖1所示。
圖1 軟件開發(fā)階段兩種測試方法的使用情況
在軟件開發(fā)的前期階段,主要進行需求分析、概要設(shè)計以及詳細設(shè)計。前期的代碼量并不是很多,測試人員一般會采用白盒測試進行測試,通過它可以更好的完成測試任務(wù)。前期會根據(jù)客戶需求所書寫軟件的需求說明書和設(shè)計文檔進行測試,故而,前期的測試任務(wù)是十分重要的,它不僅關(guān)系到客戶的直接利益,更對后面的工作有不可忽視的影響。前面做好了,可以很大程度的幫助測試人員完成之后的任務(wù),也可以有效的避免一些不必要的軟件缺陷。最重要的一點是,前期測試發(fā)現(xiàn)的問題越多,修復(fù)所需要的花費也就會越少。因為前期的修復(fù)并沒有那么復(fù)雜,成本相對后期就會較低。
在中期,一般都是將兩種方法相結(jié)合的方式進行測試。這種聯(lián)合使用會幫助測試人員更快找到出現(xiàn)的錯誤和問題。
到了開發(fā)階段的后期,會進行系統(tǒng)測試和確認(rèn)測試,這個時候黑盒測試就發(fā)揮了極其重要的作用。后期的檢查更加注重軟件產(chǎn)品功能的完整性和可使用性。利用黑盒測試可以更高效、更準(zhǔn)確的測試軟件的功能及其使用情況。后期就會從“用戶”的角度進行試測,作為用戶肯定會更加注重產(chǎn)品的使用體驗。因此,黑盒測試在系統(tǒng)測試和確認(rèn)測試中起著無法替代的作用。
盡管每個階段用到的方法不同,但每個階段所使用的方法也不是一成不變的,這要根據(jù)軟件自身的要求進行選擇。兩種方法相輔相成,往往會使得測試更加完美。
結(jié)語:軟件測試貫穿于軟件開發(fā)的整個過程中,測試過程中產(chǎn)生的問題不一定都是由程序員編寫的代碼所引起的,也有可能是由于前期階段的需求分析不到位,邏輯結(jié)構(gòu)設(shè)計不合理等導(dǎo)致的。所以,在開發(fā)的過程中要不斷地進行測試,并作好編寫測試報告的工作,從而幫助開發(fā)團隊順利推進開發(fā)工作。軟件測試人員就像是整個項目過程中“后勤保障”,時時刻刻存在,是不可缺少的一部分。
根據(jù)從兩種測試方法的測試出發(fā)點、覆蓋范圍、適用階段及對測試人員的要求的研究可以發(fā)現(xiàn)兩者之間的不同。黑盒測試盡管是不同于白盒測試的測試方法,但是可以看出白盒測試其實是對黑盒測試的補充與完善。選擇哪種測試方法取決于軟件的需求規(guī)格說明書。在測試一個軟件產(chǎn)品時,可能會選擇其中一種方法進行測試,但大多數(shù)的情況下,需要將這兩種方法相結(jié)合起來進行測試。測試人員盡可能多的發(fā)現(xiàn)Bug,就會更好地幫助開發(fā)人員完成他們的編碼工作。如何進行選擇,需要根據(jù)測試任務(wù)的需求進行抉擇。選擇時也可以參考一些開發(fā)人員的意見,并且把保障軟件質(zhì)量放在第一位。