一個使用者去通路一個頁面的請求過程,如下圖:

-
資料傳輸時間
從浏覽器輸入網址。敲回車,開始------------真實的使用者場景請不要忽略資料傳輸時間, 當我們發一個請求,到伺服器接收到這個請求需要時間,系統處理完後,将處理結果傳回給我們也需要時間。
網絡傳輸時間往往也很難模拟真實的場景,因為你網站的使用者可能來自世界各地,總不能在世界各地都搞一個用戶端,就算可以,我們通過什麼方式讓他們“同時”發送請求給伺服器呢?是以,我們的性能測試都是放在區域網路裡進行的,就是為了盡量降低傳輸時間,模拟并發。
- 用戶端處理時間
從浏覽器得到響應資料開始----------浏覽器拿到傳回的資料後,隻是一些HTML、JS、CSS、圖檔的資源,更底層當然是二進制資料,需要時間把它們渲染成我們想要的網頁。
然而,我們在LoadRunner、Jmeter進行性能測試的時候,是沒有用戶端處理時間,你當然可以打開100個網頁(多線程+Selenium實作)通路某網站試試,這沒對伺服器産生多大壓力,先把自己的電腦搞挂了。
-
系統處理時間
從系統得到請求後開始------------這是我們的性能測試主要關心的時間,當系統得到請求後,需要對請求進行處理,可能需要查詢資料庫服務,也可能調用其他服務,最終生成處理結果并傳回給用戶端。
基于以上問題,我們所做的性能測試是無法模拟真實的情況,網絡傳輸時間太過複雜,用戶端處理時間取決于使用者的裝置。我們能做的就是盡量保證伺服器端的處理時間,以及在一定的時間可以支撐的并發量。
随着,技術的發展,越來越多的系統開始做前後端分離。後端,服務隻提供接口,前端在不同的裝置上以不同的方式展示。
在這樣的架構下,我們的性能測試也劃分為後端性能和前端性能。
後端性能其實就是接口性能。我們更多時候不再設計模拟使用者場景,而是針對單個或一組關聯接口進行性能測試,這在一定的程度上降低了測試的難度。其實,不管是否是前、後端分離的架構,大多數時候它們用的都是HTTP協定,如果是前、後端不分離,當你發送一個請求時,它會傳回一堆資料:HTML,JS,CSS,圖檔,音視訊等。如果是前、後端分離的架構,那麼後端API傳回的資料就單純多了,一般為JSON格式的資料。