網(wǎng)絡(luò)技術(shù)是從1990年代中期發(fā)展起來的新技術(shù),它把互聯(lián)網(wǎng)上分散的資源融為有機(jī)整體,實(shí)現(xiàn)資源的全面共享和有機(jī)協(xié)作,使人們能夠透明地使用資源的整體能力并按需獲取信息。資源包括高性能計算機(jī)、存儲資源、數(shù)據(jù)資源、信息資源、知識資源、專家資源、大型數(shù)據(jù)庫、網(wǎng)絡(luò)、傳感器等。 當(dāng)前的互聯(lián)網(wǎng)只限于信息共享,網(wǎng)絡(luò)則被認(rèn)為是互聯(lián)網(wǎng)發(fā)展的第三階段。 幾個月前我還在談?wù)摵诤袦y試不一定比白盒測試含量低,現(xiàn)在我卻可以比較肯定地說,黑盒測試比白盒測試更難,要求更高。道理其實(shí)非常簡單,黑盒,白盒測試的本質(zhì)區(qū)別在于源代碼的訪問權(quán)利,白盒測試具有這種權(quán)利,因此也就具有更多的資源和信息進(jìn)行測試,當(dāng)然事情就會變得容易很多,而黑盒測試由于不能看到源代碼,就使得對于白盒測試人員發(fā)現(xiàn)的bug,你要花更多的時間,并且具有更高的技術(shù)才有可能發(fā)現(xiàn)。
我做黑盒測試已經(jīng)4年多了,是一個地地道道的黑盒測試人員,可是我具有源代碼訪問的權(quán)利,也就是說,雖然我是做黑盒測試的,但是我所擁有的信息并不比白盒測試人員少。隨著我黑盒測試經(jīng)驗(yàn)和技術(shù)的提高,我突然發(fā)現(xiàn)我已經(jīng)完全依賴與源代碼提供的信息了,如果沒有源代碼,我的黑盒測試的工作將會變得復(fù)雜很多,困難很多,甚者無法實(shí)現(xiàn)。這也讓我有了一個強(qiáng)烈的感覺,就是黑盒測試比白盒測試更難。
在Symantec出版的一本書《TheArtofSoftwareSecurityTest》里邊就有這個說法。這本書我覺得一般般,但是里邊體現(xiàn)著這個道理,就是,“對于白盒測試,一個公司可以組成一個測試隊伍來進(jìn)行,而對于黑盒測試,可能就很少有公司有這個能力了,只能去外邊聘請專業(yè)的公司來作,這個成本是很高的,但是是值得的”。
經(jīng)常聽到有人抱怨“我在公司是做黑盒測試的,沒什么技術(shù)含量,我的目標(biāo)就是轉(zhuǎn)到白盒測試”,我一直覺得這個說法是可以質(zhì)疑的,也希望看了我的這篇文章以后,不要再出現(xiàn)這種聲音,更不要再拿它當(dāng)成自己不去提高測試技術(shù)的一個冠冕堂皇的借口了。
為什么我們大多數(shù)人,包括以前我自己都會認(rèn)為黑盒測試比白盒測試的技術(shù)含量低呢?那是因?yàn)椋覀兘^大多數(shù)人都是在做低端黑盒測試的。很早以前我就曾想過,黑客都是通過黑盒測試的方法來尋找安全漏洞的,我們怎么能說黑盒測試技術(shù)含量低呢?隨著自己的水平向黑客的方向接近,自己也越來越有更深,更豐富的理解和體會了。
如果我們把剛進(jìn)入黑盒測試領(lǐng)域的新人的技術(shù)打分為0,而黑客的技術(shù)打分為5的話,那么根據(jù)技術(shù)水平我有這樣一個列表:
0.測試新手
1.黑盒手工測試
2.黑盒自動化測試
3.具有白盒測試能力
4.安全測試
5.黑客
大家注意,很多人把自己的測試技術(shù)的提高依賴于公司,依賴于team,依賴于project,這是不對的。我本人在公司的工作內(nèi)容不過就是黑盒自動化測試,可是這并不影響我可以向更高的方向發(fā)展,現(xiàn)在internet這么發(fā)達(dá),什么資料不能找到呢?各種各樣的計算機(jī)書籍,網(wǎng)上各種各樣的計算機(jī)技術(shù)交流探討的論壇,博客等等。很多人覺得跳槽,換個工作自己就能更好的發(fā)展測試技術(shù),這也是有誤區(qū)的。說句實(shí)話,個人發(fā)展本質(zhì)上還是個人的問題,并不是公司的問題,或者你的lead,你的manager的問題,一個公司既然要你了,就說明你自己的能力和水平跟公司對你的要求還是比較接近的,公司對你已經(jīng)有一個期望值了,也就是說你能勝任這份工作了,而再往上的發(fā)展并不屬于公司對你的期望了,絕大多數(shù)的情況還是要靠個人的。因此,我個人認(rèn)為,無論在任何的工作環(huán)境,工作內(nèi)容的情況,你都是有技術(shù)提高余地的,但是這事情要由你自己來drive,而不要太多地依賴外部環(huán)境。我從小到大的學(xué)習(xí),主要是靠自學(xué),我很少能集中精力地去聽完老師的一堂課。包括現(xiàn)在,我很多training都是沒聽完就走人了,或者有些簽個到就溜。我的這個性格造就了我很獨(dú)立的學(xué)習(xí)能力,自己為自己規(guī)劃學(xué)習(xí),不知道對大家是否有借鑒作用。
話說回來,因?yàn)榇蠹覍?,1,2級別應(yīng)該都是比較熟悉的,我想談?wù)?,4,5級別。
3.作為一個黑盒測試人員,沒有人會要求你不具備白盒測試能力,如果你有源代碼訪問的權(quán)利,那很好,你完全可以利用這個優(yōu)勢,把通過查看源代碼得到的信息應(yīng)用到你的黑盒測試中去。如果你沒有源代碼訪問的能力,這也并不能阻礙你在這個領(lǐng)域進(jìn)行探索和實(shí)踐。如果你的項目是Java,.NET這種,你可以反編譯,如果你的項目是C,C++這種,你可以反匯編。總而言之,所謂具有白盒測試能力的意思是,發(fā)現(xiàn)一個bug能夠定位到代碼里,是什么代碼,為什么產(chǎn)生這個bug?可以進(jìn)行代碼級的測試用例的設(shè)計。一般來說,這個級別的要求是具備良好的代碼讀寫的能力。
4.安全測試與白盒測試的根本區(qū)別在于安全意識,黑客的思維。有一本書《WritingSecureCode》里面提到“你可以培訓(xùn)一個人具有測試安全feature的能力,你很難培訓(xùn)一個人具有黑客的思維方式,如果你發(fā)現(xiàn)了這樣一個人,你就Hire他”。在這個級別的人要具有良好的安全意識,知道各種各樣的攻擊方式,當(dāng)發(fā)現(xiàn)一個bug的時候要就有安全方面的判斷,比如“是否一個安全漏洞”,“是否能夠被黑客利用”,“嚴(yán)重程度如何”,等等。同樣,自己的測試內(nèi)容里要包含大量的安全測試用例。
網(wǎng)絡(luò)的神奇作用吸引著越來越多的用戶加入其中,正因如此,網(wǎng)絡(luò)的承受能力也面臨著越來越嚴(yán)峻的考驗(yàn)―從硬件上、軟件上、所用標(biāo)準(zhǔn)上......,各項技術(shù)都需要適時應(yīng)勢,對應(yīng)發(fā)展,這正是網(wǎng)絡(luò)迅速走向進(jìn)步的催化劑。
|