聊下自己轉型測試開發的歷程

2022-07-24 21:01:10

軟體質量保障

專注於測試圈:測試質量保障、自動化工具/框架、平臺開發、演演算法測試、BAT/TMD大廠測試崗面試題/面經分享、測試團隊建設與管理、測試新技術的分享。 偶爾也聊聊個人工作的收穫與經驗。可以幫忙內推位元組、阿里、百度等大廠。

介紹下自己的測試歷程吧,郵電高校通訊小碩,畢業4年,去年成功轉型測試開發,週末會總結測試心得。

Testerhome版:https://testerhome.com/topics/30291

平凡的大學生活

我大學期間屬於並沒有什麼出眾的,按部就班,老實辦事的那種學生,我導師對我們那屆的學生比較散養,只要完成導師給的任務,畢業是問題不大的,所以學術產出一般(學術產出拿到校二等獎學金),一個專利+一個EI+一個DSP會議。

研二尾聲大概4-5月份開始準備校招工作,當時的自己因為程式設計能力並不出眾,所以決定投對於編碼能力要求不高的技術支援和軟體測試相關崗位。暑假就開始在實驗室複習計算機網路、資料結構、C語言、作業系統、通訊等知識,準備迎接8月份開始校園招聘。而同實驗室也有同學去報程式設計輔導班的,後面校招就去了大公司。

誤打誤撞從事測試崗位

校園招聘開始了,肯定優先考慮大廠呀,像華為、中興、騰訊、百度、阿里等都投了簡歷(但是當時對bat並沒有報希望,自己幾斤幾兩清楚的很,所以只是貴在參與,但是對中興華為還是挺有信心的,主要是專業對口,而且做的準備工作充足)。果不其然,阿里簡歷沒過,騰訊百度筆試沒過,至此bat全軍覆沒。當然我也並不意外。接下來是華為面試,投的是技術支援崗,依稀第一輪面試問了很多通訊專業知識,這個回答的沒啥大問題,但是也沒有亮點。本以為能進入二輪面試,可惜沒給機會。說實話當時面試結束後挺失落了。畢竟準備了這麼久,沒想到二輪都沒有進。接下來中興測試崗位面試類似,進了二輪,但是三輪沒過,所以當時大家追逐的「大廠」都與我無緣。所以也開始準備各種「小眾廠」。畢竟面試多了,經驗也充足了,下定決心只投軟體測試。最終拿到了杭州的一家金融科技軟體公司和成都的一家通訊晶片公司軟體測試崗位。待遇上杭州offer比成都的好,加上杭州當時有高學歷人才補貼,所以就去了杭州。

初入職場

畢業來到公司,被分到公司的創新業務部門,測試小組6個人,就我一個新人。剛開始工作內容web測試,也就是對著頁面點點點,學習jmeter寫各種測試用例(提升測試覆蓋率,為了完成組內kpi要求 )。帶我的是一個工作幾年的同事,至今還記得參與第一個專案時候,測出一個bug時候還有點小興奮。

但是工作了2個月不到,就開始對這種工作內容產生厭倦了,重複度太高,感覺自己就是個機器人 ,除了越來越熟悉業務,看不到太多成長,完全是浪費時間。

對,這是第一次遇到瓶頸!!!

克服第一次瓶頸:養成自動化思維

雖然當時是測試,但是我當時的認知是開發只是還是要學,所以我平常下班後也會自學spring mvc,Java web程式設計、redis等似乎當時看起來沒什麼用的東西來充實自己,經常學習到凌晨,週末也花一天在家學習。(現在想想,當時也走了很多彎路,學東西都是靠百度Google,沒有系統性學習。雖然也掌握了些開發技能,但是並不牢固。)

對於測試上遇到的瓶頸,我就和同組的老同事交流,問他們是否也曾遇到類似的瓶頸,如何克服瓶頸期的?有個同事的回答似乎一下子點醒了我,他說的就倆字「偷懶」。然後我就很好奇這是什麼意思,怎麼個偷懶法。然後就聊起來了Python,可以使用Python寫測試指令碼,比如造資料,結合selenium做ui自動化。這是我第一次聽到Python,通過他給我看的他寫的批次造資料指令碼瞬間生成成百上千條資料,當時感覺這玩意肯定有用,有大用處。

然後我就下班自學Python程式設計,開始嘗試寫簡單指令碼,比如利用pymysql運算元據庫,利用selenium做ui自動化。雖然當時老闆在組內不鼓勵做UI自動化,但是抱著好奇與學習的心態還是自學了下,也基於專案開發了case。但結果不出所料,需求變動頻繁不適合做UI自動化,利用selenium寫自動化以及維護自動化用例成本太高,所以沒有解決手工測試重複度高的根本問題。

但是通過學習Python和UI自動化,提升了認知,原來很多工作是可以通過Python程式碼解決的,對這就是自動化思維(雖然也學習過Java,但是誠心講,它不適合寫批次的測試指令碼) 。後面的工作就養成了一種思維,遇到重複度高的內容(重複度>3),第一時間去思考是否能通過自動化手段解決。

克服第二次瓶頸:進入位元組跳動

轉眼工作了快一年半,雖然年中績效還不錯,而且還拿了部門的一個測試獎,但是覺得在團隊裡很難再提升了,因為當時能接觸到的開發相關知識、運維知識自己也都熟悉一些,還有就是當時測試在專案中話語權低,部門老闆不太重視,測試很難推行一些質量改進工作,所以覺得自己可以看看更大的平臺。(因為我們團隊測試經常出差駐場甲方爸爸,像搭環境、部署產品、問題解決都是測試一個人搞,簡直把自己逼成了「全能王」)。

開始準備面試:網上找各種測試面試經驗、面試問題。也針對幾個中意的大廠找了面經。

然後投了xx銀行、OPPO、位元組跳動。對,都在上海,經常出差上海的我慢慢喜歡上了這座城市,與其出差來這裡,不如工作在這裡。

xx銀行最早面試,週六從剛杭州坐高鐵現場面試,一次性三面,當時的老闆對我比較滿意,給我聊了下他們團隊的規劃,團隊的實力(有很多大廠背景的),但是給的薪資,考慮到上海物價,扣除花銷等於從杭州平移到上海,所以我放棄了這個offer。

然後就是OPPO,位元組跳動,這兩家公司幾乎是同時在面試,最終先拿了位元組跳動的offer,OPPO終面也就放棄了,和他們hr說明了原委。

克服第三次瓶頸:轉型測開

來到位元組跳動,老闆也很好,他也給予很多幫助和成長機會,比如團隊管理、自動化測試以及參加測開大會、對外的學習與交流。位元組期間最大的成長就是承擔團隊自動化測試owner,推動了我們團隊從手工測試向自動化測試轉型。

來到位元組一年,有過一次漲薪,不得不說,位元組對於付出多、高產出的員工真的是很大方,真的不差錢,漲薪幅度也是挺豪氣。

【乾貨】如何推動業務測試團隊轉型自動化測試?

上海雖好,但是上海這座城市購房壓力太大,結合自己實際情況,還是決定去成都發展,雖然不捨位元組,但是還是要考慮未來的生活質量。

然後就開始尋求公司內部轉崗的機會,看到成都有xx團隊測試/測開機會,就和老闆溝通了一下意向,很欣慰他也遵循我的意願同意我轉崗。

第一次測開轉型嘗試-內部轉崗XX團隊,雖說是內部轉崗,但是面試難度絲毫沒有降低,因為前期在頭條圈看到的轉崗率多高多高的貼文,所以這次轉崗並沒有針對性XX團隊側重的技術面(偏行動端,而我工作內容web中臺、工具開發,在位元組幾乎沒接觸行動端)做一些準備,最終結果也是不好的,面試沒通過,至今覺得挺遺憾的,如果做足準備,轉崗概率還是蠻高的。

第二次測開嘗試-嘗試阿里巴巴測開,第一次的失利,總結了很多經驗,也為後面進入阿里打下了基礎。比如多執行緒、高並行、leetcode、spring mvc等,這些都是測開崗必考題,一面問的技術問題更多些,二面回結合專案穿插一些技術方面的問題,例如如何利用xx技術解決高並行的問題等,簡單貼一下部分面試題目。

瞭解多執行緒嗎?瞭解Python的GIL鎖嗎?說一下程序和執行緒執行緒安全程序間通訊的方式有哪些?執行緒間通訊?說一下什麼是樂觀鎖和悲觀鎖?AOP什麼是IOC?list和map相關解釋一下工廠模式?記憶體漏失效能測試會做效能測試嗎?容量測試/穩定性測試?執行緒間的通訊機制

最終如願以償拿到offer,在成都已經很知足了。除了薪資,更重要的是測試開發的機會,畢竟阿里在業界質量保證基礎建設是相當完善的,能夠在阿里接觸更多成熟的測試技術和來自專案上的挑戰。

開始灌雞湯啦

  1. 瓶頸普遍存在。感謝瓶頸,瓶頸就是機會。每個人在發展過程中,都會遇到各種瓶頸,有瓶頸是好事,表示你渴望成長,只要多和身邊的 「高階 「同事多溝通,多聽建議,他們是可以給到你很多幫助的。

  2. 選擇很重要,努力更重要 沒有努力談選擇等於空談!!!選擇一個平臺很重要,遇到一個好老闆更重要,但是前提是你要準備好給你選擇機會的 「基礎」,真的很感激 Z 哥,是我職業生涯的伯樂。

  3. 持續學習決定你能走多遠 - 養成持續學習的習慣。學歷只能代表過去,工作上更重要的是要不斷學習。持續學習能力決定一個人能走多遠,它主要體現在:歸納分析能力;思維創造力;時間管理能力;自律能力等方面,養成這些習慣,對於一個人的成長至關重要,也是克服成長路上遇到瓶頸的 「殺手鐗」。

  4. 多寫部落格多記錄工作歷程。Writing is Thinking。所寫即所思。你是不是有時候感覺很懂一個東西,但是給別人分享時候,卻表達的不怎麼樣。其實根因就是你並沒有想象的那樣瞭解了一個技術。嘗試把它們寫出來吧。

  5. 「三思而行」。在大公司,牛人很多,你的所思/問別人的問題決定別人對你的看法。建議大家遇到每個問題 都先說服自己,多問一下自己這是 what、為什麼是這樣 why,怎麼解決 How。

附:測試小白到高階測試技術棧