最近刷某乎,發(fā)現(xiàn)有很多朋友有年齡焦慮了,比如:“我今年28了轉(zhuǎn)行來不來得及”,“我今年30了還能轉(zhuǎn)軟件測試嗎?”......這種問題在網(wǎng)上上有很多,仿佛大家都覺得年紀(jì)大了,很多事情都來不及了,我來說說我的經(jīng)歷吧,希望可以幫助到迷茫中的你!
先說下我基本情況。我是87年的,計(jì)算機(jī)專業(yè)普通本科畢業(yè)。在一個(gè)二線城市,畢業(yè)后因?yàn)樽陨砟芰栴}、認(rèn)知水平問題,再加上運(yùn)氣不好,換過多份工作,每份工作都干不長。導(dǎo)致我30多歲時(shí),還一事無成,也幾乎沒有積累到什么經(jīng)驗(yàn)技術(shù)、行業(yè)知識等。甚至還一度去開過網(wǎng)約車,送過外賣。
轉(zhuǎn)行程序員前,我每個(gè)月收入僅三四千元。2020年下定決心,準(zhǔn)備轉(zhuǎn)行!我知道自己最大的劣勢就是年齡太大了,但考慮再三,因?yàn)橐韵聨讉€(gè)原因,我還是決定走這條路:
我目前的情況已經(jīng)算是城市里的底層了。我不會(huì)做生意,沒其它經(jīng)驗(yàn)和技能,性格偏內(nèi)向,銷售和交際也不太擅長。所以我不怕失去什么,因?yàn)橐矝]有什么可失去的。
我想學(xué)個(gè)謀生技能從新開始,而學(xué)開發(fā)最適合我。因?yàn)槲也⒎?基礎(chǔ),畢竟大學(xué)時(shí)學(xué)的這個(gè)專業(yè),而且自己也曾經(jīng)很喜歡編程。
我對待遇的要求不高,只要工資有5k以上就行。如果能有6、7 那我就太滿意了。
當(dāng)時(shí)我的瞎推斷:因?yàn)閲鴥?nèi)出生率特別低,以后可能沒那么多年輕人供雇主挑選,所以我們這些中老年人,也有一定的機(jī)會(huì)。
受到一些心靈雞湯的鼓勵(lì),比如什么種一顆樹最好的時(shí)機(jī)是十年前,其次,就是現(xiàn)在!
我辭去工作,開始在家自學(xué)軟件測試。主要的學(xué)習(xí)方式就是在網(wǎng)上看視頻教程。那些視頻教程,初級的基本上免費(fèi)。中高級的有些會(huì)收費(fèi),大概50-300元左右一套。反正“學(xué)費(fèi)”上我沒花什么錢,總共不到一千元吧。
軟件測試是IT相關(guān)行業(yè)中最容易入門的學(xué)科~不需要開發(fā)人員燒腦的邏輯思維、不需要運(yùn)維人員24小時(shí)的隨時(shí)待命,需要的是細(xì)心認(rèn)真的態(tài)度和IT相關(guān)知識點(diǎn)廣度的了解,每個(gè)測試人員從入行到成為專業(yè)大牛的成長路線可劃分為:軟件測試、自動(dòng)化測試、測試開發(fā)工程師 3個(gè)階段。
先是學(xué)了些測試基礎(chǔ)。在學(xué)測試時(shí),猶豫了下學(xué)Java還是Python。在我讀書時(shí)是學(xué)過JAVA的,雖然已記得不多了。于是我就想學(xué)個(gè)新的吧!還因?yàn)镻ython比JAVA簡單,我這個(gè)情況,肯定進(jìn)不了大廠,做不了大項(xiàng)目了。所以就決定學(xué)Python自動(dòng)化。
學(xué)完基礎(chǔ)后,我還跟著視頻教程,自己做了兩三個(gè)簡單的項(xiàng)目。在我學(xué)習(xí)過程中,讓我比較有自信的是——沒遇到什么挫折。當(dāng)然,肯定遇到過各種問題被卡住,但自己都去百度解決了。
接下來開始準(zhǔn)備找工作,第一個(gè)難點(diǎn)就是簡歷。快32歲的人了,如果老實(shí)說剛自學(xué)出來沒任何實(shí)際工作經(jīng)驗(yàn),肯定是沒人要的。沒辦法,只好去包裝簡歷,說成有兩年開發(fā)經(jīng)驗(yàn)。瞎編簡歷的過程還是很困難的。以前呆的哪家公司,做了什么項(xiàng)目,完全憑想像去編造。
然后海量投簡歷,艱難地面試,不斷地被淘汰…當(dāng)時(shí)我的信念就是,大不了我花一年時(shí)間去找工作,找不到就繼續(xù)學(xué),直到找到為止!最終我花了近兩個(gè)月時(shí)間,可能參加了20次的面試,才勉強(qiáng)找到份工作。
因?yàn)闆]有實(shí)際工作經(jīng)驗(yàn),造假的簡歷,是很容易被發(fā)現(xiàn)的。只要稍有經(jīng)驗(yàn)的面試官,多追問你幾個(gè)細(xì)節(jié),就露餡了。因?yàn)槟悴]有做過,不可能編造出全部的細(xì)節(jié)。所以面試過程很艱難。說幾次印象深刻的:
1、一家特別小的公司,還是與人合租的辦公室,我當(dāng)時(shí)見到的員工,似乎只有兩個(gè)人。與技術(shù)面試官簡單交流了幾句后,他當(dāng)場決定錄用我,讓我明天來上班,并且說稍后會(huì)發(fā)短信給我確認(rèn)。但不知道為什么,后來沒再聯(lián)系我了。
2、另一家小公司,還是在居民小區(qū)里辦公,不過辦公環(huán)境還不錯(cuò),約有七八個(gè)人的樣子。與面試官交流的地點(diǎn)是在生活陽臺上,面試官坐著一個(gè)簡易塑料板凳,旁邊是個(gè)洗衣機(jī)。和他聊了較長時(shí)間,自以為他問的所有問題,我回答得都不錯(cuò),也很希望拿到這個(gè)offer。滿心期待的回家等了好幾天,結(jié)果也沒下文了。
3、也是一家在居民樓里辦公的小公司,辦公環(huán)境給人壓抑的感覺。去的時(shí)候就遇上,老板模樣的人,在對開發(fā)人員大發(fā)脾氣,那些開發(fā)人員都不敢支聲。然后那老板對待我們這些面試者,態(tài)度特別粗魯,抱怨我們?yōu)槭裁丛绲搅?0分鐘?筆試的內(nèi)容甚至包含直接給他們現(xiàn)有項(xiàng)目找bug,和改bug。我心中生氣,中途離開了。
4、最后能找到工作,通過面試,主要是運(yùn)氣。是老板直接跟我聊的,沒經(jīng)過技術(shù)面試官。老板覺得我有相關(guān)行業(yè)工作經(jīng)驗(yàn)(其實(shí)沒啥幫助),又是統(tǒng)招本科,專業(yè)對口,就直接決定錄用我了。如果當(dāng)時(shí)他讓懂技術(shù)的人來面試我下,估計(jì)我多半過不了。
那是家小公司,連同老板在內(nèi),總共十幾個(gè)人,給的待遇是6k。這待遇對于開發(fā)來說,算是最低水平了。但我當(dāng)時(shí)還是很高興。說出不來怕丟人,比起以前的工作,6k對我來說已是高薪了。
剛?cè)ド习嗄嵌螘r(shí)間,還是發(fā)現(xiàn)了很多“新奇”的東西。比如,原來還有一個(gè)崗位,叫作“產(chǎn)品經(jīng) 理”。以前我一直以為,只需要有開發(fā)人員擼代碼就行了。我怎么動(dòng)手操作!
當(dāng)我同事滑動(dòng)著手機(jī)告訴我,此處忽略一些情節(jié)…。于是我點(diǎn)頭,裝作原來如此的樣子。其實(shí)內(nèi)心卻震驚了!沒錯(cuò),我就是這么菜,甚至當(dāng)時(shí)我都搞不明白,啥是接口。感覺這是一個(gè)很難的東西。
在那里呆了兩三個(gè)月后,我就沒那么白癡了。給我安排的日常任務(wù),都能按時(shí)完成。呆了半年后,我漸漸地發(fā)現(xiàn)。我后面進(jìn)來的同事,水平也不過如此,可以說基礎(chǔ)還不如我,我還時(shí)不時(shí)給他們解答下問題。當(dāng)時(shí)我還有點(diǎn)飄飄然了,覺得他們只不過對業(yè)務(wù)更熟悉些。
現(xiàn)在的我回想起來,當(dāng)時(shí)我的看法大致沒錯(cuò)。道理很簡單:愿意去這家公司,拿6-7k工資(除了工資以外,啥也沒有)的程序員,只能是初級水平。
經(jīng)過一年的時(shí)間,我已成長為一個(gè)合格的自動(dòng)化軟件測試測試工程師。這里已學(xué)不到什么東西了,現(xiàn)在回想起來,那個(gè)公司沒有任何技術(shù)氛圍,在里面呆著,有一種養(yǎng)老的感覺,外部沒有什么動(dòng)力和壓力,逼自己繼續(xù)學(xué)習(xí)。
經(jīng)朋友介紹,我跳槽去了另一家公司,很順利地通過了筆記和面試,工資開的9k。
剛?cè)サ牡谝粋€(gè)月,我經(jīng)受了很大的壓力。部門負(fù)責(zé)人,看我年齡這么大,就以為我是一個(gè)很牛逼的人。就給我安排了些較難的任務(wù),我很費(fèi)力的完成了一兩個(gè)后。
這里開發(fā)人員的技術(shù)水平,和上家公司完全不是一個(gè)檔次的。氛圍也和第一家公司不一樣了,同事們經(jīng)常聊各種新出來的技術(shù)。哪怕聊點(diǎn)8卦,也是以IT新聞為主。他們聊的東西,很多我都聽不懂。讓我深感自己知識面的狹窄。
這里的學(xué)習(xí)氣氛也濃厚。做過開發(fā)的都知道,忙的時(shí)候真是喝水都顧不上。但有時(shí)沒事,又閑得很。上家公司在沒事干時(shí),大家就偷偷玩游戲、看視頻、小說等。這里沒事時(shí),大家就是看文檔,學(xué)新東西。
兩三個(gè)月后,我慢慢適應(yīng)這里了。但還是那個(gè)問題,一直讓我焦慮——年齡。同事閑聊時(shí),我最怕聊到年齡的話題。哪怕和年齡有一點(diǎn)點(diǎn)關(guān)系的話題,我也會(huì)警覺。比如同事們聊起用的第一部智能手機(jī)。我一般就不接話,因?yàn)槲矣玫牡谝粋€(gè)智能手機(jī)還是palm!
但是,怕什么還是來什么了。
有一次聚會(huì),又聊起年齡。每個(gè)人就在說說笑笑地報(bào)自己的年齡。輪到我時(shí),我強(qiáng)笑著說:“我嘛,永遠(yuǎn)18歲。”一個(gè)正常情商的人,都會(huì)明白,這就是不愿意說,識趣的話應(yīng)該也就別多問了。但是,在坐有個(gè)同事,情商真的太低了,他直接跳出來說:“他87年的!”此時(shí),剛走進(jìn)來一個(gè)95后同事,聽到“87年”這三個(gè)字,順口就說了句:“臥草,誰87年的啊?”當(dāng)時(shí)我感覺整個(gè)空氣都凝固了,我的大腿控制不住的抖動(dòng),背上密密麻麻地出汗,把襯衣都濕透了。我只好舉手示意,說:“是我,我是85年的…”當(dāng)時(shí)我的尷尬和羞愧,永遠(yuǎn)也無法忘記。
目前我工資17k,仍然是一個(gè)技術(shù)普通的測試開發(fā)人員。對于這個(gè)收入我是知足和滿意的。
我是個(gè)臉皮薄,性格敏感的人,2022年又要滿35歲了,哎!
其實(shí)讓我目前感到尷尬和羞愧的并不完全是因?yàn)槟挲g。而是我的年齡和技術(shù)能力完全不匹配!公司中也有年齡和我相仿的人,但在我的眼中,他們都是技術(shù)大牛了。感覺什么都懂,隨便說一個(gè)問題,他們都能給你上上課,講講底層原理。當(dāng)我新聽到一個(gè)技術(shù)概念,覺得很新鮮,正準(zhǔn)備去了解個(gè)大概時(shí)。他們不僅熟悉,甚至還知道茴香豆的茴字,有四種寫法!
青春逝去,時(shí)光不再。比我聰明,比我入行早的人,都還在努力,我現(xiàn)在能做的,只能是繼續(xù)努力學(xué)習(xí),僅僅希望不要那么丟臉。
對于那些一畢業(yè)就干開發(fā),目前不到30歲,但經(jīng)常聽說程序員只能做到35歲,并為此焦慮的同學(xué)。請你們盡管放心,只要你們做的不是養(yǎng)老的工作,每年在技術(shù)上都有明顯進(jìn)步,找到好工作絕對沒問題。至少在中型公司當(dāng)個(gè)leader是沒問題的。
但在此勸那些30多歲想轉(zhuǎn)行程序員的人,如果你們像我一樣,不是一個(gè)臉皮厚的人,一定要慎重!
不過如果呆在那種10個(gè)人左右的小公司,這種年齡尷尬,要稍好點(diǎn),但就沒什么技術(shù)氛圍了,成長較慢。
下面是我整理的這份2021年最全的軟件測試工程師發(fā)展方向知識架構(gòu)體系圖,會(huì)很明確的告訴你該往哪里努力:
1、軟件測試基礎(chǔ)理論知識:
軟件測試?yán)碚撝R是開展測試工作的理論依據(jù)和支撐,是測試很重要的階段必須掌握的技能。
軟件的質(zhì)量模型:軟件測試過程保障軟件的質(zhì)量,從哪些方面保障可以從質(zhì)量模型出發(fā)思考
測試分類:軟件測試過程可以按照不同角度進(jìn)行分類,基礎(chǔ)測試到高級測試遞進(jìn)過程
開發(fā)流程:告訴測試人員一個(gè)軟件完整的生命周期,軟件從無到有到消亡的過程
測試流程:掌握并指導(dǎo)測試人員在實(shí)際項(xiàng)目中如何開展測試工作。這要求測試人員對常見的主流測試流程有較為透徹的理解。遇到不同的軟件項(xiàng)目,知道從何處著實(shí)能最有效率的測試軟件缺陷
測試計(jì)劃與方案:如何規(guī)劃在項(xiàng)目中開展測試活動(dòng),確保測試活動(dòng)有序進(jìn)行
設(shè)計(jì)用例方法:黑盒測試階段必須掌握的一些測試用例的設(shè)計(jì)方法。比如黑盒測試用例的設(shè)計(jì)方法、測試用例元素等等
軟件缺陷:在測試執(zhí)行過程中應(yīng)該確定缺陷并提交缺陷報(bào)告
缺陷管理:提交缺陷后在實(shí)際工作中如何和開發(fā)協(xié)助處理驗(yàn)證提交的問題。例如:bug的等級優(yōu)先級分類、bug的描述、bug的生命周期、缺陷管理工具使用,如禪道等。
測試報(bào)告:測試過程的回顧和結(jié)果確認(rèn),生成系統(tǒng)性的專業(yè)軟件測試評估報(bào)告。
2、軟件測試功底技術(shù)——Linux系統(tǒng)
linux系統(tǒng)是主要的服務(wù)端操作系統(tǒng),也是從事IT崗位的大部分人員必須具備的基本技術(shù)之一。
linux系統(tǒng)基本知識:多用戶,多任務(wù),發(fā)行版本等
常見 linux操作命令:日志查看,文件壓縮、解壓,用戶管理,文件權(quán)限等
會(huì)部署和配置基本的應(yīng)用jdk、 mysql、 tomcat
docker安裝使用
編寫基本的 shell RAD本
遠(yuǎn)程終端工具使用: shell, xftps等
3、軟件測試功底技術(shù)——Sql數(shù)據(jù)庫
數(shù)據(jù)庫作為軟件系統(tǒng)必備的應(yīng)用系統(tǒng),在諸如接口測試、性能測試等等過程中往往需要操作數(shù)據(jù)庫,驗(yàn)證數(shù)據(jù)正確性完整性,都離不開數(shù)據(jù)庫的增刪改查操作,在項(xiàng)目部署階段數(shù)據(jù)庫還需要配合項(xiàng)目部署。在性能測試、接口自動(dòng)化測試中都需要數(shù)據(jù)庫的支撐。
數(shù)據(jù)庫基本概念
關(guān)系型數(shù)據(jù)庫
MYSQL基本的增改查語句,存儲(chǔ)過程
MYSQL復(fù)雜查詢、多表查詢
MYSQL索引及事務(wù)相關(guān)概念
數(shù)據(jù)庫客戶端工具使用:如 Navicat
4、軟件測試功底技術(shù)——編程語言
推薦沒有編程基礎(chǔ)的朋友可以學(xué)習(xí)Python語言
Python語言的學(xué)習(xí)內(nèi)容包含以下知識點(diǎn):
Python基礎(chǔ):Python語言特點(diǎn)、運(yùn)行環(huán)境、基本語法、代碼風(fēng)格、示例程序
數(shù)據(jù)結(jié)構(gòu):
基本數(shù)據(jù)結(jié)構(gòu):數(shù)字、字符串、類型判斷、類型轉(zhuǎn)換、切片、字符串格式化、數(shù)值運(yùn)算、位置參數(shù)和關(guān)鍵字參數(shù);
組合數(shù)據(jù)結(jié)構(gòu):列表、元組、范圍、字典、集合、不可hash對象、解包、內(nèi)存地?cái)?shù)據(jù)結(jié)構(gòu)址、不可變數(shù)據(jù)
程序控制:順序結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、判斷結(jié)構(gòu)、異常處理、邏輯運(yùn)算符
函數(shù):定義函數(shù)、函數(shù)的參數(shù)、返回值、變量作用域、匿名函數(shù)、常用內(nèi)置函數(shù)
模塊和庫:模塊和包、import關(guān)鍵字、常用標(biāo)準(zhǔn)庫、常用第三方庫、包管理工具pip
面向?qū)ο螅好嫦驅(qū)ο笃鹪春蛢?yōu)勢、面向?qū)ο蟮奶匦灶惡蛯ο蟮穆?lián)系、對象的特殊方法
日志記錄:baseConfig、文件日志、郵件日志、定制格式、內(nèi)置占位符、等級過濾、分級傳播、配置文件
測試框架:unitest、pytest等
并發(fā)編程:多進(jìn)程、多線程、協(xié)程、線程池、同步控制、線程通信、分布式、猴子補(bǔ)丁、 async語法、生成器
網(wǎng)絡(luò)編程:socket編程基礎(chǔ)、TCP服務(wù)端和客戶端、并行請求處理、HTTP服務(wù)端和客戶端
5、軟件測試自動(dòng)化進(jìn)階——接口測試
接口測試本質(zhì)也是功能測試的一種,通過腳本或者工具,模擬客戶端對服務(wù)端接口進(jìn)行調(diào)用。因?yàn)槭菑慕涌趯訙y試,所以能更早的發(fā)現(xiàn)問題,從而提高測試效率,降低修復(fù)成本。
http/httpst協(xié)議學(xué)習(xí)
常見請求方法學(xué)習(xí):GET、POST
cookie和 session學(xué)習(xí)
接口的基本概念
接口文檔認(rèn)識
接口測試用例編寫
接口測試工具使用:postman、Jmeter、SoapUl
6、軟件測試自動(dòng)化進(jìn)階——性能測試
性能測試的技術(shù)要求很高,不僅僅要對性能測試的指標(biāo)、測試分類、測試設(shè)計(jì)有很深刻的理解。還要學(xué)習(xí)系統(tǒng)業(yè)務(wù)和架構(gòu)相關(guān)知識,這樣才能更好的設(shè)計(jì)性能場景。
性能基本概念:性能測試意義、常見性能指標(biāo)理解、性能測試的分類
性能測試流程:性能需求分析、性能場景設(shè)計(jì)、測試腳本編寫、測試執(zhí)行資源監(jiān)控、性能調(diào)優(yōu)、回歸測試
Jmeter及 roadrunner使用
性能測試報(bào)告輸出
7、軟件測試自動(dòng)化進(jìn)階——app自動(dòng)化
越來越多的項(xiàng)目和系統(tǒng)通過移動(dòng)端來提供服務(wù),移動(dòng)端的軟件質(zhì)量越來越重要,App自動(dòng)化測試已經(jīng)成為自動(dòng)化測試的重要內(nèi)容。借助Appium,使得App自動(dòng)化測試和Web自動(dòng)化測試有很多相通之處,不過作為測試工程師,依然需要掌握移動(dòng)端應(yīng)用的工具和特性。
Appium移動(dòng)測試環(huán)境搭建:Appium ServerAppium和 Desktop、 Android運(yùn)行環(huán)境搭建、模擬器安裝和連接、真機(jī)設(shè)備調(diào)試模式、adb、 weditor、 - - UiAutomator22、 Monkey
Appium元素定位:原生應(yīng)用元素定位、純web應(yīng)用元素定位、混合應(yīng)用元素定位
Appium元素交互:等待元素加載,元素的基本屬性和方法、滑動(dòng)、拖動(dòng)、縮放操作、下拉選擇操作、 toast消息處理、常見控件分析、常見布局分析
封裝測試框架:集成Appium、adb等工具、預(yù)定義異常處理、記錄Appium日志、屏幕截圖、打造多用途測試框架
8、軟件測試自動(dòng)化進(jìn)階——持續(xù)集成和持續(xù)測試
持續(xù)集成和持續(xù)測試是一個(gè)在迭代中構(gòu)建、測試產(chǎn)品并修復(fù)Bug的過程。它有助于團(tuán)隊(duì)在開發(fā)階段的初期發(fā)現(xiàn)缺陷,這時(shí)的缺陷通常相對不那么復(fù)雜,并且更容易被解決。通過持續(xù)集成和持續(xù)測試,可以盡早地將錯(cuò)誤風(fēng)險(xiǎn)降至最低,并加快交付更好質(zhì)量的軟件。
版本控制Git:背景介紹、環(huán)境部署、工作區(qū)、暫存區(qū)和提交區(qū)、分支創(chuàng)建與合并、解決沖突、標(biāo)簽、 config與別名、本地倉與遠(yuǎn)程倉、 GitHub與碼云
持續(xù)集成 Jenkins:背景介紹、環(huán)境部署、文件結(jié)構(gòu)、遠(yuǎn)程倉庫與私服、ja包依賴、插件管理
容器Docker:了解 Dockers的鏡像、倉庫、容器、 Docker Engine和架構(gòu)圖、網(wǎng)絡(luò)設(shè)置、數(shù)據(jù)持久化
凡事要趁早,特別是技術(shù)行業(yè),一定要提升技術(shù)功底。
其實(shí)每個(gè)程序員也能意識到目前自己面臨的窘境,但能夠及時(shí)作出改變,順應(yīng)時(shí)代變化的人太少了。畢竟更多人的情況是,忙著上班,也沒人引路,自己也不太會(huì)規(guī)劃。多數(shù)人明明“泰山崩于前,而面色如土”只能眼睜睜看著自己被行業(yè)淘汰嗎?
軟件測試學(xué)習(xí)資料領(lǐng)取和學(xué)習(xí)經(jīng)驗(yàn)分享扣扣群:938856006,群里都是學(xué)軟件測試,或者是業(yè)內(nèi)的同行,如果在軟件測試學(xué)習(xí)和工作中遇到什么問題,都可以在群里進(jìn)行交流,同時(shí)群里有最新的軟件測試學(xué)習(xí)資源領(lǐng)取,包括一些面試題和自動(dòng)化進(jìn)階資料!包括我自己整理的一份2022最新的Python自動(dòng)化資料。