概述
開發和測試,起源本沒有分家。社會精細化,分工出現,兩者漸行漸遠。開發人員,創造世界的人,在建造高樓大廈的時候,必會埋下隱患。測試人員,世界的驗證者,以挑剔的眼光,審視眼前需要驗證的對象。
代碼是開發人員的產出;bug是測試人員的產出
人,被人盯住挑自己辛苦創造的東西的毛病時,如芒在背,總是不喜歡這樣的感覺。
於是,開發和測試,逐漸對立起來。
人在分工后,思維方式也變得不同(測試應當是“證壞”非“證好”),所以,開發人員看待問題的角度和測試人員諸多時候不能合軌。
於是,矛盾必然產生。
可是,分工導致個人只不能兼顧,所以總需要其他人配合才能完整做好一個事情。
所以,開發和測試,如同左右手,實則分不開。
幼童一起玩耍,一會打起來一會又和好,開發和測試如同幼童。
看待問題,則如看待孩子們,或打或和,其實沒有什么,只要互相促進,把事情做好,不意氣用事即可。
這里,要求的是一顆平常心,合理看待矛盾,對事不對人即可。
對事不對人,說起來容易做則難。沒有包容之心,沒有平淡之心,很難做到的。這需要不斷修煉,不斷提高自己的素養,需要因對方而異,需要悟通人生。
開發與測試關系
軟件開發是生產制造軟件;軟件測試是驗證開發出來軟件的質量。類比傳統加工制造企業,軟件開發人員就是生產加工的工人,軟件測試人員就是質檢人員。 關系應該是: 1、沒有軟件開發就沒有測試,軟件開發提供軟件測試的對象。 2、軟件開發和軟件測試都是軟件生命周期中的重要組成部分 3、軟件開發和軟件測試都是軟件過程中的重要活動。 4、軟件測試是保證軟件開發產物質量的重要手段。
開發與測試的分工
圖1 開發和測試人員的分工
工作內容
從圖1可以看出,開發和測試是一個上下游的關系。
具體而言,開發人員主要做這幾件事情:
第一,對軟件需求說明書進行詳細評審,弄清楚要開發一個什么樣的軟件。
第二,編寫軟件詳細設計、單元測試和集成測試規程文檔。軟件詳細設計文檔是最重要的文檔,在里面,要寫清楚自己程序的流程、函數設計、異常保護考慮等。在動手寫程序之前,一定要將軟件詳細設計文檔寫好,等評審通過了再寫代碼。
第三,編寫代碼,用程序實現軟件的功能。很多人認為的軟件開發就是寫代碼,其實這是一種很狹隘的理解,寫代碼在整個開發流程中,只占了很小的部分。
第四,程序寫好之后,開發人員要對它進行單元測試和集成測試也叫(自測),確保程序的正確性。這里就出現了“測試”二字,但與軟件測試所做的“測試”是不同的,他們做的是“系統測試”。等自測通過之后,並且相關文檔也寫好之后,就可以提交程序版本,供測試人員進行測試了。
相對開發,測試人員主要做這幾件事情:
第一,參與軟件需求說明書的評審,對軟件要實現的功能有一個大致的了解。
第二,搭建測試環境。這個是很重要的,也是比較難的事情。什么是“測試環境”呢?就是說,不管什么軟件,都有個運行的條件,如操作系統類型、參數設置及配套軟硬件設施等,這些統稱為“環境”。為了保證程序功能的正確性,要在軟件發布之前,盡量模擬軟件實際的運行環境,這就是搭建測試環境時要做的事情。很多軟件在正式商用之后出問題,就是測試的時候沒有還原現場環境所致。
第三,對軟件進行系統測試並輸出測試報告。所謂系統測試,就是指將配套的所有軟件都運行起來,看一下所有的功能是否正常。當出現問題的時候,要及時和開發人員聯系,以修正軟件缺陷。
第四,指導現場人員安裝軟件程序,並在必要的時候親自出差到現場去安裝軟件。因此,測試人員也可能會經常出差的。
“三足鼎立”
開發人員的主要任務是用程序完成軟件需求,而測試人員的主要任務則是保證程序功能的正確性,他們做事的依據都是需求開發工程師編寫的需求說明書。
在實際的軟件開發項目中,需求開發工程師、軟件開發工程師和軟件測試工程師之間的交流是很頻繁的,如圖2所示。
圖2 三類角色的“三足鼎立”
就像“三國時期”的魏蜀吳“三足鼎立”一樣,需求開發工程師、軟件開發工程師和軟件測試工程師所站的立場不同,對軟件的認識也不同。大家需要相互討論、協商,挑選出一套最佳的軟件實現方案。