這段時間公司專案急缺人手,面了不少人,竟然沒有一個滿意的。一開始瞄準的就是中高階的水準,也沒指望來技術大牛,提供的薪資在15-25K,面試的人很多,但結果讓人失望。
從簡歷上來說都是3-4年工作經驗,但面試中,不會工具方法和程式設計框架,基本功的技術很多也不熟練,多數人多年的工作經驗僅僅是業務年限堆起來的,技術能力達不到公司需求,對於框架自動化測試會的也不多,都停留介面測試的基礎方法層面上,自動化深入的問題更是一問一個沒,對於前沿的主流技術也毫無關注。
而這些人的薪資要求卻是都接近20K,並且在談論過程中自視甚高,特別有一個給我留了很深印象,簡歷寫著3年經驗,做的都是小程式的展示專案,面試過程中一直強調自己技術如何如何精通,在原公司如何的受重用,問到關鍵地方,卻答不出所以然來,最後招了2個潛力還不錯的應屆生,希望帶一段時間能成為幫手。
經過去年網際網路大廠裁員的推動,企業為了降本增效,對人才的需求也在提高。和幾個圈內朋友說起這個事,他們也深有同感,技術在發展,行業要求越來越高,但是花時間去提升能力的人卻並不多。再加上不斷有新鮮血液的衝擊,壓力只會越來越大。
網際網路仍在發展,企業要求也在提升,冗餘人員和低效人員會被淘汰、被最佳化,而優秀的人才也會一直受到公司的青睞。所以行業裡才會有冰火兩重天的一幕,一邊是大量的低端測試工程師被淘汰、被降薪和被迫轉行,求職屢屢碰壁,而另一邊,卻是很多測試經理求賢若渴四處挖人。需求和供給的不匹配,導致招人難、就業也難。
但是真正有實力的測試人才,根本不會受到什麼影響,要跳槽發展還是很容易的。但是對現在的工作不滿意,又沒有足夠的技術,與其焦慮迷茫,不如靜下心來自我提升。目前就大量招聘資訊來說,想要獲得高薪就得會以下幾個加分點:
- 熟悉不同作業系統和資料庫的操作能力
- 熟悉指令碼語言,具有一定的程式設計能力
- 能透過自動化測試監控和提升質量和效率
- 有較強的分析設計能力,測試框架研發和方案整合能力
所以還停留在手工功能測試層面,如果不去提升技術,不僅要面臨長江後浪推前浪的壓力,還要頂住當下行業的內卷之勢。不然就只能接受窘境,最後甚至是面臨淘汰。更別說升職漲薪了
如何從初級功能測試到高階自動化測試開發,達到技術提升和待遇提高的目的,是很多初級測試人必經的一個階段。作為一個過來人,對自我提升過程中的困難深有體會。
所以我喜歡收集資源,記錄自己踩坑到爬坑的過程。希望能把自己所學,實際工作中使用的技術、學習方法、心得及踩過的一些坑,記錄下來。也希望想提升技術能力的你一樣,透過我的分享可以少走一些彎路,可以形成一套自己的方法,並應用到實際中。
這是我整理的《全棧測試工程師技術進階路線》,還有不少工具和影片的【網盤資源】,需要的朋友可以點選文末小卡片獲取網盤連結。肯定會給你帶來幫助和方向。
1、自動化測試必會Python程式設計技術
Python開發環境搭建 | Python起源、發展與特點;直譯器安裝與環境配置;Pycharm安裝與配置;Python第一個程式;Python程式多方式執行 |
---|---|
Python語法規則 | Python語法規則;Python的變數的定義、宣告與使用;Python的輸入與輸出(格式化輸出);字符集處理 |
Python資料型別 | Python的基本資料型別(數值型別、字串型別);Python的運算子;Python的型別轉換 |
字串型別操作 | 字串的定義;字串常見操作;字串常用方法;字串使用場景案例講解 |
列表型別操作 | 列表的定義;列表常見操作(新增、刪除、修改元素值);列表常用方法講解(複製,反轉) |
元組型別操作 | 元組的定義與使用;元組的特性;元組常用方法講解 |
字典型別操作 | 字典的定義與操作;字典常見操作(新增、刪除、修改元素值);字典常用方法講解(items,values) |
集合型別操作 | 集合的定義與使用;集合的特性;集合常用方法講解,集合使用場景分析 |
流程控制-條件判斷 | 單項分支,雙項分支,多項分支和巢狀分支判斷;布林表示式的應用;條件判斷的使用場景分析 |
流程控制-迴圈處理 | while迴圈;break/continue關鍵字使用場景;for迴圈;雙重for迴圈;forrange使用;使用場景與真實案例分析 |
物件導向-函式 | 函式的定義與呼叫;函式的返回值;函式的引數(預設引數,可變長度引數);函式的巢狀;常用的內建函式:關鍵字函式封裝案例講解 |
模組與包 | 模組化與包的定義與使用;內建time模組的使用;內建datetime模組使用;內建calendar模組使用;自定義模組的使用場景分析 |
檔案操作 | 檔案物件;檔案讀取、寫入操作;with.as用法;檔案使用場景案例講解 |
2、Web自動化測試技術內容
自動化測試流程概述 | 自動化測試的定義和目的;自動化測試的優勢;自動化測試的流程;自動化測試的技能要求;Web自動化主流工具的介紹 |
---|---|
selenium環境搭建 | selenium發展與特點;selenium安裝與環境配置;Selenium實現自動化測試原理剖析 |
常規頁面元素定位方式 | 透過id/name/class/tag/link_text等方式定位元素;各種元素定位特點的分析 |
xpath元素定位方式詳解 | xpath定位元素技巧;xpath表示式編寫方式 |
css元素定位方式詳解 | css定位元素技巧;css多屬性高階定位方式 |
元素組定位 | 元素組的定位方式;元素組定位的使用場景;nd element()/fnd_elements()定位方式的解析與對比 |
特殊元素定位 | 單選框、多選框、核取方塊、下拉框選擇、動態元素的定位技巧闡述; |
瀏覽器操作 | 獲取頁面title/url、頁面的前進後退、頁面的重新整理、截圖、頁面關閉與程序的關閉;元素常用屬性與方法 (text,get_attribute()) |
三種等待時間詳解 | 強制等待time、隱式等待、顯式等待的使用;三者的區別與實際場景應用 |
切換操作技巧 | 瀏覽器模式切換 (無頭模式、APP模式);多視窗的切換,多Frame的切換;彈框的切換與操作 |
滑鼠、鍵盤操作技巧 | 滑鼠事件(移動,雙擊、移動、拖拽);滑鼠操作實戰,鍵盤事件與實戰操作 |
JavaScript在自動化測試中的應用 | JavaScript Excutor執行器語法規則;js更改元素屬性;js定位元素;js操作捲軸等各種場景應用 |
3、APP自動化測試技術內容
Android自動化環境搭建 | 客戶端庫、JDK、Android SDK、APPiumDesktop、模擬器安裝;模擬器設定;裝置連線問題分析 |
---|---|
自動化框架與工具使用 | APP自動化框架比較(APPium,Ulautomator,Espresso等);APPiumDesktop的介紹與使用;Inspector工具配置與使用 |
ADB命令操作 | ADB原理;裝置連線;上傳下載檔案;安裝解除安裝APP;日誌獲取;input輸入類命令;檢視系統資訊;獲取包名和事件入口; |
Monkey穩定性測試 | Monkey穩定性測試原理;Monkey指令詳解 (基礎引數、事件引數、除錯選項);Monkey日誌分析 (日誌定位,迴歸驗證) |
自動化配置項 | Desired Capabilities配置文件;常見配置項介紹和使用場景分析 |
APP介面元素檢視工具 | UIAutomatorViewer獲取元素資訊;Inspector工具獲取元素資訊;Inspector進行自動化指令碼錄製操作等 |
APP元素定位 | 元素定位方式詳解(id,classname,accessibilitylD,xpath等方式的使用);元素組定位方式 |
APP元素操作 | 元素屬性操作(text,location,size等);常用API函式(launch_APP,reset,is_APP_installed等);點選、滑動、輸入字元、點選座標等操作技巧 |
4、Postman測試工具專題
Postman安裝與使用 | Postman簡介,Postman環境搭建,Postman介面測試-get請求,Postman介面測試-post請求 (各種型別引數案例) |
---|---|
Postman集合測試 | Postman測試集管理介面,測試集的匯入匯出,測試集中設定變數、引用變數 |
Postman介面關聯 | Postman全域性變數設定與應用,環境變數設定與應用,在Tests中設定變數、獲取變數 |
Postman斷言 | Postman各種斷言方式(狀態碼、響應正文、響應頭、響應時間等的斷言操作) |
Postman引數化 | Postman各種引數化方式(文字引數化、csv引數化、json引數化) |
Postman資料驅動 | 測試集、關聯、引數化、斷言的綜合使用 |
5、介面自動化測試技術內容
介面自動化測試概述 | 介面測試的定義與意義;介面測試的實現方式;介面自動化的實現流程 |
---|---|
HTTP協議 | 通訊協議原理解析;HTTP與HTTP協議詳解 (請求,響應,請求方法,狀態碼)session、cookie、token監權 |
JSON資料格式詳解 | JSON與XML的比較;JSON的語法規則;JSON的資料型別介紹;JSON的練習 |
Requests模組基礎 | Requests安裝;使用Requests傳送請求 (get,post,delete,put,Requests),不同格式解析響應資料 (textjson,content) |
RequestsZsession模組 | session模組應用、介面請求、會話管理 |
Requests請求HTTP介面實戰 | GET、POST、DELETE、檔案上傳等介面型別、json、from-data、引數型別、場景實戰演練 |
6、自動化測試框架搭建能力
Pytest介紹,環境搭建 | Pytest簡介、環境搭建、常用外掛安裝 |
---|---|
Pytest基礎語法 | Pytest基礎語法規則詳解 |
Fixture的使用 | Pytest引數化與Fixture的使用 |
Allure測試報告 | Pytest之conftest使用,整合Allure測試報告 |
框架搭建原理、思路 | 搭建框架之前的準備、框架的意義、設計思路、程式碼模組分層思想 |
UI自動化測試框架搭建一 | 程式碼模組分成、搭建日誌系統、斷言系統、報告系統 |
UI自動化測試框架搭建二 | 關鍵字驅動設計、資料驅動設計 |
介面自動測試框架搭建一 | HTTP、Websocket、Dubbo型別介面模組類封裝 |
介面自動化測試框架搭建二 | 關鍵字驅動設計、資料驅動設計、資料庫應用、日誌、斷言系統 |
UI測試框架和介面測試框架一體化 | 介面測試框架與UI測試框架整合,前後端自動化測試關聯場景運用 |
HTML前端 | HTML元素,標籤、css、Javascript語法基礎 |
Flask後端api編寫 | Restful API開發規範,構建一套API服務 |
7、持續整合
Jenkins介紹、環境搭建 | 部署Jenkins環境,常用Jenkins外掛安裝 |
---|---|
構建自動化測試任務 | 自動化測試用例結合Jenkins構建任務應用、定時執行、批次執行 |
自動傳送郵件測試報告 | 定時任務執行後產出測試報告、根據用例透過率自動傳送郵件 |
git倉庫的使用 | git版本庫建立、新增遠端倉庫、克隆、pull、push、commit命令使用 |
Docker容器技術 | Docker使用原理、Docker環境搭建、Docker在自動化測試中場景應用 |
流水線 | 構建 CI/CD 流水線流程 |
8、Jmeter 效能測試
Jmeter效能測試入門 | 效能測試概念,目的與意義;效能測試策略詳解;效能測試流程和效能測試工具分析 |
---|---|
效能測試環境搭建與效能指標闡述 | 效能指標(TPS/併發使用者數/響應時間/吞吐率/資源利用率):效能測試工具選擇;Jmeter環境搭建 |
Jmeter介面測試及HTTP協議講解 | Jmeter設定測試計劃、執行緒組、HTTP請求,以及HTTP協議講解、hddler抓包等 |
Jmeter介面測試引數化及錄製HTTP指令碼 | Jmeter設定引數化、檔案引數化、資料函式引數化;Jmeter監控伺服器資源設定:Jmeter錄製HTTP指令碼 |
Java請求&JDBC請求實戰 | Java請求,計算器,固定定時器,集合點設定;JDBC協議使用及技巧 |
Jmeter外掛管理及jvm監控 Jmeter | Jmeter外掛管理,場景設定,tps圖等;Jmeter啟動記憶體設定及字型,jvm監控Jmeter |
Jmeter叢集壓測及結果分析 | Jmeter叢集壓測設定;結果統計及分析 |
Jmeter專案實戰 | 單機、分散式、多執行緒執行機制、混合負載、壓力測試;穩定性測試,可擴充套件性、可恢復性測試等其它場景測試 |
Liunx伺服器監控 | Linux環境命令動態監控,top/free/vmstat等 |
資料庫監控 | 資料庫監控,慢查詢sql定位 |
JVM監控 | JVM監控,JProhler工具使用,類耗時,jvm命令監控jmap,jstat,jstack使用等 |
伺服器資源監控與分析 | 監控堆疊記憶體使用,執行緒抓取 |
全鏈路壓測 | 全鏈路壓測,叢集壓測原理解析 |
效能測試分析與總結 | 效能瓶頸分析,測試報告編寫,效能測試流程總結 |
9、APP效能測試
APP效能測試入門 | 效能測試概念,目的與意義;效能測試策略詳解;效能測試流程和效能測試工具分析 |
---|---|
效能測試環境搭建與效能指標闡述 | 效能指標 (cpu、記憶體、流暢度等) ,效能測試工具選擇;環境搭建 |
效能指標之啟動時間、CPU、流量詳解及實戰 | 效能指標(啟動時間、CPU、流量詳解)獲取方法;監控指令碼實現;資料分析 |
效能指標之電量、記憶體FPS&過度渲染及實戰 | 效能指標(電量、記憶體、FPS&過度染) 獲取方法;監控指令碼實現;資料分析 |
10、Fiddler 抓包工具的使用
Fiddler工具介紹與安裝 | 各類抓包工具介紹與對比;詳細指導hddler安裝過程;常用選單介紹 (tools;rules;view;命令列等) |
---|---|
Fiddler原理與HTTP協議詳解 | B/S架構簡介和請求過程理解;Fiddler的抓包原理,HTTP的請求、響應報文的詳細闡述 |
Fiddler抓包與過濾 | Fiddler抓取HTTP、HTTPS的資料包;Fiddler抓取APP資料包;資料包過濾: Find;Filter; Rules |
Fiddler斷點實戰 | Fiddler進行區域性斷點/全域性斷點/請求前斷點/響應後斷點設定;篡改資料 (請求前、響應後資料);對資源和介面進行斷點除錯 |
Fiddler模擬mock實戰 | Fiddler利用Autoresponder對資源進行重定向;Fiddler構建不存在的介面 (mock) |
Fiddler弱網實戰 | Fiddler完成弱網環境設定;模擬弱網測試 |
11、TCP/IP協議
TCP/IP的協議詳解 | TCP/IP的體系結構;TCP/IP的特點; |
---|---|
傳輸層協議 (TCP/UDP)原理 | TCP/UDP定義;面向連線的TCP詳解;無連線的UDP詳解;TCP/UDP協議差別;TCP協議的可靠傳輸機制詳解; |
TCP協議的流量控制和擁塞控制 | 流量控制詳解(利用滑動視窗、傳輸速率);擁塞控制詳解( 慢開始、擁塞避免、快重傳和快恢復) |
12、Linux 系統操作
Linux環境搭建 | 虛擬機器VMware Workstation Pro安裝;SUSE Linux環境搭建;VMware Tools輔助工具安裝;Windows Linux系統之間檔案共享 |
---|---|
Linux初級命令學習 | Linux概述、起源、架構;Linux目錄系統講解;初級Linux命令學習:目錄操作命令 (I/cd/mkdir/rmdir);檔案操作命令 (touch/cp/mv) ;檔案檢視命令 (cat/more/head) |
Linux中級命令學習 | 常用中級命令學習:編輯器命令(vim);連結檔案命令(ln);檔案搜尋命令 (fnd/which/whereis/grep),系統資源命令 (df/free/ps);其他系統命令 (halt/poweroff/shutdown) |
Linux高階命令學習1 | 打包壓縮命令 (tar);使用者和組命令 (useradd,groupadd) |
Linux高階命令學習2 | 許可權的理解;許可權命令 (chmod/chown);許可權的更改-所屬者;許可權的更改-所在組;給使用者設定指定的許可權 |
Linux下Web環境部署1-tomcat+jdk | Linux下安裝與配置jdk; Linux下編譯和執行Java程式碼;Linux下安裝tomcat; Linux下訪問tomcat |
Linux下Web環境部署2-MySQL資料庫 | Linux下安裝和配置MySQL資料庫;Linux下登入和使用資料庫;Linux下修改root使用者密碼;Windows下的Navicat連線Linux的MySQL服務端 |
Linux伺服器訪問操作 | Xshell/Xftp的安裝與介紹;購買阿里雲伺服器;使用Xshell/Xftp操作伺服器端的檔案 |
13、MySQL 資料庫
MySQL資料庫環境搭建 | MySQL服務端安裝;常見客戶端Navicat安裝與破解;MySQL自帶命令列模式常見命令使用;客戶端Navicat連線服務端與操作 |
---|---|
MySQL之資料庫表的SQL命令 | 資料庫概念、分類以及使用場景,不同儲存引擎的區別,SQL的分類及命令;資料庫建立命令;表建立/修改/銷燬命令;資料庫常見資料型別講解與使用 |
MySQL之資料完整性約束使用 | 資料庫約束的定義、作用與分類,掌握實體完整性;域完整性,引用完整性等約束的建立與刪除命令 |
MySQL之增刪改的SQL命令 | 掌握資料庫的增刪改查命令(insert、delete、update);資料庫運算子的使用(算數運算子、比較運算子、邏輯運算子、位運算子) |
MySQL之查詢的SQL命令 | 資料庫查詢-select的用法;掌握inlike、distinct、between orderby、ifnull、分頁功能limit等的用法 |
MySQL之高階查詢-函式&分組查詢SQL命令 | 資料庫高階查詢的用法;掌握聚合函式(max;min;count);分組查詢(groupby);子查詢(多行子查詢;單行子查詢;in;exist)等的用法 |
MySQL之高階查詢-關聯查詢&子查詢SQL命令 | 資料庫高階查詢的用法;掌握多表關聯查詢(innerjoin;leftjoin;rightjoin)等的用法 |
Mysql之TCL操作 | 事務的概述,事務的特性,事務的建立,事務的併發問題,事務的場景實操 |
MySQL作業講解 | 資料庫作業講解分析,知識點總結與梳理,進一步工具資料庫操作知識,常見筆試,面試題分析 |
mongodb資料實操 | mongodb概述mongodb環境搭建,資料庫操作,集合操作,資料匯入匯出 |
14、RobotFramework 自動化測試框架
RobotFramework簡介與環境搭建 | pip安裝RF,ride工具,以及結合PyCharm編輯工具的用法 |
---|---|
RF語法之變數使用 | 掌握RF當中的變數型別,變數的定義和使用,列印輸出 |
RF基礎語法之測試用例編寫 | 掌握RF編寫測試用例,執行用例,檢視用例執行日誌,檢視報告 |
RF之關鍵字與資原始檔 | 掌握使用者關鍵字,資原始檔,變數引用,庫的定義 |
RF之語法控制流與迴圈 | 掌握RF中FOR迴圈,AND,IF的用法 |
RF-Web自動化專案實戰 | UI自動化測試用例編寫,分層設計,POM |
RF-介面自動化專案實戰 | 編寫介面測試用例,傳送HTTP介面請求,介面專案實戰 |
RF-擴充套件庫開發 | 掌握Python開發關鍵字、第三方庫,系統關鍵字開發 |
RF-整合Jenkins之持續整合 | 掌握RF框架結合Jenkins使用 |
15、跨平臺的自動化測試框架Airtest
Airtest環境搭建與IDE使用 | IDE安裝、Web端、APP自動化環境搭建,框架介紹 |
---|---|
Airtest-Web自動化專案實戰 | Airtest之商城Web自動化測試實戰 |
Airtest-APP自動化專案實戰 | Airtest之安卓APP自動化測試、自動刷短影片賺金幣 |
Airtest之poco框架 | 基於poco框架進行網易雲APP自動化測試 |
Airtest-windows應用程式自動化測試 | Airtest之Windows應用程式自動化測試 |
Airtest之指令碼執行方式 | 自動化指令碼在cmd執行、批次執行指令碼、bat批處理執行 |
Airtest-整合Jenkins之持續整合 | 掌握Airtest框架結合Jenkins使用 |
上面就是我整理出來的一份全棧測試工程師技術進階路徑圖。完成這樣一個技術棧的構建。可以說,這個過程會讓你痛不欲生,但只要你熬過去了。以後的職業生涯就輕鬆很多。正所謂萬事開頭難,只要邁出了第一步,你就已經成功了一半,古人說的好“不積跬步,無以至千里。”等到完成之後再回顧這一段路程的時候,你肯定會感慨良多。
作為一位過來人也是希望大家少走一些彎路,在這裡我給大家分享一些自動化測試的學習資源,希望能給你前進的路上帶來幫助。