軟件測試工程師的核心競爭力是什麼?

我以我們團隊招聘功能測試和測試開發工程師爲例,帶你瞭解一下測試工程師的核心競爭力到底是什麼。

  • 案例一來自我們的資深功能測試工程師招聘。當時,有一位擁有近9年測試經驗的資深測試候選人,我對他的簡歷還是比較滿意的,所以就安排了面談。但是,在聊的過程中我很快發現,這位候選人絕大多數的測試經驗積累都“強”綁定在特定的業務領域。
    如果拋開這個特定的業務領域,他對測試技術本身以及產品技術實現都缺乏系統的思考和理解。換言之,他的價值僅僅能夠體現在這個特定的產品業務上,而一旦離開了這個業務領域,他的經驗積累很難被有效重用,也就是說他很難快速適應並勝任我們的業務領域測試。所以,他最終沒有得到我們的offer。
    從這個案例中,你可以看出作爲測試人員,必須要深入理解業務,但是業務知識不能等同於測試能力。

  • 案例二來自我們的測試開發崗位招聘。當時,有一位5年測試開發從業經驗的候選人,是南京大學軟件學院的碩士,畢業後一直在國內的互聯網巨頭公司從事測試框架和工具平臺的開發工作。
    看完他的簡歷,我發現他參與開發過的測試框架和工具和我們當時在做的項目很匹配,加之他的背景也相當不錯,內心感覺這個職位基本就是他的了。但是,面談結束後,我徹底改變了想法。
    他所做的的確是測試框架和工具平臺的開發工作,但是他的核心能力純粹就是開發,他只關注如何實現預先設計的功能,而完全不關心所開發的測試框架和工具平臺在測試中的具體應用場景。
    我承認他的開發能力,但他並不能勝任我們的測試開發崗位。因爲,測試開發崗位的核心其實是“測試”,“開發”的目的是更好地服務於測試,我們看重的是對測試的理解,以及在此基礎上設計、開發幫助測試人員提高效率並解決實際問題的工具,而不是一個按部就班、純粹意義上的開發人員。

這兩個實際案例,是否已經引發你去思考這樣一個問題:什麼纔是測試工程師的核心競爭力?

目前的測試工程師分爲兩大類別,一類是做業務功能測試的,另一類是做測試開發的,二者的核心競爭力有很大差別。那麼,接下來我就帶你一起去看看,功能測試和測試開發工程師的核心競爭力分別是什麼。

我先帶你看看業務功能測試工程師,也就是傳統意義上的測試工程師的核心競爭力,我歸納了以下幾點。

傳統測試工程師師應該具備的核心競爭力

這部分內容,我按照一項能力對測試工程師的重要程度的順序,給你依次歸納了測試工程師要具備的七項核心競爭力,包括:測試策略設計能力、測試用例設計能力、快速學習能力、探索性測試思維、缺陷分析能力、自動化測試技術和良好的溝通能力。

或許,你感覺測試策略設計能力、探索性測試思維等對資深的測試工程師來說更重要,而你現在還處在培養快速學習能力、溝通能力、測試用例設計能力的維度。那也沒有關係,不斷地學習、豐富自己的知識體系,具備更強的職場競爭力,不正是你在追求的嗎?

所以,我在分析你應該具備的主要能力的同時,也會給你分享如何才能使自己具備這些能力 ,幫你成就更好的自己。

第一項核心競爭力,測試策略設計能力

測試策略設計能力是指,對於各種不同的被測軟件,能夠快速準確地理解需求,並在有限的時間和資源下,明確測試重點以及最適合的測試方法的能力。

具備出色的測試策略設計能力,你可以非常明確地回答出測試過程中遇到的這些關鍵問題:

  1. 測試要具體執行到什麼程度;

  2. 測試需要藉助於什麼工具;

  3. 如何運用自動化測試以及自動化測試框架,以及如何選型;

  4. 測試人員資源如何合理分配;

  5. 測試進度如何安排;

  6. 測試風險如何應對。

培養出色的測試策略設計能力,不是一朝一夕的事情,通常需要經過大量項目的實際歷練,並且你還要保持持續思考,主動去提煉共性的內容。

不像測試技術,你可以通過培訓或者網上資料的學習而有快速的提升,測試策略設計能力一定是需要你在大量實踐的基礎上潛移默化形成的。

我認爲,測試策略設計能力是功能測試工程師最核心的競爭力,也是最難培養的。

第二項核心競爭力,測試用例設計能力

測試用例設計能力是指,無論對於什麼類型的測試,都能設計出高效地發現缺陷,保證產品質量的優秀測試用例。

要做好測試用例設計,不僅需要深入理解被測軟件的業務需求和目標用戶的使用習慣,還要熟悉軟件的具體設計和運行環境,包括技術架構、緩存機制、中間件技術、第三方服務集成等等。

測試用例設計能力要求你不僅僅侷限於熟悉業務領域的測試用例設計,而是能夠融會貫通,熟練地把系統性的測試設計方法和具體業務有機結合,對任何被測軟件都可以輸出出色的測試用例。

要想提高測試用例設計能力,你平時就要多積累,對常見的缺陷模式、典型的錯誤類型以及遇到過的缺陷,要不斷地總結、歸納,才能逐漸形成體系化的用例設計思維。

同時,你還可以閱讀一些好的測試用例設計實例開闊思路,日後遇到類似的被測系統時,可以做到融會貫通和舉一反三。

第三項核心競爭力,快速學習能力

快速學習能力,包含兩個層面的含義:

  1. 對不同業務需求和功能的快速學習與理解能力;

  2. 對於測試新技術和新方法的學習與應用能力。

顯然,快速學習能力是各行業從業者應該具備的能力,但爲什麼我會單獨列出來呢?

現今的軟件項目,尤其是互聯網項目,生命週期通常以“月”甚至是以“周”、“小時”爲單位,一個測試工程師需要接觸各種類型的測試項目,而不再像早年,可以在很長一段時間內只從事一個產品或者相關產品的測試了,所以快速學習能力對測試工程師來說,就是至關重要了,否則就容易被淘汰。

快速學習能力,乍一看是比較難培養的,但其實也有一些小竅門。

比如,當你學習一個新的開源工具時,建議你直接看官方文檔:一來,這裏的內容是最新而且是最權威的;二來,可以避免網上信息質量的參差不齊。知識輸入源頭是單一,而且權威的話,你的學習曲線也必然會比較平滑。

另外,當學習新內容時,你一定要做到理解其原理,而不是隻停留在表面的、簡單的操作和使用,長期保持這種學習狀態,可以在很大程度上提高邏輯思維和理解能力。這樣,當你再面對其他新鮮事物時候,也會更容易理解,形成良性循環。

第四項核心競爭力,探索性測試思維

探索性測試是指,測試工程師在執行測試的過程中不斷學習被測系統,同時結合基於自己經驗的錯誤猜測和邏輯推理,整理和分析出更多的有針對性的測試關注點。

本質上,探索性測試思維是“測試用例設計能力”和“快速學習能力”有機結合的必然結果。優秀的探索性測試思維可以幫助你實現低成本的“精準測試”,精準測試最通俗的理解可以概括爲針對開發代碼的變更,目標明確並且有針對性地對變更點以及變更關聯點做測試,這也是目前敏捷測試主推的測試實踐之一。

第五項核心競爭力,缺陷分析能力

缺陷分析能力,通常包含三個層面的含義:

  1. 對於已經發現的缺陷,結合發生錯誤的上下文以及後臺日誌,可以預測或者定位缺陷的發生原因,甚至可以明確指出具體出錯的代碼行,由此可以大幅縮短缺陷的修復週期,並提高開發工程師對於測試工程師的認可以及信任度;

  2. 根據已經發現的缺陷,結合探索性測試思維,推斷同類缺陷存在的可能性,並由此找出所有相關的潛在缺陷;

  3. 可以對一段時間內所發生的缺陷類型和趨勢進行合理分析,由點到面預估整體質量的健康狀態,並能夠對高頻缺陷類型提供系統性的發現和預防措施,並以此來調整後續的測試策略。

這三個層面是依次遞進的關係,越往後越能體現出測試工程師的核心競爭力。

第六項核心競爭力,自動化測試技術

掌握自動化測試技術,可以把你從大量的重複性手工勞動中解放出來,這樣你可以把更多的時間花在更多類型的測試上。

一方面,自動化測試技術本身不綁定被測對象,比如說你掌握了GUI的自動化測試技術,那麼你就可以基於這個技術去做任何GUI系統的界面功能測試了。

另一方面,自動化測試技術需要測試工程師具備一定的寫代碼的能力,這通常與測試工程師職業發展的訴求不謀而合,所以你會看到很多測試工程師非常熱衷做自動化測試。

但是切記,自動化測試的核心價值還是“測試”本身,“自動化”僅僅是手段,實際工作中千萬不要本末倒置,把大量的精力放在“自動化”上,一味追求自動化而把本質的“測試”弱化了。

第七項核心競爭力,良好的溝通能力

測試工程師在軟件項目中作用,有點像“潤滑劑”:

  • 一方面,你需要對接產品經理和項目經理,以確保需求的正確實現和項目整體質量的達標;
  • 另一方面,你還要和開發人員不斷地溝通、協調,確保缺陷的及時修復與驗證。

所以,測試工程師的溝通能力會直接影響事務開展的效率。良好清晰的溝通能力,是一個技術優秀的測試工程師能否獲得更大發展的“敲門磚”,也是資深測試工程師或者測試主管的核心競爭力。

測試開發工程師的核心競爭力

接下來,我再帶你一起看看測試開發工程師的核心競爭力。

首先既然是測試開發工程師,那麼代碼開發能力是最基本的要求。可以說,一個合格的測試開發工程師一定可以成爲一個合格的開發工程師,但是一個合格的開發工程師不一定可以成爲合格的測試開發工程師。這也就是案例二中的候選人沒有通過面試的原因。

第一項核心競爭力,測試系統需求分析能力

除了代碼開發能力,測試開發工程師更要具備測試系統需求分析的能力。你要能夠站在測試架構師的高度,識別出測試基礎架構的需求和提高效率的應用場景。從這個角度說,你更像個產品經理,只不過你這個產品是爲了軟件測試服務的。

第二項核心競爭力,更寬廣的知識體系

測試開發工程師需要具備非常寬廣的知識體系,你不僅需要和傳統的測試開發工程師打交道,因爲他們是你構建的測試工具或者平臺的用戶;而且還要和CI/CD、和運維工程師們有緊密的聯繫,因爲你構建的測試工具或者平臺,需要接入到CI/CD的流水線以及運維的監控系統中去。

除此之外,你還要了解更高級別的測試架構部署和生產架構部署、你還必須對開發採用的各種技術非常熟悉。可見,對於測試開發工程師的核心競爭力要求是非常高的,這也就是爲什麼現今市場上資深的測試開發工程師的價格會高於資深的開發工程師的原因。

總結

我把測試工程師按照工作內容,分爲了功能測試工程師(即傳統測試工程師)和測試開發工程師兩類,分別給你分享了他們的核心競爭力。

對於功能測試工程師來說,其核心競爭力包括:測試策略設計能力、測試用例設計能力、快速學習能力、探索性測試思維、缺陷分析能力、自動化測試技術和良好的溝通能力這七大部分,你可以有針對性地提升自己某方面的能力,去獲取更大發展空間的“敲門磚”。

而對於測試開發工程師來說,你需要具備優秀的測試系統需求分析能力和完備的知識體系,這樣才能保證你設計的測試工作和平臺,可以更好地滿足提升測試效率的要求。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章