天天看點

軟體測試工程師的職業發展

前言

有位同僚曾經很認真地問過我一個問題。他說他現在從事軟體測試工作已經4年了,但是他不知道現在的工作和自己在工作3年時有什麼不同,此外他還想知道他做軟體測試工作到第5年或第6年會怎麼樣。後來他在工作到第5年的時候轉崗了。雖然他已經轉崗了,後來聯系時他又問了我這個問題,似乎這個問題困惑他很深、很久了。

這件事情對我的觸動很大,我相信這個問題是帶有一定普遍性的。軟體測試是一個缺乏發展空間、做到一定階段後隻能通過 “轉崗” 來尋找發展機會的職業嗎?肯定不是。Martin Pol, 歐洲業界公認的“ Test Guru” (大佬,精神領袖),1998 年歐洲第一屆傑出測試貢獻獎獲得者,并獲得英國騎士勳章。Martin 在測試領域已經幾十年,最後在測試工作上名利雙收。而且,據說他的大女兒和小女兒都是做測試的,這是名副其實的“測試世家” 。但是Martin的例子并不能解決“軟體測試本身有哪些發展”這個問題。隻是讓我們看到了最美好的結果,讓我們知道這條路是能走通的。那麼軟體測試的職業發展方向有哪些?作為軟體測試工程師, 又該如何為自己制訂職業發展規劃?

給大家推薦一個軟體測試技術交流群:1079636098 群友福利免費領取

一、軟體測試的職業發展方向

軟體測試在職業發展上,可以概括分為“管理”和“技術”兩大類。另外,軟體測試還可以在品質領域發展。

1.1 軟體測試在管理上的發展

軟體測試管理是大家比較熟悉的軟體測試職業發展路線之一,比較流行的職位包括測試組長、測試經理、測試代表、測試主管、測試總監、測試部長等。不同的公司中相同職位的工作範圍可能略有不同,按照管理級别的高低,大緻又可分為以下三級。

1.初級軟體測試管理者:測試組長

一般由有兩年左右工作經驗的測試工程師擔當。可能會管理會管理2~5名軟體測試工程師。一般來說,測試組長不會負責整個産品,隻是負責其中一個或多個特性。

測試組長并不是完全的管理者。從事的管理工作大多僅集中在測試計劃的制訂和執行上;在産品測試上,他們常會負責産品重點、難點的測試;除此之外,他們還要負責帶新員工,讓測試工作可以順利進行下去。

2.中級軟體測試管理者:測試經理、測試代表、測試主管

職位排名不分先後,一般由有4年左右工作經驗的測試工程師擔當。

中級軟體測試管理者負責的對象為産品,可能會管10~20名軟體測試工程師(其中包括測試組長)。

中級軟體測試管理者最重要的工作還是運作測試項目,制訂并執行測試計劃,測試結束後還需要對産品品質進行評估,給出産品釋出建議。要做好這些,需要他們掌握更多的項目管理知識,深入了解項目價值,做好項目範圍管理、品質管理、成本管理、時間管理、風險管理和人力管理。除此之外, 他們還要和開發人員、市場人員、服務人員等密切配合、緊密合作,其間,溝通協調能力必不可少。

3.進階軟體測試管理者:測試總監、測試部長

一般都有10年以上軟體測試工作經驗,負責的對象是産品線或公司。

進階軟體測試管理者需要了解産品的商業目标,直接對産品成功負責。他們需要對測試團隊的發展負責,進行人員招聘和培養,留住關鍵人才,提高或更新不合格人員,提升團隊的勝任力和職業能力;負責項目财務管理(預算和控制);負責資源的計劃與配置設定;持續改進測試能力,提升效率和産品品質,從測試的角度對傳遞産品的成本、周期和品質負責。

1.2 軟體測試在技術上的發展

軟體測試在技術上的發展方向,似乎不像軟體測試在管理上的發展方向那麼明确。一種觀點是按照測試資曆和能力分為助理軟體測試工程師(或者是實習軟體測試工程師)、初級軟體測試工程師、中級軟體測試工程師、進階軟體測試工程師和主任軟體測試工程師(或是資深軟體測試工程師)。但是這種分類方式并沒有突出“軟體測試技術”,是以我個人更傾向于一種簡單的分法——産品測試技術和專項測試技術。

産品測試技術是指把某個具體(或一類)産品測試得更好的技術;專項測試技術并不是針對具體的産品,而是測試領域普遍适用的技術。

  1. 産品測試專家:軟體測試架構師

軟體測試在技術上可以向産品測試技術專家方向發展。有些公司稱産品測試技術專家為軟體測試系統架構師(本書簡稱為測試架構師)。

測試架構師和系統架構師在職責上是有一定對應關系的。

系統架構師在業務(需求)向開發技術轉換的過程中起到了橋梁作用,負責産品開發的整體架構設計;測試架構師是在業務(需求)向測試技術轉換的過程中起橋梁作用,負責産品測試的整體架構設計。

系統架構師負責對産品開發中的技術重點和難點進行研究與攻關;測試架構師負責對産品測試中的測試重點和難點進行研究與攻關,為測試組織提供最優的測試方法。

系統架構師協助開發項目經理制訂項目計劃和控制項目進度;測試架構師負責協助測試經理制訂測試項目計劃和控制測試項目進度。

系統架構師負責組織開發項目團隊内部的技術教育訓練工作;測試架構師負責組織測試團隊内部的技術教育訓練工作。

系統架構師需要有一定的戰略規劃能力、業務模組化能力、資料分析處理能力、面向産品生命周期的品質保證和持續改進能力;測試架構師同樣需要這些能力。

有人評價系統架構師是産品開發的 “靈魂”,那麼測試架構師就是産品測試的 “靈魂” 。

2.專項測試工程師

軟體測試在技術上,還可以向專項測試工程師方向發展,成為軟體測試某領域的專家。

從測試體系的角度來看,軟體測試發展至今,已經形成了一套完整的測試體系。測試體系中的任何一個環節,測試政策、測試分析設計、測試執行、測試評估、測試流程等每個領域的内涵都很豐富,包含了很多可以深入發展研究的技術,比如自動化測試技術、測試工具(包括産品測試模拟工具和測試流程管理工具)開發、缺陷分析和測試評估技術等。

從産品品質屬性的角度來看,專項測試技術還可以包含性能測試技術、可靠性測試技術、安全性測試技術等。

實際上,産品測試專家(軟體測試架構師)也需要精通上文提到的各項測試技術,如測試分析和設計、自動化測試技術、性能測試技術。但是,産品測試專家使用的任何技術都是為産品服務的,他需要針對目前測試的特定産品選擇最合适的測試技術,并針對不同的産品對測試技術進行适配調整。而專項測試技術專家并不關注具體産品, 而是偏向技術共性方面的研究。

表1-1和表1-2概括了一些常見的專項測試技術發展方向, 供大家參考。

表1-1 測試技術類專項測試技術

軟體測試工程師的職業發展

表1-2 品質屬性類專項測試技術

軟體測試工程師的職業發展

1.3 軟體測試在品質領域的發展

軟體測試還可以向 “品質管理” 領域發展。主要參考方向如下:

1.産品流程設計

負責企業在産品開發、市場、傳遞等全流程體系建設。例如,著名的內建産品開發(IPD)流程。

2.企業品質管理者

企業品質管理已經成為企業管理的一個重要組成部分。

品質大師朱蘭把“品質策劃”“品質控制”和“品質改進”稱為品質管理三部曲。每一個步驟的具體含義如下:

品質策劃:緻力于制訂品質目标并規定必要的運作過程和相關的資源以實作品質目标;

品質控制:緻力于滿足品質要求;

品質改進:緻力于增強滿足品質要求的能力。

企業品質管理者通過這三部曲系統地對企業的品質進行管理。品質管理體系方法可以概括如下:

建立一個以過程方法為主體的品質管理體系;

明确體系内各過程的互相依賴關系,使其互相協調;

控制并協調品質管理體系各過程的運作,關注其中的關鍵過程,規定關鍵活動的運作方法和模式;

了解為實作共同目标所必需的作用和責任,減少因為職責不明導緻的障礙;

在行動前确定所需資源的需求;

設定系統目标以及各個過程的分目标,通過分目标的實作,確定實作預期的總目标;

通過監控和評估,持續改進品質管理體系,不斷提高組織的業績。

當然,這裡的品質不僅僅是指産品品質,要達到的效果是企業整體品質的提升。

3.客戶滿意度管理專家

“客戶滿意” 是産品成功的關鍵因素,沒有之一。關注客戶的聲音 ,讓客戶滿意,無疑對産品品質提升有非常重要的意義,“客戶滿意度管理” 也受到越來越多的關注,成為品質管理的一個重要内容。

對“客戶滿意度管理”來說,重點是要識别關鍵使用者的滿意要素,和做好與使用者接觸點相關的品質保證。

“關鍵使用者滿意度要素” 是指通過對特定細分市場進行市場調查後,分析得出這類客戶對特定的産品品質要求和服務屬性,并把關鍵客戶滿意度要素作為企業産品與服務戰略的輸入,使企業最大限度地保持産品競争力;而“使用者接觸點相關的品質保證” 是指包含客戶可以感覺到的産品和服務,其中服務包括産品推廣、投标達标、供貨保障、工程傳遞、技術支援、備件支援和客戶教育訓練等。客戶對任何接觸點都會産生好或者不好的感覺,是以需要定義各接觸點的關鍵、标準動作,并確定執行到位,提升客戶感覺品質。

客戶滿意度管理,前提還是需要對使用者有很好的需求和了解。和軟體測試不同的是,這裡的客戶需求,已經不僅僅局限于産品,而是客戶可感覺的方方面面,涉及面會更廣。對于軟體測試工程師來說,往客戶滿意度管理方面發展,也是不錯的選擇。

二、軟體測試工程師職業規劃建議

主要針對軟體測試在制訂職業規劃時可能會遇到的一些問題,提出個人的處理建議,供大家參考。

給大家推薦一個軟體測試技術交流群:1079636098 群友福利免費領取

2.1 做管理還是做技術

軟體測試在職業發展上可以概括為 “管理” 和 “技術” 兩大類,這點大家已經比較明确了。現在的問題是,該走管理路線,還是該走技術路線呢?

也許是受到中國傳統思想觀念“學而優則仕”的影響,面對這個問題,很多人會不假思索地選擇做管理,甚至會認為一個30歲的軟體測試工程師還在做技術是一件丢人的事情。其實我們可以先抛開其他問題不談,單純從時間上來推斷,大學生正常情況下23歲畢業,到30歲有7年的時間;研究所學生25歲畢業,到30歲隻有5年的時間,對軟體測試這種深入難、且對從業者綜合要求很高的職業來說,5年、7年其實并不算太長,對軟體測試的了解,隻能算是 “管中窺豹” 而已。是以建議軟體測試工程師在計劃職業發展裡程碑時,可以把時間放得更長一些, 5年一個小台階,10年一個大台階,也許對軟體測試行業來說,更合适一些。

另外,軟體測試在 “技術方向”和“管理方向”上又是可以互相轉換、交叉發展的,測試管理者可以轉崗為測試架構師,測試架構師也可以轉崗為測試管理者。圖2-1是這種轉換關系的示意圖。

圖2-1 軟體測試在“管理方向“和“技術方向“ 上的互相轉換

軟體測試工程師的職業發展

為什麼軟體測試具有這樣的特性呢?這是因為軟體測試是一門基于實踐的學科,對軟體測試來說,“管理” 不可能是 “絕對的管理”,軟體測試的管理者首先要是産品測試技術專家,這是“做正确的事” 的基礎,很難想象一個不懂測試技術、不了解各項測試活動的軟體測試管理者如何評估軟體測試的重點、難點,如何做計劃,如何評估風險控制項目進度;與此同時,“技術” 也不能是 “絕對的技術”,不了解“價值”“目标”和“成本”的技術人員容易犯的錯誤就是陷入“唯技術論”中,缺乏“管理”思想會讓他們制定的測試政策不切實際,一紙空文的測試政策是沒有意義的。

一個理想的測試團隊,具有測試經理(測試代表)和測試架構師兩個角色。測試經理負責管理,測試架構師負責技術,但并不意味着測試經理隻管管理,隻懂管理,測試架構師隻管技術,隻懂技術。相反,測試經理(測試代表)和測試架構師要熟悉彼此領域的關鍵活動,能夠評審關鍵的傳遞件,互相能夠提供各自領域關鍵活動的決策參考,可以互相備份。測試經理和測試架構師之間有分工,更多的是合作。

是以,建議測試管理者一定不要過早地放棄技術,走所謂的“純管理” 路線,把自己陷入各種管理會議、溝通協調中。不要認為讀了幾本書,參加了幾個沙龍論壇、幾次教育訓練就能掌握關鍵的測試技術方法,隻有在産品測試中不斷地實踐、總結、再實踐、再總結,才能不斷地提升自己。如果測試技術有短闆,測試管理水準也不可能真正上去,随着測試資曆的加深,職業能力和資曆會變得越來越不比對,個人的職業發展道路反而會越來越窄。

給大家推薦一個軟體測試技術交流群:1079636098 群友福利免費領取

對測試架構師來說,除了産品測試技術外,還需要更深入地了解産品的價值,要圍繞如何讓産品成功去做測試政策,學會取舍,而不能隻站在測試技術的角度去做政策。隻有産品成功了, 産品測試才有資格去談是否成功。失敗的産品,測試得再好,又有什麼用呢?

繼續閱讀