因為我一直在分享自動化測試技術,所以,經常被問到:
功能測試想轉自動化,請問應該怎麼入手?或者有哪些書推薦?
那麼,接下來我就結合自己的經歷聊一聊我是如何在工作中做自動化測試的。
測試新人
我的職業生涯開始和大多數測試人一樣,開始接觸都是純功能介面測試。那時候在一家電商公司做測試,做了一段時間,熟悉產品的業務流程以及熟練測試工作流程規範之後,效率提高了,工作比較輕鬆,這樣我就有充足的時間學習各種測試技術和工具。
當你認為工作很閒的時候,這正是你可以有更多的時間投入學習的時候,但是,學習的內容一定要基於自己的工作來,這樣才能把學來的技術變成工作經驗。
選擇Python
最初用的是Java語言,學習各種自動化測試技術,當時覺得自動化測試特別有意思,而且挺有趣,激發了我濃厚的興趣。後來發現Python語言越來越火,而且我發現Python來做自動化和對於程式設計基礎比較薄弱的測試工程師來說特別的合適,Python還能用來爬蟲,用Python還能寫一些定時指令碼,資料庫指令碼,效率非常高。
用Python語言和Selenium來嘗試做自動化測試。那時,關於Python版的Selenium並不多,在學習的同時我開始發表相關部落格。
交流是學習新技術的驅動力,大多數時候我們很難堅持學一個新技術的原因就在於缺少了反饋,不管是做內部分享或者是社群交流都是很好的反饋機制。
2014年的時候,由於專案的原因,開始使用Robot Framework測試框架,正因為有Python的基礎,所以很快就理解了Robot Framework框架的工作原理,並可以根據專案的需要開發系統關鍵字。
掌握自動化工具的原理使用起來才會更加遊刃有餘,而這也需要你有一定的程式設計基礎的原因。
2015年隨著移動App越來越流行,趁著換工作的間隙,我開始學習了一個月的appium自動化工具,但工作中用不到後來就沒在繼續了。
後來,我開始針對另一個社群專案編寫Web UI自動化測試,前後做了好幾個月,積累了一些經驗,開始嘗試設計Web自動化框架,當時主要還是針對Selenium API的封裝。
自動化測試
當時由於公司的規模和產品的侷限性,導致自動化測試始終未能應用到公司實戰專案中。我覺得外面的世界有更多機會,自動化已經流行而且越來越普及,我想要突破自己的測試技術瓶頸,我毅然決然的跳槽一家公司專職做自動化測試的工作。
後來的機緣巧合,朋友推薦我去一家金融公司做測試開發,負責開發公司定製化的測試質量平臺。
這對於我來說是一個挑戰,新的領域,測試開發在一線城市非常吃香。當時的待遇比初、中級開發工程師要高。
到崗後就是頂住壓力,不斷的系統學習測試開發技能,而且學以致用。技術架構採用的是前後端分享,包括Python的後端開發框架Flask,前端框架vue,elementUI元件等
堅持做了幾年的測試開發,真實的體會到測試開發等於測試全週期的工作,包括產品功能業務熟悉,測試平臺的需求設計,平臺前後端研發,平臺的自測,給到測試部門幾十號人的推廣、培訓產品使用、運營。
所以測試開發的大前提是功能測試經驗豐富,介面自動化,UI自動化非常熟練,不然很難以開展測試開發工作。
如果你也在往自動化測試開發方向發展
在適當的年齡,選擇適當的崗位,儘量去發揮好自己的優勢。
我的自動化測試之路,一路走來都離不每個階段的計劃,因為自己喜歡規劃和總結,所以,我和朋友花了一段時間整理編寫了下面的《軟體測試工程師發展規劃路線》,也整理了不少【教程資源】,打包好了分享在群裡面。有需要的朋友可以點選下方小卡片進群獲取。希望會給你帶來幫助和方向
《軟體測試工程師發展規劃路線》
一、測試基礎
瞭解測試的基礎技能,掌握主流缺陷管理工具的使用,熟練測試環境的操作與運維
愛碼小士 | 測試基礎 |
---|---|
測試計劃/測試用例 | 黑盒用例設計等價類/邊界值/場景分析/判定表/因果圖分析/錯誤推斷 |
缺陷 | 缺陷生命週期/缺陷分級/缺陷管理工具禪道/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) | 企業應該如何進行安全建設,制定更安全的軟體生命週期。從哪些方面進行著手 |