測試開發(fā)既然都這么厲害了!為啥不直接轉(zhuǎn)業(yè)務(wù)開發(fā)?
大家好,我是狂師!
前段時間,在后臺收到一則留言:"請問一下,你覺得開發(fā)技術(shù)好,還是測試技術(shù)好,如果測試技術(shù)好,為什么不直接開發(fā),干嘛做測試?"
這是一則很有意思且大多數(shù)技術(shù)新人普遍存在的困惑,今天就以此問題,給大家統(tǒng)一解答,分享一下筆者的觀點。
1、首先,從技術(shù)本身來講
開發(fā)技術(shù)和測試技術(shù)都是軟件工程中不可或缺的技術(shù)能力,它們各自具有獨特的價值和重要性。無法簡單地說哪個技術(shù)更好,因為它們的優(yōu)劣取決于具體情境和需求。
開發(fā)技術(shù)專注于實現(xiàn)軟件的功能和特性,它涉及到編程語言、算法、數(shù)據(jù)結(jié)構(gòu)、設(shè)計模式等多個方面。優(yōu)秀的開發(fā)技術(shù)能夠確保軟件具有高效、穩(wěn)定、安全的性能,滿足用戶需求。
測試技術(shù)則專注于確保軟件的質(zhì)量和可靠性,它涉及到測試用例設(shè)計、自動化測試、性能測試、安全測試等多個方面。優(yōu)秀的測試技術(shù)能夠及時發(fā)現(xiàn)軟件中的缺陷和錯誤,為軟件開發(fā)提供質(zhì)量保障。
2、從崗位職責(zé)來講,就軟件工程來說
開發(fā)工程師則是一個更廣泛的概念,包括軟件設(shè)計人員、軟件架構(gòu)人員、軟件工程管理人員、程序員等一系列崗位。他們的主要工作是進(jìn)行軟件的開發(fā)和生產(chǎn),技術(shù)要求較為全面,包括但不限于編程語言、數(shù)據(jù)庫技術(shù)、平臺技術(shù)等多個方面。
而測試工程師,隨著近些年行業(yè)發(fā)展趨勢,大體又分為兩類:業(yè)務(wù)測試工程師、測試開發(fā)工程師。
- 業(yè)務(wù)測試工程師,主要負(fù)責(zé)開發(fā)和執(zhí)行軟件測試,以確保軟件產(chǎn)品的質(zhì)量和可靠性。他們需要設(shè)計、編寫和執(zhí)行測試計劃和測試用例,識別和報告軟件缺陷和錯誤,參與軟件開發(fā)生命周期,并與開發(fā)團隊密切合作。測試工程師需要掌握軟件測試?yán)碚摗⒎椒ê凸ぞ?,同時還需要具備分析問題、識別潛在風(fēng)險和提出解決方案的能力。
- 而測試開發(fā)工程師,是一種特殊的角色,他們既是開發(fā)人員,又負(fù)責(zé)軟件測試。他們關(guān)注軟件產(chǎn)品的可測性、穩(wěn)健性和性能,并在軟件設(shè)計初期就參與審閱和推動改進(jìn)。測試開發(fā)工程師需要編寫測試工具和自動化測試代碼,同時也需要執(zhí)行一些基礎(chǔ)的功能測試或白盒測試。他們需要掌握多種編程語言、測試技術(shù)、開發(fā)技術(shù),同時還需具備測試工程師的敏銳思維,能夠從用戶體驗、產(chǎn)品業(yè)務(wù)角度解決問題。
總的來說,測試開發(fā)工程師、開發(fā)工程師和業(yè)務(wù)測試工程師在職責(zé)和技能要求上各有側(cè)重,但他們共同的目標(biāo)都是確保軟件產(chǎn)品能符合客戶、用戶需求,同時滿足質(zhì)量和可靠性要求。測試開發(fā)工程師更側(cè)重于開發(fā)和自動化測試,開發(fā)工程師更側(cè)重于軟件的開發(fā)和生產(chǎn),而測試工程師則更專注于測試計劃和測試用例的設(shè)計和執(zhí)行。三者之間的協(xié)作對于軟件項目的成功至關(guān)重要。
這也符合Google測試之道一直強調(diào)的每個工程師都應(yīng)注重質(zhì)量,質(zhì)量是內(nèi)建的,而非僅僅是測試人員的責(zé)任。
3、再者,我的觀點
在我之前出版的《自動化測試實戰(zhàn)寶典》一書中,有提到: “一名優(yōu)秀的測試開發(fā)工程師應(yīng)該比開發(fā)更懂開發(fā),比產(chǎn)品更懂業(yè)務(wù),不然你如何發(fā)現(xiàn)開發(fā)和業(yè)務(wù)更深層次的問題呢?”
雖然這一觀點,現(xiàn)實工作中,能達(dá)到的人并不多,但實際上它更多是對測試開發(fā)工程師角色的一個高度期望和要求。這種表述并不是字面上的絕對比較,而是強調(diào)測試開發(fā)工程師需要具備跨越開發(fā)和產(chǎn)品領(lǐng)域的綜合能力和視角。
- 首先,測試開發(fā)工程師比開發(fā)更懂開發(fā),并不是指測試開發(fā)工程師在開發(fā)技術(shù)層面一定比專業(yè)的開發(fā)工程師更精通,而是指測試開發(fā)工程師需要深入了解開發(fā)的過程、技術(shù)棧、常見的錯誤模式以及開發(fā)的思維方式。這樣,他們才能設(shè)計出更有效的測試用例,更精準(zhǔn)地定位問題,更快速地與開發(fā)團隊溝通協(xié)作。測試開發(fā)工程師需要站在開發(fā)的角度思考問題,預(yù)見并防范可能出現(xiàn)的問題,從而確保軟件的質(zhì)量。
- 其次,測試開發(fā)工程師比產(chǎn)品更懂業(yè)務(wù),也不是說測試開發(fā)工程師一定比產(chǎn)品經(jīng)理更了解業(yè)務(wù)需求,而是強調(diào)測試開發(fā)工程師需要對業(yè)務(wù)邏輯有深入的理解,了解業(yè)務(wù)背后的目標(biāo)和需求,以便更好地設(shè)計測試用例和發(fā)現(xiàn)潛在的業(yè)務(wù)問題。測試開發(fā)工程師需要站在用戶的角度思考問題,確保軟件的功能符合業(yè)務(wù)需求和用戶期望。
這種跨領(lǐng)域的綜合能力使得測試開發(fā)工程師在發(fā)現(xiàn)開發(fā)和業(yè)務(wù)問題方面具有獨特的優(yōu)勢。他們可以通過深入了解開發(fā)過程和技術(shù)棧,發(fā)現(xiàn)開發(fā)人員可能忽略的潛在問題;同時,通過深入理解業(yè)務(wù)邏輯和需求,發(fā)現(xiàn)產(chǎn)品可能存在的功能缺陷或不符合用戶期望的地方。
需要注意的是,這一觀點并不是要求測試開發(fā)工程師在所有方面都要超過開發(fā)或產(chǎn)品人員,而是強調(diào)他們需要具備一種綜合的視角和能力,以便更好地履行測試和開發(fā)工程師的職責(zé),確保軟件的質(zhì)量和可靠性。
在實際操作中,測試開發(fā)工程師可以通過與開發(fā)團隊和產(chǎn)品團隊緊密合作,積極參與項目討論和需求評審,不斷提升自己的業(yè)務(wù)和技術(shù)能力,從而更好地發(fā)現(xiàn)和解決開發(fā)和業(yè)務(wù)問題。同時,他們也需要保持開放和學(xué)習(xí)的態(tài)度,不斷吸收新的知識和技術(shù),以適應(yīng)不斷變化的項目需求和技術(shù)環(huán)境。
4、最后
質(zhì)量不是被測試出來的,質(zhì)量也不等于測試,同時質(zhì)量并非僅僅依賴于測試階段,而是需要在整個軟件開發(fā)過程中進(jìn)行預(yù)防和確保。測試只是其中的一環(huán),而不是質(zhì)量的唯一保障。
同時測試工程師是一個把質(zhì)量意識輸出到整個團隊的人,是一個流程推動者,是一個需求挖掘者,是一個質(zhì)量把關(guān)者,一方面需要通過自己的經(jīng)驗和技術(shù)手段去挖掘更多的Bug,另外一方面,通過傳播質(zhì)量意識盡可能的去從產(chǎn)品上游去避免Bug。
開發(fā)測試比本身沒有實際任何意義,只是人員數(shù)量上的比率,如果在你的職位頭銜上有測試的字樣,你的任務(wù)就是怎么使得那些頭銜上沒有測試的人可以更好地去做測試。