張輝
摘要: 為保證網(wǎng)絡(luò)服務(wù)質(zhì)量,對(duì)Web系統(tǒng)進(jìn)行性能測(cè)試,成為企業(yè)在軟件測(cè)試工作中重要的環(huán)節(jié)。從Web體系的架構(gòu)及特點(diǎn)出發(fā),對(duì)Web系統(tǒng)性能測(cè)試的要求、場(chǎng)景、指標(biāo)、流程、策略以及測(cè)試用例設(shè)計(jì)等內(nèi)容進(jìn)行分析,研究性能測(cè)試的方法,采用測(cè)試工具JMeter進(jìn)行了Web系統(tǒng)的性能測(cè)試。結(jié)果表明,對(duì)Web系統(tǒng)進(jìn)行性能測(cè)試有助于找出系統(tǒng)中存在的問(wèn)題,為系統(tǒng)進(jìn)一步優(yōu)化提供依據(jù)。
關(guān)鍵詞: 性能測(cè)試; Web系統(tǒng); 軟件測(cè)試; JMeter
中圖分類號(hào):TP3? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A? ? ?文章編號(hào):1006-8228(2021)10-28-04
Research on performance testing technology of Web system
Zhang Hui
(Gaobo School of software, Nanning University, Nanning, Guangxi 530001, China)
Absrtact: In order to ensure the quality of network service, the performance test of Web system has become an important part in the software testing work of enterprises. Starting from the architecture and characteristics of the Web system, this paper analyzes the requirements, scenarios, indicators, processes, strategies and test case design etc. of the Web system performance test, studies the testing methods, and carries on the performance testing to Web system by using the test tool JMeter. The results show that the performance test of web system is helpful to find out the problems existed in the system and provides a basis for further optimization of the system.
Key words: performance test; Web system; software testing; JMeter
0 引言
隨著Web服務(wù)的發(fā)展,網(wǎng)絡(luò)用戶數(shù)量日漸增多,用戶與系統(tǒng)產(chǎn)生的交互場(chǎng)景及軟件產(chǎn)生的數(shù)據(jù)量也日益增加,Web服務(wù)器必須能夠快速響應(yīng)用戶請(qǐng)求。為了及時(shí)解決Web系統(tǒng)所面臨的問(wèn)題,利用性能測(cè)試技術(shù)對(duì)系統(tǒng)進(jìn)行有效測(cè)試,以分析系統(tǒng)是否滿足用戶對(duì)軟件在功能和性能上的需求,驗(yàn)證系統(tǒng)的各項(xiàng)性能指標(biāo)是否達(dá)到用戶的目標(biāo),以便于發(fā)現(xiàn)系統(tǒng)存在的瓶頸。
1 Web體系架構(gòu)
由于Web系統(tǒng)是分布式系統(tǒng),采用并發(fā)、多用戶結(jié)構(gòu),Web系統(tǒng)使用的用戶數(shù)量更高,受眾群體更廣。Web系統(tǒng)采用多層體系構(gòu)架,系統(tǒng)只需根據(jù)計(jì)算機(jī)瀏覽器,就可以實(shí)現(xiàn)軟件的功能。Web系統(tǒng)主要采用表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問(wèn)層三層架構(gòu)。三層架構(gòu)的操作界面主要由計(jì)算機(jī)瀏覽器來(lái)實(shí)現(xiàn)完成,一部分事務(wù)管理邏輯在前端完成,關(guān)鍵事務(wù)管理邏輯性則在服務(wù)端完成。
三層架構(gòu)執(zhí)行嚴(yán)格的分層方式,數(shù)據(jù)訪問(wèn)層只有被業(yè)務(wù)邏輯層訪問(wèn),業(yè)務(wù)邏輯層只有被網(wǎng)頁(yè)顯示層訪問(wèn),用戶根據(jù)表示層將信息傳輸給業(yè)務(wù)邏輯層,業(yè)務(wù)邏輯層進(jìn)行處理有關(guān)業(yè)務(wù)流程標(biāo)準(zhǔn),并根據(jù)數(shù)據(jù)訪問(wèn)層訪問(wèn)數(shù)據(jù)庫(kù)查詢得到數(shù)據(jù)信息,然后將反饋回來(lái)的數(shù)據(jù)在頁(yè)面顯示層進(jìn)行顯示輸出[1]。三層設(shè)計(jì)目的是實(shí)現(xiàn)高內(nèi)聚和低耦合。
2 Web性能測(cè)試
2.1 性能測(cè)試定義
Web性能測(cè)試是指在一定的軟硬件網(wǎng)絡(luò)環(huán)境下,通過(guò)模擬特定的網(wǎng)絡(luò)環(huán)境,對(duì)Web系統(tǒng)進(jìn)行針對(duì)性測(cè)試,在服務(wù)器正常響應(yīng)時(shí)間內(nèi),設(shè)置不同的負(fù)載壓力,查看系統(tǒng)可以承擔(dān)的并發(fā)用戶的數(shù)量,檢測(cè)進(jìn)行實(shí)務(wù)處理的效率,觀察系統(tǒng)指標(biāo)和空間資源是否達(dá)到預(yù)期標(biāo)準(zhǔn),判斷系統(tǒng)瓶頸可能發(fā)生的位置,如果Web系統(tǒng)測(cè)試未達(dá)到預(yù)期,需對(duì)結(jié)果指標(biāo)進(jìn)行分析,為軟件調(diào)優(yōu)提供解決方案。
2.2 性能測(cè)試模擬場(chǎng)景
性能測(cè)試模擬場(chǎng)景主要有以下三個(gè)方面。
⑴ 基于網(wǎng)絡(luò)的分布式架構(gòu):基于網(wǎng)絡(luò)協(xié)議去模擬用戶發(fā)送請(qǐng)求。
⑵ 多線程:模擬多線程操作,多用戶同時(shí)操作,模擬大負(fù)載量。
⑶ 模擬真實(shí)場(chǎng)景:在真實(shí)的網(wǎng)絡(luò)環(huán)境,得出的數(shù)據(jù)才是準(zhǔn)確的。如果場(chǎng)景設(shè)置不符合實(shí)際情況,測(cè)試數(shù)據(jù)也不一定可用。
2.3 性能測(cè)試的要求
⑴ 測(cè)試Web系統(tǒng)的最佳用戶數(shù)。隨著用戶數(shù)量的增多系統(tǒng)的響應(yīng)時(shí)間并沒有受到影響,但是直到達(dá)到某個(gè)用戶數(shù)量時(shí),響應(yīng)時(shí)間開始明顯增長(zhǎng)。
⑵ 測(cè)試系統(tǒng)的最大用戶數(shù)。隨著用戶數(shù)量的增多,系統(tǒng)的響應(yīng)時(shí)間開始延遲,直到用戶的數(shù)量達(dá)到某一數(shù)值,系統(tǒng)開始響應(yīng)失敗或崩潰。
⑶ 找到目前系統(tǒng)的性能瓶頸。依次測(cè)試系統(tǒng)的數(shù)據(jù)庫(kù)和服務(wù)層各個(gè)接口,分析找到系統(tǒng)的瓶頸。
⑷ 測(cè)試系統(tǒng)的穩(wěn)定性。系統(tǒng)保持較高的用戶數(shù)量及較高負(fù)載持續(xù)訪問(wèn)的時(shí)間長(zhǎng)度內(nèi),系統(tǒng)一直能有效響應(yīng),并沒有明顯的響應(yīng)時(shí)長(zhǎng)起伏或死機(jī)。
2.4 性能測(cè)試類別
⑴ 負(fù)載測(cè)試:在系統(tǒng)能承受的壓力極限范圍內(nèi)持續(xù)運(yùn)行,以測(cè)試系統(tǒng)的穩(wěn)定性。主要用于掌握系統(tǒng)的性能,為提升系統(tǒng)性能提供基礎(chǔ)依據(jù)。
⑵ 壓力測(cè)試:指持續(xù)提升Web系統(tǒng)的工作壓力,直到被測(cè)系統(tǒng)無(wú)法正常運(yùn)行,以測(cè)試系統(tǒng)能承受的工作壓力,由此得到系統(tǒng)性能的最大服務(wù)質(zhì)量。
⑶ 并發(fā)測(cè)試:在一定的軟硬件網(wǎng)絡(luò)環(huán)境下,并發(fā)測(cè)試多種業(yè)務(wù)場(chǎng)景,在同一個(gè)負(fù)載壓力下,構(gòu)造相同的測(cè)試數(shù)據(jù),目的是為了測(cè)試系統(tǒng)是否能正常運(yùn)行。
⑷ 穩(wěn)定測(cè)試:在一定負(fù)載的情況下,給予外界或內(nèi)部非正常的干擾,檢測(cè)系統(tǒng)是否能提供穩(wěn)定服務(wù),目的主要是為了驗(yàn)證正常情況下,系統(tǒng)是否能滿足性能指標(biāo)要求。
⑸ 容量測(cè)試:通常是獲取數(shù)據(jù)庫(kù)的最佳容量能力,又稱為容量預(yù)估。在一定的并發(fā)用戶,不同的數(shù)據(jù)量訪問(wèn)下,觀察數(shù)據(jù)庫(kù)的處理能力,獲取數(shù)據(jù)庫(kù)的各項(xiàng)性能指標(biāo)。
2.5 性能測(cè)試指標(biāo)
⑴ 響應(yīng)時(shí)間:是指系統(tǒng)對(duì)請(qǐng)求作出響應(yīng)的時(shí)間,不同的功能的響應(yīng)時(shí)間也不盡相同。通常指該系統(tǒng)所有功能的平均響應(yīng)時(shí)間或者所有功能的最大響應(yīng)時(shí)間[2]。
⑵ 吞吐量:吞吐量是指單位時(shí)間內(nèi)服務(wù)器處理的字節(jié)數(shù)。在一定時(shí)間內(nèi),用戶數(shù)量持續(xù)增加,而吞吐量趨于平衡甚至有略微減少不見遞增,說(shuō)明該用戶數(shù)量即為當(dāng)前系統(tǒng)所能承受的最大用戶數(shù)量,系統(tǒng)處理能力已經(jīng)達(dá)到瓶頸。
⑶ TPS:是指服務(wù)器每秒處理的事務(wù)數(shù),TPS值越大,系統(tǒng)處理能力越強(qiáng)。
⑷ 并發(fā)用戶數(shù):模擬多個(gè)用戶在同一時(shí)間訪問(wèn)服務(wù)器,并發(fā)用戶數(shù)指的就是在線用戶數(shù)量。
2.6 性能測(cè)試的流程
⑴ 對(duì)測(cè)試需求進(jìn)行分析,劃定性能測(cè)試的范圍,了解系統(tǒng)的性能指標(biāo),把業(yè)務(wù)模型映射成測(cè)試模型,進(jìn)行工作評(píng)估,制定測(cè)試計(jì)劃。
⑵ 錄制測(cè)試腳本,調(diào)試測(cè)試腳本,設(shè)計(jì)測(cè)試場(chǎng)景,根據(jù)測(cè)試模型來(lái)準(zhǔn)備被測(cè)系統(tǒng)的主數(shù)據(jù)與業(yè)務(wù)數(shù)據(jù),測(cè)試數(shù)據(jù)[3]。
⑶ 運(yùn)行、監(jiān)控場(chǎng)景,收集性能數(shù)據(jù),對(duì)性能測(cè)試過(guò)程中發(fā)現(xiàn)的缺陷進(jìn)行管理。
⑷ 分析性能測(cè)試結(jié)果,編寫測(cè)試報(bào)告,性能測(cè)試人員與開發(fā)人員一起來(lái)解決性能問(wèn)題,提供系統(tǒng)優(yōu)化方案。
2.7 測(cè)試用例設(shè)計(jì)
⑴ 基于場(chǎng)景的測(cè)試用例設(shè)計(jì)。
① 單業(yè)務(wù)功能場(chǎng)景:運(yùn)行測(cè)試期間,所有虛擬用戶只執(zhí)行同一種業(yè)務(wù)功能的某個(gè)操作。
② 混合業(yè)務(wù)功能場(chǎng)景:運(yùn)行測(cè)試期間,部分虛擬用戶執(zhí)行某種業(yè)務(wù)的某個(gè)環(huán)節(jié)操作,部分虛擬用戶執(zhí)行該業(yè)務(wù)功能的其他環(huán)節(jié)?;蛘卟糠痔摂M用戶執(zhí)行某種業(yè)務(wù)功能,部分虛擬用戶執(zhí)行其他業(yè)務(wù)功能。
⑵ 事務(wù)定義。根據(jù)合理的定義事務(wù),方便分析系統(tǒng)瓶頸,尤其在混合業(yè)務(wù)功能場(chǎng)景測(cè)試中。比如,購(gòu)買商品,可以把下訂單定義為一個(gè)事務(wù),把支付也定義為一個(gè)事務(wù)。
⑶ 場(chǎng)景監(jiān)控對(duì)象。針對(duì)每條用例,明確可能的壓力點(diǎn),比如數(shù)據(jù)庫(kù)、Web服務(wù)器等。同時(shí)需要監(jiān)控不同的對(duì)象,比如tps,耗時(shí),CPU,內(nèi)存,I/O等。
2.8 測(cè)試策略
⑴ 先做混合業(yè)務(wù)功能場(chǎng)景的測(cè)試,然后做單業(yè)務(wù)功能場(chǎng)景的測(cè)試。
⑵ 在進(jìn)行性能測(cè)試的過(guò)程中,常規(guī)的測(cè)試次序?yàn)樨?fù)載測(cè)試、壓力測(cè)試、穩(wěn)定性測(cè)試、 強(qiáng)度測(cè)試[4]。
⑶ 逐步加壓。例如前3分鐘,測(cè)試15個(gè)用戶,接著每隔3分鐘,增加15個(gè)用戶,以此類推。不僅比較真實(shí)的模擬現(xiàn)實(shí)環(huán)境,而且在性能指標(biāo)比較模糊且不知道服務(wù)器處理能力的情況下,可以確定出一個(gè)大致基準(zhǔn),通過(guò)分析可以能得出服務(wù)器大致處理能力,供后續(xù)測(cè)試參考。
⑷ 單點(diǎn)并發(fā)。如使用集合點(diǎn),單獨(dú)針對(duì)某個(gè)環(huán)節(jié)的并發(fā)測(cè)試,通常是針對(duì)某個(gè)環(huán)節(jié)的性能調(diào)優(yōu)時(shí)使用。
2.9 測(cè)試執(zhí)行
⑴ 創(chuàng)建測(cè)試自然環(huán)境。在進(jìn)行測(cè)試用例以后,就逐漸構(gòu)建測(cè)試環(huán)境。創(chuàng)建測(cè)試環(huán)境包含硬件配置、系統(tǒng)軟件環(huán)境的構(gòu)建,系統(tǒng)配置主要參數(shù)的調(diào)節(jié)等內(nèi)容[5]。
⑵ 制作測(cè)試腳本和情景。制作測(cè)試腳本和情景活動(dòng)主要根據(jù)自動(dòng)化測(cè)試專用工具來(lái)完成。
⑶ 實(shí)行測(cè)試和結(jié)果記錄。在自動(dòng)化測(cè)試專用工具的協(xié)助下,執(zhí)行測(cè)試,獲取相關(guān)性能測(cè)試參數(shù)。
2.10 性能測(cè)試分析
性能測(cè)試分析用于分析測(cè)試結(jié)果,根據(jù)結(jié)果給出測(cè)試結(jié)論。常用的分析方法如下。
⑴ 不同的測(cè)試環(huán)境下,分析硬件設(shè)備的性能指標(biāo)與預(yù)期的性能指標(biāo),確定是否達(dá)到了我們需要的結(jié)果。針對(duì)沒有達(dá)到預(yù)期的指標(biāo),分析具體的瓶頸點(diǎn),系統(tǒng)性能拐點(diǎn),系統(tǒng)在可接受的性能指標(biāo)下最大的處理能力,系統(tǒng)在不同配置下的性能表。
⑵ 不同的測(cè)試環(huán)境下,分析應(yīng)用服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器、中間件等組件的性能指標(biāo)。在性能測(cè)試執(zhí)行過(guò)程中,可能會(huì)發(fā)現(xiàn)某些功能上的不足或存在的缺陷,根據(jù)確定的問(wèn)題進(jìn)行具體詳細(xì)的分析出現(xiàn)問(wèn)題的原因,分析需要優(yōu)化的地方。
3 性能測(cè)試實(shí)踐
3.1 性能測(cè)試工具
JMeter是一個(gè)開源的自動(dòng)化性能測(cè)試工具,主要用于測(cè)試B/S架構(gòu)的系統(tǒng)性能。本次采用jmeter作為測(cè)試工具,通過(guò)jmeter代理服務(wù)器錄制腳本生成http請(qǐng)求腳本,并由http協(xié)議通過(guò)get方式發(fā)送訪問(wèn)請(qǐng)求,收集服務(wù)器吞吐能力、響應(yīng)時(shí)間等性能指標(biāo)的情況。
3.2 測(cè)試場(chǎng)景設(shè)計(jì)
被測(cè)的商業(yè)網(wǎng)站系統(tǒng)采用B/S架構(gòu),測(cè)試頁(yè)面是購(gòu)物的搶購(gòu)場(chǎng)景。搶購(gòu)活動(dòng)時(shí)會(huì)有優(yōu)惠券產(chǎn)生,客戶拿到優(yōu)惠券后才能參加搶購(gòu)。首先客戶不停的刷搶購(gòu)活動(dòng),一直刷出一個(gè)正在進(jìn)行有優(yōu)惠券的搶購(gòu)活動(dòng),然后馬上請(qǐng)求使用優(yōu)惠券。無(wú)論是否成功,客戶會(huì)稍后查詢已經(jīng)擁有的優(yōu)惠券是否已經(jīng)出現(xiàn)在賬號(hào)里。
假設(shè)測(cè)試場(chǎng)景為200客戶,每隔一秒啟動(dòng)一個(gè)新客戶;系統(tǒng)每隔10秒發(fā)出一個(gè)搶購(gòu)活動(dòng),一共發(fā)布160次,每個(gè)搶購(gòu)活動(dòng)包含50張優(yōu)惠券,即一共投放8000張優(yōu)惠券。整個(gè)測(cè)試持續(xù)半個(gè)小時(shí)。
3.3 測(cè)試結(jié)果分析
⑴ 吞吐能力
從圖1可以看到查詢活躍的搶購(gòu)活動(dòng)事務(wù)處理量最高,穩(wěn)定在4000左右。其他因?yàn)闃I(yè)務(wù)比例的原因較低,去掉查詢活躍的搶購(gòu)活動(dòng)事務(wù)后如圖2。
拼單和優(yōu)惠券查詢之間的差值是由于存在搶購(gòu)失敗造成的,測(cè)試所設(shè)置用戶行為場(chǎng)景是無(wú)論拼單成功與否都會(huì)進(jìn)行一次優(yōu)惠券查詢。
⑵ 響應(yīng)時(shí)間
根據(jù)測(cè)試結(jié)果,平時(shí)響應(yīng)時(shí)間和事務(wù)處理時(shí)間如圖3、圖4。
在測(cè)試過(guò)程中,70%的事務(wù)處理時(shí)間都是在15ms以內(nèi),整體平均響應(yīng)時(shí)間處于50ms內(nèi)。
3.4 結(jié)果分析
依據(jù)測(cè)試過(guò)程中對(duì)于測(cè)試資源的觀察,Web服務(wù)器CPU使用率低于20%,其他資源使用率很低,服務(wù)器表現(xiàn)出良好的性能,系統(tǒng)的吞吐能力和響應(yīng)時(shí)間基本滿足需求。
3.5 優(yōu)化方案
根據(jù)測(cè)試的結(jié)果的分析,可以適當(dāng)對(duì)Web系統(tǒng)做出一些優(yōu)化調(diào)整。
⑴ 調(diào)整網(wǎng)頁(yè)布局,合理使用框架集框架頁(yè)。
⑵ 刪除代碼中所有不相關(guān)的頁(yè)面元素,以及不影響頁(yè)面顯示和功能的字符集。
⑶ 刪除不必要的框架文件。
⑷ 減少代碼中對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)次數(shù),優(yōu)化查詢邏輯。
3.6 測(cè)試小結(jié)
使用JMeter可以靈活有效地模擬多用戶并發(fā)場(chǎng)景,實(shí)現(xiàn)Web性能測(cè)試,準(zhǔn)確統(tǒng)計(jì)響應(yīng)時(shí)間、吞吐量、錯(cuò)誤率等性能指標(biāo),為分析系統(tǒng)性能和系統(tǒng)調(diào)優(yōu)提供了參考。由于測(cè)試環(huán)境與生產(chǎn)環(huán)境存在差異,網(wǎng)絡(luò)環(huán)境復(fù)雜,根據(jù)JMeter的性能測(cè)試結(jié)果,系統(tǒng)開發(fā)人員需要進(jìn)一步探索,找出系統(tǒng)性能缺陷。
4 結(jié)束語(yǔ)
Web性能測(cè)試是軟件測(cè)試的重要環(huán)節(jié),提高系統(tǒng)性能以及解決系統(tǒng)在實(shí)際運(yùn)行中出現(xiàn)的問(wèn)題,是性能測(cè)試的根本目標(biāo)。在性能測(cè)試過(guò)程中,按照實(shí)際性能測(cè)試需求為準(zhǔn)則,設(shè)計(jì)合理的性能測(cè)試場(chǎng)景,盡量模擬用戶的實(shí)際行為,使測(cè)試用例更接近用戶實(shí)際使用情況,才能提高性能測(cè)試的效率。在充分了解了性能測(cè)試目標(biāo)的情況下,制定更加合理的性能測(cè)試方案,監(jiān)控性能測(cè)試流程,做出更加充分的軟件測(cè)試,才能找出瓶頸,為軟件調(diào)優(yōu)提供依據(jù)。
參考文獻(xiàn)(References):
[1] 黃智,宋楊.在ASP.NET中實(shí)現(xiàn)三層B/S結(jié)構(gòu)開發(fā)探索[J].科技信息(學(xué)術(shù)研究),2008.30:225-228
[2] 唐濤.性能測(cè)試在電力信息管理系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2012.15(16):26-27
[3] 陳佐,張懷相,方景龍.嵌入式軟件自動(dòng)化測(cè)試技術(shù)[J].計(jì)算機(jī)工程與設(shè)計(jì),2018.39(10):3125-3131
[4] 劉紅.基于Web軟件的性能測(cè)試研究[C].中國(guó)教育發(fā)展戰(zhàn)略學(xué)會(huì)教育教學(xué)創(chuàng)新專業(yè)委員會(huì).2019全國(guó)教育教學(xué)創(chuàng)新與發(fā)展高端論壇論文集(卷六).中國(guó)教育發(fā)展戰(zhàn)略學(xué)會(huì)教育教學(xué)創(chuàng)新專業(yè)委員會(huì):中國(guó)教育發(fā)展戰(zhàn)略學(xué)會(huì)教育教學(xué)創(chuàng)新專業(yè)委員會(huì),2019:70-71
[5] 張秋鳳.Web應(yīng)用系統(tǒng)性能測(cè)試研究與實(shí)踐[J].中國(guó)新通信,2016.18(14):117-118