國家航空航天、輪船、建筑、水利及大中小型企業等大批量生產制造中離不開電阻焊的運用,電阻在如今已經有成熟的技術積累。但在產品焊接初期,對焊接強度的檢測依舊是十分重要的。可以有效的避免之后焊接質量出現問題。要防止這類事故產生就要依靠焊接質量的檢測。
一般焊機質量檢測分成兩類方式:第一、目視檢測、密封性檢測和提升規定載荷下的接頭強度檢測等。第二、依靠物理檢測方式,可以運用X射線檢測、超聲波檢測、渦流檢測、熱圖像法和檢測和磁粉檢測等。
駿騰發點焊機|電阻焊的焊縫質量有什么檢測方式
因而加強品質的管理是大家首要保證的基礎:壓力檢測:焊接發熱量受電極與工件間接觸電阻十分大,焊接時壓力要平穩,因而要應用壓力測試儀器開展檢測,也有一類狀況是,電極無法緊跟工件,而發生異常的飛濺,焊接機頭要查驗。電極熱度過高:挑選高品質電極,而偽劣電極會造成電極熱度過高,危害電極自身的使用壽命,造成工件品質不符合標準。
電極修磨:電極歸屬于消耗品,伴隨著焊接頻次的提升,電極表層會發生氧化物及油脂,也會使電阻擴大,要按時應用修磨器按時修磨,也需要依據焊接頻次替換新電極。
工件精度:沒依據焊接參數而選定工件,例如工件厚度、材質等會造成焊接不良率提升。
電流測試:危害電流變化的緣故有:電源、電源的波動、超載應用。
轉載自:http://www.china-welding.com/articles/dzhdhf2588.html
者:lovesoo
來源:blog.csdn.net/lovesoo/article/details/78579547
1. Jmeter簡介
Apache JMeter是一款純java編寫負載功能測試和性能測試開源工具軟件。相比Loadrunner而言,JMeter小巧輕便且免費,逐漸成為了主流的性能測試工具,是每個測試人員都必須要掌握的工具之一。
本文為JMeter性能測試完整入門篇,從Jmeter下載安裝到編寫一個完整性能測試腳本、最終執行性能測試并分析性能測試結果。
運行環境為Windows 10系統,JDK版本為1.8,JMeter版本為3.3。
2. Jmeter安裝
2.1 JDK安裝
由于Jmeter是基于java開發,首先需要下載安裝JDK (目前JMeter只支持到Java 8,尚不支持 Java 9)
1.官網下載地址:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
2.選擇Java SE 8u151/ 8u152,點擊JDK下載
3.安裝下載的JDK
4.配置系統環境變量
2.2 JMeter安裝
1.官網下載地址:
http://jmeter.apache.org/download_jmeter.cgi
2.下載最新JMeter 3.3版本:apache-jmeter-3.3.zip
3.下載完成后解壓zip包
4.啟動JMeter
雙擊JMeter解壓路徑(apache-jmeter-3.3\bin)bin下面的jmeter.bat即可
3. 測試實例
我們選取最常見的百度搜索接口:
3.1 接口地址
http://www.baidu.com/s?ie=utf-8&wd=jmeter性能測試
3.2 請求參數
ie:編碼方式,默認為utf-8
wd: 搜索詞
3.3 返回結果
搜索結果,我們可以通過校驗結果中是否含有搜索詞wd來判斷本次請求成功或失敗。
4. JMeter腳本編寫
4.1 添加線程組
右鍵點擊“測試計劃” -> “添加” -> “Threads(Users)” -> “線程組”
這里可以配置線程組名稱,線程數,準備時長(Ramp-Up Period(in seconds))循環次數,調度器等參數:
線程組參數詳解:
因為接口調試需要,我們暫時均使用默認設置,待后面真正執行性能測試時再回來配置。
4.2 添加HTTP請求
右鍵點擊“線程組” -> “添加” -> “Sampler” -> “HTTP請求”
對于我們的接口http://www.baidu.com/s?ie=utf-8&wd=jmeter性能測試,可以參考下圖填寫:
Http請求主要參數詳解:
1.Web服務器
2.Http請求
3.同請求一起發送參數
在請求中發送的URL參數,用戶可以將URL中所有參數設置在本表中,表中每行為一個參數(對應URL中的 name=value),注意參數傳入中文時需要勾選“編碼”
4.3 添加察看結果樹
右鍵點擊“線程組” -> “添加” -> “監聽器” -> “察看結果樹”
這時,我們運行Http請求,修改響應數據格式為“HTML Source Formatted”,可以看到本次搜索返回結果頁面標題為”jmeter性能測試_百度搜索“。
4.4 添加用戶自定義變量
我們可以添加用戶自定義變量用以Http請求參數化,右鍵點擊“線程組” -> “添加” -> “配置元件” -> “用戶定義的變量”:
新增一個參數wd,存放搜索詞:
并在Http請求中使用該參數,格式為:${wd}
4.5 添加斷言
右鍵點擊“HTTP請求” -> “添加”-> “斷言” -> “響應斷言”
我們校驗返回的文本中是否包含搜索詞,添加參數${wd}到要測試的模式中:
4.6 添加斷言結果
右鍵點擊“HTTP請求” -> “添加”-> “監聽器” -> “斷言結果”
這時,我們再運行一次就可以看到斷言結果成功或失敗了
4.7 添加聚合報告
右鍵點擊“線程組” -> “添加” -> “監聽器” -> “聚合報告”,用以存放性能測試報告
這樣,我們就完成了一個完整Http接口的JMeter性能測試腳本編寫。
5. 執行性能測試
5.1 配置線程組
點擊線程組,配置本次性能測試相關參數:線程數,循環次數,持續時間等,這里我們配置并發用戶數為10,持續時間為60s
5.2 執行測試
點擊綠色小箭頭按鈕即可啟動測試,測試之前需要點擊小掃把按鈕清除之前的調試結果。
6. 分析測試報告
待性能測試執行完成后,打開聚合報告可以看到:
聚合報告參數詳解:
一般而言,性能測試中我們需要重點關注的數據有:#Samples 請求數,Average 平均響應時間,Min 最小響應時間,Max 最大響應時間,Error% 錯誤率及Throughput 吞吐量。
7. 源碼下載
至此,我們使用JMeter完成了一個完整的Http接口性能測試流程,從腳本編寫,執行到最終結果分析。
在代碼寫好之后,通常需要對場景進行性能測試,例如購買商品場景、登錄場景、支付場景等,此階段會出現的典型問題如下:
(1)當前登錄場景可能需要調用N個接口,每天高峰期的時候,應用程序可以承受多少人登錄。
(2)秒殺系統最多可以讓多少人同時單擊“購買”按鈕而不出現異常。
(3)連續100小時以上的疲勞測試是否會使系統內存出現無法下降、GC無法回收內存、疲勞測試之后CPU無法正常下降等問題。
(4)在并發壓力下,應用程序哪里消耗資源過多,需要進行優化?
(5)在復雜場景下,整體接口包含調用邏輯,其中可能包括if-else判斷、for/while循環、獲取上一個接口的信息傳輸到下一個接口中等操作,如何簡化這部分性能測試的需求?
(6)針對協議如何進行測試?例如HTTP輪詢與WebSocket哪個更消耗性能?大概相差多少?
(7)當單臺壓力機無法生成更大的壓力時,如何增加壓力機?
針對上面提出的問題,全部可以通過JMeter解決。
JMeter是100%完全由Java編寫的對軟件進行性能測試的桌面程序,其桌面GUI部分可方便用戶用無代碼的方式編寫性能測試腳本。待測試腳本編寫完成之后,通常使用后臺啟動JMeter的方式運行性能測試腳本(因為GUI消耗資源過多)。
與JMH不同的是,JMeter通常以多個代碼單元組合成場景,模擬真正用戶進行操作的調用順序進行測試,其結果更加符合上線后的實際需求。也就是說,JMeter更擅長對項目整體進行測試與優化,而JMH更擅長對代碼局部進行測試與優化。
JMeter可以對多種協議進行性能測試,包括并不限于HTTP、HTTPS、WS、WSS、TCP、UDP、SOAP和FTP。除此之外,還可以對NoSQL、MySQL、JMS等數據源或容器進行性能測試。
除編寫性能測試腳本外,JMeter還支持使用腳本錄制的方式進行性能測試,即通過網頁代理進行頁面上的操作,其操作流程會被直接錄制下來,并自動轉換成性能測試腳本。此后每次測試時,只需直接使用腳本進行性能測試即可。在JMeter腳本錄制的輔助下,再困難的業務邏輯也可以輕松地進行測試。
JMeter具有制作良好的GUI,即便初次接觸的人,也可以迅速理解它并進行操作。
JMeter具有各種可插拔的插件,因為JMeter的應用范圍較為廣泛,所以插件數量龐大。其插件完全由Java語言編寫,方便因特殊業務邏輯進行自我擴展。
JMeter包含各種斷言、采樣器等功能,方便用戶在性能測試過程中,獲取接口返回值,并對返回值進行參數化處理。例如,在調用接口2時,使用從接口1處返回的數值。
除性能測試外,JMeter在CI/CD領域也可以配合其他工具實現接口自動化測試架構,如JMeter+Ant+Jenkins等。
取樣器(Sampler):取樣器是JMeter的基礎單元,通常各種協議的請求皆由取樣器發起。例如,HTTP請求、FTP請求、JMS發布與訂閱、Java請求、LDAP請求、JDBC請求、TCP請求、SMTP請求和WebSocket請求(需下載額外插件)等。
配置元件(ConfigurationElement):配置元件主要對取樣器中的各種請求進行輔助配置。例如,HTTP信息頭管理器、HTTP緩存管理器、HTTPCookie管理器、JDBC連接配置、LDAP擴展請求、FTP默認請求、TCP取樣器配置等。另外,在配置元件中還包含一些與測試計劃相關的配置元件,主要包括計數器、用戶定義的變量等。
邏輯控制器(Logic Controller):邏輯控制器主要控制JMeter腳本的執行順序。例如,從接口1處請求得到的結果,經過邏輯控制器判斷之后,會控制執行到接口2或接口3。邏輯控制器的存在使得整體測試的靈活度更高。
邏輯控制器中主要包含if控制器、事務控制器、循環控制器、While控制器、臨界部分控制器、ForEach控制器、僅執行一次控制器、吞吐量控制器和Switch控制器等。
前置處理器(Pre-Processor):在執行取樣器之前,需執行前置處理器。前置處理器主要包括HTML鏈接解釋器、HTML URL重寫修飾符和取樣器超時等。
后置處理器(Post-Processor):在執行取樣器之后,需執行后置處理器。后置處理器主要包括CSS/JQuery提取器、JSON提取器、邊界提取器、BeanShell斷言和正則表達式提取器等。這些后置處理器在提取數據之后,可對上一個請求得到的結果進行參數化,并傳輸到下一個請求中。
斷言(Assertion):斷言可用來驗證服務器返回的數據與預期是否相符,如果不相符,可以記錄或停止測試計劃。斷言主要包括響應斷言、JSON斷言、大小斷言、HTML斷言、XML斷言和BeanShell斷言等。
定時器(Timer):在測試計劃執行過程中,定時器主要用來減緩線程運行。例如,線程在請求接口1執行之后,需暫停若干ms之后再請求接口2。定時器主要包括固定定時器和隨機定時器等。
監聽器(Listener):監聽器主要用來收集測試結果報告。監聽器主要包括:察看結果樹、斷言結果和聚合報告等。另外,在下載插件之后,還可以監聽被測試端機器的CPU和內存等信息。
JMeter的功能繁多,本章內容僅為拋磚引玉。JMeter除自身所帶功能外,還可通過添加jar包的方式,增加更多的配置元件、請求方式等。若某些測試場景連擴展功能都無法滿足,則可自行編寫Java程序對接的JMeter接口,生成jar包,并在JMeter中當作擴展的配置原件進行使用。
JMeter參數化的實現方式
JMeter參數化的實現方式如下:
? JMeter函數:JMeter函數指GUI界面→工具→函數助手對話框中JMeter自帶的函數內容,主要包括Random(隨機數字)、RandomString(隨機字符串)、RandomDate(隨機時間)、splt(字符串拆分)、property(自定義數值)、UUID和char等。
? JMeter讀取外部文件:讀取外部配置文件的方式較多,包括JMeter函數 中 的 StringFromFile ( 從 文 件 中 讀 取 字 符 串 ) 、 配 置 元 件 中 的CSVDataSetConfig(從CSV文件中讀取配置信息)等。
? JMeter提取上一個接口返回值:通常通過后置處理器中的BeanShell斷言、JSON提取器和正則表達式提取器等方式提取相應返回值。
JMeter在提取數據后,需要在HTTP請求腳本中通過${變量名稱}的形式使用參數化變量,并且除請求body外,在任何地方都可以使用變量名稱。例如,路徑、服務器名稱或IP地址、端口號、協議和編碼等。
JMeter函數
JMeter函數的位置如圖5-1所示。
圖5-1
JMeter函數助手對話框如圖5-2所示。
圖5-2
在配置相應內容之后,可單擊“生成”按鈕,生成相關函數,如圖5-3所示。
圖5-3
此次示例中使用的是RandomString函數。在Charts to use for randomstring generation對話框中隨機輸入若干數字、字母、漢字,此函數會隨機拆分。在Random string length中,從The result of the function is對話框中可以看到該函數的返回結果。復制生成的函數,即可在請求中進行使用,如圖5-4所示。
圖5-4
從察看結果樹處或后臺處可以看到已經發送過去了一段隨機字符串,如圖5-5所示。
圖5-5
通過JMeter讀取外部文件
創建a.csv文件,如圖5-6所示。
圖5-6
在測試計劃中添加CSV Data Set Config(CSV數據文件設置器),如圖5-7所示。
圖5-7
配置之后,讀取a.csv文件中的數據并編寫HTTP請求部分的內容。
通過JMeter提取上一個接口返回值
為方便測試,下面更改代碼,如圖5-8所示。
圖5-8
在測試計劃中添加JSON提取器,如圖5-9所示。編寫JSON提取器的相應規則,在Names of created variables后面的文本框中填寫需要在HTTP請求中編寫的變量名稱,在JSON Path expressions后面的文本框中填寫JSON的value值映射,如圖5-10所示
圖5-9
圖5-10
配置之后,讀取接口中的數據并進行HTTP請求部分的編寫,此時整體測試計劃應如圖5-11所示。getAge的請求結果如圖5-12所示。
圖5-11
圖5-12
從官網下載JMeter的5.4.1版本之后,直接運行JMeter.bat文件,即可在Windows 系 統 下 打 開 JMeter 的 GUI 控 制 頁 面 , 單 擊Options→ChooseLanguage→Chinese(Simplified)選項,修改顯示語語,如圖5-13所示。
圖5-13
在修改顯示語言之后,在Test Plan(測試計劃)下添加線程組,如圖5-14所示。
圖5-14
線程組窗口如圖5-15所示。
圖5-15
? 線程數:指此次測試總共開啟的線程數。
? Ramp-Up時間(秒):表示在多長時間內開啟所有的線程數。若該時間設置過長,則可能導致在剛啟動時請求壓力不足,平均結果不符合實際預期。若該時間設置過短,則可能導致在剛啟動時請求壓力過大,服務器直接崩潰。該時間應根據具體項目進行設置,通常設置為線程數的10%即可。
? 循環次數:指整體線程組的循環執行次數,通常請求的事務總數為線程數×循環次數。
? 調度器:需要配合“循環次數”和“永遠”選項同時使用,即不按循環次數進行執行線程,而是根據時間循環所有線程。該方式為性能測試的常見方式,通常在調試完腳本之后,選擇調度器增加持續時間即可。在使用調度器之后,線程會盡可能地執行,所以其總事務數沒有預期,可在執行時長之后,從聚合報告上查看總事務數。
在添加線程組之后,需添加HTTP請求的取樣器,如圖5-16所示。
圖5-16
HTTP請求窗口如圖5-17所示。HTTP請求的取樣器的使用方式與Postman幾乎沒有差別,只需按規定輸入相關的內容即可。
圖5-17
部分HTTP請求需配置HTTP請求頭,即在HTTP請求頭中輸入token之類的內容。此時可在HTTP請求的級別下,添加HTTP信息頭管理器配置元件,在配置元件中編寫相關內容,如圖5-18所示。
圖5-18
在針對HTTP請求相關內容進行配置之后,需要對整體測試結果進行監控,通常使用察看結果樹和聚合報告對測試結果進行監控,如圖5-19所示。
圖5-19
在察看結果樹中可以看到每次請求的請求值與返回結果等相關信息。在高并發測試下,由于數據量過大,建議在察看結果樹中進行配置,使其只返回錯誤的結果即可。
聚合報告中包含總請求事務數、中位數與百分位的響應時間、異常數量與異常所占百分比、吞吐量、接收與發送的每秒帶寬占用量等。
值得注意的是,察看結果樹需通常放置在HTTP請求的下一級別或同一級別中,而聚合報告需要與HTTP請求處于同一級別。這是因為如果在測試計劃中包含多個HTTP請求,并且聚合報告處于HTTP請求之下,則聚合報告只返回該HTTP請求的響應情況,不會返回多個HTTP請求的整體情況。
前面已經配置好了一個包含HTTP請求的壓力測試腳本,保存這個壓力測試腳本即可。
在GUI模式下啟動JMeter,如圖5-20所示。
圖5-20
察看結果樹的返回結果如圖5-21和圖5-22所示。
圖5-21
圖5-22
此時已確定該腳本是可以正常運行的,下面增加線程組的線程數并配置調度器,再次保存腳本,并使用非GUI模式(命令行模式)啟動JMeter,命令如下所示:
命令解析如下所示:
? -h:幫助,打印出有用的信息并退出。
? -n:在非GUI模式下運行JMeter。
? -t:要運行的JMeter測試腳本文件。
? -l:輸出日志文件,即記錄結果的文件。此時所編寫的為要輸出的文件名稱,在原來的文件夾中不需要包含這個文件。
? -r:遠程執行,在Jmter.properties文件中指定所有遠程服務器。
? -H:設置JMeter使用的代理主機。
? -P:設置JMeter使用的代理主機的端口號。
在執行JMeter命令后,結果如圖5-23所示。
圖5-23
生成的日志文件如圖5-24所示,其中a.jmx文件為JMeter測試腳本文件,a.jtl文件為JMeter測試報告。
圖5-24
可通過聚合報告中的瀏覽按鈕打開圖5-24中生成的測試報告,如圖5-25所示。
圖5-25
如果在編寫腳本時出現錯誤,則可以通過選項菜單下的日志查看功能,查看JMeter的具體報錯內容,如圖5-26與圖5-27所示。
圖5-26
圖5-27
錄制性能測試腳本
錄制性能測試腳本指通過在頁面單擊的形式,記錄所有的請求信息,包括HTTP內響應信息與響應頭等。錄制性能測試腳本是性能測試過程中最常用的技術,在錄制性能測試腳本之后,會對其參數進行微調,然后使用該腳本進行性能測試。
通常使用JMeter自帶的HTTP代理服務器錄制性能測試腳本,除此之外,還可以使用BadBoy工具對頁面進行錄制,并通過BadBoy工具將錄制的腳本另存為.jmx文件。下面在JMeter中添加HTTP代理服務器,如圖5-28所示。
圖5-28
在HTTP代理服務器中可編寫自定義的代理端口號,并在目標控制器中進行配置。目標控制器指該次錄制的腳本將放置在哪個線程組中。在配置結束后單擊啟動按鈕即可,如圖5-29所示。
圖5-29
在搭建好JMeter的代理服務器之后,需配置本地計算機的Internet屬性,增加代理服務器與剛自定義的端口號,如圖5-30所示。此后隨意單擊一些頁面即可看到通過代理服務器進行請求的接口都已錄制到線程組中,如圖5-31所示。
(1)編寫JMeter腳本,一臺JMeter模擬正常用戶正在使用,另一臺JMeter模擬登錄,將模擬登錄的JMeter性能提高一些。最后得到的JMeter報表即為當前應用程序可以承受的最大壓力。
(2)該測試可將JMeter的壓力開到最大,同時監控秒殺系統的CPU和內存是否出現異常,并定時檢查不同數據源的數據是否保持數據一致性,即可得知當前秒殺系統可承載多大的壓力。
(3)該測試需要服務器不斷運行,在運行之后查看JVM的GC信息、CPU與內存信息,確保程序上線后,在長時間運行的情況下,可以將使用的內存正常回收起來。很多程序在剛運行的時候是沒有問題的,但是無法長時間運行,此測試就是針對這種情況進行的。
圖5-30
圖5-31
(4)該測試需要編程人員在測試過程中使用Arthas等相關工具,監控當前測試的接口,了解線程消耗。例如,當前使用Redisson操作Redis,則需要查看Redisson實際開啟了多少個Thread線程,并且每個線程消耗了多少CPU與內存。或查看某個接口中哪個子函數的響應速度最慢。這種優化類的測試屬于細致類的工作,需要大量的時間進行排查,以提高應用程序的單節點性能(縱向優化)。
(5)可以用JMeter腳本錄制的方式,通過JMeter自帶的網絡代理在網頁上仿照正常用戶單擊網頁即可獲得完整的JMeter腳本,只需調整一下JMeter參數化傳遞即可。
(6)通過不同的JMeter插件即可完成對不同協議的測試。JMeter官方地址包含大部分協議與工具的插件應用,并且配備了相關教程,十分方便。
(7)當單臺JMeter無法增加更大壓力時,可部署JMeter集群。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。