此文是應(yīng)一位密友之約寫的,我并不是專業(yè)測試人員,做過的測試也不多,但此文還是值得一看,因?yàn)槲也辉敢飧傻氖虑槭菍懩切┳屓丝戳巳胨奈恼,所以你可以把本文?dāng)作一篇散文,聽我這個(gè)落魄的開發(fā)者談?wù)勛约旱慕?jīng)歷和感受。

  周正龍:我的虎照沒有任何bug。
  網(wǎng)民:沒有?我看顏色不對。
  周正龍:有什么不對?我用兩部相機(jī)拍的呢。
  網(wǎng)民:角度也很怪異。
  周正龍:我冒著生命危險(xiǎn)拍出來的。
  網(wǎng)民:怎么老虎一動(dòng)不動(dòng)?
  周正龍:保證沒有問題。
  網(wǎng)民:那你公開其它的照片。
  周正龍:不行,有版權(quán)的。
  網(wǎng)民:哈哈,我找到了老虎年畫。
  周正龍:你們造謠,我的虎照沒bug,人頭擔(dān)保!
  網(wǎng)民:……

  我認(rèn)為軟件測試的難點(diǎn)并不在于技術(shù),那么是什么?開發(fā)人員和測試人員永遠(yuǎn)是一對矛盾,這才是大的難點(diǎn)。why?開發(fā)人員說:“我寫出來的東西完美無缺!睖y試人員:“胡說八道,我立即找一堆bug出來!”所以如何協(xié)調(diào)開發(fā)人員和測試人員,那真的得憑一些本事了,我并不是一個(gè)處理人際關(guān)系的專家,否則也不會(huì)淪落到這種只能寫一些自娛自樂無人欣賞的代碼的這種地步了,但有一點(diǎn)算我的經(jīng)驗(yàn)吧,那是嘗試讓開發(fā)人員把測試人員看作幫助自己提高軟件質(zhì)量的朋友,而不是專門找茬的敵人,也嘗試讓測試人員把開發(fā)人員當(dāng)作為自己提供測試游戲的知己,而不是只會(huì)制造麻煩而又拒絕承認(rèn)錯(cuò)誤的痞子。和周正龍不同,開發(fā)人員一般都不是明知故犯,只不過堅(jiān)持自己是對的跟周先生那種執(zhí)著有點(diǎn)像……請勿對號入座。

  某開發(fā)男:“我檢查過了,程序沒問題……什么?測試報(bào)告?寫那么多麻煩東西,有病!”

  有些人認(rèn)為:開發(fā)人員同時(shí)也可以作為測試人員,所以沒有必要雇用額外的測試人員。這個(gè)觀點(diǎn)我曾經(jīng)同意過,但現(xiàn)在我是不以為然,很重要的一個(gè)原因:用同樣的方式做出來的事情非常有可能產(chǎn)生同樣的錯(cuò)誤,因此開發(fā)人員是很難很難發(fā)現(xiàn)自己的bug的。作為開發(fā)人員中的一員,我很了解這種心態(tài),那是不高興承認(rèn)自己的錯(cuò)誤,只要程序按照自己的方式去運(yùn)行,正確了“測試通過”了,幾乎沒有考慮太多的情況,所以在測試人員較少的公司,一種比較好的變通的辦法是“交叉測試”,我測你的,你測我的,但這種方法能發(fā)現(xiàn)的問題也比較有限。雇用測試人員,還有一個(gè)也是很重要很重要的原因:絕大多數(shù)開發(fā)人員不愿意寫測試文檔。其實(shí)不光是測試文檔了,凡是文檔都不太愿意去寫,這不是個(gè)別,這幾乎是個(gè)通病,算強(qiáng)迫開發(fā)人員把文檔寫出來,恐怕質(zhì)量也是令人不敢恭維,所以我們需要測試專員,專業(yè)的測試人員是軟件質(zhì)量的重要保證。微軟公司的測試人員跟開發(fā)人員的比例在2到3之間,也是一個(gè)開發(fā)人員,對應(yīng)兩到三個(gè)測試人員,沒有那么多測試人員,我不相信Windows能這么流行。這也是說:測試人員要做一些開發(fā)人員不太愿意做的工作,反過來說也行啊,開發(fā)人員要做一些測試人員不愿意做的工作,反正那意思,專人專事。

  某測試男:“測試報(bào)告,你的程序錯(cuò)漏百出,報(bào)告完畢!”

  和開發(fā)人員一樣,測試人員的水平同樣有高有低,我見過高水平的,也見過低水平的,區(qū)分他們并不難,只需要看看他們的測試報(bào)告,對程序代碼精通的開發(fā)人員閱讀這些測試報(bào)告并不是一件難事,測試人員的水平能很快看出來了,為什么別的不看,看測試報(bào)告?很簡單,測試報(bào)告對于測試人員來說,相當(dāng)于是開發(fā)人員的生成代碼,內(nèi)行人看看不懂了么?你也許見過很多的測試報(bào)告,但可能你沒見過這么差的測試報(bào)告(BTW,我有一個(gè)朋友說:“沒有差,只有更差。”),我曾經(jīng)寫過一個(gè)小型游戲服務(wù)器程序,負(fù)責(zé)隨機(jī)發(fā)牌這種功能,拿給測試組測試,測試好了之后,我發(fā)現(xiàn)只有一條bug記錄,但嚴(yán)重度為高,這個(gè)報(bào)告這樣寫:“幾率完全不在控制中,程序錯(cuò)漏百出!”我保證你沒看錯(cuò),對,這是他的測試報(bào)告,只有一行字,看完后我差點(diǎn)暈倒,這行字我完全看不出我辛辛苦苦寫的程序到底出了什么問題,換成你估計(jì)你也不行,更何況他還說“錯(cuò)漏百出”呢,卻只有一條bug記錄!為什么會(huì)有這種低水平的人從事測試工作?那是對軟件測試不夠重視,很多公司認(rèn)為會(huì)用電腦的人都能做測試,其實(shí)不是這樣的。我接觸過一個(gè)有些水平的測試人員,他有過兩年測試經(jīng)驗(yàn),確實(shí)不一樣,我把我的程序交給他,測試完之后,他給我遞交的測試報(bào)告中有十多條bug記錄,我一開始也不太相信我的程序怎么會(huì)有那么多問題?但后來仔細(xì)看之后確實(shí)發(fā)覺自己很多地方做得不到位,他的測試報(bào)告非常好,測試手段也比較高明,比如我的程序在運(yùn)行過程中頻繁切換窗口會(huì)導(dǎo)致的問題,在Windows98下偶爾出現(xiàn)的聲音異常問題(當(dāng)時(shí)開發(fā)使用Windows XP系統(tǒng)),程序啟動(dòng)窗口位置不妥影響外觀的問題等等,他都測試了出來,除了bug記錄,還有大約七八十條測試記錄,大多數(shù)都標(biāo)記為pass,每條記錄都有足夠詳細(xì)的測試步驟和環(huán)境,我認(rèn)為他工作很認(rèn)真,可惜后來他離開公司比較早,跟他交流也比較有限了。當(dāng)然,并不是所有的bug都是開發(fā)人員的過錯(cuò),偶爾可能是測試人員對功能的誤解,或者測試機(jī)器上的電腦確實(shí)有比較嚴(yán)重的問題,這樣經(jīng)過驗(yàn)證協(xié)商,我們都可以把bug記錄close掉,這都是有依據(jù)可循的,而不是一個(gè)“錯(cuò)漏百出”了事那么簡單,如果是這樣的話,那測試這個(gè)工作也未免太容易了。