1. 程式人生 > >[搬運工系列]-JMeter(000)Jmeter常見問題

[搬運工系列]-JMeter(000)Jmeter常見問題

1.  JMeter的工作原理是什麼?

  向伺服器提交請求;從伺服器取回請求返回的結果。   2.  JMeter的作用?   JMeter可以用於測試靜態或者動態資源的效能(檔案、Servlets、Perl指令碼、java物件、資料庫和查詢、ftp伺服器或者其他的資源)。JMeter用於模擬在伺服器、網路或者其他物件上附加高負載以測試他們提供服務的受壓能力,或者分析他們提供的服務在不同負載條件下的總效能情況。你可以用JMeter提供的圖形化介面分析效能指標或者在高負載情況下測試伺服器/指令碼/物件的行為。 3. 在伺服器中使用非GUI模式下執行指令碼
(1)使用csv元件時,需要把csv檔案上傳至伺服器的jmeter的bin路徑下 (2)使用csvread函式時,不需要上傳檔案   4.   怎樣設定併發使用者數?   選中視覺化介面中左邊樹的Test Plan節點,單擊右鍵,選擇Add-> Thread Group,其中Number of Threads引數用來設定傳送請求的使用者數目。   5.  JMeter的執行指示?   Jmeter在執行時,右上角有個單選框大小的小框框,執行是該框框為綠色,執行完畢後,該框框為白色。   6.  User Parameters的作用是什麼?
  提高指令碼可用性   7.   在result裡會出現彩色字型的http response code,說明什麼呢?   Http response code是http返回值,彩色字型較引人注目,可以使使用者迅速關注。象綠色的302就說明在這一步驟中,返回值取自本機的catch,而不是 server。   8.   怎樣計算Ramp-up period時間?   Ramp-up period是指每個請求發生的總時間間隔,單位是秒。如果Number of Threads設定為5,而Ramp-up period是10,那麼每個請求之間的間隔就是10/5,也就是2秒。Ramp-up period設定為0,就是同時併發請求。   9.    Get和Post的區別?
  他們是http協議的2種不同實現方式。Get是指server從Request URL取得所需引數。從result中的request中可以看到,get可以看到引數,但是post是主動向server傳送引數,所以一般看不到這些引數的。   10. 哪些原因可能導致error的產生?   a.   Http錯誤,包括不響應,結果找不到,資料錯誤等等;   b.   JMeter本身原因產生的錯誤。   11. 為什麼Aggregate Report結果中的Total值不是真正的總和?   JMeter給結果中total的定義是並不完全指總和,為了方便使用,它的值表現了所在列的代表值,比如min值,它的total就是所在列的最小值。下圖就是total在各列所表示的意思。   12.  JMeter的Thread Number是提供多個不同使用者併發的功能麼?   不是,Thread Number僅僅是指併發數,如果需要實現多個不同使用者併發,我們應該採用其它方法,比如通過在jmeter外建立csv檔案的方法來實現。   13. 同時併發請求時,若需要模擬不同的使用者同時向不同的server併發請求,怎樣實現呢?   方法很靈活,我們可以將不同的server在thread裡面預先寫好。或者預先將固定的變數值寫入csv檔案,這樣還可以方便修改。然後將檔案新增到User Parameters。   14.   User Parameter中的DUMMY是什麼意思?   當其具體內容是${__CSVRead(${__property(user.dir)}${FILENAME},next())}時用來模擬讀檔案的下一行。   15.   當測試物件在多server間跳轉時,應該怎樣處理?   程式執行時,有些http和隱函式會攜帶另外的server IP,我們可以從他們的返回值中獲取。   16.   為何測試物件是http和https混雜出現?   Https是加密協議,為了安全,一般不推薦使用http,但是有些地方,使用https過於複雜或者較難實現,會採用http協議。   17.   Http和https的預設埠是什麼?   Apache server (Http)的預設埠是80;   SSL (Https)的預設埠是443。   18.   為何在run時,有些頁面失敗,但是最後不影響結果?   原因較多,值得提及的一種是因為主流頁面與它不存在依賴關係,所以即使這樣的頁面出錯,也不會影響執行得到正常結果,但是這樣會影響到測試的結果以及分析結果。   19. 為什麼指令碼剛開始執行就有錯誤,其後來的指令碼還可執行?   在Thread Group中有相關設定,如果選擇了continue,即使前面的指令碼出現錯誤,整個thread仍會執行直到結束。選擇Stop Thread會結束當前thread;選擇Stop Test則會結束全部的thread。推薦選項是Stop Thread。   20.     在Regular expression_r Extractor會看到Template的值是$1$,這個值是什麼意思呢?   $1$是指取第一個()裡面的值。如果Regular expression_r的數值有多個,用這種方法可以避免不必要的麻煩。
21.    Regular expression_r中的(.*)是什麼意思?   那是一個正則表示式(regular expression_r)。’.’等同於sql語言中的’?’,表示可有可無。’*’表示0個或多個。’()’表示需要取值。(.*)表達任意長度的字串。   22.   在讀取Regular expression_r時要注意什麼?   一定要保證所取數值的絕對唯一性。   23.   怎樣才能判斷什麼樣的情況需要新增Regular expression_r Extractor?   檢查Http Request中的Send Parameters,如果有某個引數是其前一個page中所沒有給出的,就要到原檔案中查詢,並新增Regular expression_r Extractor到其前一page的http request中。   24.   在自動獲取的指令碼中有時會出現空的http request,是什麼意思呢?   是因為在獲取指令碼時有些錯誤,是指令碼工具原因。在run時這種錯誤不參與執行的。   25.   在執行結果中為何有rate為N/A的情況出現?   可能因為JMeter自身問題造成,再次執行可以得到正確結果。   26.   常用http錯誤程式碼有哪些?   400無法解析此請求。   403禁止訪問:訪問被拒絕。   404找不到檔案或目錄。   405用於訪問該頁的HTTP動作未被許可。   410檔案已刪除。   500伺服器內部錯誤。   501標題值指定的配置沒有執行。   502 Web伺服器作為閘道器或代理伺服器時收到無效的響應。   27.    Http request中的Send Parameters是指什麼?   是指code中寫定的值和自定義變數中得到的值,就是在執行頁面時需要的引數。   28.    Parameters在頁面中是不斷傳遞的麼?   是的。引數再產生後會在頁面中一直傳遞到所需頁面。所以我們可以在動態引數產生時捕獲它,也可以在所需頁面的上一頁面捕獲。(但是這樣可能有錯誤,最好在產生頁面獲取)   29.   在使用JMeter測試時,是完全模擬使用者操作麼?造成的結果也和使用者操作完全相同麼?   是的。JMeter完全模擬使用者操作,所以操作記錄會全部寫入DB.在執行失敗時,可能會產生錯誤資料,這就取決於指令碼檢查是否嚴謹,否則錯誤資料也會進入DB,給程式執行帶來很多麻煩。