国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于JMeter的微信小程序性能測(cè)試應(yīng)用

2022-12-02 06:12:20紀(jì)芩
電腦與電信 2022年8期
關(guān)鍵詞:代理服務(wù)器腳本線程

紀(jì)芩

(江西省網(wǎng)絡(luò)安全研究院,江西 南昌 330019)

1 引言

微信小程序是不需要用戶下載安裝、只需用微信掃碼或搜索打開即可使用的手機(jī)應(yīng)用程序。因小程序的開發(fā)門檻低、傳播快、收益高,越來越多的開發(fā)者投入到小程序這一領(lǐng)域。馬化騰在第五屆世界互聯(lián)網(wǎng)大會(huì)公開表示,目前微信小程序應(yīng)用數(shù)量超過了100萬,覆蓋200多個(gè)細(xì)分的行業(yè),日活用戶達(dá)到2個(gè)億。但與此同時(shí),由于整體開發(fā)水平參差不齊,已出現(xiàn)越來越多的小程序質(zhì)量問題,尤其是在電商、零售、旅游、直播等容易有高并發(fā)量的行業(yè),小程序出現(xiàn)“服務(wù)器崩潰”“訪問響應(yīng)緩慢”“頁面操作卡死”“支付提交失敗”等性能問題更頻繁,所以對(duì)微信小程序的性能進(jìn)行測(cè)試很有必要。目前用開源的性能測(cè)試工具測(cè)微信小程序的性能案例很少,為此,筆者以旅游行業(yè)為例,詳細(xì)介紹如何使用JMeter來測(cè)微信小程序的性能。

2 性能測(cè)試概述

性能測(cè)試是指通過自動(dòng)化工具模擬生產(chǎn)環(huán)境運(yùn)行的業(yè)務(wù)壓力和使用場(chǎng)景組合,覆蓋多種正常負(fù)載、峰值負(fù)載和異常負(fù)載條件,測(cè)試系統(tǒng)的性能是否滿足生產(chǎn)性能指標(biāo)要求的一系列過程[1]。性能測(cè)試是一項(xiàng)綜合性的工作,目的在于暴露性能問題,評(píng)估性能趨勢(shì)。通俗來說,性能測(cè)試實(shí)質(zhì)上就是利用工具去模擬大量用戶操作來驗(yàn)證系統(tǒng)能夠承受的負(fù)載情況,找出潛在的性能問題,分析并解決;找出系統(tǒng)性能變化趨勢(shì),為后續(xù)的擴(kuò)展提供參考。

常見的Web性能測(cè)試可以分為以下幾類:

(1)負(fù)載測(cè)試:不斷加大負(fù)載(不同虛擬用戶數(shù))來確定在滿足性能指標(biāo)情況下系統(tǒng)能夠承受的最大用戶數(shù),這種測(cè)試可以幫我們對(duì)系統(tǒng)進(jìn)行定容定量,找到系統(tǒng)性能拐點(diǎn)。

(2)壓力測(cè)試:也叫強(qiáng)度測(cè)試,它是指逐步給系統(tǒng)增加壓力,測(cè)試系統(tǒng)的性能變化,使系統(tǒng)某些資源達(dá)到飽和或系統(tǒng)崩潰的邊緣,從而確定系統(tǒng)所能承受的最大壓力。

(3)并發(fā)測(cè)試:模擬多用戶并發(fā)訪問同一應(yīng)用、同一操作的測(cè)試,記錄是否會(huì)產(chǎn)生一些問題。

(4)配置測(cè)試:為了合理地調(diào)配資源,提高系統(tǒng)運(yùn)行效率,通過測(cè)試手段來獲取、驗(yàn)證、調(diào)整配置信息的過程,通過這個(gè)過程我們可以收集到不同配置反映出來的不同性能,從而為設(shè)備選擇及配置提供參考。

(5)容量測(cè)試:是指在一定的軟硬件及網(wǎng)絡(luò)環(huán)境下,測(cè)試系統(tǒng)所能支持的最大用戶數(shù)、最大存儲(chǔ)量等。容量測(cè)試通常與數(shù)據(jù)庫、系統(tǒng)資源(如CPU、內(nèi)存、磁盤等)有關(guān),用于規(guī)劃將來需求增長(zhǎng)(如用戶增長(zhǎng)、業(yè)務(wù)量增加等)時(shí),對(duì)數(shù)據(jù)庫和系統(tǒng)資源的優(yōu)化。

一般來說,性能測(cè)試的完整過程包括分析、設(shè)計(jì)、準(zhǔn)備、執(zhí)行和總結(jié)5個(gè)階段,常見的Web性能測(cè)試指標(biāo)有:并發(fā)數(shù)、平均響應(yīng)時(shí)間、服務(wù)器資源占用率、錯(cuò)誤率、吞吐率等。

3 使用JMeter測(cè)微信小程序的性能

3.1 JMeter簡(jiǎn)介及工作原理

Apache JMeter是Apache組織開發(fā)的基于Java的性能測(cè)試工具,它是一款開源桌面應(yīng)用軟件,可用來模擬用戶負(fù)載來完成性能測(cè)試工作。JMeter可以對(duì)Web應(yīng)用進(jìn)行測(cè)試,也可 以 對(duì)Java請(qǐng) 求、JMS、EJB、WebService、JDBC、FTP、JSR223、Socket等協(xié)議進(jìn)行測(cè)試,除此之外,還可以通過擴(kuò)展JMeter功能來滿足特定的測(cè)試需求。

在Web性能測(cè)試中,JMeter軟件被當(dāng)作Web服務(wù)器與瀏覽器之間的一個(gè)代理網(wǎng)管,模擬在服務(wù)器、網(wǎng)絡(luò)或者其他對(duì)象上附加高負(fù)載以測(cè)試他們提供服務(wù)的受壓能力,或者分析他們提供的服務(wù)在不同負(fù)載條件下的總性能情況[2]。JMeter體系結(jié)構(gòu)由取樣器、前/后置處理器、配置元件、控制器、斷言、監(jiān)聽器、線程組等元件組成,它的基本工作原理是建立一個(gè)線程池,多線程運(yùn)行取樣器產(chǎn)生大量負(fù)載,在運(yùn)行過程中通過斷言來驗(yàn)證結(jié)果的正確性,通過監(jiān)聽器來記錄測(cè)試結(jié)果[3]。如果取樣器中有參數(shù)化的需求,可以通過配置元件或者前置處理器來完成;如果有關(guān)聯(lián)需求,可以通過后置處理器來完成;如果想要設(shè)置應(yīng)用場(chǎng)景,比如模擬多少用戶、運(yùn)行多長(zhǎng)時(shí)間,可以設(shè)置線程組;如果想要模擬并發(fā)場(chǎng)景,可以利用定時(shí)器來設(shè)置;如果想要控制業(yè)務(wù)的執(zhí)行邏輯,可以用控制器來完成。

JMeter具有開源免費(fèi)且操作簡(jiǎn)單、可進(jìn)行功能擴(kuò)展、測(cè)試腳本易于維護(hù)等眾多優(yōu)點(diǎn),正因如此,JMeter是目前使用率最高的性能測(cè)試工具之一。

3.2 測(cè)試需求

本文選取“云游吉安”微信小程序的“關(guān)鍵詞搜索”操作作為測(cè)試點(diǎn)來進(jìn)行性能測(cè)試,測(cè)試工具版本為JMeter 5.1.1。“云游吉安”微信小程序是吉安市文廣新聞出版旅游局推出的一款涵蓋吃、住、行、游、購、娛、文化、歷史八個(gè)版塊,內(nèi)容豐富,可為游客提供人性化服務(wù)體驗(yàn)的小程序,用戶規(guī)模龐大。

根據(jù)小程序的實(shí)際使用需求,制定性能指標(biāo)如表1。由于“云游吉安”是一款真實(shí)在用的商業(yè)小程序,沒有開發(fā)方的配合,有些性能指標(biāo)比如服務(wù)器CPU占用率和內(nèi)存使用率無法進(jìn)行測(cè)試獲取,故不列入本文性能測(cè)試指標(biāo)。筆者首先從1500并發(fā)數(shù)開始測(cè)試,分5次逐漸增加并發(fā)數(shù)到3500,分析各個(gè)性能指標(biāo)結(jié)果的變化。

表1 性能測(cè)試指標(biāo)

3.3 腳本錄制及調(diào)試

微信小程序可在手機(jī)端微信和電腦端微信中運(yùn)行,經(jīng)過多次嘗試,筆者發(fā)現(xiàn)在手機(jī)端微信進(jìn)行測(cè)試時(shí)JMeter工具錄制不到有效腳本,F(xiàn)idder、Burpsuite等抓包工具可錄制到有效腳本,因此需要通過Fidder、Burpsuite錄制腳本導(dǎo)出.jmx格式然后在JMeter上運(yùn)行,而且腳本還要進(jìn)行開發(fā)和調(diào)試,此方法比較繁瑣。最終,筆者選用“云游吉安”微信小程序電腦端進(jìn)行腳本錄制及測(cè)試。腳本錄制之前,電腦端要設(shè)置代理,地址為:127.0.0.1,端口號(hào)可自行設(shè)置,這里設(shè)為8886,和JMeter中的HTTP代理服務(wù)器端口號(hào)一致。

初次錄制時(shí),打開JMeter按常規(guī)步驟添加線程組、HTTP代理服務(wù)器、HTTP Cookie管理器等元件,在HTTP代理服務(wù)器中,端口號(hào)設(shè)為8886,目標(biāo)控制器選擇:測(cè)試計(jì)劃>線程組,分組選擇:不對(duì)樣本分組,其余設(shè)置默認(rèn),然后啟動(dòng)HTTP代理服務(wù)器,接著在電腦端微信操作“云游吉安”小程序,錄制結(jié)束后發(fā)現(xiàn)JMeter無法錄制到有效內(nèi)容,只錄制到個(gè)別無效請(qǐng)求。檢查發(fā)現(xiàn)這些請(qǐng)求都是https協(xié)議,因?yàn)殇浿苃ttp和https有不一樣的規(guī)則,https是http+SSL,需要安全證書,所以被禁止訪問。

再次錄制時(shí),啟動(dòng)JMeter的HTTP代理服務(wù)器,此時(shí)會(huì)在JMeter安裝目錄的bin目錄下生成一個(gè)安全證書文件ApacheJMeterTemporaryRootCA.Crt,隨后需要在JMeter選項(xiàng)>SSL管理器中導(dǎo)入此證書,導(dǎo)入后關(guān)閉JMeter。同時(shí),電腦端也要導(dǎo)入JMeter剛剛生成的安全證書,筆者使用的電腦操作系統(tǒng)為Windows 10,導(dǎo)入證書過程為:在“運(yùn)行”里面輸入certmgr.msc,進(jìn)入到證書管理器,點(diǎn)擊“受信任的根證書頒發(fā)機(jī)構(gòu)”,選擇要導(dǎo)入的證書,點(diǎn)擊導(dǎo)入即可。

再次打開JMeter進(jìn)行最后一次錄制,啟動(dòng)HTTP代理服務(wù)器后,在電腦端微信打開“云游吉安”小程序,接著點(diǎn)擊首頁關(guān)鍵詞搜索框,頁面隨即跳轉(zhuǎn)到專門的搜索頁面,搜索框輸入“井岡山”回車后,搜索結(jié)果頁面如圖1所示。

圖1 搜索結(jié)果頁面

錄制結(jié)束后對(duì)腳本進(jìn)行分析,將明顯的無用HTTP請(qǐng)求刪除,再對(duì)其余HTTP請(qǐng)求一一進(jìn)行分析。通過在每條HTTP請(qǐng)求下面添加監(jiān)聽器>察看結(jié)果樹,運(yùn)行腳本后分析每條HTTP請(qǐng)求提交的數(shù)據(jù)和服務(wù)器對(duì)其的響應(yīng)數(shù)據(jù),直到出現(xiàn)正確的請(qǐng)求和響應(yīng)數(shù)據(jù),說明腳本調(diào)試成功,隨后可以刪除腳本中的無效請(qǐng)求,只保留“關(guān)鍵詞搜索”操作對(duì)應(yīng)的請(qǐng)求。調(diào)試成功的腳本如圖2、圖3所示,圖2中同請(qǐng)求一起發(fā)送各參數(shù)值及圖3中察看結(jié)果樹的響應(yīng)數(shù)據(jù)均與錄制時(shí)的圖1一致。圖2中HTTP信息頭管理器Referer值為:https://servicewechat.com/wx7827424d4fb6f317/67/page-frame.html。

圖2 關(guān)鍵詞搜索——HTTP請(qǐng)求

圖3 關(guān)鍵詞搜索——察看結(jié)果樹

3.4 測(cè)試結(jié)果分析

在腳本中添加簡(jiǎn)單控制器、同步定時(shí)器、聚合報(bào)告、圖形結(jié)果、響應(yīng)斷言、斷言結(jié)果等元件,在響應(yīng)斷言中測(cè)試模式里面輸入“井岡山”、自定義失敗消息里面輸入“查詢失敗”,其余設(shè)置默認(rèn),然后按照測(cè)試計(jì)劃分5次進(jìn)行多用戶并發(fā)測(cè)試。分別將線程數(shù)和定時(shí)器中模擬用戶組數(shù)量設(shè)為1500、2000、2500、3000、3500,運(yùn)行腳本后,性能測(cè)試結(jié)果(聚合報(bào)告)如圖4~圖8所示,將圖4~圖8的結(jié)果數(shù)據(jù)進(jìn)行整理,得出表2。

圖4 1500并發(fā)數(shù)的聚合報(bào)告

圖8 3500并發(fā)數(shù)的聚合報(bào)告

從表2可知:

表2 性能測(cè)試結(jié)果

(1)系統(tǒng)的平均響應(yīng)時(shí)間隨著并發(fā)數(shù)的逐步增加不斷增長(zhǎng),當(dāng)并發(fā)數(shù)為3500時(shí),平均響應(yīng)時(shí)間達(dá)到3.134秒,不滿足性能測(cè)試指標(biāo)要求。

(2)隨著并發(fā)數(shù)的增加,系統(tǒng)的吞吐率先增后降,當(dāng)并發(fā)數(shù)為3000時(shí),吞吐率達(dá)到最大值591.0事務(wù)/秒,而后開始急劇下降,當(dāng)并發(fā)數(shù)為3500時(shí),吞吐率降至156.0事務(wù)/秒,不滿足性能測(cè)試指標(biāo)要求。

綜上所述,并發(fā)數(shù)不超過3000時(shí),系統(tǒng)各性能測(cè)試結(jié)果均滿足指標(biāo)要求。當(dāng)并發(fā)數(shù)為3000~3500時(shí),系統(tǒng)平均響應(yīng)時(shí)間超時(shí),錯(cuò)誤率出現(xiàn),吞吐率從峰值急降,系統(tǒng)性能開始出現(xiàn)瓶頸,瓶頸原因可能與服務(wù)器的配置、網(wǎng)絡(luò)帶寬以及程序代碼邏輯有關(guān)。

4 結(jié)語

用開源性能測(cè)試工具JMeter對(duì)微信小程序進(jìn)行性能測(cè)試的案例目前很少,所以本文測(cè)試方法具有一定的新穎性。傳統(tǒng)思想是用微信手機(jī)端運(yùn)行小程序進(jìn)行測(cè)試,那樣很可能會(huì)錄制失敗,或者錄制難度和繁瑣度會(huì)大大增加。本文作者的創(chuàng)新點(diǎn)在于運(yùn)用JMeter對(duì)微信小程序電腦端進(jìn)行性能測(cè)試,此測(cè)試方法準(zhǔn)確有效,操作簡(jiǎn)單易上手。讀者后續(xù)可以自行選擇一些感興趣的微信小程序參照本文方法進(jìn)行測(cè)試,如果定的性能指標(biāo)中并發(fā)數(shù)較大,可考慮采用多臺(tái)負(fù)載機(jī)進(jìn)行分布式測(cè)試。

圖5 2000并發(fā)數(shù)的聚合報(bào)告

圖6 2500并發(fā)數(shù)的聚合報(bào)告

圖7 3000并發(fā)數(shù)的聚合報(bào)告

猜你喜歡
代理服務(wù)器腳本線程
酒駕
安奇奇與小cool 龍(第二回)
地鐵信號(hào)系統(tǒng)中代理服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)
數(shù)據(jù)庫系統(tǒng)shell腳本應(yīng)用
IP地址隱藏器
快樂假期
淺談linux多線程協(xié)作
Linux線程實(shí)現(xiàn)技術(shù)研究
么移動(dòng)中間件線程池并發(fā)機(jī)制優(yōu)化改進(jìn)
一種容侵系統(tǒng)的設(shè)計(jì)
临夏县| 岳西县| 邵阳县| 垫江县| 衡阳市| 乌海市| 藁城市| 崇左市| 财经| 随州市| 北辰区| 桑植县| 酉阳| 淄博市| 洛扎县| 河西区| 丹棱县| 临夏县| 镇宁| 清水县| 南投市| 玛多县| 靖远县| 甘德县| 江达县| 兴宁市| 资兴市| 朝阳县| 巴彦淖尔市| 定陶县| 福清市| 原平市| 牟定县| 锦州市| 北碚区| 土默特右旗| 郧西县| 眉山市| 民丰县| 开远市| 营山县|