前言
前幾天一個前同事找我聊了個問題:一個好的測試開發同學需要具備哪些能力?我思考了一下,給了他如下答覆:
從我工作中接觸到的測試開發,以及面試測試開發候選人時問的問題,我將自己對測試開發這個崗位的理解,總結了如下六點能力。
我個人認為,具備如下六點能力,會是一個優秀的測試開發同學。
這篇文章,就來聊聊我對這六點能力的看法,觀點僅供參考。
什麼是測試開發工程師?
我對測試開發的定義
從我工作中接觸到的測試開發,以及面試測試開發候選人時問的問題,我個人對測試開發這個崗位的定義如下:
技術廣度的擁有者,測試團隊過程效率的提升者,解決落地交付痛點的終結者。
如何理解我上面的定義呢?
我個人認為,在國內測試開發很重要的一點是具備大部分測試所不具有或不擅長的coding能力以及技術廣度。
他可以通過藉助已有的成熟工具框架或者二次開發,快速解決測試過程遇到的各種block效率的問題,以及為技術團隊內部提供一些更高效的研發測試工具,提高交付過程的效率,並保障測試過程的質量。
測試開發日常做什麼
從我個人接觸到的測試開發來看,測試開發工程師的日常,大多在做如下幾點事情:
- 藉助已有的成熟工具或者框架,搭建內部的各種測試過程平臺或者框架,如提測平臺、用例管理、自動化測試平臺、單元測試覆蓋率、線上冒煙驗證平臺、測試的造數工具等;
- 業務需求較多時臨時去支援業務的版本迭代測試,照樣需求評審、寫測試case、提BUG、線上釋出驗證;
- 內部技術分享、新人技術培訓等;
做QA工作,最核心的就是交付效率和質量。測試開發的本質,還是和測試過程以及線上交付有關。
測試開發工程師一方面通過工具和平臺來提高測試過程的效率, 另一方面也要保障最終線上的交付質量。
測試開發的六大能力
基礎能力
上面提到了,測試開發的本質還是做測試交付相關的工作。
基本的如需求分析、設計測試場景、編寫測試case、發現和驗證bug、溝通協調以及測試流程管理、質量把控等。
技術能力
測試開發需要藉助已有的成熟工具或者框架,搭建內部的各種測試過程平臺或者框架。
因此除了coding能力,還需要負責對業內廣泛使用或者成熟度較高的工具框架進行引入落地,來解決日常測試過程中的種種問題,提高測試過程效率,保障線上的交付質量。常見的有工具框架有:
- 單元測試框架如Junit;
- 單元測試覆蓋率如jacoco;
- 自動化測試框架或工具,如apifox、pytest;
- 內部的持續整合工具,常見的就是jenkins和gitlab;
- 流量錄製回放,常見的有GoReplay、JVM-sandbox;
- 混沌工程異常注入工具,常見的有ChaosBlade、Monkey-Ops;
溝通協調能力
溝通協調能力是一項軟能力,但在今天的職場,卻是一項非常重要的能力。
無論是平臺工具推廣落地,還是和其他團隊的技術同學溝通配合,都需要大量的溝通協調。
很多同學夢想著安心做技術,不要有人打擾。但實際上,職場上特別是一些大廠,溝通協調能力甚至比技術更重要。
產品設計能力
前面提到了測試開發需要去做一些平臺或者工具落地,這裡並不是說只要把工具用起來就OK了。因為團隊裡的同學技術能力各有不同,需要通過平臺或者工具來規範流程,提供便捷的操作方式來提高效率。
而且每個公司的流程、業務特點導致了對平臺的訴求各不一樣。因此需要針對性的進行平臺互動邏輯設計,甚至一人搞定原型圖PRD前端後端開發各種事情。
畫餅和落地能力
網際網路行業打工人,幾乎都逃不了KPI/OKR的真香定律。做產出,推落地,拿結果,講價值,哪個不需要畫餅落地能力。
因此學會給領導畫餅,並且把餅做出來,是很考驗個人的一個技術活兒。這不僅關心到績效的好壞,也是一個自我價值訴求的主動傳遞過程。這裡強調一句:向上管理,很重要!
專案管理和交付能力
聊到最後一個能力,實際上不僅僅是測試開發同學,測試同學有時候也會做這些事情。日常工作中除了固定的版本迭代,偶爾還有一些獨立的業務或者技術專案要參與其中。
很多網際網路企業都會強調員工的主動性,什麼ownership,向前一步,不推活兒主動承擔責任啥的。但凡你向前一步了,基本逃不開跟進專案進度、把控專案質量、評估風險、協調資源甚至保證按時交付。
幹這些事情,不就是日常專案經理的事情麼?身兼多職,有責任沒利益,做的好是應該的,做不好就是你的鍋,可太有意思了。
聊到最後其實我想表達的是:現代職場一方面對於崗位的職責劃分粒度越來越細,另一方面又要求員工的綜合能力要高。
最本質的因素還是以前粗放的時代過去了,增長放緩利潤降低,溝通成本越來越大,造輪子推倒重構的頻次越來越高。這何嘗不是另一種內卷呢?
當然,這種情況會鍛鍊個人的綜合素養和能力,但其中一得一失,箇中滋味只能自己品嚐了。