我是14年畢業的,普通本科,計算機系也算是一個對口專業。那時候網際網路行業是個很不錯的發展方向,也是機緣巧合之下,讓我走上了測試工程師的道路。但是我沒想到,在這個行業一干就是10年。
第一份工作
還記得我剛入行的時候,進了一家社交平臺公司做測試,公司最開始只我人一個做軟體測試,沒有任何的流程和規範,但好在平時工作比較輕鬆。然而當我真正工作了半年,我就產生了一個疑惑:每天我怎麼就在做一些一模一樣的事啊。每天有點不完的網頁,寫不完的文件。隨著時間的消磨,讓我產生了對自我價值和崗位意義的困惑。
那時候,測試人也都愛去論壇上交流,我至今記憶猶新的是,整個版面開啟來,一半是問大家薪資多少了,另一半是“工作很多年了,感覺未來很迷茫”。每個人對迷茫的描述都不一樣,但問題本質都一樣:除了重複勞動,我們還有什麼?
一個軟體測試人員,有什麼可以是拿得出手的核心技術,有什麼能使你區別於應屆生?最重要的是在企業的不可或缺和不可替代
當時我就有這樣的想法,我不想一直做重複勞動了,即便我在剛入職的時候說,我能做好並且願意去做繁瑣工作的。但是我並不擅長機械和重複的勞動,也不喜歡重複勞動。
痛定思痛,也就是這一年開始,下定決心要把自己的專業技能提升上去。
自我成長
我開始把自己的業餘時間投入到學習中來,不過,學習的內容一定要基於自己的工作來,這樣才能把學來的技術變成工作經驗。當時由於公司的規模和產品的侷限性,我無法在那裡接觸到更多新興熱門技術。於是我鼓起勇氣,離開了那一家公司。
後來在朋友的推薦下,進了一家電商公司,當時,有一些機會在工作中做效能測試,於是,學會了用LoadRunner和JMeter,有一次需要測試MySQL資料庫的效能,用JMeter搞了半天不知道怎麼設定,結果叫一位開發的同事幫我過來很快就搞定了。
這讓我瞭解到開發知識對於測試工作的幫助,程式語言的能力會決定你測試技術的深度。
那時候,Python開始流行起來,公司產品開始選用Python開發的,所以,我毫不猶豫的選擇了Python。因為Python簡單好學,容易上手,學起來也沒花多少時間。也是因為這個在後面學習自動化測試幫助很大。
公司為了提高效率,測試必須要引入自動化的手段。注意,不是替代不替代手工測試的問題,而是必須引入自動化才能進一步提高效率。手工測試仍然在,只要他在一些領域上效率高於自動化,就仍然會繼續存在下去。
當時由於專案的原因,開始使用Robot Framework測試框架,正因為有Python的基礎所以很快就理解了Robot Framework框架的工作原理,並可以根據專案的需要開發系統關鍵字。
掌握自動化工具的原理使用起來才能更加遊刃有餘,而這也需要你有一定的程式設計基礎的原因。
隨著移動App越來越流行,乘著換工作的間隙,我還學習了一個月的appium自動化工具,也瞭解了網易開源的Airtest框架的使用。
後來,我開始針對另一個社群專案編寫Web UI自動化測試,前後做了幾個月,積累了一些經驗,開始嘗試設計Web自動化框架,當時主要還是針對Selenium API的封裝。
為什麼我越來越有更多機會去做自動化相關的工作,當然,是我先學會了這項技能,然後,公司專案又比較適合去做自動化,所以,我就嘗試去做了,最後,這就變成了我的經驗。2018年我開始做全棧工程師,和團隊一起從0開發內部管理平臺,後端用Django框架設計介面,前端用vue.js框架設計頁面,專案已經在整個公司得到應用。
這個階段跨度有點大,但應了我前面的一些思路,當你掌握的更多的技術,那麼你也會有更多的機會繼續提升自己。在這個過程中,我也養成了對於技術關注和追求的好習慣,這個好習慣一路以來對我幫助特別大,不管是在職場上,還是生活上都有很大收益,我有滿意的薪資回報,生活上也不會有焦慮。因為學習和成長讓我遠離了那些精神內耗的問題。
我的一些建議
我從13年入行到現在,從初級手工到開始做自動化測試,到現在做測試平臺開發,帶團隊。這中間真是走了很多彎路,踩了很多坑,接觸過各種公司和專案:小到初創企業,大到獨角獸公司,外資合資,自研外包,電商網站,網際網路金融。主要用過4種語言,十幾種工具,見過各種測試框架、工具平臺,寫過大大小小的類庫、工具、改造過平臺。雖然我只工作了10年,但換了7次單位,真是說多了都是淚啊。。。
我這次想分享的,是我當時轉型的經歷、對現在測試行業技術大方向的分析和轉型方向的建議。另外透過這次分享也希望揭開自動化測試、測試開發、持續整合等等的神秘面紗,讓大家瞭解真實的自動化測試相關人員的工作是怎樣的,供大家在自己轉型時參考。
如何從初級功能測試到高階自動化測試開發,達到技術提升和待遇提高的目的,是很多初級測試人必經的一個階段。作為一個過來人,對學習過程中的困難深有體會。
所以我喜歡收集整理資源,記錄踩坑到爬坑的過程。希望能把自己掌握,實際工作中用到的技術、學習方法及踩過的一些坑,記錄下來。也希望想做自動化的你一樣,透過我的分享可以少走一些彎路,可以形成一套自己的方法,並應用到實際中。
在適當的年齡,選擇適當的崗位,儘量去發揮好自己的優勢。
我的十年測試之路,一路走來都離不每個階段的計劃,因為自己喜歡規劃和總結,所以,我和朋友特意花了一段時間整理編寫了下面的《測試工程師學習路線》,也整理了不少【網盤資源】,需要的朋友可以在上方小卡片獲取網盤連結。希望會給你帶來幫助和方向。也可以加入我們一起交流技術,討論行業資訊。
1. 自動化測試必備Python程式設計
自動化測試必備Python程式設計內容 |
---|
Python環境搭建 |
Python語法規則 |
Python運算子 |
Python資料型別 |
Python流程控制 |
物件,類,模組與包概念 |
Python檔案操作 |
Python高階應用 |
2. Web自動化測試基礎
Web自動化測試基礎內容 |
---|
自動化測試流程概述 |
selenium環境搭建 |
常規頁面元素定位方式 |
xpath元素定位方式詳解 |
css元素定位方式詳解 |
元素組定位 |
特殊元素定位 |
瀏覽器操作 |
三種等待時間詳解 |
切換操作技巧 |
滑鼠,鍵盤操作技巧 |
滑鼠,鍵盤操作技巧 |
3. Web自動化測試專案
Web自動化測試專案內容 |
---|
WebUI自動化用例編寫 |
unittest自動化框架:unittest組織測試用例的原理 |
unittest自動化框架:unittest語法詳解 |
unittest自動化框架:unittest批次執行用例 |
unittest自動化框架:用例的前置後置操作,跳過執行 |
自動化用例斷言 |
自動化測試之POM模型:POM的意義與原理 |
自動化測試之POM模型:POM頁面物件模型 |
資料驅動:DDT實現自動化測試驅動 |
資料驅動:yaml檔案驅動 |
分散式測試:selenium分散式原理 |
分散式測試:分散式環境搭建 |
分散式測試:大規模自動化測試 |
4. APP自動化測試基礎
APP自動化測試基礎內容 |
---|
自動化框架與工具使用 |
ADB命令操作 |
Monkey穩定性測試:Monkey穩定性測試原理 |
Monkey穩定性測試:Monkey指令詳解(基礎引數,事件引數,除錯選項) |
Monkey穩定性測試:Monkey日誌分析(日誌定位,迴歸驗證) |
自動化配置項:Desired Capabilities配置文件 |
自動化配置項:常見配置項介紹和使用場景分析 |
APP介面元素檢視工具 |
APP元素定位:元素定位方式詳解 |
APP元素定位:元素組定位方式 |
APP元素操作:元素屬性操作 |
APP元素操作:常用API函式 |
APP元素操作:點選,滑動,輸入字元,點選座標等操作技巧 |
5. APP自動化測試專案
APP自動化測試專案內容 |
---|
微信小程式自動化操作:Appium手勢連續性操作 |
微信小程式自動化操作:Appium鍵盤事件 |
微信小程式自動化操作:切換操作 |
微信小程式自動化操作:小程式自動化原理 |
微信小程式自動化操作:Webview元素定位 |
微信小程式自動化操作:小程式自動化實現 |
H5,Webview自動化:H5的概念 |
H5,Webview自動化:H5與原生頁面的對比 |
H5,Webview自動化:H5測試技術詳解 |
H5,Webview自動化:Webview元素定位,自動化實現 |
UIautomator2測試框架:UIautomator2測試框架介紹 |
UIautomator2測試框架:UIautomator2測試框架環境搭建 |
UIautomator2測試框架:常用關鍵字封裝,滑動,APP點選 |
安卓叢集服務搭建:叢集環境搭建 |
安卓叢集服務搭建:批次管理測試真機 |
Pytest測試框架+分散式執行指令碼 |
6. 介面自動化測試基礎
介面自動化測試基礎內容 |
---|
介面自動化測試概述:介面測試的定義與意義 |
介面自動化測試概述:介面測試的實現方式 |
介面自動化測試概述:介面自動化的實現流程 |
HTTP協議:通訊協議原理解析 |
HTTP協議:HTTP與HTTP協議詳解 |
HTTP協議:session,cookie,token鑑權 |
JSON資料格式詳解:JSON與XML的比較 |
JSON資料格式詳解:JSON的語法規則 |
JSON資料格式詳解:JSON的資料型別介紹 |
JSON資料格式詳解:JSON的練習 |
Requests模組基礎:Requests安裝 |
Requests模組基礎:使用Requests傳送請求 |
Requests模組基礎:不同格式解析響應資料 |
Requests之session模組:session模組應用,介面請求,會話管理 |
Requests請求HTTP介面實戰:GET,POST,DELETE,檔案上傳 |
Requests請求HTTP介面實戰:介面型別,json,from-data,引數型別 |
Requests請求HTTP介面實戰:場景實戰演練 |
7. 介面自動化測試實戰
介面自動化測試實戰內容 |
---|
HTTP介面測試實戰之論壇介面:專案介面文件分析 |
HTTP介面測試實戰之論壇介面:介面測試用例編寫規範 |
HTTP介面自動化測試實戰:Requests進行介面自動化測試實戰 |
HTTP介面自動化測試實戰:封裝HTTP請求類 |
HTTP介面自動化測試實戰:unittest組織測試用例 |
Mock server:Mock server應用場景,實現原理 |
基於Flask實現Mock server:Flask專案搭建 |
基於Flask實現Mock server:開發get,post,delete,form-data的mock |
基於Flask實現Mock server:檔案上傳介面,auth認證 |
WebSocket協議介面:WebSocket協議介面原理 |
WebSocket協議介面:搭建WebSocket測試環境 |
WebSocket介面測試實戰:Jmeter測試WebSocket協議介面 |
WebSocket介面測試實戰:Python測試WebSocket介面 |
基於RPC協議之Dubbo介面測試:Dubbo介面測試原理 |
基於RPC協議之Dubbo介面測試:Dubbo基礎架構解析 |
Dubbo介面測試實戰:telent測試Dubbo介面 |
Dubbo介面測試實戰:Jmeter測試Dubbo |
Dubbo介面測試實戰:Python進行Dubbo介面測試 |
8.持續整合專項技術
持續整合專項技術 |
---|
Jenkins介紹,環境搭建:部署Jenkins環境 |
Jenkins介紹,環境搭建:常用Jenkins外掛安裝 |
構建自動化測試任務:自動化測試用例結合Jenkins構建任務應用 |
構建自動化測試任務:自動化測試用例結合Jenkins定時執行 |
構建自動化測試任務:自動化測試用例結合Jenkins批次執行 |
自動化傳送郵件測試報告 |
git倉庫的使用:git版本庫建立 |
git倉庫的使用:新增遠端倉庫 |
git倉庫的使用:克隆,pull,push,commit命令使用 |
Docker容器技術:Docker使用原理 |
Docker容器技術:Docker環境搭建 |
Docker容器技術:Docker在自動化測試中場景應用 |
流水線:構建CI/CD流水線流程 |
9. 自動化測試框架技術
自動化測試框架專案技術 |
---|
Pytest |
Pytest基礎語法 |
Fixture的使用 |
Allure測試報告:Pytest之conftest使用 |
Allure測試報告:整合Allure測試報告 |
框架搭建原理思路:搭建框架之前的準備 |
框架搭建原理思路:框架的意義,設計思路,程式碼模組分層思想 |
UI自動化測試框架搭建一:程式碼模組分成 |
UI自動化測試框架搭建一:搭建日誌系統 |
UI自動化測試框架搭建一:搭建斷言系統,報告系統 |
UI自動化測試框架搭建二 |
介面自動化測試框架搭建一 |
介面自動化測試框架搭建二 |
UI測試框架和介面測試框架一體化 |
HTML前端 |
Flask後端api編寫:Resful API開發規範,構建一套API服務 |
行動吧,在路上總比一直觀望的要好,未來的你肯定會感 謝現在拼搏的自己!如果想學習提升找不到資料,沒人答疑解惑時,請及時加入扣群:731789136,裡面有各種軟體測試+開發資料和技術可以一起交流學習哦。
最後感謝每一個認真閱讀我文章的人,禮尚往來總是要有的,這些資料,對於【軟體測試】的朋友來說應該是最全面最完整的備戰倉庫,雖然不是什麼很值錢的東西,如果你用得到的話可以直接拿走: