在IT行業(yè),開發(fā)和測試之間的關(guān)系一直是一個大家津津樂道的話題。在整個軟件產(chǎn)品的生命周期中,開發(fā)和測試人員所做的工作分別對應不同的階段,分為,概念階段,計劃階段,開發(fā)階段,驗證階段,發(fā)布階段,運營維護階段。
開發(fā)和測試是一個上下游的關(guān)系。具體而言,開發(fā)人員主要做這樣幾件事情:
第一,對軟件需求說明書進行詳細評審,弄清楚要開發(fā)一個什么樣的軟件。
第二,編寫軟件詳細設(shè)計、單元測試和集成測試規(guī)程文檔。軟件詳細設(shè)計文檔是最重要的文檔,在里面,要寫清楚自己程序的流程、函數(shù)設(shè)計、異常保護考慮等。在動手寫程序之前,一定要將軟件詳細設(shè)計文檔寫好,等評審通過了再寫代碼。
第三,編寫代碼,用程序?qū)崿F(xiàn)軟件的功能。很多人認為的軟件開發(fā)就是寫代碼,其實這是一種很狹隘的理解,寫代碼在整個開發(fā)流程中,只占了很小的部分。
第四,程序?qū)懞弥螅_發(fā)人員要對它進行單元測試和集成測試也叫(自測),確保程序的正確性。這里就出現(xiàn)了“測試”二字,但與軟件測試所做的“測試”是不同的,他們做的是“系統(tǒng)測試”。等自測通過之后,并且相關(guān)文檔也寫好之后,就可以提交程序版本,供測試人員進行測試了。
相對開發(fā),測試人員主要做這幾件事情:
第一,參與軟件需求說明書的評審,對軟件要實現(xiàn)的功能有一個大致的了解。
第二,搭建測試環(huán)境。這個是很重要的,也是比較難的事情。什么是“測試環(huán)境”呢?就是說,不管什么軟件,都有個運行的條件,如操作系統(tǒng)類型、參數(shù)設(shè)置及配套軟硬件設(shè)施等,這些統(tǒng)稱為“環(huán)境”。為了保證程序功能的正確性,要在軟件發(fā)布之前,盡量模擬軟件實際的運行環(huán)境,這就是搭建測試環(huán)境時要做的事情。很多軟件在正式商用之后出問題,就是測試的時候沒有還原現(xiàn)場環(huán)境所致。
第三,對軟件進行系統(tǒng)測試并輸出測試報告。所謂系統(tǒng)測試,就是指將配套的所有軟件都運行起來,看一下所有的功能是否正常。當出現(xiàn)問題的時候,要及時和開發(fā)人員聯(lián)系,以修正軟件缺陷。
第四,指導現(xiàn)場人員安裝軟件程序,并在必要的時候親自出差到現(xiàn)場去安裝軟件。因此,測試人員也可能會經(jīng)常出差的。
在完成軟件研發(fā)的過程中,開發(fā)和測試之間的關(guān)系非常的“微妙”,時而合作如親人,時而爭論如敵人。我認為,為了做出高質(zhì)量的軟件產(chǎn)品來,開發(fā)和測試需要做到:
第一,共同參與軟件需求文檔的評審,對程序要實現(xiàn)的功能有一個清晰的認識。如果對需求有疑問,一定要當面提出來。
第二,在對需求達成共識之后,軟件開發(fā)人員嚴格按照軟件需求文檔上的描述來編寫程序,如果在程序?qū)崿F(xiàn)上有困難,要提出來和大家討論。軟件測試人員嚴格按照需求的描述來驗證程序的功能,如果發(fā)現(xiàn)程序?qū)崿F(xiàn)與需求不符,要及時與軟件開發(fā)人員聯(lián)系,大家共同將程序問題解決掉。
第三,如果開發(fā)時間緊張、人手不足,那么在開發(fā)人員編寫程序的時候,測試人員可以幫忙把測試環(huán)境搭建好。等程序編寫好之后,開發(fā)人員便可以立即進行單元測試和集成測試。
第四,不管是需求有問題,還是程序有缺陷,大家都可以指出來。但注意要就事論事,不可將軟件問題上升為對特定個人的人身攻擊。
第五,雖然是各司其職,也許還身處不同的部門,但大家的共同目標是一致的:做出讓客戶滿意的、高質(zhì)量的軟件產(chǎn)品。開發(fā)和測試人員要為了這個目標,一起努力。
一個軟件產(chǎn)品的成功需要從各個環(huán)節(jié)上去把握,好的軟件產(chǎn)品需要開發(fā)和測兩手抓,兩手都要硬。