我的軟體測試故事:成長、迷茫、奮鬥
前言
測試工作6年,經歷過不同產品、共事過不同專業背景、能力的同事,踩過測試各種坑、遇到過各種bug。測試職場生涯積極努力上進業務和技術能力快速進步過、也有努力付出卻一無所得過、有對測試生涯前景充滿希望認為一片朝氣蓬勃過、也有對中年危機思考不知何去何從迷茫過。一直在努力,一直在思考,一直在探索。
6年測試生涯,不同的產品、不同的人、不同的事,經歷著不一樣的經歷,帶給我不一樣的思考。思考著如何不斷提升自己、思考著是否一直走測試這條路、思考著如何轉型、思考著如何做好現在以應對未來、思考如何可以賺更多的錢。問題一直都在,我也一直在努力尋找答案的路上。
趁著國慶有空閒時間,寫寫我的軟體測試故事,希望對未來想要進入要進入這一行業、即將進入以及正在測試領域努力奮鬥的你有一點點啟發和思考。我的軟體測試生涯開始於2013年的那個夏天。。(一看就是老同志。。)
初入職場
那年畢業的夏天,和舍友W踏上火車南下,一路偶有閒扯大多是在睡覺。對即將開始的工作有點期待、憧憬,對未來可以開始獨立生活感到嚮往。入職體檢、手續辦理完成後正式開始上班的第一天了。依然清晰記得那一天,一同和F、C兩個同事同時來到領導面前的場景。leader下面同時分管三個產品,我被分配到一個成熟產品P,其他兩個同事分配到了產品C,另外一個產品是E,這個後話,暫且不提。因為產品P只有一個同事在負責,很自然他成為了我的新員工導師,我很榮幸。直到現在,雖然我幾經輾轉周折,但我們依然保持很好的聯絡。
工作就在我的導師指導下開始了。。各種業務知識、技能、測試工具、環境使用等等知識在自學和實踐、犯錯總結中不斷學習成長。新員工實踐都是在導師和leader規劃的範圍內有條不紊的開展著,很慶幸他們大多都是包容、忍耐和鼓勵、信任對待我的成長和不足,我們相處、溝通的很融洽。大概在第4個月的時候因為另外一個產品I因為測試經理精力有限需要放手。由於這個產品i業務知識與我當前產品P有相通之處,leader想到了我。。對,一個菜鳥。leader與我師傅溝通評估我的能力決定讓我去接手產品I的測試組長職位,我也答應了。當時也不太懂,也沒有太大的壓力,就這樣跑步開始上崗了。。後來的經歷才知道跑步上崗的事情太多了。就跟打戰一樣,沒有那麼多的事情給你去準備。就是給你這個崗位,給你這一份壓力和責任,剩下的你自己去學習、去能力,遇到問題自己想辦法克服,通過自己、通過團隊、上升等等都可以。。
很慶幸,產品I在新員工負責期間也沒有出啥問題,現在想想我又沒有多大功勞,因為當時主要還是學習的心態去負責這個產品、去與這個團隊的測試、開發成員、PM配合。去學習業務、去了解人、去提升自己。這時候談不上管理。現在想想領導放心將產品放到我手裡負責。我想主要有幾個原因。第一、產品I團隊開發、測試人員、PM人員穩定,技能成熟,合作的測試leader整體能力不錯。團隊陣型沒有變化不會有什麼風險。第二、產品成熟。每次版本交付需求量不大。第三、有我導師保障我,我有問題隨時可以溝通。leader自己隨時關注。
新員工學習為主和相對壓力較小的工作任務下有條不紊的進行著,因為在產品I中承擔中與其他新員工不一樣的職責、也承擔了相對負責的效能測試等任務。很榮幸新員工結束考核時得到了一個不錯的考評,這是有點出乎意料的。
仔細回想,整個新員工期間有幾個事情印象比較深刻。反思了一下以下幾點如果做得更好,也許結果會更好。
1、主動溝通。導師和leader都很忙,可以主動找他們溝通,可以發訊息溝通、導師空閒時間工位溝通、發訊息預約時間、吃飯時間閒聊都可以。吃飯時是一個很好時間段,儘量跟導師、老員工、新員工等一塊吃飯。有更多的溝通時間也可以讓你更快的融入這個團隊。
2、重複問題儘量不問第二遍。我的導師挺煩這個的。所以問問題得到的資訊量大時我就會打斷他找個本子記錄回去慢慢整理。
3、跑步上崗。有好的機會該抓住就該抓住。不要害怕自己這不會那不會。不會不是什麼大問題,怕的是不敢承擔。多問多學多溝通,注意處理問題的方法能解決很多問題。
4、在有能力做好本職工作前提下,可以多關注一下其他角色有關的是事情。其實本來也是,測試就是一個端到端的任務,很多資訊都會影響到你對測試任務的評估。包括測試計劃、測試風險。
5、學習、動手、總結、分享。新員工就是一張白紙,什麼都要學。業務、技術、流程、溝通的技巧等等。努力提升自己。記得印象很深的一句話,當時去管理產品I的時候,與合作測試leader定位一個工具報錯的問題。shell寫的。看不懂。。合作測試leader說了一句,原來管理我們的人都懂啊。。其實,當時是有點尷尬的。。當然現在這個已經是so esay了。。
導師和leader
這兩個可能是可遇不可求的事情。大部分人對導師和leader其實是沒有選擇的權利。主要看緣分。我之所以要專門在這裡列出,就是我很慶幸我都遇到了。當時,產品P屬於成熟產品,我導師帶著一幫合作同事完全能hold住。我完全可以不用參與任務。所以我的任務主要是學習。導師也是個技術控,喜歡鑽研各種問題。我有幸也跟著學習了很多的知識,也給了我充分的時間去學習各種各樣的知識。不僅僅是業務。同時,leader也給予充分的時間自由去學習各種業務知識,並沒有催著我師傅給我分配任務,leader的基本觀點是磨刀不誤砍柴工,打牢基礎對以後會有很大幫助。同時在負責產品I期間,給予我充分放權、指導、鼓勵我放手去做,實踐我自己的想法。可惜的是我當時沒有什麼太多的管理想法。。浪費了大好機會。。
當時記得leader找我溝通的時候經常會聊天。之所以是溝通是聊天,因為對leader還是整體比較輕鬆。有幾句話到現在還有一些印象,比如三年內不要太關注收入,績效、職級、收入是你個人成長的附屬品,放手實踐你自己的想法、產品是公司的,能力提升是你自己的。我當時新員工過對收入也沒想那麼多也不認為是畫餅洗腦上的,我現在也同樣認為這些是有道理的。也可能會以自己看到的、經歷的去跟一些需要的人去講這些。這些內容關注點要放在自己身上,放在自己能力提升上面。因為這對於你來說是可控的部分。做好你現在的事情,努力提升自己,主要是關注自己有沒有收穫。你做好了很多東西自然就有了。。如果你能力提升了但是回報並沒有增加,你也有廣闊的選擇的餘地去支撐你的能力,你有更多的選擇,你可以跳槽。只要你有能力,企業給的待遇還是很高的。當然,如果領導跟你說板凳坐十年冷,這個我是不太贊同。十年過去了中年危機就到了。。不能光忽悠,不來點實質的物質獎勵啊。。
轉崗
這裡指的是公司內部的轉崗,轉崗這種事情好壞也說不準。這裡說一件事。主要是供讀者一些思考。其實在我工作第二個年頭的時候,是有機會轉崗到安全測試部門的。當時同事就在那個部門要招人問了我的意向。以我當時自己考核結果和能力要去應該也能去成。當時我的思考點主要是部門和leader都挺好的,覺得就呆著未來應該也還可以。當時轉崗也不像現在這麼容易。也沒有思考太多當前部門的測試和安全測試有多大的區別,我就沒有選擇走。現在想想其實有些小後悔。因為現在絕大多數部門的測試還是偏重於功能測試,安全測試屬於專項測試,技能模型也不一樣,前景也不不一樣。其實有些小後悔,當時如果選擇走,短期可能會有一些影響,但是長遠來看,應該是更符合當前的期望。畢竟就業前景要好很多。所以大家在做選擇的時候儘量慎重,多思考,多跟好朋友多交流。考慮的維度儘量廣一些。
業務和技術
業務和技術對於測試來說,其實是存在一個木桶效應的問題。業務不熟或者技術有短板你可能都搞不好測試。業務和技術都很牛逼你的精力和時間投入肯定要都滿足。所以要儘量做好知識體系構建、職業規劃,確保平衡這二者之間的經歷投入。相對來說,技術更通用,技術越強你就越牛逼。業務(產品)相對有侷限,比如你是搞通訊領域的、比如你是搞支付產品的、你是測試app的、測試嵌入式產品的等等。業務能力很強也可以成為一個很厲害的人,比如你對支付產品的匯款、轉賬、支付非常熟悉,支付產品的行業理解也很深入,你去求職銀行業務相關的企業、阿里支付、騰訊財付通的部門應該會比其他產品轉崗過去的測試人員要更有優勢,以前不少同事都去了這些部門。另外,如果你一直在一個產品,精通業務的各種知識,這種人也非常厲害,可以搞TSE,可以支撐開發、產品、測試內部所有人關於業務的答疑。這種業務強的人在部門待遇和職級也會很高。
但是從個人角度來說,我會傾向於多花一點時間在技術能力提升上面。以我為例,我主要經歷過幾個不同產品,有傳統通訊領域的產品、有充值轉賬產品、有支付的產品、其他當前的不寫了。。業務並沒有太強的連續性。但是我的技術一直是通用的。不管是編碼、網路、資料庫還是測試基礎理論、工程能力等等。重申一下,業務和技術都很重要,根據自己崗位的職責要求和自己的職業規劃,做好這二者之間精力的分配。如果不知道咋規劃。就做好現在。比如功能測試,你一定要精通業務。如果你是效能測試,你可能只需要關注核心流程,然後是各種效能工具使用、效能調優方法。
到這裡說一點,其實個人一直還算是有點上進心的,從事工作到現在也一直努力。技能自認為還算過的去。編碼也不慫,Python/Shell/Java/Autoit/DOS也都能寫、資料庫基礎、oracle資料庫管理、計算機網路、測試基礎理論、測試管理、linux系統基本問題解決也還算可以。組內大部分相關的問題到我這也能閉環,但是總是感覺還是不夠。說這個意思,就是希望讀者可以多考慮一下,讓自己在某一方面特別精通,比如搞工具開發,你可以不僅能編碼,編碼效率寫的規範、效率高,你還能自己做規格設計。開發出的工具可擴充套件性、可維護性都很好等等。總之,一定要有某一方面的特長、深度,有廣度加分。全才對普通人不太可能,人的精力都是有限。
有價值的2件事
這裡說2個我認為對自己能力提升或者經驗積累有很大幫助的2件事。
第1個就是案例學習。學習你的產品第一個版本到目前的所有的問題、現網問題、現網案例等等,快速積累經驗,提高對問題的敏感性。會對你以後的測試設計有很大的幫助。通過分析這些問題你會發現各種問題,有非常簡單顯而易見的、比如冒泡提示,有非常難以復現需要特殊構造場景才能發現的、有使用者體驗方面、效能、可靠性等等,全部分析下來你會發現自己對產品的理解、對測試的理解、對站在使用者角度做測試的理解會有很大的幫助。
第2個就是針對環境搭建或者常用工具測試原始碼的學習。這裡的原始碼不是指的版本原始碼,主要指工具類原始碼,因為像環境搭建或者升級操作之類對測試來說是非常常規的操作但是又經常會遇到問題。工具原始碼通常來說體量都不會太大,你可以用個思維導圖梳理一下工具的原始碼、一步一步拆解出關鍵步驟,每一步驟都是做什麼的、輸入輸出是什麼。到最後你再遇到環境搭建的問題,你會發現你很輕鬆的就可以解決。因為你對他們的報錯日誌、為什麼會報錯、定位方法瞭若指掌。你能解決的問題多了之後你會發現你可能在你們部門就會有影響力,你就有可能快速脫穎而出。另外,帶來的附加價值你可能對該門語言能力會提高很多。。
以上就是我說的挺有價值的兩件事。因為我這麼幹過,也確實從中獲得不少收益。
測試職業發展
軟體測試人員職業發展大概有2條途徑。一種是走技術路線,初級、高階、資深測試工程師,一種是管理路線。初級、高階工程師、測試組長、測試經理、測試部長等。還有一種是非正常的路線。有業務能力強的測試轉崗去搞產品經理的、搞需求調研的。有編碼能力強的測試轉開發的、也有轉資料的、也有轉崗與測試有相關性的,比如QA。還有風馬牛不相及的,轉崗去搞HR的、搞財經的、搞採購的、搞銷售的、服務的都有。正常的發展通道居多的還是前面兩條的。
總的來說,要想有個好的職業生涯、有份好的收入首先要做的是不斷提高自己的業務和技能水平,提升自己的軟、硬技能。對於測試,分析問題能力、溝通表達能力一定要好,對於溝通,起碼的要求就是你能簡單明瞭的把一件事情或者一個問題說清楚,因為測試經常要和各個角色配合工作。關於測試職業發展,我也沒想好自己未來要從事什麼,現在也就是按部就班的做好當下。自己都沒想好做好的事情就不再這多說了。如果你也沒想好,那就做好現在。起碼收穫當下,你把當下事情做好了,領導認可了。你有好的績效,好的績效就有好的回報。繼而你可能會有好的崗位任命。做好了當下,可能領導就幫你規劃好了。。見過是有這樣的。。
中年危機
危機十足啊。對這個問題,對自己的未來也有過思考,但是始終也沒有得到自己想要的答案,也就是現在我也沒定好自己的目標。尤其在二線城市,你可以上各招聘APP看看,能力要求都挺高,但是薪資待遇還是有限。這是客觀環境無法改變。所以更需要提前考慮這個問題,提前做好準備,不打無準備之戰。對自己大概有個初步計劃,就是把這些年的經驗再梳理總結一下、把英語口語練練、測試管理中遇到的問題總結總結,踩過的坑再反省反省。。
小結
上述都是一些個人體會,文筆有限寫的有點零碎,但是內容都是真實感受的,如果能對一部分人有所啟發那就再好不過。目前自己還是一直在思考未來,自己可以做什麼,還是期望未來可以多賺錢^_^,過更好的生活