杜春業(yè)++吳建華++宋巍
摘 要隨著移動(dòng)終端的迅速發(fā)展,移動(dòng)應(yīng)用正逐漸滲透到人們生活和工作的各個(gè)方面。手機(jī)游戲、移動(dòng)流媒體、位置服務(wù)、新聞資訊、即時(shí)通訊、移動(dòng)音樂(lè)等豐富多彩的移動(dòng)互聯(lián)網(wǎng)應(yīng)用正在改變著信息時(shí)代的社會(huì)生活。針對(duì)這種情況,提出基于移動(dòng)終端的應(yīng)用軟件性能測(cè)試,分析移動(dòng)應(yīng)用軟件性能測(cè)試技術(shù)和測(cè)試方法。實(shí)驗(yàn)結(jié)果表明,性能測(cè)試可以預(yù)測(cè)真實(shí)環(huán)境中對(duì)應(yīng)用系統(tǒng)的壓力,將應(yīng)用系統(tǒng)中存在的問(wèn)題暴露出來(lái),通過(guò)對(duì)測(cè)試獲得的各項(xiàng)數(shù)據(jù)進(jìn)行分析,對(duì)優(yōu)化應(yīng)用系統(tǒng)的性能提供幫助。
【關(guān)鍵詞】性能測(cè)試 移動(dòng)終端 移動(dòng)應(yīng)用 測(cè)試技術(shù) 測(cè)試方法LoadRunner
目前,互聯(lián)網(wǎng)技術(shù)正在膨脹的發(fā)展,互聯(lián)網(wǎng)產(chǎn)品正在影響人們生活和工作的各個(gè)方面,以往的生活方式和習(xí)慣已經(jīng)徹底發(fā)生了改變。作為當(dāng)今社會(huì)互聯(lián)網(wǎng)中最重要的移動(dòng)終端,其移動(dòng)應(yīng)用已經(jīng)得到了廣泛的普及。
隨著應(yīng)用程序的功能大量增多,邏輯越來(lái)越復(fù)雜,用戶對(duì)應(yīng)用的要求不再僅僅是實(shí)現(xiàn)功能,而更多關(guān)注的是處理業(yè)務(wù)時(shí)的性能指標(biāo),例如并發(fā)量、響應(yīng)時(shí)間、吞吐率等是否滿足需求。如何最大限度地利用資源、有效地整合資源、降低運(yùn)行成本、節(jié)省運(yùn)行移動(dòng)終端所需要的能源,從而提高移動(dòng)應(yīng)用軟件的整體性能,則變得更為重要。
1 移動(dòng)應(yīng)用系統(tǒng)架構(gòu)介紹
目前,移動(dòng)應(yīng)用大多數(shù)是部署在iOS、Android、WinCE/Windows Mobile等移動(dòng)終端的操作系統(tǒng)上。通過(guò)建立統(tǒng)一的UI,功能和API接口來(lái)滿足業(yè)務(wù)應(yīng)用的跨平臺(tái)特性;并通過(guò)建立移動(dòng)應(yīng)用支撐平臺(tái)服務(wù)端和客戶端之間的通信數(shù)據(jù)通道,來(lái)達(dá)到構(gòu)建移動(dòng)應(yīng)用服務(wù)端邏輯和客戶端邏輯的無(wú)縫結(jié)合的目的。同時(shí),基于高效可靠的移動(dòng)終端,采用移動(dòng)通訊、3G/4G網(wǎng)絡(luò)、Wi-Fi等網(wǎng)絡(luò),建立一個(gè)安全可靠、穩(wěn)定高效、智能便捷的移動(dòng)平臺(tái),實(shí)現(xiàn)智能化移動(dòng)應(yīng)用運(yùn)轉(zhuǎn)的持續(xù)性與完整性、信息處理的實(shí)時(shí)性與精準(zhǔn)性。
2 性能測(cè)試實(shí)踐
2.1 測(cè)試內(nèi)容
本次被測(cè)的移動(dòng)應(yīng)用軟件是一款電子商務(wù)軟件,為消費(fèi)者提供網(wǎng)上交易服務(wù),例如:網(wǎng)上訂購(gòu)、網(wǎng)上支付、電子賬戶、訂單查詢、統(tǒng)計(jì)分析等功能。被測(cè)移動(dòng)應(yīng)用軟件部署在Android操作系統(tǒng)的移動(dòng)終端上,用戶可通過(guò)互聯(lián)網(wǎng)訪問(wèn)此移動(dòng)應(yīng)用軟件。具體的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖1所示。
2.2 測(cè)試工具
本次測(cè)試采用的是商業(yè)測(cè)試工具Loadrunner。Loadrunner是一種預(yù)測(cè)系統(tǒng)行為和性能的負(fù)載測(cè)試工具,通過(guò)模擬上千萬(wàn)用戶實(shí)施并發(fā)負(fù)載及實(shí)時(shí)性能監(jiān)測(cè)的方式來(lái)確認(rèn)和查找問(wèn)題,預(yù)測(cè)系統(tǒng)行為并評(píng)估系統(tǒng)性能。Loadrunner腳本采用測(cè)試描述語(yǔ)言-C語(yǔ)言,支持多種協(xié)議和技術(shù),可組織多臺(tái)機(jī)器執(zhí)行測(cè)試。
2.3 手機(jī)協(xié)議腳本錄制原理
移動(dòng)應(yīng)用的錄制方式是虛擬腳本生成器通過(guò)Proxy實(shí)現(xiàn)的。通過(guò)一個(gè)Proxy,該P(yáng)roxy作為客戶端和服務(wù)器之間的中間人,接受從客戶端發(fā)送的數(shù)據(jù)包,記錄并轉(zhuǎn)發(fā)服務(wù)端;接收從服務(wù)端返回的數(shù)據(jù)流,記錄并返回給客戶端。這樣,無(wú)論是客戶端還是服務(wù)端都認(rèn)為自己在一個(gè)真實(shí)的運(yùn)行環(huán)境中,而虛擬腳本生成器通過(guò)這種方式截獲客戶端和服務(wù)器之間的數(shù)據(jù)流。截獲數(shù)據(jù)流之后,虛擬腳本生成器進(jìn)一步根據(jù)錄制時(shí)選擇的協(xié)議類型,對(duì)數(shù)據(jù)流進(jìn)行分析,然后用腳本函數(shù)將客戶端和服務(wù)器之間的數(shù)據(jù)流交互過(guò)程體現(xiàn)為腳本語(yǔ)句。
2.4 測(cè)試目的與需求
本次測(cè)試目的主要是通過(guò)不同的并發(fā)用戶數(shù),對(duì)該移動(dòng)應(yīng)用軟件進(jìn)行性能測(cè)試,考察系統(tǒng)的響應(yīng)情況及各服務(wù)器的資源使用情況。同時(shí),驗(yàn)證系統(tǒng)的實(shí)際性能和穩(wěn)定性是否能達(dá)到系統(tǒng)設(shè)計(jì)指標(biāo)的要求。
本次測(cè)試需求則是目前性能測(cè)試領(lǐng)域中默認(rèn)的常規(guī)需求。在測(cè)試期間,考察是否滿足以下幾點(diǎn)需求:
2.4.1 事務(wù)失敗率
信息系統(tǒng)事務(wù)失敗率不得超過(guò)0.1%。
失敗率=失敗次數(shù)÷(成功次數(shù)+失敗次數(shù))。
2.4.2 響應(yīng)時(shí)間
響應(yīng)時(shí)間即對(duì)發(fā)出的請(qǐng)求做出響應(yīng)所需要的時(shí)間。響應(yīng)時(shí)間包括網(wǎng)絡(luò)傳輸時(shí)間、應(yīng)用服務(wù)器處理時(shí)間和數(shù)據(jù)庫(kù)服務(wù)器處理時(shí)間。
響應(yīng)時(shí)間=網(wǎng)絡(luò)傳輸時(shí)間+應(yīng)用服務(wù)器處理時(shí)間+數(shù)據(jù)庫(kù)服務(wù)器處理時(shí)間。
(1)登錄、注銷響應(yīng)時(shí)間不得超過(guò)5秒,普通界面打開不得超過(guò)5秒。
(2)簡(jiǎn)單查詢、添加和刪除業(yè)務(wù)的響應(yīng)時(shí)間不得超過(guò)5秒,執(zhí)行復(fù)雜的綜合業(yè)務(wù)(同時(shí)包括查詢、添加、刪除等操作請(qǐng)求)的響應(yīng)時(shí)間不得超過(guò)8秒。
(3)表格式報(bào)表處理、圖片報(bào)表處理等統(tǒng)計(jì)類型的業(yè)務(wù)響應(yīng)時(shí)間不應(yīng)超過(guò)20秒。
2.4.3 系統(tǒng)資源性能
(1)CPU利用率:當(dāng)系統(tǒng)并發(fā)用戶數(shù)在設(shè)計(jì)要求范圍內(nèi)時(shí),應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器的CPU平均利用率不得超過(guò)80%,且CPU利用率不得連續(xù)30秒超過(guò)95%。
(2)內(nèi)存使用率:當(dāng)系統(tǒng)并發(fā)用戶數(shù)在設(shè)計(jì)要求范圍內(nèi)時(shí),應(yīng)用服務(wù)器的內(nèi)存平均使用率不得超過(guò)80%,且內(nèi)存使用率不得連續(xù)60秒超過(guò)85%。
2.4.4 可靠性
在承受最大并發(fā)用戶數(shù)持續(xù)運(yùn)行4小時(shí)的情況下,系統(tǒng)運(yùn)行平穩(wěn),業(yè)務(wù)失敗率不超過(guò)0.1%,CPU 平均占用率低于80%,內(nèi)存占用率沒(méi)有明顯增長(zhǎng)且1小時(shí)后內(nèi)存恢復(fù)初始值。
2.5 性能測(cè)試點(diǎn)的選擇
可通過(guò)以下幾種方法選擇性能測(cè)試點(diǎn):
(1)關(guān)鍵業(yè)務(wù):關(guān)鍵業(yè)務(wù)是用戶最為關(guān)注的那些業(yè)務(wù),需要保證其性能和質(zhì)量。
(2)使用頻度高:使用頻度高的業(yè)務(wù)用戶數(shù)量較多,如果發(fā)生失效影響面相應(yīng)較廣。
(3)資源占用大:某些業(yè)務(wù)流程可能不是關(guān)鍵業(yè)務(wù),但有很高的吞吐量,導(dǎo)致用戶響應(yīng)較慢,例如網(wǎng)站首頁(yè)。
(4)大數(shù)據(jù)量:某些業(yè)務(wù)操作需要訪問(wèn)的數(shù)據(jù)量較大,當(dāng)用戶較多時(shí),可能會(huì)造成系統(tǒng)不穩(wěn)定。
(5)數(shù)據(jù)接口:與不同子系統(tǒng)間的數(shù)據(jù)交互。
基于以上原則,本次測(cè)試選取三個(gè)性能測(cè)試點(diǎn):網(wǎng)上訂購(gòu)、訂單查詢、統(tǒng)計(jì)分析。
2.6 腳本錄制
使用LoadRunner工具對(duì)移動(dòng)終端的應(yīng)用軟件進(jìn)行性能測(cè)試,測(cè)試前需要在已安裝LoadRunner的電腦上共享網(wǎng)絡(luò),并且手機(jī)可以連接上共享出的Wi-Fi網(wǎng)絡(luò)。同時(shí),配置手機(jī)Wi-Fi連接的HTTP代理地址和端口,代理地址配置為電腦的IP地址,端口可以寫1-65535,而此次使用端口為8080。隨后,便可使用LoadRunner腳本編輯器,錄制協(xié)議選擇為Mobile Application-HTTP/HTML協(xié)議,并且錄制模式選擇為Proxy Recording,端口就填寫手機(jī)上設(shè)置的8080端口。點(diǎn)擊開始錄制按鈕,隨后在手機(jī)上打開需要錄制的移動(dòng)應(yīng)用程序,一步步操作需要錄制的性能業(yè)務(wù)點(diǎn),業(yè)務(wù)點(diǎn)操作完畢后,點(diǎn)擊結(jié)束錄制按鈕。此時(shí),通過(guò)LoadRunner代理方式將手機(jī)上的移動(dòng)應(yīng)用程序腳本錄制下來(lái)了。錄制后的部分腳本如下:
Action()
{ lr_start_transaction("搜索商品");
web_submit_data("getBrandSortList",
"Action=http://vgoapi.xjh.com/xjh_app-openapi/appapi/getBrandSortList",
"Method=POST",
"RecContentType=application/json",
"Referer=",
"Snapshot=t9.inf",
"Mode=HTML",
ITEMDATA,
"Name=body", "Value={\"params\":{\"terminalCode\":\"\",\"version\":\"\"}}", ENDITEM,
LAST);
lr_end_transaction("搜索商品", LR_AUTO);
lr_start_transaction("加入購(gòu)物車");
web_submit_data("operateMemberCart",
"Action=http://vgoapi.xjh.com/xjh_app-openapi/appapi/operateMemberCart",
"Method=POST",
"RecContentType=application/json",
"Referer=",
"Snapshot=t20.inf",
"Mode=HTML",
ITEMDATA,
"Name=body", "Value={\"params\":{\"cartId\":[],\"flag\":\"1\",\"merchantId\":\"\",\"shopCartList\":[{\"merchantId\":\"\",\"packageId\":\"\",\"productId\":\"2041008000000004778\",\"quantity\":\"1\"}],\"terminalCode\":\"\",\"token\":\"1462332974967\",\"userId\":\"0114001000000000277\",\"userName\":\"byl\",\"version\":\"\"}}", ENDITEM,
LAST);
lr_end_transaction("加入購(gòu)物車", LR_AUTO);
return 0;
}
2.7 測(cè)試場(chǎng)景
對(duì)測(cè)試業(yè)務(wù)功能點(diǎn),使用LoadRunner性能測(cè)試工具模擬多用戶并發(fā)測(cè)試,考察各個(gè)業(yè)務(wù)點(diǎn)的響應(yīng)時(shí)間,并同步監(jiān)控服務(wù)器的資源利用情況。測(cè)試期間,并發(fā)用戶運(yùn)行設(shè)置采用如下方式進(jìn)行:
(1)單點(diǎn)操作負(fù)載測(cè)試場(chǎng)景設(shè)計(jì)為分別模擬1、50、100個(gè)用戶并發(fā),采用靜態(tài)或動(dòng)態(tài)加壓方式(1個(gè)用戶采用靜態(tài)加壓方式;50、100個(gè)用戶采用動(dòng)態(tài)加壓方式),測(cè)試時(shí)不設(shè)置腳本的思考時(shí)間Think Time(或根據(jù)不同業(yè)務(wù)需求調(diào)整),測(cè)試持續(xù)10分鐘,同時(shí)監(jiān)控服務(wù)器的資源利用情況。
(2)混合業(yè)務(wù)負(fù)載測(cè)試場(chǎng)景設(shè)計(jì)為模擬100個(gè)用戶并發(fā),對(duì)被測(cè)業(yè)務(wù)點(diǎn)進(jìn)行混合壓力測(cè)試,采用動(dòng)態(tài)加壓方式,平均分配用戶比例,測(cè)試時(shí)不設(shè)置腳本的思考時(shí)間Think Time(或根據(jù)不同業(yè)務(wù)需求調(diào)整),測(cè)試持續(xù)時(shí)間為10分鐘,同時(shí)監(jiān)控服務(wù)器的資源利用情況。
(3)穩(wěn)定性測(cè)試場(chǎng)景設(shè)計(jì)為100個(gè)用戶并發(fā),對(duì)被測(cè)業(yè)務(wù)點(diǎn)進(jìn)行穩(wěn)定性測(cè)試,采用動(dòng)態(tài)加壓方式,平均分配用戶比例,測(cè)試時(shí)不設(shè)置腳本的思考時(shí)間Think Time(或根據(jù)不同業(yè)務(wù)需求調(diào)整),測(cè)試持續(xù)時(shí)間為4小時(shí),同時(shí)監(jiān)控服務(wù)器的資源利用情況。
2.8 分析測(cè)試結(jié)果
網(wǎng)上訂購(gòu)、訂單查詢、統(tǒng)計(jì)分析在1、50個(gè)用戶并發(fā)時(shí)平均響應(yīng)時(shí)間均小于3秒,但在100個(gè)用戶并發(fā)時(shí),移動(dòng)應(yīng)用開始報(bào)錯(cuò),報(bào)錯(cuò)信息為Java.sql.SQLException錯(cuò)誤和WebLogic 連接池泄露問(wèn)題。在與開發(fā)方進(jìn)行溝通后,排除服務(wù)器端網(wǎng)絡(luò)性能問(wèn)題和應(yīng)用軟件設(shè)計(jì)問(wèn)題,將問(wèn)題定位為數(shù)據(jù)庫(kù)配置問(wèn)題和應(yīng)用軟件參數(shù)設(shè)置問(wèn)題。因此,配合開發(fā)方對(duì)數(shù)據(jù)庫(kù)進(jìn)行了調(diào)優(yōu),并對(duì)WebLogic連接池參數(shù)進(jìn)行了配置。對(duì)調(diào)優(yōu)后的移動(dòng)應(yīng)用軟件執(zhí)行第二輪回歸測(cè)試,三個(gè)性能點(diǎn)的100個(gè)用戶并發(fā)平均響應(yīng)時(shí)間均小于5秒,混合業(yè)務(wù)和穩(wěn)定性測(cè)試也均達(dá)到了本次測(cè)試目的與需求。同時(shí),服務(wù)器CPU利用率、可用內(nèi)存和磁盤I/O也未見異常波動(dòng)。如圖2,圖3,圖4,圖5,表1,表2,表3,表4所示。
3 結(jié)束語(yǔ)
隨著移動(dòng)終端的快速普及和發(fā)展,移動(dòng)應(yīng)用軟件的性能至關(guān)重要。在移動(dòng)應(yīng)用系統(tǒng)上線發(fā)布之前,對(duì)其開展性能測(cè)試,及時(shí)發(fā)現(xiàn)不足,為系統(tǒng)正式運(yùn)行后提供了有效的質(zhì)量保障。本文通過(guò)一個(gè)測(cè)試實(shí)踐介紹了性能測(cè)試的手機(jī)協(xié)議腳本錄制原理、測(cè)試目的與需求、性能測(cè)試點(diǎn)的選擇、腳本錄制、測(cè)試場(chǎng)景及分析測(cè)試結(jié)果等。實(shí)驗(yàn)結(jié)果表明,性能測(cè)試可以模擬和預(yù)測(cè)真實(shí)環(huán)境中對(duì)應(yīng)用系統(tǒng)的壓力,將應(yīng)用系統(tǒng)中存在的問(wèn)題暴露出來(lái),并通過(guò)對(duì)測(cè)試獲得的各項(xiàng)數(shù)據(jù)進(jìn)行分析,對(duì)優(yōu)化應(yīng)用系統(tǒng)的性能,選擇合適的軟硬件環(huán)境,提供幫助。當(dāng)然,移動(dòng)應(yīng)用軟件除了好的性能,安全測(cè)試也是很重要的一方面,希望在以后的研究過(guò)程中,把性能和安全有機(jī)結(jié)合,提供更多的解決方案。
參考文獻(xiàn)
[1]靳鴻著.測(cè)試系統(tǒng)設(shè)計(jì)原理及應(yīng)用[M]. 北京:電子工業(yè)出版社,2013.
[2]宋巍,張春柳,鄔斌亮.Web系統(tǒng)性能測(cè)試研究與實(shí)踐[J].計(jì)算機(jī)應(yīng)用與軟件,2015,32(03):4-6.
[3]簡(jiǎn)玲.B/S系統(tǒng)性能測(cè)試的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2009,35(10):51-53.
[4]楊怡君,黃大慶.Android手機(jī)自動(dòng)化性能測(cè)試工具的研究與開發(fā)[J].計(jì)算機(jī)應(yīng)用,2012,32(02):554-556.
[5]陳紹英,劉建華,金成姬.LoadRunner性能測(cè)試實(shí)例[M].北京:電子工業(yè)出版社,2007.
[6]王立群,楊靜.移動(dòng)應(yīng)用軟件性能測(cè)試研究[J].科技風(fēng),2015,21(21):115-115.
[7]張靖,彭新光.Android智能手機(jī)滲透測(cè)試研究[J].計(jì)算機(jī)應(yīng)用與軟件,2014,31(12):29-32.
[8]鄧璐娟,范乃梅,孫義坤等.基于Web應(yīng)用的性能測(cè)試模型研究[J].計(jì)算機(jī)工程與應(yīng)用,2013,49(01):75-77.
[9]李少杰.面向移動(dòng)智能終端應(yīng)用性能測(cè)試平臺(tái)的研究[D].廣州:華南理工大學(xué),2014.
[10]陳鵬.基于Android應(yīng)用的性能監(jiān)控系統(tǒng)的研究與實(shí)現(xiàn)[D].廣州:華南理工大學(xué),2015.
[11]孟躍偉,胡愛群,宋宇波等.無(wú)線局域網(wǎng)安全性能測(cè)試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2013,39(07):193-199.
[12]劉 嚴(yán),胡 敏.性能測(cè)試中腳本捕獲的方法研究與應(yīng)用[J].計(jì)算機(jī)工程,2006,32(22):94-95.
作者簡(jiǎn)介
杜春業(yè)(1987-),女,上海人。大學(xué)本科學(xué)歷?,F(xiàn)為中級(jí)工程師。主要研究方向?yàn)檐浖y(cè)試。
作者單位
上海市計(jì)算機(jī)軟件評(píng)測(cè)重點(diǎn)實(shí)驗(yàn)室 上海市 200112