摘要:在IT行業,開發和測試之間的關系一直是一個大家津津樂道的話題。那在周兆熊眼中,開發和測試是什么樣的?他進行了細致的說明,并就兩者的關系給出了一些建議。
在IT行業,開發和測試之間的關系一直是一個大家津津樂道的話題。在整個軟件產品的生命周期中,開發和測試人員所做的工作分別對應不同的階段,如圖1所示。
圖1 開發和測試人員的分工
工作內容 從圖1可以看出,開發和測試是一個上下游的關系。
具體而言,開發人員主要做這幾件事情:
第一,對軟件需求說明書進行詳細評審,弄清楚要開發一個什么樣的軟件。
第二,編寫軟件詳細設計、單元測試和集成測試規程文檔。軟件詳細設計文檔是最重要的文檔,在里面,要寫清楚自己程序的流程、函數設計、異常保護考慮等。在動手寫程序之前,一定要將軟件詳細設計文檔寫好,等評審通過了再寫代碼。
第三,編寫代碼,用程序實現軟件的功能。很多人認為的軟件開發就是寫代碼,其實這是一種很狹隘的理解,寫代碼在整個開發流程中,只占了很小的部分。
第四,程序寫好之后,開發人員要對它進行單元測試和集成測試也叫(自測),確保程序的正確性。這里就出現了“測試”二字,但與軟件測試所做的“測試”是不同的,他們做的是“系統測試”。等自測通過之后,并且相關文檔也寫好之后,就可以提交程序版本,供測試人員進行測試了。
相對開發,測試人員主要做這幾件事情:
第一,參與軟件需求說明書的評審,對軟件要實現的功能有一個大致的了解。
第二,搭建測試環境。這個是很重要的,也是比較難的事情。什么是“測試環境”呢?就是說,不管什么軟件,都有個運行的條件,如操作系統類型、參數設置及配套軟硬件設施等,這些統稱為“環境”。為了保證程序功能的正確性,要在軟件發布之前,盡量模擬軟件實際的運行環境,這就是搭建測試環境時要做的事情。很多軟件在正式商用之后出問題,就是測試的時候沒有還原現場環境所致。
第三,對軟件進行系統測試并輸出測試報告。所謂系統測試,就是指將配套的所有軟件都運行起來,看一下所有的功能是否正常。當出現問題的時候,要及時和開發人員聯系,以修正軟件缺陷。
第四,指導現場人員安裝軟件程序,并在必要的時候親自出差到現場去安裝軟件。因此,測試人員也可能會經常出差的。
“三足鼎立” 開發人員的主要任務是用程序完成軟件需求,而測試人員的主要任務則是保證程序功能的正確性,他們做事的依據都是需求開發工程師編寫的需求說明書。
在實際的軟件開發項目中,需求開發工程師、軟件開發工程師和軟件測試工程師之間的交流是很頻繁的,如圖2所示。
圖2 三類角色的“三足鼎立”
就像“三國時期”的魏蜀吳“三足鼎立”一樣,需求開發工程師、軟件開發工程師和軟件測試工程師所站的立場不同,對軟件的認識也不同。大家需要相互討論、協商,挑選出一套最佳的軟件實現方案。
一些建議 在完成軟件研發的過程中,開發和測試之間的關系非常的“微妙”,時而合作如親人,時而爭論如敵人。我認為,為了做出高質量的軟件產品來,開發和測試需要做到:
第一,共同參與軟件需求文檔的評審,對程序要實現的功能有一個清晰的認識。如果對需求有疑問,一定要當面提出來。
第二,在對需求達成共識之后,軟件開發人員嚴格按照軟件需求文檔上的描述來編寫程序,如果在程序實現上有困難,要提出來和大家討論。軟件測試人員嚴格按照需求的描述來驗證程序的功能,如果發現程序實現與需求不符,要及時與軟件開發人員聯系,大家共同將程序問題解決掉。
第三,如果開發時間緊張、人手不足,那么在開發人員編寫程序的時候,測試人員可以幫忙把測試環境搭建好。等程序編寫好之后,開發人員便可以立即進行單元測試和集成測試。
第四,不管是需求有問題,還是程序有缺陷,大家都可以指出來。但注意要就事論事,不可將軟件問題上升為對特定個人的人身攻擊。
第五,雖然是各司其職,也許還身處不同的部門,但大家的共同目標是一致的:做出讓客戶滿意的、高質量的軟件產品。開發和測試人員要為了這個目標,一起努力。
結束語 一個軟件產品的成功需要從各個環節上去把握,因此用人的左手和右手的關系來比喻開發和測試之間的關系更為恰當。好的軟件產品需要開發和測兩手抓,兩手都要硬。