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

?

基于LoadRunner的企業(yè)級(jí)應(yīng)用性能測(cè)試設(shè)計(jì)與實(shí)現(xiàn)

2020-11-02 02:34王淑滿潘麗云田雨馬宏全鐘堅(jiān)飛
電腦知識(shí)與技術(shù) 2020年25期
關(guān)鍵詞:性能優(yōu)化性能測(cè)試

王淑滿 潘麗云 田雨 馬宏全 鐘堅(jiān)飛

摘要:目前軟件系統(tǒng)在使用過(guò)程中的性能表現(xiàn)已經(jīng)成為衡量軟件質(zhì)量的重要標(biāo)準(zhǔn),該文基于LoadRunner性能測(cè)試工具,結(jié)合國(guó)家電網(wǎng)有限公司新一代電子商務(wù)平臺(tái)(ECP2.0)項(xiàng)目,論述了LoadRunner的工作原理、性能測(cè)試方案制定、測(cè)試腳本設(shè)計(jì)、場(chǎng)景執(zhí)行、測(cè)試結(jié)果分析以及如何基于測(cè)試結(jié)果定位系統(tǒng)存在的性能瓶頸,并進(jìn)行性能優(yōu)化,以確保交付的軟件系統(tǒng)滿足預(yù)期性能指標(biāo)。

關(guān)鍵詞:性能測(cè)試;LoadRunner;性能優(yōu)化

中圖分類號(hào):TP311 ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1009-3044(2020)25-0209-03

1引言

隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,越來(lái)越多的企業(yè)為了提高生產(chǎn)運(yùn)營(yíng)效率、降低運(yùn)營(yíng)成本和風(fēng)險(xiǎn)大力推進(jìn)信息化項(xiàng)目建設(shè)。然而,在系統(tǒng)的用戶量、資源的需求量、數(shù)據(jù)的存儲(chǔ)量與日俱增的情況下,越來(lái)越多的性能問(wèn)題不斷涌現(xiàn),頁(yè)面無(wú)法正常訪問(wèn)、加載時(shí)間長(zhǎng)導(dǎo)致用戶體驗(yàn)差,服務(wù)器CPU、內(nèi)存利用率高導(dǎo)致服務(wù)器資源告警等,這些問(wèn)題的產(chǎn)生將最終導(dǎo)致終端用戶無(wú)法正常開(kāi)展工作,給企業(yè)生產(chǎn)經(jīng)營(yíng)造成不可預(yù)估的后果。在這種情況下,在運(yùn)系統(tǒng)的穩(wěn)定、高效備受人們的關(guān)注。為了降低系統(tǒng)上線后發(fā)生性能問(wèn)題的風(fēng)險(xiǎn),在系統(tǒng)上線前對(duì)系統(tǒng)進(jìn)行性能測(cè)試必不可少。

本文以“新一代電子商務(wù)平臺(tái)(ECP2.0)”項(xiàng)目中的“質(zhì)量抽檢問(wèn)題記錄新增”性能測(cè)試為例,詳細(xì)介紹ECP2.0項(xiàng)目性能測(cè)試過(guò)程、問(wèn)題分析及系統(tǒng)優(yōu)化的過(guò)程。

2 性能測(cè)試基礎(chǔ)

2.1 性能測(cè)試基本概念

性能測(cè)試是指在最大限度地模擬系統(tǒng)在實(shí)際使用環(huán)境下的業(yè)務(wù)壓力或用戶場(chǎng)景來(lái)運(yùn)行系統(tǒng),同時(shí)在系統(tǒng)運(yùn)行過(guò)程中采集相關(guān)性能指標(biāo),并在測(cè)試結(jié)束后對(duì)運(yùn)行過(guò)程中采集的指標(biāo)數(shù)據(jù)進(jìn)行分析,從而判斷系統(tǒng)性能是否達(dá)到預(yù)期要求。由于性能測(cè)試場(chǎng)景執(zhí)行、指標(biāo)監(jiān)控及分析等比較復(fù)雜,所以性能測(cè)試一般需要借助測(cè)試工具來(lái)完成。

2.2測(cè)試目的

本文論述了ECP2.0項(xiàng)目性能測(cè)試過(guò)程,通過(guò)測(cè)試驗(yàn)證系統(tǒng)是否滿足預(yù)期性能指標(biāo),從而判斷系統(tǒng)是否達(dá)到上線運(yùn)行標(biāo)準(zhǔn),若系統(tǒng)性能不滿足上線運(yùn)行標(biāo)準(zhǔn)則需要進(jìn)行性能優(yōu)化。

3 LoadRunner介紹

LoadRunner是目前比較流行的一款自動(dòng)化性能測(cè)試工具,它通過(guò)模擬成百上千的用戶同時(shí)操作被測(cè)系統(tǒng)功能,在系統(tǒng)測(cè)試過(guò)程中自動(dòng)監(jiān)控服務(wù)器資源使用情況,并在測(cè)試執(zhí)行完成后自動(dòng)分析測(cè)試數(shù)據(jù)并生成測(cè)試報(bào)告。LoadRunner分為三大組件,Virtual User Generator、Controller及Analysis。

(1)Virtual User Generator:即虛擬用戶生成器,用來(lái)錄制及調(diào)試Vuser腳本,它能夠支持Web(HTTP/HTML)、Flex、SAP-Web、SAPGUI等幾十種主流協(xié)議,并支持IE、火狐、谷歌等多種瀏覽器版本的腳本錄制,且支持JAVA、VB、C語(yǔ)言等多種腳本語(yǔ)言的開(kāi)發(fā)。腳本編寫過(guò)程中可通過(guò)設(shè)置集合點(diǎn)、參數(shù)化使腳本更能夠接近真實(shí)用戶操作,也可通過(guò)設(shè)置檢查點(diǎn)來(lái)判斷腳本執(zhí)行過(guò)程中系統(tǒng)是否能夠正常響應(yīng)。總之,VuGen具有非常強(qiáng)大的腳本錄制及編輯功能。

(2)Controller:即控制器,是整個(gè)壓力測(cè)試的控制中心,用于管理和維護(hù)測(cè)試場(chǎng)景,是設(shè)計(jì)與執(zhí)行性能測(cè)試場(chǎng)景的組件,其中的Load Generator、Monitor等可實(shí)現(xiàn)模擬真實(shí)用戶在系統(tǒng)上的操作行為,且在測(cè)試場(chǎng)景執(zhí)行過(guò)程中,同時(shí)采集Vuser、操作系統(tǒng)、服務(wù)器等各種運(yùn)行數(shù)據(jù),這些數(shù)據(jù)是分析系統(tǒng)性能的基礎(chǔ)。

(3)Analysis:即結(jié)果分析器,它提供了非常強(qiáng)大的數(shù)據(jù)分析及圖表展示功能。場(chǎng)景執(zhí)行完成后,Analysis將場(chǎng)景執(zhí)行過(guò)程中采集的各種數(shù)據(jù)進(jìn)行分析,并生成包含各種圖表的測(cè)試報(bào)告,該報(bào)告可作為判斷系統(tǒng)性能及分析性能瓶頸的重要依據(jù)。

LoadRunner三大組件相互協(xié)作,它們共同完成了從編寫性能測(cè)試腳本到生成性能測(cè)試報(bào)告的整個(gè)性能測(cè)試過(guò)程。

4測(cè)試過(guò)程及優(yōu)化

4.1 測(cè)試過(guò)程介紹

結(jié)合ECP2.0項(xiàng)目自身特點(diǎn),將其性能測(cè)試劃分為測(cè)試方案設(shè)計(jì)、測(cè)試腳本設(shè)計(jì)與編寫、測(cè)試場(chǎng)景設(shè)計(jì)與執(zhí)行、測(cè)試結(jié)果分析、性能優(yōu)化幾個(gè)階段。

本文以“質(zhì)量抽檢問(wèn)題記錄新增”為例,詳細(xì)介紹該功能性能測(cè)試過(guò)程以及測(cè)試過(guò)程中每個(gè)階段完成的主要工作。

1)測(cè)試方案設(shè)計(jì)

ECP2.0系統(tǒng)測(cè)試方案設(shè)計(jì)階段主要工作內(nèi)容為確定測(cè)試范圍、獲取性能需求、分析業(yè)務(wù)功能及數(shù)據(jù)等。通過(guò)用戶調(diào)研、專家判斷等方式確定被測(cè)系統(tǒng)的測(cè)試范圍,及待測(cè)功能點(diǎn)的性能指標(biāo),包括每個(gè)被測(cè)功能的容量指標(biāo)、時(shí)間指標(biāo)及資源利用指標(biāo)等,并形成性能測(cè)試用例。

“質(zhì)量抽檢問(wèn)題記錄新增”需要執(zhí)行并發(fā)測(cè)試及穩(wěn)定性測(cè)試,設(shè)計(jì)并發(fā)性能測(cè)試用例如表1,穩(wěn)定性測(cè)試用例如表2。

2)測(cè)試腳本設(shè)計(jì)與編寫

想要設(shè)計(jì)出高質(zhì)量測(cè)試腳本,首先需要明確軟件性能需求,了解被測(cè)功能特點(diǎn),掌握測(cè)試重點(diǎn)?!俺闄z問(wèn)題記錄新增”性能測(cè)試的重點(diǎn)在于 “新增”及數(shù)據(jù)保存成功后的列表刷新,所以在測(cè)試腳本結(jié)構(gòu)設(shè)計(jì)時(shí)將從“系統(tǒng)登錄”到“進(jìn)入‘質(zhì)量抽檢問(wèn)題記錄菜單頁(yè)面”相關(guān)操作腳本放在vuser_init中,將新增過(guò)程腳本放在action中,將退出腳本放在vuser_end中。同時(shí)為了使腳本能夠滿足測(cè)試要求,達(dá)到測(cè)試目標(biāo),需要在腳本中添加集合點(diǎn)、事務(wù)、引入?yún)?shù)化、關(guān)聯(lián)等。

根據(jù)上述腳本設(shè)計(jì)進(jìn)行腳本編寫,“質(zhì)量抽檢問(wèn)題記錄新增”性能測(cè)試腳本采用LoadRunner錄制方式,腳本錄制完成后需對(duì)腳本進(jìn)行二次開(kāi)發(fā)。

(1)將腳本中所有的“用戶名”進(jìn)行參數(shù)化,保證每個(gè)虛擬用戶使用不同的賬號(hào)操作被測(cè)系統(tǒng)。

(2)Action中,將“抽檢問(wèn)題記錄新增”過(guò)程定義為一個(gè)事務(wù),在點(diǎn)擊【保存】按鈕前插入開(kāi)始事務(wù),在數(shù)據(jù)保存成功并成功刷新列表頁(yè)面后插入結(jié)束事務(wù)。

(3)Action中,在開(kāi)始事務(wù)前插入集合點(diǎn),保證并發(fā)測(cè)試時(shí)所有虛擬用戶同時(shí)執(zhí)行開(kāi)始事務(wù)。

(4)Action中,將抽檢問(wèn)題記錄中的部分輸入項(xiàng)進(jìn)行參數(shù)化,保證所有虛擬用戶隨機(jī)輸入不同的信息進(jìn)行保存。

(5)Action中,在保存請(qǐng)求前插入關(guān)聯(lián)函數(shù),通過(guò)關(guān)聯(lián)函數(shù)動(dòng)態(tài)獲取保存操作服務(wù)器端返回的Response值中的狀態(tài)碼,并將動(dòng)態(tài)獲取的值保存到變量checkFlag中,在事務(wù)結(jié)束時(shí)通過(guò)if語(yǔ)句判斷checkFlag值,如果為預(yù)期值則事務(wù)成功,反之事務(wù)失敗。

3)測(cè)試場(chǎng)景設(shè)計(jì)與執(zhí)行

性能測(cè)試場(chǎng)景設(shè)計(jì)與執(zhí)行通過(guò)使用LoadRunner的Controller組件來(lái)完成,腳本編寫完成并調(diào)試通過(guò)后,將腳本加入Controller組件,并按照測(cè)試用例設(shè)置場(chǎng)景。

按照并發(fā)測(cè)試用例設(shè)置測(cè)試場(chǎng)景,該場(chǎng)景虛擬用戶數(shù)為100,在測(cè)試啟動(dòng)時(shí)一次性初始化所有用戶,并通過(guò)啟用集合點(diǎn)模擬100瞬時(shí)并發(fā)請(qǐng)求,測(cè)試執(zhí)行時(shí)間為5分鐘,執(zhí)行結(jié)束后所有用戶同時(shí)退出,測(cè)試過(guò)程中收集服務(wù)器負(fù)載信息。

按照穩(wěn)定性測(cè)試用例設(shè)置測(cè)試場(chǎng)景,該場(chǎng)景虛擬用戶數(shù)為50,在測(cè)試啟動(dòng)時(shí)一次性初始化所有用戶,不啟用集合點(diǎn),測(cè)試執(zhí)行時(shí)間為4小時(shí),執(zhí)行結(jié)束后所有用戶同時(shí)退出,測(cè)試過(guò)程中收集服務(wù)器負(fù)載信息。

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

通過(guò)LoadRunner的Analysis組件生成測(cè)試報(bào)告,得出測(cè)試結(jié)果見(jiàn)表3。

由表3數(shù)據(jù)可以看出,并發(fā)測(cè)試結(jié)果滿足要求,但是穩(wěn)定性測(cè)試結(jié)果中“平均響應(yīng)時(shí)間”5.453秒、“TPS”2.664筆/秒,兩項(xiàng)指標(biāo)均不滿足要求。

通過(guò)查看“平均響應(yīng)時(shí)間”曲線(見(jiàn)圖1)及“每秒處理事務(wù)數(shù)(TPS)”曲線(見(jiàn)圖2)發(fā)現(xiàn)穩(wěn)定性測(cè)試過(guò)程中隨著場(chǎng)景執(zhí)行時(shí)間的延長(zhǎng)“平均響應(yīng)時(shí)間曲線”逐漸上升,“每秒處理事務(wù)數(shù)(TPS)曲線”逐漸下降,說(shuō)明測(cè)試過(guò)程中系統(tǒng)的處理能力越來(lái)越低。

進(jìn)一步查看場(chǎng)景執(zhí)行過(guò)程中服務(wù)器的資源使用情況,發(fā)現(xiàn)穩(wěn)定性測(cè)試過(guò)程中隨著測(cè)試時(shí)間的逐漸延長(zhǎng),數(shù)據(jù)庫(kù)服務(wù)器CPU利用率曲線逐漸上升,場(chǎng)景執(zhí)行結(jié)束時(shí)接近100%(數(shù)據(jù)庫(kù)服務(wù)器CPU利用率曲線見(jiàn)圖3),由此可以判斷性能瓶頸在數(shù)據(jù)庫(kù)。因?yàn)閿?shù)據(jù)庫(kù)使用的是Oracle,所以通過(guò)調(diào)取數(shù)據(jù)庫(kù)的AWR報(bào)告,發(fā)現(xiàn)穩(wěn)定性測(cè)試過(guò)程中數(shù)據(jù)保存成功后的列表頁(yè)面刷新對(duì)應(yīng)的SQL語(yǔ)句執(zhí)行耗時(shí)越來(lái)越長(zhǎng),且耗費(fèi)大量CPU。

因此得出結(jié)論:“質(zhì)量抽檢問(wèn)題記錄新增”穩(wěn)定性測(cè)試過(guò)程中隨著場(chǎng)景執(zhí)行時(shí)間越來(lái)越長(zhǎng),數(shù)據(jù)庫(kù)數(shù)據(jù)量逐漸增長(zhǎng),導(dǎo)致列表頁(yè)面刷新SQL語(yǔ)句執(zhí)行效率越來(lái)越低,最終造成穩(wěn)定性測(cè)試指標(biāo)不滿足要求。

4.3 性能優(yōu)化

提高查詢SQL的執(zhí)行效率可通過(guò)創(chuàng)建索引、優(yōu)化SQL語(yǔ)句等方式實(shí)現(xiàn)。

1)創(chuàng)建索引提升SQL語(yǔ)句執(zhí)行效率

通過(guò)分析列表頁(yè)面刷新SQL語(yǔ)句執(zhí)行計(jì)劃,發(fā)現(xiàn)全表掃描導(dǎo)致消耗了過(guò)多的CPU資源,從而導(dǎo)致SQL語(yǔ)句執(zhí)行效率低。根據(jù)WHERE條件,在對(duì)應(yīng)字段上創(chuàng)建索引以避免全表掃描,從而降低SQL語(yǔ)句CPU資源消耗,加快列表頁(yè)面刷新SQL執(zhí)行速度。

2)明確查詢字段提升SQL解析效率

檢查SQL語(yǔ)句發(fā)現(xiàn),SQL中使用了“SELECT *”。Oracle在對(duì)SQL語(yǔ)句進(jìn)行解析時(shí)會(huì)將“*”轉(zhuǎn)換成表中包含的所有列名, 所以對(duì)于包含列名較多的表意味著將耗費(fèi)更多的時(shí)間,為了進(jìn)一步提高SQL執(zhí)行效率,需將“*”改為實(shí)際需要的列名,這樣既可以降低SQL解析時(shí)間,也可以進(jìn)一步減輕數(shù)據(jù)庫(kù)的壓力。

通過(guò)以上方法對(duì)“質(zhì)量抽檢問(wèn)題記錄新增”功能進(jìn)行性能優(yōu)化后,再次對(duì)該功能執(zhí)行穩(wěn)定性測(cè)試,測(cè)試結(jié)果中各項(xiàng)指標(biāo)均滿足要求,優(yōu)化效果達(dá)到預(yù)期。

5結(jié)論

本文詳細(xì)介紹了國(guó)家電網(wǎng)有限公司“新一代電子商務(wù)平臺(tái)(ECP2.0)”項(xiàng)目性能測(cè)試過(guò)程、性能瓶頸分析及性能優(yōu)化過(guò)程。從本文可以看出,性能測(cè)試是一個(gè)復(fù)雜的過(guò)程,既需要關(guān)注時(shí)間指標(biāo)也需要關(guān)注服務(wù)器資源指標(biāo)。服務(wù)器資源數(shù)據(jù)對(duì)性能瓶頸分析、問(wèn)題定位及性能優(yōu)化起著至關(guān)重要的作用。

參考文獻(xiàn):

[1] 柳純錄.軟件評(píng)測(cè)師教程[M].北京:清華大學(xué)出版社,2005.

[2]巴頓(Ron Patton)著.軟件測(cè)試(英文版)[M].2版.北京:機(jī)械工業(yè)出版社,2006.

[3] 董躍華,彭稷棟.利用LoadRunner實(shí)現(xiàn)網(wǎng)頁(yè)負(fù)載壓力測(cè)試[J].江西理工大學(xué)學(xué)報(bào),2010,31(5):52-56.

[4] 張艷華.基于LoadRunner的網(wǎng)絡(luò)考試系統(tǒng)性能測(cè)試實(shí)踐[J].電腦知識(shí)與技術(shù),2019,15(21):106-108.

[5] 張君棟,戴洪磊.基于LoadRunner的WebGIS網(wǎng)站性能測(cè)試[J].北京測(cè)繪,2016(4):23-27,37.

【通聯(lián)編輯:代影】

猜你喜歡
性能優(yōu)化性能測(cè)試
SQL Server數(shù)據(jù)庫(kù)性能優(yōu)化的幾點(diǎn)分析
車聯(lián)網(wǎng)專用短程通信技術(shù)