企業(yè)如何預(yù)防軟件缺陷,結(jié)合我自己的經(jīng)驗談一點:(以下是我做測試幾年來的總結(jié),只是我的個人觀點)

    首先,我認為重要的是,根據(jù)需求開發(fā)一個Demo,讓測試人員尤其是用戶來確認,因為很多用戶不會提出需求,但是等你軟件開發(fā)方做好了,用戶根據(jù)你目前所做的軟件他們會提出新需求了,在這方面我深有體會。所以有問題,有不明白的地方讓用戶早提,否則到后大家都很被動。

    第二:重點評審需求中不明確的功能模塊和存在分歧的模塊,對于不明白的地方一定要弄懂,因為需求是軟件開發(fā)的源頭。

    第三:對于一些重點模塊和用戶業(yè)務(wù)常用的模塊,要重點評審,比如說我以前做無線POS機的系統(tǒng),“銷售”這個功能當(dāng)然是重重之重了。

    第四:做好單元測試,目前國內(nèi)很多軟件企業(yè)根本沒有一個單元測試的標(biāo)準(zhǔn),我見過一家小公司,程序員居然極不負責(zé)的書:這個功能可能有問題,讓測試人員以后去發(fā)現(xiàn)吧。有這樣的心態(tài)做出的軟件按怎么可能沒有BUG.

    你看看SAP的研發(fā)精要中人家是怎么做的:①自我測試,要求開發(fā)人員在完成自已負責(zé)的模塊后,馬上進行測試,消除模塊內(nèi)部的錯誤;②相互測試,要求開發(fā)人員之間測試對方的模塊,由于不同開發(fā)人員的思維、開發(fā)方式的不同,對方會很容易找到一些自已很難發(fā)現(xiàn)的問題;③代碼檢查,通常是由開發(fā)人員及開發(fā)經(jīng)理來進行,從模塊功能、性能、可用性、編碼規(guī)范、模塊集成性等角度進行全面檢查。這一工作會在系統(tǒng)實現(xiàn)的各個階段定期進行。SAP還提供了如CATT等輔助測試工具。

    第五:測試人員好能做到交叉測試,因為測試人員畢竟考慮問題產(chǎn)生思維定勢,能做到交叉測試,好了。

    第六:要盡可能模擬用戶的真實使用環(huán)境,進行測試。

    第七:在測試階段要弄到用戶的真實數(shù)據(jù)進行測試,因為有一些Bug,只有用用戶的真實數(shù)據(jù)才能測試出來,測試人員自己造一些數(shù)據(jù)是測試不出來的。這一點我在測試歐萊雅系統(tǒng)的時候深有體會。

    第八:要做好各個階段的評審,比如代碼評審,設(shè)計評審,測試用例評審,后發(fā)布產(chǎn)品階段的評審。因為評審是預(yù)防軟件缺陷的一個重要的手段了。

    第九:要做好性能測試。

    另外,補充一點:不要把測試階段和發(fā)布階段的版本弄錯了。