畢業出來工作差不多兩年了,就呆過一家公司,主要做功能測試,會自己驅動做些自動化相關的工作,但不想就此止步,所以換了工作,最近剛獲得了新 Offer,漲薪幅度 40%+,年薪大概 25w。自己還挺滿意的,不論薪資還是福利方面,希望未來能持續進步,不斷成長。
關於之前的工作
我是從大二開始接觸並學習軟體測試相關內容的,畢業後就來到一家做政府採購數字化的公司,這是一家重業務的公司,對程式碼和自動化的要求並不高。在這裡我的測試技能從理論應用到了實踐,從生疏到了逐漸熟練,但上限也很明顯,在功能測試技能之後,想要再進一步學習和應用,就遇到了不少阻力,經常為學習進度緩慢,學習的內容無法在專案中應用而煩惱。
******遇見霍格沃茲測試開發學社,開始報班學習
在進一步學習測試技能的過程中,我一開始是自學的,買了很多相關的書,測試的,前後端語言的,作業系統的等等等等,但買書如山倒,讀書如抽絲,學習效率低,越看越陷入到迷茫之中。
在知乎看測試問答時,看到了學社的《Python 測試開發進階訓練營》,課程內容覆蓋的很全面,和我預期想掌握的能力很吻合,又對比了一些其他機構的課程,感覺還是學社的內容覆蓋面和深度比較有優勢,所以果斷就報了名。
因為平常的工作內容已經比較輕車熟路了,所以能抽出比較多的時間來學習,在這幾個月的時間裡,很感謝學社的老師們和社群的同學們,我學習到了很多的乾貨知識,也體會到跟著優秀的人學習,果然是進步最快的方式,這也是我認為報班學習最有價值的地方。
學社教授的內容很全面,以錄播和直播的形式進行講解,錄播的內容很多,可以慢慢看,反覆品味學習,直播內容不容錯過,老師會現場答疑解惑,體驗很好。
學社的社群是另一個吸引我的地方,這裡充滿活力,有不少同學在上面分享自己遇到的問題解決方法、面試經驗等等,讀完都感覺有所啟發。
關於找工作及面試題
這次換工作,我是在各大平臺上都有投簡歷,但綜合下來還是學社內推的崗位質量最高,最終也是去了學社推的公司。
下面是我面試時遇到的一些問題型別:
介面自動化框架->UI 自動化框架->測試用例設計思維->Linux->SQL->Python->常用演算法和資料結構->Shell 指令碼->jmeter->Docker->Jenkins
重點還是 UI、介面自動化等方面的技能,最好是有過落地實踐的專案或者自己寫的 demo,這樣才能在面試的時候有乾貨可以說。
介面自動化框架
掌握 requests 庫的使用,測試資料的生成,可以使用資料庫或者 faker 之類的庫,斷言判斷介面的返回狀態碼和資料體等內容。同時為了提高框架的可維護性和穩定性,可以使用正交實驗法來生成介面用例,用 JSONschema 來進行對比。還可以使用一些設計模式來提高框架的可用性,比如單例模式,工廠模式等。
UI 自動化框架
UI 自動化方面除了常問的元素定位方式、PO 模式外,還需要準備更多,比如框架的分層設計、日誌如何儲存,報告如何管理,測試資料怎麼構造,失敗重試機制,driver 統一排程等等問題,這些需要在實際的設計過程中逐一其思考解決。
測試用例設計
面試時可能會問,給你個功能,如何去設計它的測試用例。
回答的思路可以分類、分設計方法來設計
如分類:功能用例、UI 用例、介面用例、效能用例、相容性用例、安全用例等
如分設計方法:等價類、邊界值、場景法、因果圖、判定表、正交實驗法、錯誤推測法等
Linux
重點掌握常用的命令即可,可以分類掌握。
-
檔案目錄操作:cd、ls、pwd、touch、mkdir、mv 、rm
-
搜尋命令:whereis、find、which
-
文字操作:cat/tac、head/tail、wc、cut、sort、uniq、grep、awk、sed
-
系統操作:ps、top、ifconfig、ping
Sql
主要看聯表查詢、子查詢、group by... having 、order by、distinct、常用函式(count,sum 等)、儲存過程等,然後可以在力扣上練習一下就會比較熟練了。
Python
-
Python 基本語法和資料結構:熟悉 Python 的語法規則,掌握常用的資料結構特點和區別,比如如列表、字典、元組等。
-
檔案操作:學習如何讀取和寫入檔案,以及處理檔案路徑和資料夾的操作。
-
異常處理:瞭解如何使用try-except語句來捕獲和處理異常,確保程式在出現錯誤時能夠正常執行或給出相應的提示。
-
模組和包的使用:掌握如何匯入和使用Python的標準庫和第三方庫,以擴充套件程式的功能。
-
正規表示式:學習如何使用正規表示式進行字串的匹配和替換,以及提取特定的文字資訊。
-
物件導向程式設計(OOP):瞭解物件導向程式設計的基本概念和原則,學會定義類、建立物件,並使用類的屬性和方法。
常用演算法和資料結構
-
排序演算法:常見的排序演算法,如氣泡排序、選擇排序、插入排序、快速排序、歸併排序等。瞭解它們的原理、時間複雜度和空間複雜度,並能夠實現它們的程式碼。
-
查詢演算法:瞭解常用的查詢演算法,如線性查詢、二分查詢等。
-
棧和佇列:學習棧和佇列的基本概念和特點。瞭解它們的應用場景,例如棧的應用可以用於括號匹配、逆波蘭表示式求值等;佇列的應用可以用於實現緩衝區、任務排程等。
-
連結串列:掌握連結串列的概念和基本操作,包括插入、刪除和遍歷等。瞭解連結串列與陣列的區別和優劣,並能夠使用連結串列解決相應的問題。
-
樹和二叉樹:瞭解樹和二叉樹的基本概念和性質。學習樹的遍歷方式,包括前序遍歷、中序遍歷和後序遍歷。
Shell 指令碼
重點掌握 Shell 的語法和一些常見處理,最好寫一些指令碼練習練習,面試的時候可以拿出來當例子,比如自動化測試用例執行指令碼、程式碼行數統計之類的:
-
變數和引數處理:定義和使用變數,包括區域性變數和環境變數。瞭解如何處理命令列引數,使用特殊變數如$0、$1等獲取引數值。
-
分支和迴圈結構:掌握if-else語句進行條件判斷,根據條件執行不同的程式碼塊。瞭解for迴圈、while迴圈等進行迭代操作。
-
檔案和目錄操作:學習檢查檔案或目錄是否存在,建立和刪除檔案或目錄,以及進行檔案讀取和寫入操作。
-
字串處理:掌握字串的拼接、擷取和替換操作。
-
錯誤處理和日誌記錄:學習捕獲和處理指令碼中的錯誤,將指令碼的執行結果輸出到日誌檔案中。
-
常用命令的組合和管道操作:熟悉常用的Shell命令,如grep、sed、awk等,學會結合它們使用,透過管道操作實現更復雜的功能。
Jmeter
主要掌握如何用 jmeter 來做效能測試,包括效能指令碼編寫操作、效能指令碼執行結果分析。同時,對 JMeter 的高階特性有深入的瞭解,比如建立和使用自定義函式和變數,利用 BeanShell 編寫高階指令碼,以及執行分散式測試來模擬大規模的使用者負載。最後,對效能測試的基本原則和方法,如負載測試,壓力測試,耐久性測試等有清晰的理解,並能夠明確地解釋這些測試的目的和預期結果。
Docker
重點看下 Dockerfile、Docker compose、Docker 檔案管理等內容。
Jenkins
掌握 Jenkins 環境安裝、job 配置、構建、外掛安裝配置等部分。
最後,再次感謝學社的各位老師的教導,也希望學社未來能越來越好,來這裡學習的大家都能學有所得,早日拿到自己的 Dream offer。