国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

壓力測試:使用 JMeter 進行壓力測試

這篇具有很好參考價值的文章主要介紹了壓力測試:使用 JMeter 進行壓力測試。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

新建工程

創(chuàng)建新目錄 jmeter_demo 在該目錄下打開命令行輸入:

 

shell

復制代碼

go mod init jmeter_demo go mod tidy

隨后創(chuàng)建各目錄與文件如下:

 

shell

復制代碼

-- jmeter_demo -- main main 函數目錄(啟動http和grpc服務) -- main.go -- proto grpc server 的目錄 -- chat.go -- chat.pb.gp -- chat.proto -- test_plan jmeter 測試計劃 -- test_plan.jmx go.mod

main 函數

 

go

復制代碼

package main import ( "google.golang.org/grpc" "io" proto "jmeter_demo/proto" "log" "net" "net/http" ) func main() { // start a grpc service lis, err := net.Listen("tcp", ":8000") if err != nil { log.Fatalf("Fail to listen: %v", err) } s := proto.Server{} grpcServer := grpc.NewServer() proto.RegisterChatServiceServer(grpcServer, &s) go func() { if err := grpcServer.Serve(lis); err != nil { log.Fatalf("Fail to serve: %v", err) } }() // start a http service http.HandleFunc("/fib1", fibHandler1) http.HandleFunc("/fib2", fibHandler2) go func() { http.ListenAndServe(":2000", nil) }() select {} } func fibHandler1(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodPost { w.Write([]byte("method error")) return } bodyBytes, err := io.ReadAll(r.Body) if err != nil { w.Write([]byte("read body error")) return } if string(bodyBytes) == "" { w.Write([]byte("body empty")) return } fib(0) w.Write([]byte("hello from fib handler1")) } func fibHandler2(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodPost { w.Write([]byte("method error")) return } bodyBytes, err := io.ReadAll(r.Body) if err != nil { w.Write([]byte("read body error")) return } if string(bodyBytes) == "" { w.Write([]byte("body empty")) return } fib(30) w.Write([]byte("hello from fib handler2")) } func fib(n int) int { if n < 2 { return 1 } return fib(n-1) + fib(n-2) }

main 函數非常的 簡單, 起了一個 grpc 接口 和兩個 http 接口, 兩個http 接口功能完全一致,都是運行一個斐波那契數列計算后返回一個字符串, 但兩個 handler 的返回略有不同。

grpc 服務的函數非常簡單, 直接 return 了一個字符串, 我展示出來, 就不做詳細解釋了, 具體開源參照我的另一篇博客

chat.proto

 

proto

復制代碼

syntax = "proto3"; package proto; option go_package="/"; // 定義 message message ChatMessage { string body = 1; } // 定義 service service ChatService { rpc SayHello(ChatMessage ) returns (ChatMessage ) {} }

chat.go

 

go

復制代碼

package __ import ( "fmt" "golang.org/x/net/context" ) type Server struct { } func (s *Server) SayHello(ctx context.Context, in *ChatMessage) (*ChatMessage, error) { fmt.Printf("Receive message body from client: %s \n", in.Body) return &ChatMessage{Body: "Hello From the Grpc Server!"}, nil }

Jmeter 的使用

Jmeter 環(huán)境搭建

  1. Jmeter 運行依賴于的 java 環(huán)境, 所以需要你提前安裝好 java 環(huán)境。安裝好 Java 后大家可以前往官網下載Jmeter. 這篇博客的Jmeter 版本是 Jmeter 5.6.2 版本。安裝完以后,點擊安裝目錄/bin/jmeter.bat 即可啟動jmeter.

  2. 安裝Jmeter 插件。JMeter 默認是不支持 grpc的,需要額外安裝插件, 大家可以前往JMeter的github, 下載 jmeter-grpc-request.jar 包然后放入 jmeter安裝目錄/lib/ext下。

  3. 安裝繪制響應時間圖插件。大家前往 Jmeter插件網站, 下載 plugin-manager.jar 包, 然后也是放入 jmeter安裝目錄/lib/ext下.

安裝完插件以后, 你需要重啟 JMeter

JMeter 重要概念

下面這張圖是這篇博客使用到的 JMeter 的完整展示, 我將圍繞著下圖中的各個組件對JMeter如何使用進行解釋。

壓力測試:使用 JMeter 進行壓力測試,自動化,測試工具

測試計劃 (Test Plan):

壓力測試:使用 JMeter 進行壓力測試,自動化,測試工具

測試計劃,是 Jmter 中的工作單位,Jmeter 的測試都是以測試疾患為單位的,測試計劃可以被保存,也可以被導入。 在測試計劃中可以 自定義一些變量方便后續(xù)使用。 比如我就定義了兩個變量 fib1 和 fib2. 一打開Jmeter 就會有一個 Test plan 的測試計劃放在左上角了

線程組(Thread Group)

壓力測試:使用 JMeter 進行壓力測試,自動化,測試工具

線程組,相當于測試計劃的流水線,壓測過程嚴格按照線程組的規(guī)定進行。比如我們可以設置發(fā)起壓測請求所調用的用戶線程數, 壓測的次數或者 壓測的時間, 遇到報錯如何處置(暫停測試還是進行下一次測試)等等。

我們在測試計劃右鍵 -> Add -> Thread(Users) -> Thread Group 即可添加線程組

事務控制(Transaction Controller)

壓力測試:使用 JMeter 進行壓力測試,自動化,測試工具

Jmeter 的事務和 MYSQL中的 事務類似,一個事務中可以包括多個請求, 比如 我在這篇博客中有兩個請求,一次HTTP請求, 一次GRPC 請求, 只有兩個請求都正常返回, 這個事務才算正常完成。

我們在線程組 -> Add -> Logic Controller -> Transaction ontroller 即可添加 事務控制

Sampler 采樣器

所謂采樣器就是,就是對接口進行采樣, 也就是發(fā)起請求的控制器。

http 采樣器

比如下圖的中的 http 采樣器 可以通過在 線程組, 右鍵 -> sampler -> http sampler 添加

壓力測試:使用 JMeter 進行壓力測試,自動化,測試工具

我們可以定義http方法, 請求URL,和參數進行配置。 特別的是, 我在請求地址這里用到了一個隨機函數, 可以對請求的地址進行隨機化處理, 也就是 對 fib1 和 fib2 進行 1:1 的負載均衡。 如果想要實現(xiàn)其他比例的負載均衡, 那么可以在 測試計劃設置自定義 變量的數量和比例來間接實現(xiàn)。

grpc 采樣器

grpc 采樣器 可以通過在 線程組, 右鍵 -> sampler -> grpc sampler 添加

壓力測試:使用 JMeter 進行壓力測試,自動化,測試工具

grpc 需要指定對應的 .proto 文件路徑, 如果正確添加了路徑,那么在 Full Method 的下拉框下面是可以看到函數的可選項的。proto 的字段可以通過 json 的形式進行添加。

響應斷言(Response Assertion)

所謂響應斷言, 就是判斷響應是否正常的判斷條件。比如下圖中的判斷條件是 響應是否包含特定的字符來判斷??梢栽?sampler 下右鍵 -> listener -> Response Assertion 添加

壓力測試:使用 JMeter 進行壓力測試,自動化,測試工具

查詢結果樹(View Result Tree)

查詢結果樹就是查看響應的詳細情況, 比如查詢 http 返回的body, header。 可以在 sampler 下右鍵 -> listener -> View Result Tree 添加

壓力測試:使用 JMeter 進行壓力測試,自動化,測試工具

聚合報告(Summary Report)

在聚合報告中, 可以直接輸出整個事務控制下的性能指標, 包括請求次數, 響應時長, 吞吐量,傳輸數據量等關鍵指標。 可以在事務控制器下 右鍵 -> listener -> Summary Report 添加

壓力測試:使用 JMeter 進行壓力測試,自動化,測試工具

響應時間圖(Response Time Graph)

響應時間圖可以繪制響應時間于時間的關系圖,可以自定義地設置繪圖采樣的時間區(qū)間長度, 圖片尺寸等。可以在事務控制器下 右鍵 -> listener -> Response Time Graph 添加。

壓力測試:使用 JMeter 進行壓力測試,自動化,測試工具

點擊 Display Graph 即可繪制響應時間圖:

壓力測試:使用 JMeter 進行壓力測試,自動化,測試工具

啟動測試

點擊下圖中右邊的掃把即可清理掉歷史數據, 點擊左邊的三角形即可開始測試

壓力測試:使用 JMeter 進行壓力測試,自動化,測試工具

最后輸出 響應時長圖:

壓力測試:使用 JMeter 進行壓力測試,自動化,測試工具

可以看到整個事務下的多個請求的響應時間,hello grpc 接口只是一個字符串返回,所以耗時非常短;fib http 接口由于需要計算斐波那契數列, 所以耗時更長。

踩坑經驗

JMeter 本身是一個比較成熟的壓測工具, 并無特別大的坑。 我唯一遇到的坑是頁面配置的問題。啟動 JMeter 后會開啟一個命令行, 如果遇到無法保存測試計劃, 無法啟動測試等情況, 且命令行報以下類似的錯誤:

 

shell

復制代碼

Uncaught Exception java.lang.NoClassDefFoundError: Could not initialize classorg.apache.jmeter.gui.FileDialoger in thread Thread[AWT-EventQueue-0,6,main]. See log file for details.

你可以嘗試以下更換語言(換成英語)或者更換頁面主題,點擊左上角的 Options -> Look and Feel.

作者:ChesterZhang
鏈接:https://juejin.cn/post/7338783017123102732
來源:稀土掘金
著作權歸作者所有。商業(yè)轉載請聯(lián)系作者獲得授權,非商業(yè)轉載請注明出處。文章來源地址http://www.zghlxwxcb.cn/news/detail-853189.html

到了這里,關于壓力測試:使用 JMeter 進行壓力測試的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 自動化測試實戰(zhàn)篇(8),jmeter并發(fā)測試登錄接口,模擬從100到1000個用戶同時登錄測試服務器壓力

    自動化測試實戰(zhàn)篇(8),jmeter并發(fā)測試登錄接口,模擬從100到1000個用戶同時登錄測試服務器壓力

    進程是資源分配最小單位,線程是程序執(zhí)行的最小單位; 每個進程內部會有N個線程,但至少要有1個線 程。 比如公司就是一個進程,公司的員工就是線程。 線程占用的資源要?進程少很多。 線程之間通信比進程更方便 并發(fā)是指在一個時間段內有多個進程在執(zhí)行 并行指的是

    2024年02月16日
    瀏覽(24)
  • 如何使用自動化測試工具Selenium?

    如何使用自動化測試工具Selenium?

    哈嘍,大家好,我是小浪。那么有一段時間沒有更新了,還是在忙實習和秋招的事情,那么今天也是實習正式結束啦,開始繼續(xù)更新我們的學習博客,后期主要是開發(fā)和測試的學習博客內容巨多,感興趣的小伙伴們可以一鍵三連支持一下歐~ 目錄 一、什么是自動化測試? 二、

    2024年02月11日
    瀏覽(100)
  • 接口自動化測試工具,Postman使用詳解

    接口自動化測試工具,Postman使用詳解

    1、Postman是一款功能強大的網頁調試與發(fā)送網頁HTTP請求的Chrome插件,Postman分為Postman native app和Postman Chrome app兩個版本。目前Chrome app已經停止維護,官方也不推薦使用該版本。 2、官網下載地址:http://www.getpostman.com 3:官方文檔:http://www.getpostman.com/docs 2、第二步:新建接口請

    2024年02月06日
    瀏覽(94)
  • 如何使用IOS自動化測試工具UIAutomation

    如何使用IOS自動化測試工具UIAutomation

    這篇文章主要介紹了UIAutomation使用實例、應用技巧、基本知識點總結和需要注意事項,具有一定的參考價值 第一部分: 熟悉Instruments的UIAutomation. 第二部分: 控件的獲取及操作 第三部分: 自定義自動化腳本 xcode中自帶的Instuments工具可以用來進行APP的自動化測試, 以及用于進行內

    2024年02月03日
    瀏覽(290)
  • Web測試自動化工具Selenium的使用

    Selenium是一個Web應用測試的自動化工具,它通過模擬點擊實現(xiàn)對Web應用的功能測試。測試時,除了Selenium,還需要對應的瀏覽器驅動,如在Chrome實現(xiàn)自動點擊,則需要chromedriver。 Selenium支持多種語言和多種瀏覽器,本文僅記錄python+chrome的使用。 1. 安裝python 略 2. 安裝Selenium 注

    2024年01月16日
    瀏覽(95)
  • 自動化測試工具Selenium的基本使用方法,軟件測試基礎

    自動化測試工具Selenium的基本使用方法,軟件測試基礎

    browser.find_element(By.ID,‘kw’).send_keys(“美女”) browser.find_element_by_id(‘kw’).send_keys(‘性感’) 2.通過標簽name屬性進行定位 browser.find_element_by_name(“wd”).send_keys(“Linux”) browser.find_element(By.NAME,‘wd’).send_keys(“美女”) 3.通過標簽名進行定位 browser.find_element_by_tag_name(“input”).

    2024年04月22日
    瀏覽(97)
  • Python自動化測試工具selenium使用指南

    Python自動化測試工具selenium使用指南

    概述 selenium 是網頁應用中最流行的自動化測試工具,可以用來做自動化測試或者瀏覽器爬蟲等。官網地址為:相對于另外一款web自動化測試工具QTP來說有如下優(yōu)點: 免費開源輕量級,不同語言只需要一個體積很小的依賴包 支持多種系統(tǒng),包括Windows,Mac,Linux 支持多種瀏覽器

    2024年02月04日
    瀏覽(80)
  • GUI自動化測試工具Sikulix的安裝和使用

    GUI自動化測試工具Sikulix的安裝和使用

    從程序內部控制對小白來說太難了,所以使用一下自動化測試的工具直接控制按鈕達到我的目的 官網:http://www.sikulix.com/ 下載對應系統(tǒng)的.jar 需要使用java,沒有的話安裝一下 然后在sikulix的下載目錄下執(zhí)行 安裝成功后就會彈出軟件的窗口 上圖左邊是寫程序的地方,右邊是日

    2023年04月26日
    瀏覽(94)
  • 自動化測試工具 —— selenium介紹及基本使用方法

    自動化測試工具 —— selenium介紹及基本使用方法

    Selenium是一個開源、免費、簡單、靈活,對Web瀏覽器支持良好的自動化測試工具,在UI自動化、爬蟲等場景下是十分實用的,能夠熟練掌握并使用Selenium工具可以大大的提高效率。 Selenium簡介 Selenium支持多平臺、多瀏覽器、多語言去實現(xiàn)自動化測試,是一個開源和可移植的Web測

    2024年02月05日
    瀏覽(92)
  • 自動化測試工具 AirTest 的使用方法與簡介

    自動化測試工具 AirTest 的使用方法與簡介

    目錄 ? ? ? ? 前言: Airtest簡介 1.基于圖像識別的Airtest框架 2.基于UI識別的Poco框架 Airtest環(huán)境搭建 Airtest布局 Airtest使用步驟 第一步:連接移動設備 第二步:創(chuàng)建一個.air文件(也就是我們的測試腳本) 第三步:用Airtest輔助窗口編輯第一個測試腳本 第四步:引入Poco Airtest常用

    2024年02月10日
    瀏覽(106)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包