天天看點

關于線上與線下性能測試結果的差異

有幾個學員經常會對線上與線下測試結果不一樣的問題産生糾結...是以還是統一寫一篇這樣的文章吧

  其實這個問題本身不用糾結,就好比再牛逼的雙胞胎還是有他們不一樣的地方。本身性能測試就是一個預估風險、排查瓶頸、了解系統現有性能的一個手段。就好比小時候你是個好孩子,但不意味這你長大了也是一個好孩子,也許你會像海波兄那樣的...so,性能測試隻是一種手段,減小風險的方法而已。

  再者,本身線上和線下的測試結果就不太具有可比性,原因為:

  1、線下與線上機器環境配置的差異

  2、線下和線上業務資料的差異,雖然我們線下要最大可能的模拟使用者行為,但你不能拿保證100%的模拟啊,那麼多使用者你都能兼顧到?

  3、線下和線上産生壓力時間的差異,線下是模拟高壓力大并發的情況,而線上通常壓力不大,大并發主要集中在某幾個特殊時段。

  說道這裡,又會有童鞋繼續糾結了,那為毛還做測試啊,都不準确,做個毛毛?好吧,那我想反問你一句,一輛汽車開的人不同,開車的習慣不同,會對車造成不同程度的影響,既然我們沒法100%測試模拟,那我們幹脆就産出汽車後直接賣給你好了,做個什麼測試和路測,多tmd費勁。對吧?這時候你不幹了,你說那多危險,萬一有大問題呢,不就要了我的命了嗎?呃...這時候你明白了?那換到性能測試中就不明白了?

  我們做性能測試的意義其實很簡單:

  1、預防、評估風險,如果有大問題可以早點發現,減小風險。這裡了解極其簡單,你程式存在記憶體洩漏的問題,難道線下2g和線上4g這個記憶體差異就不會有記憶體洩漏了?這就好比,你不會騎永久牌自行車,難道給你換個小強牌(瞎編的...)自行車你就瞬間會騎了?

  2、前端性能測試。可以通過前端性能測試保證頁面性能,給使用者帶來較好的使用者體驗。

  3、單接口性能調優。主要目的是優化接口性能,排查接口性能問題,及應用記憶體隐患。

  比如,我們會準備幾種業務場景,比如全走db和全走緩存,分别得到這幾種場景下,應用最佳處理能力情況下,在測試中排查是否存在性能提升的地方,及代碼問題導緻的記憶體洩露等。

  4、容量評估。可以根據線上機器比例,線下模拟配比來估算。

繼續閱讀