我眼中的開發和測試

2021-07-02 20:38:39 字數 1852 閱讀 2142

軟體開發

軟體測試

周兆熊

在it行業,開發和測試之間的關係一直是乙個大家津津樂道的話題。在整個軟體產品的生命週期中,開發和測試人員所做的工作分別對應不同的階段,如圖1所示。

圖1 開發和測試人員的分工

工作內容

從圖1可以看出,開發和測試是乙個上下游的關係。

具體而言,開發人員主要做這幾件事情:

第一,對軟體需求說明書進行詳細評審,弄清楚要開發乙個什麼樣的軟體。

第二,編寫軟體詳細設計、單元測試和整合測試規程文件。軟體詳細設計文件是最重要的文件,在裡面,要寫清楚自己程式的流程、函式設計、異常保護考慮等。在動手寫程式之前,一定要將軟體詳細設計文件寫好,等評審通過了再寫**。

第三,編寫**,用程式實現軟體的功能。很多人認為的軟體開發就是寫**,其實這是一種很狹隘的理解,寫**在整個開發流程中,只佔了很小的部分。

第四,程式寫好之後,開發人員要對它進行單元測試和整合測試也叫(自測),確保程式的正確性。這裡就出現了「測試」二字,但與軟體測試所做的「測試」是不同的,他們做的是「系統測試」。等自測通過之後,並且相關文件也寫好之後,就可以提交程式版本,供測試人員進行測試了。

相對開發,測試人員主要做這幾件事情:

第一,參與軟體需求說明書的評審,對軟體要實現的功能有乙個大致的了解。

第二,搭建測試環境。這個是很重要的,也是比較難的事情。什麼是「測試環境」呢?就是說,不管什麼軟體,都有個執行的條件,如作業系統型別、引數設定及配套軟硬體設施等,這些統稱為「環境」。為了保證程式功能的正確性,要在軟體發布之前,盡量模擬軟體實際的執行環境,這就是搭建測試環境時要做的事情。很多軟體在正式商用之後出問題,就是測試的時候沒有還原現場環境所致。

第三,對軟體進行系統測試並輸出測試報告。所謂系統測試,就是指將配套的所有軟體都執行起來,看一下所有的功能是否正常。當出現問題的時候,要及時和開發人員聯絡,以修正軟體缺陷。

第四,指導現場人員安裝軟體程式,並在必要的時候親自出差到現場去安裝軟體。因此,測試人員也可能會經常出差的。

「三足鼎立」

開發人員的主要任務是用程式完成軟體需求,而測試人員的主要任務則是保證程式功能的正確性,他們做事的依據都是需求開發工程師編寫的需求說明書。

在實際的軟體開發專案中,需求開發工程師、軟體開發工程師和軟體測試工程師之間的交流是很頻繁的,如圖2所示。

圖2 三類角色的「三足鼎立」

就像「三國時期」的魏蜀吳「三足鼎立」一樣,需求開發工程師、軟體開發工程師和軟體測試工程師所站的立場不同,對軟體的認識也不同。大家需要相互討論、協商,挑選出一套最佳的軟體實現方案。

一些建議

在完成軟體研發的過程中,開發和測試之間的關係非常的「微妙」,時而合作如親人,時而爭論如敵人。我認為,為了做出高質量的軟體產品來,開發和測試需要做到:

第一,共同參與軟體需求文件的評審,對程式要實現的功能有乙個清晰的認識。如果對需求有疑問,一定要當面提出來。

第二,在對需求達成共識之後,軟體開發人員嚴格按照軟體需求文件上的描述來編寫程式,如果在程式實現上有困難,要提出來和大家討論。軟體測試人員嚴格按照需求的描述來驗證程式的功能,如果發現程式實現與需求不符,要及時與軟體開發人員聯絡,大家共同將程式問題解決掉。

第三,如果開發時間緊張、人手不足,那麼在開發人員編寫程式的時候,測試人員可以幫忙把測試環境搭建好。等程式編寫好之後,開發人員便可以立即進行單元測試和整合測試。

第四,不管是需求有問題,還是程式有缺陷,大家都可以指出來。但注意要就事論事,不可將軟體問題上公升為對特定個人的人身攻擊。

結束語

乙個軟體產品的成功需要從各個環節上去把握,因此用人的左手和右手的關係來比喻開發和測試之間的關係更為恰當。好的軟體產品需要開發和測兩手抓,兩手都要硬。

我眼中的軟體測試 (二)測試在做什麼

一和二的跨度很大,1年的時間 很多人從踏入公司後,不會想太多問題 要做的事情一般都是領導分配的各種任務,完成任務就是萬事大吉 其實工作之餘不妨靜下心來想這樣乙個問題 測試在做什麼 相信每個人心中都有自己的標準答案,或者有些人有自己的想法觀點卻不知道如何用言語表達出來 同樣的,我也有我的認知 在這之前...

我,眼中的詩歌

我,眼中的詩歌 給我一杯茶,乙個幽靜的地方,我好看些詩歌。寫前面 詩歌是一種態度。詩歌是燕子低低地飛過屋簷。詩歌是古代西方 盛行的決鬥。詩歌是人類本身一直都存在的 極為樸素的一種本能。詩歌和性別無關 和身材無關,和你曾看過多少書也沒有直接的 聯絡,造物主將嘴巴賦予人類的同時 也賦予了人類詩歌。詩歌是...

我眼中的委託

首先委託是乙個型別,和int string一樣,我們日常說的委託其實是委託型別的變數,委託的作用就是把方法當成引數來傳遞,將方法賦值給委託型別的變數,然後由這個變數去呼叫執行方法。換個方式,委託沒有具體實現體,因為委託就是叫別人去辦事,自己當然不需要實現了,但是委託別人必須要清楚自己想辦什麼事,這個...