深度剖析性能測試(部分摘抄)

性能測試究竟是什麼

這個簡單的問題不少朋友都沒法完整的回答。可能知道的朋友會說性能測試就是用LoadRunner或者Jmeter工具來壓測系統,也有人會說性能測試就是同時讓不少人訪問系統看系統可否扛得住。這些回答只能說對,但不夠全面也不夠深入,只是把表象描述了一下而已。其實真正的性能測試沒法用一兩句話來簡單歸納,由於它涉及的東西太多。前端

大部分人一說到性能測試理解的就是壓測服務器,看服務器能不能扛得住,但這只是其中一方面而已,其實性能測試能夠分爲多個層級,每一個層級的關注點以及測試方法等都不太同樣,咱們一般認爲的是服務器端的性能測試。算法

那性能測試到底應該怎麼去理解呢?咱們不妨換個角度來看看,不管是你們理解的經過工具來壓測系統仍是號召100我的同時去訪問系統,都不過是實現的手段或者方法而已,咱們更應該關注性能測試的目的是什麼,由於目的不同那麼實現的手段或者方法就有可能不同。因此咱們倒着來看看性能測試,不外乎就是這麼幾個目的:後端

  • 壓測系統,看系統的前端以及後端性能是否知足預期(基準測試);
  • 壓測系統,看系統能夠承受的最佳壓力和最大壓力,來判斷系統的承受極限(壓力測試)
  • 壓測系統,看系統在長時間運行下是否能夠正常處理請求(穩定性測試)
  • 容量規劃,當系統愈來愈穩定的時候,咱們要提早考慮它的遠景規劃,或者更通俗的解釋就是「人無遠慮,必有近憂」,這裏的「遠慮」就是容量規劃。

這樣看來咱們應該就能明白性能測試其實更多的是一個過程的統稱,並非一個具體的定義。服務器

 

性能測試分層模型

性能測試分層模型是爲了讓你們更容易理解和學習性能測試而總結的,即便對於有一些經驗的朋友,這個分層模型也會對你在認知上有所幫助。該分層模型並不高大上,也有可能不夠完善,只是對雜亂的知識作了總結提煉,但對於小白朋友來講是很是好的良藥,能夠幫助你們快速、全面地理解性能測試。網絡

 

性能測試分層模型中含義

前端層

前端層主要是指用戶看到的頁面。好比,電商網站的首頁、移動APP的各個頁面,這些纔是用戶最關心的。對於用戶而言,一個系統的快慢只會經過頁面的呈現速度來判斷,並不會在乎你後端處理的速度,因此我常常說即便你後端優化得很牛逼,但前端頁面性能卻很是差,那也是無用功。
另外,APP的測試也是你們常常問到的問題,APP的性能測試至少包括兩個方面:APP的前端,也是如今業界裏常說的APP專項測試;APP的後端,本質上和Web端性能測試同樣。因此,在提問以前必定要明白這些概念,別人纔能有針對地回答你。框架

網絡層

任何系統均可以粗略地分紅客戶端、網絡端和服務端,其中網絡端是鏈接先後端的命脈,網絡質量的好壞也有很大的影響。在性能測試中可能遇到的狀況大體分爲兩種,一種是測試不一樣網絡情況下的大流量的表現(通常接觸的比較少),另外一種則是壓力機和服務器最好在同一網段,否則壓力沒法完整的到達後端,會在網絡層拖垮,這樣就無法較爲準確地評測服務器端的性能狀況了。若是你測試的是移動端APP,那麼你可能還要考慮在不一樣網絡狀態下的測試。函數

後端層

這裏分三種狀況,也是絕大多數企業中應用的方向,不管是Web端仍是移動APP端,在後端層性能測試的方法都是相似的。工具

業務級性能

通俗點解釋就是從頁面錄製你的場景腳本。好比,如今有一個電商網站,要經過頁面錄製腳本完成登陸、瀏覽單品頁、下單的流程。這個層級我想你們是最熟悉的,由於jmeter這個工具就是用來完成這樣的流程的,也是大部分小白同窗必學的。單元測試

這種性能測試方式有個致命的缺點就是依賴於頁面,若是頁面沒有開發完畢測試就沒法提早進行,而現實中測試時間每每被一味壓縮,所以咱們有時候也很無奈,因此如何把測試的切入點儘量的提早就顯得比較重要了。而接口級偏偏就解決了這個問題。

接口級

這個層級是大部分公司作性能測試的首選,也是最有效率的方式之一。好比,如今有一個登陸接口,你只須要知道入參、出參以及規則等便可編寫測試接口的代碼,不須要等待頁面的開發,大大提早了測試的切入點,但它要求測試工程師有必定的編碼能力。除此以外,接口級測試的擴展性強,能夠經過完成接口的性能測試和功能自動化測試框架來提高效率,性價比較高。

單元級

這個層級偏偏和接口級相反,不少公司想作,但有心無力。單元級你們理解爲相似「單元測試」便可,好比,有一個PHP代碼塊,咱們可能須要測試一下核心算法函數的性能,能夠經過插樁或引入單元測試框架來完成,從而得到它的執行時間、CPU消耗以及內存佔用率等信息來優化代碼性能。

那爲何不少公司作不起來單元級的測試?可能有如下幾個緣由

  • 業務變化太快,涉及的代碼邏輯修改也比較大,這樣作單元級測試就得不償失了。
  • 開發朋友們確實沒有太多的時間寫單元測試代碼,畢竟業務邏輯代碼寫起來也很費時,沒有太多時間搞其餘了。
  • 測試工程師編碼能力相對來講較弱,能獨當一面完成單元測試的人少之又少,在加上時間緊迫就更沒法作單元級的測試。
相關文章
相關標籤/搜索