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

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

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

黃鵬 高雅濛 程小賢

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

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

中圖分類號(hào):TP319? ? 文獻(xiàn)標(biāo)志碼:A? ? 文章編號(hào):1671-0797(2024)07-0026-04

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

0? ? 引言

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

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

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

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

通常判斷響應(yīng)體是否符合預(yù)期有以下兩種方式:

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

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

2? ? 接口測試工具對(duì)比

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

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

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

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

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

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

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

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

1)啟動(dòng)JMeter應(yīng)用:進(jìn)入JMeter_Home下的bin目錄,雙擊jmeter.bat文件啟動(dòng)程序界面;

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

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

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

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

6)添加斷言:在采樣器上添加斷言,用于驗(yàn)證服務(wù)器響應(yīng)是否符合預(yù)期;

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

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

3.2? ? 架構(gòu)設(shè)計(jì)

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

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

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

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

3.3? ? 模塊設(shè)計(jì)

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

3.3.1? ? Upload配置模塊

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

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

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

3.3.3? ? JMeter引擎模塊

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

3.3.4? ? 日志模塊

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

3.3.5? ? 告警模塊

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

3.3.6? ? 查詢模塊

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

5? ? 結(jié)束語

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

[參考文獻(xiàn)]

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

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

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

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

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

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

收稿日期:2023-12-14

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

主站蜘蛛池模板: 无码免费的亚洲视频| 九九热免费在线视频| 在线播放国产99re| 再看日本中文字幕在线观看| 亚洲天堂精品视频| 欧美在线精品一区二区三区| 97se亚洲综合在线天天 | 中文字幕永久视频| 国产人碰人摸人爱免费视频| 99视频国产精品| 日韩欧美网址| 日韩av手机在线| 免费无码又爽又刺激高| 亚洲成人精品在线| 亚洲精品欧美日韩在线| 天天综合网在线| 国产资源站| 欧美成人综合在线| 欧美日韩一区二区三区四区在线观看| 色婷婷成人网| 91人妻日韩人妻无码专区精品| 国产成人精品综合| 丰满人妻一区二区三区视频| 色偷偷一区二区三区| 国内老司机精品视频在线播出| 免费一级毛片不卡在线播放| 无码aaa视频| 亚瑟天堂久久一区二区影院| 制服丝袜无码每日更新| 色婷婷综合在线| 国产第一页免费浮力影院| 国产在线小视频| 亚洲大尺度在线| 免费在线观看av| 亚洲成人黄色在线| 中文字幕日韩视频欧美一区| 免费看美女自慰的网站| 1级黄色毛片| 国产95在线 | 国产欧美日韩专区发布| 男女性午夜福利网站| 亚洲天堂网在线观看视频| 欧美一级色视频| 国产女人爽到高潮的免费视频| 国产精品成人免费综合| 久久夜色撩人精品国产| 亚洲天堂网2014| 国产在线第二页| 亚洲啪啪网| 欧美另类视频一区二区三区| 欧洲极品无码一区二区三区| 久久免费看片| 亚洲精品免费网站| 亚洲第一黄片大全| 在线国产综合一区二区三区| 四虎在线高清无码| 99久久国产综合精品2020| 亚洲国产精品美女| 97免费在线观看视频| 88国产经典欧美一区二区三区| 一本大道东京热无码av | 91精品国产91久无码网站| 亚洲色无码专线精品观看| 免费A∨中文乱码专区| 九九线精品视频在线观看| 凹凸精品免费精品视频| 久热这里只有精品6| 日韩av无码DVD| 国产一区二区三区在线观看免费| 国产嫩草在线观看| 日韩av资源在线| 狠狠综合久久久久综| 色综合天天综合中文网| 色噜噜中文网| 综合色婷婷| 国产69精品久久久久孕妇大杂乱| 波多野结衣视频一区二区| 午夜不卡福利| 99人妻碰碰碰久久久久禁片| 孕妇高潮太爽了在线观看免费| 中国国产高清免费AV片| 91激情视频|