在 it 行業,開發和測試之間的關係一直是乙個大家津津樂道的話題。在一般的整個軟體產品的生命週期中,開發和測試人員所做的工作分別對應不同的階段,如圖 1 所示。
圖 1 開發和測試人員的分工
工作內容
從圖 1 可以看出,開發和測試是乙個上下游的關係。
具體而言,開發人員主要做這幾件事情:
第一,對軟體需求說明書進行詳細評審,弄清楚要開發乙個什麼樣的軟體。
第二,編寫軟體詳細設計、單元測試和整合測試規程文件。軟體詳細設計文件是最重要的文件,在裡面,要寫清楚自己程式的流程、函式設計、異常保護考慮等。在動手寫程式之前,一定要將軟體詳細設計文件寫好,等評審通過了再寫**。
第三,編寫**,用程式實現軟體的功能。很多人認為的軟體開發就是寫**,其實這是一種很狹隘的理解,寫**在整個開發流程中,只佔了很小的部分。
第四,程式寫好之後,開發人員要對它進行單元測試和整合測試也叫(自測),確保程式的正確性。這裡就出現了「測試」二字,但與軟體測試所做的「測試」是不同的,他們做的是「系統測試」。等自測通過之後,並且相關文件也寫好之後,就可以提交程式版本,供測試人員進行測試了。
相對開發,測試人員主要做這幾件事情:
第一,參與軟體需求說明書的評審,對軟體要實現的功能有乙個大致的了解。
第二,搭建測試環境。這個是很重要的,也是比較難的事情。什麼是「測試環境」呢?就是說,不管什麼軟體,都有個執行的條件,如作業系統型別、引數設定及配套軟硬體設施等,這些統稱為「環境」。為了保證程式功能的正確性,要在軟體發布之前,盡量模擬軟體實際的執行環境,這就是搭建測試環境時要做的事情。很多軟體在正式商用之後出問題,就是測試的時候沒有還原現場環境所致。
第三,對軟體進行系統測試並輸出測試報告。所謂系統測試,就是指將配套的所有軟體都執行起來,看一下所有的功能是否正常。當出現問題的時候,要及時和開發人員聯絡,以修正軟體缺陷。
第四,指導現場人員安裝軟體程式,並在必要的時候親自出差到現場去安裝軟體。因此,測試人員也可能會經常出差的。
「三足鼎立」
開發人員的主要任務是用程式完成軟體需求,而測試人員的主要任務則是保證程式功能的正確性,他們做事的依據都是需求開發工程師編寫的需求說明書。
在實際的軟體開發專案中,需求開發工程師、軟體開發工程師和軟體測試工程師之間的交流是很頻繁的,如圖 2 所示。
圖 2 三類角色的「三足鼎立」
就像「三國時期」的魏蜀吳「三足鼎立」一樣,需求開發工程師、軟體開發工程師和軟體測試工程師所站的立場不同,對軟體的認識也不同。大家需要相互討論、協商,挑選出一套最佳的軟體實現方案。
一些建議
在完成軟體研發的過程中,開發和測試之間的關係非常的「微妙」,時而合作如親人,時而爭論如敵人。我認為,為了做出高質量的軟體產品來,開發和測試需要做到:
第一,共同參與軟體需求文件的評審,對程式要實現的功能有乙個清晰的認識。如果對需求有疑問,一定要當面提出來。
第二,在對需求達成共識之後,軟體開發人員嚴格按照軟體需求文件上的描述來編寫程式,如果在程式實現上有困難,要提出來和大家討論。軟體測試人員嚴格按照需求的描述來驗證程式的功能,如果發現程式實現與需求不符,要及時與軟體開發人員聯絡,大家共同將程式問題解決掉。
第三,如果開發時間緊張、人手不足,那麼在開發人員編寫程式的時候,測試人員可以幫忙把測試環境搭建好。等程式編寫好之後,開發人員便可以立即進行單元測試和整合測試。
第四,不管是需求有問題,還是程式有缺陷,大家都可以指出來。但注意要就事論事,不可將軟體問題上公升為對特定個人的人身攻擊。
第五,雖然是各司其職,也許還身處不同的部門,但大家的共同目標是一致的:做出讓客戶滿意的、高質量的軟體產品。開發和測試人員要為了這個目標,一起努力。
結束語
乙個軟體產品的成功需要從各個環節上去把握,因此用人的左手和右手的關係來比喻開發和測試之間的關係更為恰當。好的軟體產品需要開發和測兩手抓,兩手都要硬。
關於開發與測試
最近總是有一些問我乙個問題 現在有機會轉開發,應不應該轉?我想我也需要單獨發表一篇文章來表達一下自己的看法了。我會從乙個新入行的測試人員一直往上發展大概會是乙個怎樣的情況入手,來表達我的觀點 開發技術是測試人員發展的基礎,也是測試人員發展的歸宿 當然了,我現在表達的是測試人員一直往上發展,如果你已經...
HPE慧與 測試與開發
先是自我介紹,然後給我看了自己在網上考試的截圖影印件,甚是尷尬呀?因為這個公司是線上筆試的,筆試乙個月後我去面試的,自己也沒有搞清楚是不是筆過,就去面試了 先是問了開發的,後來問了測試的 開發 1.用你自己熟悉的語言寫氣泡排序?2.計算結構體的大小占多大記憶體?為什麼?什麼是記憶體對齊?為什麼要記憶...
測試 開發模型與測試模型
軟體的生命週期 從軟體產品設想開始到軟體不再使用而結束的時間,軟體生命週期分為六個階段,分別為 需求分析,計畫 設計 編碼 測試 執行維護。瀑布模型 瀑布模型在軟體工程中佔主要地位,是所有其他模型的基本框架,瀑布模型的每乙個階段都只執行一次,是線性順序進行的軟體開發模式。優點 強調開發的階段性,強調...