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

  目前的問(wèn)題

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

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

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

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

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

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

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

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

  建議

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

  1、制定比較完善的測(cè)試周期。

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

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

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

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

  2、測(cè)試環(huán)境搭建盡量模擬客戶(hù)現(xiàn)場(chǎng)。

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

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

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

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

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

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