一般認為“軟件測試員”是為了保證軟件的正確運行而設(shè)置的職位。這樣的觀點對不對呢?我認為這是軟件開發(fā)團隊的管理者的看法,但正因為這樣,這個看法幾乎被所有團隊成員所接受了,包括測試員自己。

  我認為測試員不應(yīng)該這樣看待自己的工作。如果測試員認為自己的工作是要保證軟件的正確運行,那么在潛意識里,他(她)會傾向于忽略那些可以發(fā)現(xiàn)Bug的測試用例。這也是弗洛伊德所說的“失誤動作”中的“選擇性遺忘”。這樣還怎樣保證軟件的正確性呢?

  我的觀點是:測試員的工作目的應(yīng)該是想盡一切非物理攻擊的辦法毀滅這個軟件。測試員應(yīng)該有這樣的心態(tài),這樣才可能更多的發(fā)現(xiàn)軟件中的Bug,從而提升軟件的價值。還是從心理學的角度來說,如果一個測試員有了這樣的心態(tài),那么在工作時的不經(jīng)意間會有Bug被逮到,尤其是那些莫名其妙的“失誤動作”。這也是為什么一些的測試員經(jīng)常能夠不應(yīng)用一般的測試理論而僅僅憑借“直覺”發(fā)現(xiàn)比其它測試員更多的Bug的原因了。

  測試員應(yīng)該給自己定好位。我們不是質(zhì)量保證人員,我們是“毀滅者”。

  偉大的卡爾?波普爾提出過一個叫做“證偽”的論斷。大意是“科學的增長是通過猜想和反駁發(fā)展的,理論不能被證實,只能被證偽”。這個觀點有點奇怪,但我對它深信不疑。公司里制定的每一個項目計劃,我們都無法證明那個計劃是正確的,我們只能想方設(shè)法證明這個計劃是錯誤的,然后修正,再證明,再修正,直到我們不能證明它有Bug為止,這時我們認為它是可行的。軟件開發(fā)也是一樣,我們永遠無法證明一個軟件是完全正確的,我們只能不斷地找Bug,然后修正,再找Bug,然后打補丁……直到我們找不到Bug為止,這時我們認為這個軟件是接近于完美的(完美幾乎是不可能的)。

  所以,做為測試員,永遠要堅定一個信念:這個軟件一定有問題,算它以前沒問題,經(jīng)過我的手,我也要找出問題來。