我們做軟件測試的,往往都是以Bug量多為衡量標(biāo)準(zhǔn)。測試的目的是為了發(fā)現(xiàn)更多的Bug,這點(diǎn)永遠(yuǎn)都不會錯(cuò),但我們經(jīng)常會為追求更多的Bug而忽略了軟件測試的更本質(zhì)的東西,個(gè)人認(rèn)為軟件測試的目標(biāo)是提供給一個(gè)讓客戶滿意的產(chǎn)品和服務(wù)。所以說,我認(rèn)為只有真正去理解客戶所關(guān)注的業(yè)務(wù),才能從本質(zhì)上更好的改善我們的工作。

  目前的問題

  或許有過這樣的經(jīng)歷,一個(gè)軟件(項(xiàng)目),在測試過程中往往會發(fā)現(xiàn)幾百個(gè)甚至幾千個(gè)Bug,可是客戶依然對我們所提供的質(zhì)量保障喋喋不休。從我經(jīng)歷的一些項(xiàng)目和產(chǎn)品來說,感覺不外乎三個(gè)原因:

  1、我們測試的力度和深度依然不夠。

  我感覺主要是人力資源和時(shí)間上的緊缺造成的。人力資源,通常一個(gè)產(chǎn)品測試,往往都是一個(gè)人負(fù)責(zé)好幾個(gè)模塊,項(xiàng)目上更是一個(gè)人既負(fù)責(zé)環(huán)境搭建,又要負(fù)責(zé)測試用例的編寫,還有負(fù)責(zé)功能測試以及后的報(bào)告編制,很難做到面面俱到。加之一些項(xiàng)目客戶要求的時(shí)間緊張,所以后測試即便能夠達(dá)到通過標(biāo)準(zhǔn),在客戶那里依然會有很多問題,當(dāng)然,這其中的原因也包括需求設(shè)計(jì)的不確定以及后期的變更。

  2、環(huán)境的不同,包括硬件環(huán)境和軟件環(huán)境。

  在我們內(nèi)部測試,不僅需要一個(gè)干凈高效的系統(tǒng)環(huán)境,我們的個(gè)人電腦,也是通常意義上的客戶端,往往都是比較高的配置。而在客戶現(xiàn)場,這些幾乎都很難一致。加之客戶現(xiàn)場的一些突發(fā)事件,都會造成一些低級但很嚴(yán)重的Bug。

  還有一個(gè)比較重要的問題,是數(shù)據(jù)環(huán)境。因?yàn)槲覀儨y試往往都是在一個(gè)干凈的系統(tǒng)里新建一套帳,再手動或自動化初始一些簡單的數(shù)據(jù),然后再分配職責(zé)進(jìn)行測試。而客戶現(xiàn)場的情況則要復(fù)雜的多,很多都是在原有數(shù)據(jù)的基礎(chǔ)上進(jìn)行安裝、升級或者移植,這些案例我們實(shí)際考慮的并不是很多或很全面。

  3、也是我感覺重要的一點(diǎn),是測試過程沒有真正以客戶關(guān)注為焦點(diǎn)。

  測試有時(shí)遇到這樣的情況,拿來一個(gè)模塊可能知道一些業(yè)務(wù)流程知識,或者是一點(diǎn)不知。測試主要是通過自己的操作和理解,加上一些與開發(fā)人員的交流來進(jìn)行。測試過程大都通過菜單一級一級的往下進(jìn)行,數(shù)據(jù)都是通過自己的經(jīng)驗(yàn)來組織出來的,感覺主觀性比較大。所進(jìn)行的測試,大多應(yīng)該稱為功能測試,而不是業(yè)務(wù)測試。后能夠確保所測的功能點(diǎn)不出錯(cuò)誤,但是卻沒有真正的站在客戶的角度去理解這個(gè)軟件、這個(gè)功能。

  建議

  個(gè)人認(rèn)為重要是測試盡量全面的模擬客戶現(xiàn)場。感覺可以通過一下幾點(diǎn)來進(jìn)行改善。

  1、制定比較完善的測試周期。

  大體可以分為三個(gè)階段:

  1)單元測試。這個(gè)測試可由開發(fā)人員或設(shè)計(jì)人員自行完成。主要是驗(yàn)證所寫的功能和設(shè)計(jì)的一致性,當(dāng)然前提是設(shè)計(jì)好是能確定以及肯定。

  2)集成測試。這個(gè)測試階段主要的目的是能夠確保整個(gè)功能流程能夠走通,無嚴(yán)重錯(cuò)誤。

  3)真實(shí)業(yè)務(wù)測試。嚴(yán)格按照客戶的業(yè)務(wù)流程、數(shù)據(jù)和職責(zé)進(jìn)行測試。這個(gè)感覺目前實(shí)現(xiàn)起來還是比較困難,主要是對真實(shí)業(yè)務(wù)的理解需要深入。但如果能有一套完善的測試用例,相信這個(gè)階段還是可以實(shí)現(xiàn)的。

  2、測試環(huán)境搭建盡量模擬客戶現(xiàn)場。

  可搭建多種測試環(huán)境,或者分Build搭建不同的測試環(huán)境?捎行陆◣ぬ,也有舊帳套基礎(chǔ)上進(jìn)行升級測試。感覺這個(gè)我們目前開展的還是比較多的,也是蠻有效果的,以后可重點(diǎn)再關(guān)注一下升級后原有數(shù)據(jù)的驗(yàn)證和操作。

  3、測試過程要真正以客戶關(guān)注為焦點(diǎn)。
以客戶關(guān)注為焦點(diǎn)??關(guān)于軟件測試

  
     我們可以通過與各方面人員交流和自己的學(xué)習(xí),首先要弄明白一點(diǎn),客戶想用我們的軟件實(shí)現(xiàn)什么,也是客戶使用我們軟件的目的,包括各個(gè)職責(zé)的,例如系統(tǒng)管理員想通過我們軟件實(shí)現(xiàn)什么,經(jīng)理想實(shí)現(xiàn)什么,出納、會計(jì)、審計(jì)他們分別想實(shí)現(xiàn)什么。因?yàn)楹芸赡軙羞@種情況:我們測出了成百上千的個(gè)Bug,但是客戶為關(guān)注的東西我們所涉及的卻不多,而把太多的測試工作都投入到客戶并不是特別關(guān)注的功能上來了。

  等這些明確后,再去進(jìn)一步分別了解這些目的是怎么實(shí)現(xiàn)的,實(shí)現(xiàn)過程中需要分步驟分別操作那些功能(業(yè)務(wù))。如果這些都明確后,我們可以組織一些具體詳細(xì)的數(shù)據(jù),嚴(yán)格按照客戶的實(shí)現(xiàn)方法進(jìn)行走查,這個(gè)過程好能與客戶或者熟知客戶業(yè)務(wù)的人員一同進(jìn)行。當(dāng)然,這只是測試的一個(gè)階段,之前的全方面集成測試還是必不可少的(主要用來發(fā)現(xiàn)影響流程的嚴(yán)重Bug)。

  再是一點(diǎn),測試過程中,一定要充分利用需求設(shè)計(jì)和數(shù)據(jù)結(jié)構(gòu),應(yīng)該會對功能點(diǎn)業(yè)務(wù)測試以及數(shù)據(jù)驗(yàn)證起到很大的作用。

  以上文字都是根據(jù)個(gè)人的工作經(jīng)歷所總結(jié),肯定會有很多不足或欠妥之處,希望大家多多批評指正。