對於軟件開發中開發人員與測試人員關系的理解
在軟件開發中都會有開發人員(以下簡稱開發)和測試人員(以下簡稱測試),在一些小型公司可能並沒有測試,僅僅是開發兼任測試。在這裏我僅針對於有專業的測試和專業的開發的項目。
每個公司應該都有考核機制,對於開發和測試的考核實際上很難量化,通常來講大的方向就是開發所負責模塊的bug數,對於測試來講就是測出來的bug數,但這真的有效嗎?這也許對開發有約束力,理論上開發是能夠自己控制bug數的,如果從產生的bug數來評判開發的績效還算有效,這樣開發自然就會把代碼寫得更加認真。但如果根據測試測出來的bug數來評判測試的績效,就假設測試為了自己的績效瞎測怎麽預防?
單純地根據bug數來評判開發和測試的績效,我認為顯然不合適。這會導致開發寫代碼時小心翼翼沒問題,但測試就可能會不可避免的測一些莫名其妙的
很多時候開發和測試的關系僅是零和博弈。
開發和測試存在目的是什麽?開發是為了實現客戶的需求,測試是為了保證軟件的質量。兩者應該是合作共贏的關系,不是零和博弈,不是此消彼長,不是你勝我敗。開發和測試實際上是很矛盾的,兩者既對立又統一。
毫無疑問開發和測試應該是對立的,如果因為開發過多幹涉測試的工作,那這個工作根本無法開展,軟件質量根本無法保障,測試崗位的設立毫無意義。兩者不存在上下級關系,開發應不懼怕測試測出來的bug,同時測試應“多”測出bug
開發和測試的關系同樣也是統一的。我認為測試的職責或者測試的成就感不是來自於測出bug,而是能協助開發找出問題並且定位問題。這裏的協助並無主次的關系,對於出現bug地方的代碼實現測試也許不懂,開發也許也懶得聽測試的意見,這個時候並不是測試要和開發一起去尋找代碼實現上的問題,而是和開發一起梳理功能的邏輯有無問題,測試以測試的經驗和專業技能協助開發。兩者統一關系的體現在這個軟件是共同的結晶,並不是開發一方的成果,目的都是為了軟件能更快更好的發布。
我想在計算機類的專業裏,開發和測試兩個方向就類似高中時期的理科和文科。很大部分在高中數學不行或者成績不行就選擇文科認為簡單,計算機類的專業裏稍微有點“誌氣”的學生也會選擇做開發而不會選擇做測試,測試的標簽就是簡單 ,當然這個現象和類比也許並不準確。
測試人員在測試的時候應有一定的專業素養,測試不能毫無邏輯,毫無規劃的一通亂測,這有個好聽的名字——探索性測試。舉個例子:
測試:“出問題啦!某某某快來看啊!”
開發:“怎麽操作的?”
測試:“我就點了哪兒就出現這個了啊。”
開發:“那等等,我看下後臺日誌,你再操作一下。”
測試:“怎麽不能復現了啊,剛剛我就是這麽點的啊。”
開發:“……”
這個場景常見,如果這個bug本身就是偶現的bug那還說得過去。如果問測試怎麽操作的,測試一臉懵逼的說:“我不知道,我忘了。但是你這個有問題就是bug。”這得多花多少開發的時間去排查這個問題啊,不是不讓你測,是讓你有套路有思路的測,這是對於測試自身素養問題。
同樣對於開發人員也是一樣的,自測是一個很好的習慣,拋開開發的代碼能力,這是對於開發人員最基本的素養。舉個例子:
開發內心:“終於做完這個功能了,不測了,反正有測試,讓他們去測,測出問題再改。”
很大部分的bug是因為開發自身沒有做好自測,單元測試並不是在每個公司每個項目每個模塊都有,甚至很多開發人員幾年工作經驗也不知道怎麽編寫單元測試。認為自己的工作就是寫代碼,檢驗功能是否完善是否有bug的工作應該交給測試去做。
對於開發和測試素養的問題我想這是在理想狀態下,或者只存在理論上。實際上開發測試魚龍混雜、參差不齊、濫竽充數都有可能。但對於開發和測試關系萬萬不可將開發和測試放在對立面,同樣應考慮他們是統一的,矛與盾缺一不可,合作共贏而不是零和博弈。如何維系兩者的關系也是一個很值得研究的問題。
對於軟件開發中開發人員與測試人員關系的理解