999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于JMeter的接口撥測系統(tǒng)設計

2024-04-14 18:20:34黃鵬高雅濛程小賢
機電信息 2024年7期

黃鵬 高雅濛 程小賢

摘要:隨著網(wǎng)絡應用數(shù)量的持續(xù)增長,服務質(zhì)量已經(jīng)成為決定用戶體驗的核心因素。面對網(wǎng)絡環(huán)境下應用質(zhì)量保障的挑戰(zhàn),確保網(wǎng)絡應用的穩(wěn)定性以支持其順暢運行顯得尤為重要。通過實時監(jiān)測和快速故障診斷,能夠迅速定位并解決問題,縮短故障的持續(xù)時間,從而增強應用的穩(wěn)定性。鑒于此,全面介紹了撥測系統(tǒng)的背景、理論基礎以及接口測試工具的選擇比較;然后引入JMeter的相關知識,為自主研發(fā)撥測系統(tǒng)的架構(gòu)和模塊設計提供了理論支撐,并詳盡描述了自研撥測系統(tǒng)的設計流程;最后對自研系統(tǒng)的優(yōu)點進行闡述,通過接口撥測實現(xiàn)對Web應用可用性的監(jiān)控,證明了該系統(tǒng)具有很高的實用價值。

關鍵詞:JMeter工具;接口測試;健康檢查;撥測系統(tǒng);任務調(diào)度

中圖分類號:TP319? ? 文獻標志碼:A? ? 文章編號:1671-0797(2024)07-0026-04

DOI:10.19514/j.cnki.cn32-1628/tm.2024.07.007

0? ? 引言

隨著網(wǎng)絡技術的快速發(fā)展,采用B/S架構(gòu)應用成為企業(yè)信息化主流。但網(wǎng)絡應用也存在服務無法訪問、異常等問題,造成用戶體驗不佳等。現(xiàn)在應用缺少監(jiān)測手段,故障發(fā)現(xiàn)周期長,進而解決緩慢,甚至有些情況下會導致業(yè)務受影響中斷,但無告警產(chǎn)生,直到用戶投訴大量產(chǎn)生時,系統(tǒng)故障才被發(fā)現(xiàn)。

因此,監(jiān)控保障應用穩(wěn)定性變得尤為重要。撥測系統(tǒng)扮演著關鍵角色,相比于傳統(tǒng)人工接收故障工單反饋,它能在提升應用穩(wěn)定性方面發(fā)揮重要作用,通過對網(wǎng)絡應用的實時測量,幫助用戶快速識別問題,快速響應處理并解決問題,縮短故障的持續(xù)時間,減小影響范圍。

1? ? 撥測系統(tǒng)原理

與被動模式相反,撥測系統(tǒng)[1]采用主動模式,它通過內(nèi)部觸發(fā)接口調(diào)用判斷和監(jiān)控應用的正確性來監(jiān)控保障應用的穩(wěn)定性。業(yè)務應用程序?qū)ν獗┞督涌冢瑩軠y系統(tǒng)通過模擬客戶端或者Web瀏覽器向應用程序發(fā)送請求,應用程序接收請求后對接收到的數(shù)據(jù)做處理,同時向撥測系統(tǒng)返回請求應答,然后撥測系統(tǒng)解析響應體是否符合預期,判斷應用程序是否正常,是否對外正常提供服務,可以幫助確保應用程序的質(zhì)量和可靠性。

通常判斷響應體是否符合預期有以下兩種方式:

1)判斷響應狀態(tài)碼[2]:應用程序默認請求成功會返回狀態(tài)碼200;假如請求錯誤返回400、404、500等狀態(tài)碼,則意味著Web應用出錯。

2)判斷響應數(shù)據(jù):通過相等、包含、正則表達式等手段檢查數(shù)據(jù)特性是否正確與完整,從而判斷應用程序的正確性。

2? ? 接口測試工具對比

撥測系統(tǒng)底層采用接口測試方式實現(xiàn)。市面上有很多測試工具可供選擇,下面就常見的三種方式進行介紹:

1)編程方式:使用開源社區(qū)封裝的Http客戶端工具包,通過編寫程序方式調(diào)用接口,接收響應,判斷檢測結(jié)果。此方式靈活性、定制化程度高,但耦合性也同樣高,后續(xù)修改可能大,不利于擴展。

2)Postman工具[3]:它是一款輕量級接口測試工具,主要測試RESTful[4]接口,其特點包括簡單易用、界面簡潔、快速上手;專注于Http請求,功能相對簡單,響應斷言支持不夠。它適合作為一個獨立工具,在開發(fā)、自測階段供程序員使用。

3)JMeter工具[5]:它是Apache基金會開發(fā)的一款功能全面的性能測試工具,既支持性能測試,也支持接口測試。純Java跨平臺工具,支持Windows、Linux多平臺;功能強大,支持編程式的前置后置處理,靈活度高;可作為獨立工具使用,也提供開發(fā)庫方便程序使用。

通過上述接口測試工具的對比可知,JMeter工具既可作為獨立工具做接口測試和排錯,又可被程序調(diào)用使用,功能強大,擴展能力強,自研系統(tǒng)將基于JMeter腳本設計撥測系統(tǒng)。

3? ? 自研撥測系統(tǒng)

3.1? ? 創(chuàng)建JMeter腳本步驟

自研撥測系統(tǒng)以JMeter腳本為核心,圍繞Jmx腳本上傳、執(zhí)行、結(jié)果解析、告警構(gòu)建業(yè)務系統(tǒng),因此在詳細介紹系統(tǒng)設計之前,有必要就如何創(chuàng)建JMeter腳本做簡要介紹。按照下述步驟創(chuàng)建Jmx腳本:

1)啟動JMeter應用:進入JMeter_Home下的bin目錄,雙擊jmeter.bat文件啟動程序界面;

2)創(chuàng)建測試計劃:打開JMeter后,首先創(chuàng)建測試計劃,選中“測試計劃”,右鍵選擇添加“線程組”,在線程組界面根據(jù)需要設置線程數(shù)、啟動時間、循環(huán)次數(shù)等參數(shù);

3)添加采樣器:在線程組處右鍵,選擇添加“HTTP Request”采樣器,在HTTP采樣器界面上填寫服務器IP、端口、路徑、請求方式、參數(shù)等信息;

4)添加配置元素:根據(jù)需要,可以在線程組和采樣器上添加配置元素,比如添加Http Cookie管理器、Http請求頭管理器、默認配置等內(nèi)容;

5)添加預處理和后處理器:在線程組和采樣器上增加處理器,用于對采樣器發(fā)送請求前的攔截處理、響應后的數(shù)據(jù)處理;

6)添加斷言:在采樣器上添加斷言,用于驗證服務器響應是否符合預期;

7)添加監(jiān)聽器:在線程組上添加各類監(jiān)聽器,對線程組下所有采樣器的執(zhí)行數(shù)據(jù)進行收集、分析和展示。

通過上述步驟,完成對第三方接口的測試配置,點擊“運行”按鈕測試接口正確性,這樣就完成了一個JMeter腳本的編寫,最后點擊“保存”按鈕會生成一個Jmx腳本文件,自研撥測系統(tǒng)利用Jmx文件實現(xiàn)應用的撥測功能。

3.2? ? 架構(gòu)設計

自研撥測系統(tǒng)采用程序加JMeter腳本方式設計實現(xiàn)。圖1展示了整個系統(tǒng)的設計圖,整個系統(tǒng)分為三個部分:

第一部分生成Jmx文件,利用前面小節(jié)的JMeter創(chuàng)建步驟,編寫、調(diào)試并生成Jmx腳本,保證Jmx正確實現(xiàn)對第三方應用程序的接口調(diào)用。

第二部分是自研撥測系統(tǒng),它由多個模塊組成,模塊相互配合,完成Jmx腳本的保存/執(zhí)行、結(jié)果的解析、異常告警的觸發(fā)。

第三部分為第三方應用服務,它們對外開放暴露接口,方便撥測系統(tǒng)檢測服務狀態(tài)。

3.3? ? 模塊設計

依據(jù)撥測系統(tǒng)架構(gòu)設計,撥測系統(tǒng)共分為6個模塊,分別為Upload配置模塊、調(diào)度器模塊、JMeter引擎模塊、日志模塊、告警模塊、查詢模塊。

3.3.1? ? Upload配置模塊

該模塊提供JMeter腳本文件的配置維護功能,負責將JMeter腳本文件從本地上傳到業(yè)務服務器上。在用戶界面上使用“文件上傳”組件,同時錄入腳本文件的相關信息,例如:腳本描述、告警接收人、告警接收人郵箱、抄送人郵箱、腳本的時間調(diào)度表達式。該模塊除持久化腳本文件數(shù)據(jù)外,還會根據(jù)調(diào)度表達式調(diào)用調(diào)度器模塊。

3.3.2? ? 調(diào)度器模塊

調(diào)度器模塊采用任務方式管理維護,用戶使用上傳配置模塊完成腳本文件上傳后,調(diào)度器模塊會新建一個周期任務。周期任務可以按秒、分鐘、小時、天、周、月等時間周期執(zhí)行。服務端的調(diào)度框架有很多,這里采用Spring的TaskSchedule[6]實現(xiàn),它是一個輕量級的任務調(diào)度器,允許開發(fā)者輕松地安排和管理周期性任務,如定時統(tǒng)計數(shù)據(jù)、定時清理緩存等。它是Spring自帶的調(diào)度框架,開發(fā)者無須引入額外的第三方類庫,無須安裝額外的第三方服務,集成方便;無須編寫復雜的代碼,易于使用;支持多種任務執(zhí)行策略,靈活度高。當任務觸發(fā)時間到達后,調(diào)度器模塊會調(diào)用JMeter引擎模塊。

3.3.3? ? JMeter引擎模塊

JMeter引擎模塊用來調(diào)用JMeter腳本文件,生成測試報告。制作腳本文件使用JMeter圖形化界面方式,而這里利用JMeter程序開發(fā)庫實現(xiàn)。在自研撥測系統(tǒng)里引入開發(fā)庫,導入并使用已定義的類和方法完成腳本文件的執(zhí)行。

3.3.4? ? 日志模塊

JMeter腳本的運行結(jié)果是Html報告文件,日志模塊會將Html報告整體打包壓縮,保存在對象服務器Minio中;同時解析報告文件夾中的JSON數(shù)據(jù),判斷本次撥測結(jié)果。如果運行成功,僅僅將日志記錄持久化到數(shù)據(jù)庫,后續(xù)為查詢模塊提供數(shù)據(jù)。如果運行失敗,通知告警模塊進行處理,并將日志記錄持久化到數(shù)據(jù)庫中。

3.3.5? ? 告警模塊

該模塊用于發(fā)送通知,當JMeter腳本運行失敗時,根據(jù)上傳腳本時預先設置的發(fā)送人郵箱、抄送人郵箱,給責任人發(fā)送郵件告警,同時郵箱附件包括Html報告。最后將日志記錄狀態(tài)從未處理更新為已處理。

3.3.6? ? 查詢模塊

該模塊提供靈活的查詢條件,方便用戶根據(jù)需要篩選和查詢?nèi)罩尽@绺鶕?jù)日志狀態(tài)查詢歷史日志數(shù)據(jù),便于對問題進行回溯和分析。同時,將調(diào)度器模塊的能力暴露給用戶,用戶可以查詢調(diào)度任務,查看正在運行的調(diào)度任務并針對任務進行手動啟動、停止、刪除操作。

3.4? ? 數(shù)據(jù)庫設計

根據(jù)撥測系統(tǒng)的模塊設計,提取業(yè)務概念名詞抽象出數(shù)據(jù)庫實體表,Upload配置模塊對應script表,調(diào)度器模塊對應task表,日志模塊對應log_record表,告警模塊對應alarm_record表。系統(tǒng)里一個JMeter腳本上傳配置完成后,script表新增一條腳本記錄,task表也新增一條對應任務記錄,log_record和alarm_record表隨著腳本被定時調(diào)度以及告警觸發(fā)與清除在對應表里新增若干記錄。

下面詳細介紹四張表擁有的字段含義:

1)script表記錄腳本信息,包含腳本名稱、腳本描述、腳本文件所在地址、觸發(fā)時間cron表達式、腳本告警接收人郵箱、告警抄送人郵箱列表信息。

2)task表記錄任務信息,task_id是任務主鍵,script_id是外鍵,指向script表,task和script一對一關系,每當新增一條script記錄,就會同步新增一條task任務,同時在程序內(nèi)存里的調(diào)度器模塊會新增一個任務對象,用于等待觸發(fā)任務執(zhí)行。

3)log_record表記錄腳本運行日志數(shù)據(jù)。script_id是外鍵,指向script表。task每運行一次,log_record就新增一條記錄。status字段表示本次運行結(jié)果成功還是失敗;report_url字段表示本次運行產(chǎn)生的報告文件地址;process_flag字段針對失敗狀態(tài)時有效,標記是否已經(jīng)處理發(fā)送告警。

4)alarm_record表存儲發(fā)送告警的數(shù)據(jù)記錄。log_record_id是外鍵,指向log_record表,表示當前告警來源于哪一個日志記錄。script_id字段是外鍵,冗余字段,方便快速找到告警對應的腳本信息數(shù)據(jù)。alarm_type字段是告警類型,可選值有上報告警和清除告警兩種。valid字段表示當前告警有效性,用于實現(xiàn)發(fā)送清除告警功能。

4? ? 自研撥測系統(tǒng)的優(yōu)點

自研的撥測系統(tǒng)采用程序和JMeter腳本方式,具有很多優(yōu)點。

1)程序和腳本耦合低:意味著它們之間的依賴較少,互相影響較小。這樣的設計有助于降低系統(tǒng)復雜性,提高代碼的可維護性和可讀性。通過模塊化封裝,可以將程序和腳本分離,使得職責和功能更為清晰。

2)擴展容易:程序和腳本分離的設計使得系統(tǒng)具有較好的可擴展性。當需要新增功能和修改現(xiàn)有功能時,可以在不影響其他部分的前提下獨立對腳本進行調(diào)整。

3)調(diào)試方便靈活:程序和腳本耦合低、職責分明的情況下,排查和調(diào)試問題變得更加容易。當出現(xiàn)問題時,可以快速定位故障邊緣和故障源,并通過腳本進行調(diào)試驗證。

4)支持豐富:依托JMeter的接口類型多樣性能力,還可以支持數(shù)據(jù)庫、Dubbo等形式的接口測試,提供多樣的撥測能力,但程序調(diào)用方式固定不變。

總之,程序和腳本方式耦合度低、職責分明、擴展容易、調(diào)試方便靈活,有助于提高軟件的質(zhì)量、可靠性和可維護性,同時降低了開發(fā)和運維的難度。

5? ? 結(jié)束語

本文介紹了撥測系統(tǒng)的重要性、應用價值、基本工作原理以及各種接口測試工具的差異,然后展示了JMeter腳本的創(chuàng)建步驟,接著詳細說明了自研撥測系統(tǒng)的設計與實施過程,最后對自主研發(fā)的撥測系統(tǒng)架構(gòu)的優(yōu)點進行了闡述。

[參考文獻]

[1] 鐘鼎,郭志林,鄧瓊,等.一種面向互聯(lián)網(wǎng)質(zhì)量監(jiān)控的撥測系統(tǒng)[J].信息通信,2014(3):247-248.

[2] 高文輝.軟件測試中接口測試概述與實踐[J].數(shù)字技術與應用,2020,38(3):112.

[3] 陳曉陽.基于Java反射自動生成Postman接口測試文件的方法[J].電腦編程技巧與維護,2021(9):27-28.

[4] 陳銳,何華軍,王辰.基于RESTful接口的基礎數(shù)據(jù)對接設計[J].電腦編程技巧與維護,2022(9):122-124.

[5] 張億軍.JMeter測試應用研究[J].信息技術與信息化,2021(10):61-64.

[6] 丁振凡,李馨梅.Spring的任務定時調(diào)度方法的研究比較[J].智能計算機與應用,2012,2(4):55-56.

收稿日期:2023-12-14

作者簡介:黃鵬(1985—),男,陜西人,助理工程師,研究方向:DevOps工具鏈和Web開發(fā)。

主站蜘蛛池模板: 亚洲精品中文字幕午夜| 色天天综合久久久久综合片| 免费人成网站在线观看欧美| 极品国产在线| 尤物视频一区| 在线中文字幕日韩| 欧美日韩国产成人高清视频 | 99久久精品久久久久久婷婷| 欧美国产日韩在线| 亚洲男人天堂2018| 成人在线视频一区| 久久国产精品电影| 99re在线视频观看| 欧美另类第一页| 国产麻豆精品久久一二三| 国产色婷婷| 9啪在线视频| 国产又粗又猛又爽| 激情综合网激情综合| 啊嗯不日本网站| 美女国产在线| 亚洲无线观看| 谁有在线观看日韩亚洲最新视频| 亚洲有无码中文网| 亚洲最猛黑人xxxx黑人猛交| 国产欧美性爱网| 亚洲成人免费在线| 欧美一级夜夜爽| 在线观看视频一区二区| 91在线国内在线播放老师| 亚洲高清无在码在线无弹窗| 中文字幕人妻av一区二区| 亚洲精品色AV无码看| 成年人免费国产视频| 久草中文网| 亚洲区视频在线观看| 日韩专区欧美| 97超碰精品成人国产| 白浆免费视频国产精品视频| 免费在线观看av| 欧美日韩另类国产| 国产精品密蕾丝视频| 国模视频一区二区| 666精品国产精品亚洲| 色婷婷久久| 国产自在自线午夜精品视频| 91在线精品免费免费播放| 一级香蕉视频在线观看| 9966国产精品视频| 国产精品女熟高潮视频| 中文字幕丝袜一区二区| 久青草免费在线视频| 久久一级电影| 伊人国产无码高清视频| 色偷偷综合网| 国产原创自拍不卡第一页| 伊人激情久久综合中文字幕| 91黄色在线观看| 国产99在线观看| 国产成人亚洲综合A∨在线播放| 亚洲欧洲一区二区三区| 国产成在线观看免费视频| 久久一日本道色综合久久| 久久免费观看视频| 欧美成人a∨视频免费观看| 欧美曰批视频免费播放免费| 日韩一区精品视频一区二区| 国产精品第页| 伊人天堂网| 欧美精品色视频| 狠狠v日韩v欧美v| 日韩毛片在线视频| 在线观看欧美国产| 久久久久夜色精品波多野结衣| 久久精品亚洲中文字幕乱码| 免费99精品国产自在现线| 国产9191精品免费观看| 99热最新网址| 久久天天躁夜夜躁狠狠| 四虎永久免费网站| 亚洲成a人在线播放www| 欧洲一区二区三区无码|