【連載】序,特點,建議

FunTester發表於2024-11-25

2018 年,我開始專職做介面測試,當時對於使用的工具和框架有著幾種不同的選擇:1. Postman;2.JMeter;3.SoapUI;4.程式語言。在學習前兩個選項的基本使用,瞭解了企業落地方案之後,我不禁問自己一個問題:有沒有哪種技術路徑可以一直貫穿整個測試初、中、高階測試職業生涯的?因為在這之前我一直都在用做 UI 自動化相關工作,使用的框架是 UiAutomator、Selenium 和 Appium,轉到介面測試又要學習新工具以及相關技能。這讓我對職業的未來產生迷茫。

後來我終於想明白,程式語言就是我所苦苦尋找的銀彈。我選擇了 Java 和 HttpClient,這期間也走了一些彎路,大概半年左右時間,工作終於走上正軌,程式語言的效用也開始逐漸超越工具。然後我接觸了效能測試,又面臨 Java 和 JMeter 二選一的問題,有了前面介面測試中打下堅實的 Java 基礎,我很快就成功將 JMeter 核心的執行緒池、task 管理部分程式碼抄了一遍。透過對程式碼的簡化,結合業務需求,使用 Java 進行了第一次效能測試。至今我依然記得那是個直播間發言場景,最終達到了傳送 1 萬 TPS、接收 100 萬 TPS 的場景需求。這次經歷極大鼓勵了我,也驗證了程式設計為先這一思路的有效性。

到現在,我從事效能測試已有 4 年時光,這期間我著重鍛鍊了自己的 “抄” 能力。從剛開始 JMeter 開始,到 ngrinder,又到 goreplay,再透過自我探索,自研了動態 TPS 壓測框架。一開始直接複製 JMeter 程式碼,慢慢開始看更多原始碼;當我一點點理解 “架構” 這個詞彙,繼續抄了 ngrinder 的指令碼化設計方案;緊接著抄了 goreplay 的 QPS 模型的併發設計,終於給漫長的抄一抄之路畫上句號。有了這些積累,很自然發現若是能在測試過程當中,隨時修改 QPS/TPS 豈不是有事半功倍的效果?從設想到實現,大概用了半個月時間,取得效果也是顯而易見的,成為工作的一大亮點。

效能測試的特點是越深入越專業,就是說越深入的效能測試,越需要對測試場景的精細化模擬,伴隨而來的就是對測試用例靈活性的要求。而這些恰恰是工具所欠缺的,即使強如 JMeter,也需要 JMeter API 和指令碼引擎來解決這些問題。那為什麼我們不直接一步到位,從 Java 開始進行效能測試呢?

要想用 Java 進行效能測試,除了 Java 基礎以外,其他所有的內容基本都包含在 package java.util.concurrent 裡面。僅就測試而言,掌握其中的 1/4 到 1/3 就足以解決遇到的絕大部分問題。接下來就是在效能測試工作中實戰,磨練自己的掌握程度,最終實現舉一反三、靈活運用這些 Java 類進行各種效能測試。

Java 本身是一門編譯型語言,在進行效能測試過程中,難以針對效能場景的不斷變化而及時修改用例。這一點不足可以透過基於 JVM 的指令碼語言彌補,我選擇了 Groovy 語言,原因是 Groovy 與 Java 的語法相容性非常高,甚至把字尾 “.java” 直接改成 “.groovy” 直接就可以執行。這樣的好處就是切換成本非常低,可以在日常工作中慢慢學習 Groovy 這門語言的優秀之處。

總結起來,這些年在 Java 的技術路線上,一直在努力前行,積跬步而致千里,也算取得一些成果。中途多次想過改換門庭,選擇其他工具路線,最終還是堅持下來,熬過黑暗的前期,迎來黎明的曙光。我覺得有兩點經驗非常值得借鑑:實踐出真知和實事求是。

特點

這是一本從從理論到程式碼、從知識到實戰、從基礎到進階的書。總結起來有以下特點:

(1)重程式碼。本書第一部分(第 1~3 章)以 Java 為基礎,圍繞多執行緒程式設計主題,對於 Java 併發、執行緒池、執行緒同步等內容加以講解。對於 Java 技術棧的測試工程師來說,可以無縫接入 Java 基礎,透過學習掌握多執行緒程式設計基礎,進而掌握使用 Java 進行效能測試的基礎和效能測試框架設計能力。本書不會大談特談效能測試理論,而是以程式碼為核心,向讀者娓娓道來,展示 Java 程式碼視角下的效能測試。

(2)重實戰。在掌握 Java 多執行緒的基礎上,本書第二部分(第 4~9 章)內容著力將效能測試最常用的測試物件、通訊協議進行挨個講解,並與效能測試框架結合,最後在模擬的測試場景中應用。以實際效能測試需求,來實戰第一部分學到的 Java 多執行緒基礎,練習學到的技能,以實現融會貫通。

(3)重擴充。掌握前兩部分 Java 技能之後,自然就可以應對效能測試工作裡面絕大部分的使用場景,基本做到 “兵來將擋,水來土掩”,在效能測試領域遨遊。但這還不是終點,針對 Java 效能測試擴充,本書第 10 章還將分享高效能池化框架和 Java 微基準測試框架 JMH,更好地應對其他高效能場景需要,提升測試工程師技術視角,在更廣闊的天地探索自己的職業上限。

建議

對於初學者來說,我有以下 3 點建議:

  • 堅持寫程式碼。在學習 Java 和相關測試框架的話,一定要堅持不斷練習程式碼。就我自身經驗,學習完某個知識點之後,1 周不寫程式碼,就會感覺到陌生;1 個月不寫程式碼,重新再看就會覺得吃力;3 個月不寫程式碼,基本相當於沒有學習。我想說寫程式碼是將知識和技能內化成自己的能力必不可少的路徑。
  • 堅持學習不放棄。對於初學者來講,學習一門新語言會比較吃力,特別是沒有其他程式語言的情況下。這時候就需要透過個人意志力克服畏難情緒,保證 Java 學習能夠邁過初學者門檻。可以休息但是不能放棄,我經常那這句話自勉,在此也送給大家。
  • 加強交流。如果你能把學到的技能在當前工作中應用,那麼恭喜你,這樣可以經常跟對接的研發溝通技術的細節;如果不能,也不用沮喪,網際網路找到很多樂於助人的技術愛好者。我在 Java 學習中,大約一半的知識都是跟同事學的,通常他們會提供跟書本上不同的視角,多多交流也能擴充知識範圍。

書的名字:從 Java 開始做效能測試

如果本書內容對你有所幫助,希望各位多多讚賞,讓我可以貼補家用。讚賞兩位數可以提前閱讀未公開章節。我也會嘗試製作本書的影片教程,包括必要的答疑。

FunTester 原創精華
  • 混沌工程、故障測試、Web 前端
  • 服務端功能測試
  • 效能測試專題
  • Java、Groovy、Go
  • 白盒、工具、爬蟲、UI 自動化
  • 理論、感悟、影片
如果覺得我的文章對您有用,請隨意打賞。您的支援將鼓勵我繼續創作!
打賞支援
暫無回覆。

相關文章