我希望我的故事能夠激勵現在的軟件測試人,尤其是還堅持在做“點點點”的測試人。
你可能會有疑問:“我也能做到這一點的可能性有多大?”因此,我會盡量把自己做決定和思考的過程講得更具體一些,並盡量體現更多細節。
每個測試人的經歷都不一樣,但我希望我的經歷中能讓你有所收獲。
測試新人
我的軟件測試職業開始和大多數最普通的測試人員一樣,一開始在一家社交平台的公司做軟件測試,公司最開始只我人一位軟件測試人員,沒有任何流程和規范,但好在工作比較輕松,這就導致我有充足的時間學習各種測試技術和工具。
當你認為工作很閑時,這正是你可以有更多的時間投入學習的時候,但是,學習的內容一定要基於自己的工作來,這樣才能把學來的技術變成工作經驗。
當時,有一些機會在工作中做性能測試,於是,學會了使用LoadRunner和JMeter,有一次需要測試MySQL數據庫的性能,用JMeter搞了半天不知道怎么設置,結果叫一位開發的同事幫我過來很快就搞定了。
這讓我認識到開發知識對於測試工作的幫助,編程語言的能力會決定你測試技術的深度。
選擇Python
大概在2013年的時候,腳本語言變得越來越流行,我正糾結學習Python還是Ruby,后來,我被分到社區項目的測試工作,公司產品開始選用Python開發的,所以,我毫不猶豫的選擇了Python。
如果你不知道學習什么編程語言,那么就根據項目的開發語言來,這也會有助於你對測試的bug的理解。
接着,開始用Python語言和Selenium來嘗試做自動化測試。那時,關於Python版的Selenium並不多,在學習的同時我開始發表相關博客。
交流是學習新技術的驅動力,大多數時候我們很難堅持學一個新技術的原因就在於缺少反饋,不管是做內部分享或者是社群交流都是很好的反饋機制。
2014年的時候,由於項目的原因,開始使用Robot Framework測試框架,正因為有Python的基礎所以很快就理解了Robot Framework框架的工作原理,並可以根據項目的需要開發系統關鍵字。
掌握自動化工具的原理使用起來才能更加游刃有余,而這也需要你有一定的編程基礎的原因。
2015年隨着移動App越來越流行,趁着換工作的間隙,我開始學習了一個月的appium自動化工具,但工作中用不到后來就沒在繼續了。
后來,我開始針對另一個社區項目編寫Web UI自動化測試,前后做了幾個月,積累了一些經驗,開始嘗試設計Web自動化框架,當時主要還是針對Selenium API的封裝。
自動化測試
為什么我越來越有更多機會去做自動化相關的工作,當然,是我先學會了這項技能,然后才有,公司項目又比較適合去做自動化,所以,我就嘗試去做了,最后,這就變成了我的經驗。
但是,沒多久我會調到另外一個項目負責接公司口平台的測試,這個項目支撐公司內部不同的業務線,為了更加高效的保證接口的質量,開發設計了一套基於PHPunit的接口自動化項目,因為整個接口平台也是有PHP開發,所以,我開始嘗試用PHP編寫接口自動化測試。這個自動化項目非常高效的保證了接口平台的穩定性,我持續維護了兩年。
測試有時候必須跟着項目發展自己的技術,但也正是之前的編程基礎和自動化的經驗的積累,所以,才會很快的上手接口自動化項目。
2018年我開始做全棧工程師,和團隊一起從零開發內部管理平台,后端用Django框架設計接口,前端用vue.js框架設計頁面,項目已經在整個公司得到應用。
這個階段跨度有點大,但應了我前面的一些思路,當你掌握的更多的技術,那么你也會有更多的機會繼續提升自己。
你也在往自動化方向發展嗎?
在適當的年齡,選擇適當的崗位,盡量發揮好自己的優勢。
我的自動化測試之路,一路走來都離不每個階段的計划,因為自己喜歡規划和總結,所以,我和朋友花了一段時間整理編寫了下面的軟件測試工程師發展規划路線,會給你帶來幫助和方向:
一、測試基礎
了解測試的基礎技能,掌握主流缺陷管理工具的使用,熟練測試環境的操作與運維
愛碼小士(公眾號) | 測試基礎 |
---|---|
測試計划/測試用例 | 黑盒用例設計等價類/邊界值/場景分析/判定表/因果圖分析/錯誤推斷 |
缺陷 | 缺陷生命周期/缺陷分級/缺陷管理工具禪道/Jira |
數據庫 | Mysql/環境搭建/增刪改查/關聯查詢/存儲過程 |
Linux | 系統搭建/基本指令/日志分析/環境搭建 |
二、Linux必備知識
Linux作為現在最流行的軟件環境系統,一定需要掌握,目前的招聘要求都需要有Linux能力。
愛碼小士 | Linux必備知識 |
---|---|
Linux系統簡介與准備 | Linux作為現在最流行的軟件環境系統,一定得會,從CenterOS版本系統進行介紹,安裝,目錄結構等基礎內容學起,也為后續自建測試環境准備。 |
Linux遠程工具Xshell | 詳細介紹如何入門使用Linux,並進行常規的遠程管理,文件傳輸操作,涉及其中的工具Xshell,Xftp |
Linux文件屬性與管理 | Linux文件,目錄基本屬性,文件操作,文件管理,目錄操作,目錄管理。切忌自毀行為操作,如何預防意外操作 |
Linux用戶與組管理 | 如何在Linux中新增,刪除,修改用戶與組,並賦予相應權限,不再因為權限問題而卡殼 |
Linux文件編輯器 | Linux文件編輯器vi的使用,命令模式,輸入模式,操作實例,快捷鍵,管道命令,使用心得。在一個沒有圖形化的系統下到底如何編輯的呢? |
Linux常用系統設置 | 網絡設置,環境變量,磁盤管理,時間設置,系統資源,防火牆,應有盡有,不用擔心毫無頭緒。 |
Linux安裝軟件 | Linux安裝命令,以及如何通過tar,gz等網絡上下載的安裝文件進行安裝,如MySQL數據庫安裝。 |
Linux Docker容器 | Docker容器技術講解,image鏡像管理,倉庫,容器創建,啟動,操作,鏡像打包,趕上行業流行技術 |
三、Shell腳本
掌握Shell腳本:包括Shell基礎與運用、Shell邏輯控制、Shell邏輯函數
愛碼小士 (公眾號) | Shell |
---|---|
Linux Shell基礎與應用 | shell腳本編程介紹,環境類型,變量,參數,運算符,數組的使用,零距離接觸腳本 |
Linux Shell邏輯控制 | shell邏輯應用,test命令,流程控制,數據輸入與輸出,腳本邏輯不再單調,玩出花樣 |
Linux Shell函數 | shell腳本函數寫法,文件互相調用,腳本實戰應用,懂得開發,測試,運維都可以做什么 |
Windows 腳本批處理 | Linux玩夠了,再來看看Windows常規命令用法,批處理腳本寫法,實戰應用,並不是到哪都是Linux,Windows腳本也是常用腳本之一,看到這里可能你就用的Windows |
四、互聯網程序原理
自動化必經之路:前端開發基礎知識以及互聯網網絡必備知識
愛碼小士 | 互聯網程序原理 |
---|---|
Web前端開發基礎 | HTML、CSS基本內容學習。為什么測試課程有開發?對不起,如果不會,自動化可能不歡迎,很多自動化測試問題都出自於開發基礎 |
Web前端開發腳本 | JavaScript最主流的腳本學習,同樣的,這也會在自動化測試中涉及,在一些工具中其實也經常用到動態腳本,也是JavaScript語言 |
開發者調試工具測試應用 | 雖然瀏覽器的F12被命名為開發者工具,但實際上測試不管在功能測試還是自動化測試中,都起到了很關鍵的作用。如解析HTML,定位元素,調試腳本,監控網絡抓包等等 |
互聯網程序網絡架構 | 通過網絡架構詳細理解互聯網程序的誕生,邏輯細節,互聯網通訊原理又是如何將數據傳遞到其他計算機的,TCP,UCP,HTTP,等等協議的關系又是什么。 |
HTTP協議數據結構分析 | 完整解析HTTP協議數據結構,包括Request、Response數據格式,Header的定義和用法各種狀態代表什么,如何辨別錯誤。分析協議中參數的位置,rest結構,各種常見的body數據形式,解析方式,常見數據解析錯誤的原因。 |
Cookie與Session機制 | 解讀Cookie到底是什么,和Session存在什么樣的關系,如何測試Cookie與Session,需要注意什么 |
五、MySQL數據庫
軟件測試工程師必備MySQL數據庫知識,不僅僅停留在基本的“增刪改查”。
愛碼小士 | MySQL數據庫 |
---|---|
MySQL數據庫測試應用 | MySQL環境搭建,客戶端Navicat的基本使用與數據操作,學習並鞏固基本的SQL語法,增刪改查缺一不可,掌握各種條件的使用方法 |
MySQL高級查詢 | 查詢升級,掌握多表查詢,子查詢,查詢分組,統計函數的使用,並對經典面試題進行學習與分析 |
MySQL自定義函數 | 既然有內置函數,當然也不缺自定義函數的位置,也是經常會使用到的,這就好比任意一種開發語言一樣都離不開函數的定義與使用 |
MySQL存儲過程SP | 數據庫必不可少的存儲過程,通常也叫SP,如何定義?如何測試?怎么樣使用更安全,測試到底用存儲過程還能做什么更多便於測試的內容 |
MySQL事物與編程 | 數據庫事務使用案例,索引的原理與使用,數據庫SQL編程在測試中的應用,如何用其快速精准的產生大量指定的測試數據 |
六、抓包工具
Fiddler,Wireshark,Sniffer,Tcpdump各種抓包工具適用於各種項目,總有一款適合你的
愛碼小士 | 抓包工具 |
---|---|
抓包原理與方式 | 只有了解抓包的原理,才能真正去用好一個適合的工具,選擇合適的方向和方法,否則都是徒勞的 |
抓包工具選擇 | 抓包工具的分類與功效,什么樣的項目適合哪種工具,如何去辨別工具的優勢 |
Fiddler基礎功能 | 作為專業的HTTP體系的抓包工具,詳細介紹其工具原理,如何過濾數據,如何搜索想要的數據,如何對web,非web,手機,HTTPS協議等各種環境進行抓包 |
Fiddler高級功能 | 學會使用其進行接口測試,斷電,腳本等方式進行數據的修改,替換,模擬數據進行接口Mock測試,創建自己定義的菜單功能 |
Wireshark | 與其說是抓包,更是一種抓包后的分析工具,在各個系統下利用其它與系統一體化的抓包工具進行數據抓取整理並展示,有着強大的過濾和分析功能 |
Sniffer | 黑科技抓包工具,有多種版本,非常專業的抓包工具 |
Tcpdump | Linux、Android系列的系統中的抓包插件神器 |
七、接口測試工具
接口測試神器,你繞不開的強大工具:Jmeter。小巧靈活:Postman
愛碼小士 | 接口測試工具 |
---|---|
Jmeter接口測試入門 | Jmeter簡介,環境准備,目錄結構介紹 ,如何錄制腳本,以及基礎組件的使用,線程、作用域、HTTP請求、定時器、斷言等等 |
Jmeter接口測試進階使用 | Jmeter邏輯控制、前置處理器、后置處理器、監視器、結果樹,如何參數化、正則表達式關聯、事務、檢查點等等。並帶領大家對帶有token等動態數據的項目進行實戰演練 |
Jmeter接口測試高級功能 | Jmeter腳本思考時間、隨機時間、線程啟動間隔、並發集合點、聯機遠程調用,webservice、websocket、jdbc、命令調用等等 |
Postman接口測試工具使用 | 行業標准HTTP、rest接口測試神器,基本請求、分組保存、動態變量、腳本、數據關聯、參數化、自動斷言、批量運行、持續集成。思路類似其他接口工具,避免泛濫學習 |
八、Web自動化測試Java&Python
了解自動化的目的,熟練掌握TestNG&unittest自動化框架,以及斷言與日志處理
愛碼小士(公眾號) | Web自動化測試Java&Python |
---|---|
自動化框架思路引導 | 我們做自動化到底為了什么?節省人力、加快速度、還是讓機器代替手動、還是提升自我。應該如何建立思路,而非無腦進坑任機器擺布 |
Java&Python3開發環境及基本語法 | Java&Python開發環境搭建,基礎語法入門,讓不會代碼的以最快速度入門,方便適應后續自動化測試開發內容學習,代碼夠用即可,並不是學得越多越好 |
Java&Python3集合類型與面向對象開發 | Java&Python各種基本類型、集合數據類型的理解與操作,循環語句、判斷語句,面向對象的開發,函數的使用,類的使用 |
Selenium3環境與瀏覽器驅動配置 | 基於selenium3的web自動化環境搭建,正確的瀏覽器配置,不再為起不了瀏覽器而煩惱。支持IE、Firefox、Chrome等等 |
Selenium3多種定位及動態操作 | selenium3常見定位方法,屬性和值的獲取,如何動態判斷不一定存在的元素,復雜的網頁結構,需要多步驟操作的元素等等 |
特殊情況處理(js、特殊控件等) | selenium3自動化測試中,常見的特殊情況處理,如日期、控件、智能等待、文件上傳下載、網頁嵌套結構,各種彈窗的處理方式,cookie處理,JavaScript腳本調用等 |
TestNG&unittest自動化框架使用 | Python unittest、Java TestNG自動化框架的使用,環境處理、基本使用邏輯,數據驅動模型,數據庫數據載入等 |
自動化框架斷言與日志處理 | 自動化中最重要的是什么?作為測試當然是斷言,沒有斷言的自動化毫無用處,如何展示日志與結果是自動化測試的根本 |
PageObject框架設計模式 | PageObject框架設計模式,到底是做什么的?如何更好的快速管理控件,從此做起 |
九、接口與移動端自動化
專業接口調用、測試解決方案。組建完整的web和接口自動化框架,Appium整體使用
愛碼小士 | 接口與移動端自動化 |
---|---|
接口自動化方案Requests | Python Requests、Java HTTPclient接口框架,都是專業的接口調用、測試的解決方案,使用簡單快速,結合工具的使用方式和功能,快速上手並對其操作,解決其中的疑難雜症 |
web+自動化框架整合 | 自動化測試是相通的,如何將web與接口、甚至更多的測試類型和方向結合起來,組成完整的自動化框架 |
Appium環境搭建 | Appium環境相對復雜,針對Android系統進行完整的環境搭建演練,解決環境上的問題,並進行基本的自動化操作 |
Appium自動化實戰與框架結合 | Appium整體使用與web自動化類似,引導使用典型功能,並針對一款APP進行實戰操作 |
十、敏捷測試&TestOps構建
揭開TestOps的神秘面紗,持續集成Jenkins框架爛熟於心
愛碼小士(公眾號) | 敏捷測試&TestOps構建 |
---|---|
構建敏捷測試運維架構體系 | 敏捷測試是什么?為什么需要敏捷,行業都提到的devops又是什么?TestOps能做什么 |
持續集成Jenkins框架實戰 | 持續集成最常見的一套框架,介紹Jenkins操作、權限、系統管理等,常用構建與運行實例講解 |
靜態掃描測試Sonar | 一款自動化的代碼掃描工具,便捷式快速掃描代碼中的問題,做到提前發現,統一規范,自動化中的代碼測試神器 |
十一、性能測試&安全測試
軟件測試的彼岸:性能測試和安全測試,選個方向努力爬坑吧!
愛碼小士 | 性能測試&安全測試 |
---|---|
性能測試學習路線 | 如何學習性能測試,性能測試到底該怎么學習,使用什么工具?工具並不代表性能,接口的基礎對性能測試非常重要,而工具只是輔助,更多的是思路和策略。你不會並不是分析而是准備階段 |
loadrunner脫離瀏覽器錄制專題 | IE無法啟動被測網站?打不開瀏覽器?程序無法在瀏覽器中被打開?這些都沒關系,還是一樣能錄制,但錄制是偷懶專用的,對於學習有一定的輔助作用,也會帶入無法脫離的坑 |
性能測試工具操作實踐 | loadrunner、jmeter,有了前面的基礎使用,看懂腳本不是問題,帶上關鍵的參數化、動態數據關聯、事物、日志,大部分的腳本都可以搞定進行實踐 |
系統監控方案實施 | 工具自帶監控?系統監控?JVM內部監控?數據庫監控?各種監控的意義何在,如何在各種情況下精准監控數據 |
安全測試起源與工具介紹 | 應該如何進行安全測試,安全測試都有哪些分類?都會用到什么樣的工具,各自的作用又是什么,如web漏洞掃描,端口掃描,系統掃描等 |
web安全測試手工實戰 | 接口測試在安全中的作用,不會手動的安全測試,那就永遠無法理解自動化以后產出的結果 |
安全掃描工具測試實踐 | 實際介紹以及使用APPscan、awvs等專業安全掃描工具 |
企業安全建設(SDLC) | 企業應該如何進行安全建設,制定更安全的軟件生命周期。從哪些方面進行着手 |
上面就是我為大家整理出來的一份軟件測試工程師發展方向知識架構體系圖。希望大家能照着這個體系在3-4年內完成這樣一個體系的構建。可以說,這個過程會讓你痛不欲生,但只要你熬過去了。以后的生活就輕松很多。正所謂萬事開頭難,只要邁出了第一步,你就已經成功了一半,古人說的好“不積跬步,無以至千里。”等到完成之后再回顧這一段路程的時候,你肯定會感慨良多。
如果你不想再體驗一次自學時找不到資料,沒人解答問題,堅持幾天便放棄的感受的話,可以加我們的軟件測試交流:273462828,里面有各種軟件測試資料和技術交流。
加油吧,測試員!如果你需要提升規划,那就行動吧,在路上總比在起點觀望的要好。
未來的你肯定會感謝現在拼命的自己!