陳珊珊
摘 要:性能測試是系統(tǒng)上線前最重要的系統(tǒng)級(jí)測試,省級(jí)集中的營銷系統(tǒng)在正式運(yùn)行前進(jìn)行全面、完整的性能測試進(jìn)行評(píng)估是必須的環(huán)節(jié)。文章簡述了性能測試的方法、指標(biāo)和資源監(jiān)控的內(nèi)容,詳細(xì)分析了省級(jí)集中營銷系統(tǒng)的體系結(jié)構(gòu),針對具體的測試目標(biāo)及海量數(shù)據(jù)處理的要求設(shè)計(jì)了測試業(yè)務(wù)場景。并以一測試場景為例,介紹了消除性能瓶頸的方法。
關(guān)鍵詞:性能測試;數(shù)據(jù)處理;場景設(shè)計(jì);調(diào)優(yōu)
中圖分類號(hào):TP274+.4 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1006-8937(2016)32-0086-02
1 概 述
性能測試是保證軟件質(zhì)量的重要手段,屬于軟件測試中的系統(tǒng)級(jí)測試, 它針對軟件在繼承系統(tǒng)中運(yùn)行的性能指標(biāo)進(jìn)行測試, 旨在及早確定和消除新系統(tǒng)中的性能瓶頸[1]。
通過負(fù)載測試、壓力測試等方法的性能測試,測試應(yīng)用系統(tǒng)能否承受大量的并發(fā)用戶數(shù)以及快速響應(yīng)用戶發(fā)送的請求,能否長時(shí)間穩(wěn)定運(yùn)行。在系統(tǒng)測試期間監(jiān)控資源、獲取性能指標(biāo)并進(jìn)行分析,找出系統(tǒng)在硬件、操作系統(tǒng)、數(shù)據(jù)庫、應(yīng)用軟件等方面的性能瓶頸加以改善,使整個(gè)系統(tǒng)的性能得到改進(jìn)優(yōu)化[2]。
省級(jí)集中的一體化營銷管理系統(tǒng)服務(wù)于全省廣大用電客戶和適于企業(yè)內(nèi)部管理,具有如下特點(diǎn):
①在可用性方面,需保證7×24小時(shí)不間斷運(yùn)行;
②在業(yè)務(wù)處理方面,應(yīng)具海量數(shù)據(jù)快速處理、復(fù)雜業(yè)務(wù)流轉(zhuǎn)暢順、資料查詢及時(shí)響應(yīng);
③在系統(tǒng)擴(kuò)展性方面,需滿足多層次應(yīng)用、地域面積覆蓋廣、使用人員眾多等多方要求。因此,系統(tǒng)的性能測試需要有完整、全面的方案。
為了獲取省級(jí)集中營銷系統(tǒng)性能指標(biāo)瓶頸,提出改進(jìn)、優(yōu)化措施,基于已有成果,本文結(jié)合省級(jí)集中營銷系統(tǒng)的體系結(jié)構(gòu),在設(shè)定具體測試目標(biāo)基礎(chǔ)上,提出了基于海量數(shù)據(jù)處理的測試場景具體設(shè)計(jì)原則和監(jiān)控內(nèi)容,通過案例分析說明了系統(tǒng)性能調(diào)優(yōu)的具體方法。
2 性能測試概述
性能測試是通過模擬真實(shí)環(huán)境下的負(fù)載,采集系統(tǒng)各方面的性能數(shù)據(jù),評(píng)估系統(tǒng)正常運(yùn)行情況下的承受力和穩(wěn)定性,分析系統(tǒng)的性能與存在的瓶頸。測試方法主要包括負(fù)載測試、壓力測試、配置測試并發(fā)測試和可靠性測試等[3]。在測試過程中,通常需要合理的結(jié)合幾種測試方法,模擬真實(shí)環(huán)境,設(shè)計(jì)不同的測場景獲取更多有效的性能指標(biāo)。
性能測試一般基于如下目的:
①驗(yàn)證系統(tǒng)在給定條件下是否達(dá)到設(shè)計(jì)目標(biāo)或用戶要求;
②探測系統(tǒng)在給定條件下極限處理能力;
③通過對系統(tǒng)各參數(shù)的調(diào)整,測試系統(tǒng)的最優(yōu)性能配置;
④通過性能測試發(fā)現(xiàn)功能測試難以發(fā)現(xiàn)的與性能有關(guān)缺陷。
因此,對當(dāng)前的系統(tǒng)給予相當(dāng)?shù)呢?fù)載,并且能夠分析系統(tǒng)在給定負(fù)載下的表現(xiàn)是實(shí)現(xiàn)性能測試的關(guān)鍵。為有效發(fā)現(xiàn)負(fù)載條件下的各項(xiàng)性能指標(biāo),需要篩選分析影響系統(tǒng)的主要測試性能因素,才能做到有的放矢。應(yīng)用系統(tǒng)性能測試主要包括:響應(yīng)時(shí)間、吞吐量、每秒事務(wù)數(shù)(TPS)、資源利用率、數(shù)據(jù)庫性能等方面。
在進(jìn)行性能測試時(shí),需要對系統(tǒng)各個(gè)方面(包括系統(tǒng)硬件、操作系統(tǒng)、中間件、數(shù)據(jù)庫等)統(tǒng)一監(jiān)控,以便進(jìn)行系統(tǒng)瓶頸的分析與優(yōu)化。
3 測試方案
省級(jí)集中的營銷系統(tǒng)為了滿足高可用性、高可擴(kuò)展性和高性能需求,采用了分布式協(xié)調(diào)服務(wù)ZooKeeper和自適配通信環(huán)境(ACE)技術(shù)構(gòu)建通用的高性能分布式計(jì)算框架;同時(shí),為了滿足全省千家萬戶用電服務(wù)、電量電費(fèi)計(jì)量收費(fèi)的信息支撐服務(wù)要求,在系統(tǒng)中存放了海量的用戶數(shù)據(jù)、電網(wǎng)數(shù)據(jù),以及系統(tǒng)支持信息。測試場景的設(shè)計(jì)既要發(fā)現(xiàn)系統(tǒng)框架中用戶訪問的性能瓶頸,又要測試到海量數(shù)據(jù)處理的反應(yīng)速度。
3.1 系統(tǒng)結(jié)構(gòu)
基于SOA的多層架構(gòu)的省級(jí)集中系統(tǒng),在技術(shù)路線上采用將表示邏輯、業(yè)務(wù)邏輯與數(shù)據(jù)邏輯相分離,客戶端支持PC、掌上電腦、手持電腦等設(shè)備;接入端通過負(fù)載均衡器將用戶的訪問按照一定的策略分配到不同的服務(wù)器群組;應(yīng)用服務(wù)器將展示與運(yùn)算邏輯分離,而邏輯運(yùn)算服務(wù)組件采用混合模式,針對不同的服務(wù)要求采用C或Java來進(jìn)行開發(fā),以充分利用C語言及Java語言的優(yōu)勢;數(shù)據(jù)層通過小型機(jī)群與存儲(chǔ)陣列實(shí)現(xiàn)海量數(shù)據(jù)的存放與訪問。
3.2 具體測試目標(biāo)
評(píng)估系統(tǒng)在現(xiàn)有軟、硬件環(huán)境下可支持業(yè)務(wù)規(guī)模的系統(tǒng)性能。在包括多類業(yè)務(wù)場景情況下的如下指標(biāo):
①訪問的平均響應(yīng)時(shí)間;
②訪問的最大響應(yīng)時(shí)間;
③平均每秒處理訪問數(shù)量;
④訪問用戶的成功率;
⑤規(guī)定最大用戶并發(fā)數(shù)下的性能指標(biāo)。
根據(jù)上述量化的指標(biāo)測試,分析被測營銷管理系統(tǒng)在不同并發(fā)用戶數(shù)下的性能指標(biāo),找出系統(tǒng)性能瓶頸,提出改善性能方案。
3.3 測試場景設(shè)計(jì)|
性能測試的用例設(shè)計(jì)不同于功能測試用例,它只是有針對性地根據(jù)系統(tǒng)最可能出現(xiàn)瓶頸的功能點(diǎn)來編寫,不需要覆蓋整個(gè)系統(tǒng)需求[4]。為使性能測試的覆蓋率更廣泛,性能測試用例的設(shè)計(jì)需考慮單一場景測試用例和混合場景測試用例的同時(shí)存在,性能測試用例中也需考慮并發(fā)數(shù)、響應(yīng)時(shí)間、持續(xù)時(shí)間、資源使用情況等關(guān)鍵設(shè)計(jì)值或者指標(biāo)值的存在。見表1。
3.3.1 單一場景測試用例
單一場景測試用例(見表1)考察系統(tǒng)對于單一業(yè)務(wù)的并發(fā)處理能力,本次測試選擇具有代表性、最核心的9個(gè)業(yè)務(wù)場景,按照實(shí)際數(shù)據(jù)確定并發(fā)數(shù)。
3.3.2 混合場景測試用例
在性能測試中,常見的錯(cuò)誤觀點(diǎn)是,認(rèn)為分別優(yōu)化單個(gè)操作,就能優(yōu)化系統(tǒng)的整體性能,而事實(shí)上系統(tǒng)運(yùn)行時(shí),不同的操作之間往往對系統(tǒng)資源有互鎖關(guān)系。為了模擬用戶的真實(shí)體驗(yàn),避免性能測試偏重于技術(shù)人員的想法,需要綜合考慮整個(gè)系統(tǒng)的運(yùn)行情況[5]。省級(jí)集中的應(yīng)用系統(tǒng)中最具有代表性、最核心的9個(gè)單一業(yè)務(wù)場景組合起來則是有代表性、最核心的混合場景的測試用例,見表2。
按照實(shí)際數(shù)據(jù)情況確定并發(fā)數(shù)。在設(shè)計(jì)測試場景時(shí),嚴(yán)格按照業(yè)務(wù)數(shù)據(jù)的處理關(guān)聯(lián)和順序,并且為真實(shí)模擬實(shí)際業(yè)務(wù)來滿足測試的需要。
4 案例測試及分析
性能測試中的測試分析是難點(diǎn),在應(yīng)用測試實(shí)踐中,需要針對具體測試結(jié)果進(jìn)行分析。以下列舉本方案中單一登錄業(yè)務(wù)場景的測試及系統(tǒng)性能問題的調(diào)優(yōu)方法和步驟,其中案例所用數(shù)據(jù)庫為Oracle;數(shù)據(jù)庫服務(wù)器操作系統(tǒng)為AIX;應(yīng)用服務(wù)器平臺(tái)為WebLogic。
4.1 測試結(jié)果
模擬實(shí)際操作員的登陸退出操作的功能,設(shè)置1 000并發(fā)循環(huán)10分鐘,測試結(jié)果顯示登陸的平均事務(wù)響應(yīng)時(shí)間為3.139 S,HTTP返回狀態(tài)全部是HTTP 200狀態(tài)。
4.2 各測試結(jié)果指標(biāo)分析
①系統(tǒng)響應(yīng):在10分鐘內(nèi)運(yùn)行虛擬用戶數(shù)一直在1000并發(fā)中,平均事務(wù)響應(yīng)時(shí)間無特別大的波動(dòng),系統(tǒng)在此壓力下運(yùn)行比較穩(wěn)定。
②在10分鐘內(nèi)每秒點(diǎn)擊率圖和吞吐量圖呈現(xiàn)一致情況,平均每秒吞吐量為14 967 273.462Byte/s=14.27 MB/s,相對于千兆網(wǎng)絡(luò)不會(huì)形成網(wǎng)絡(luò)瓶頸。
③服務(wù)器性能:從Web服務(wù)器、Java組件服務(wù)器、數(shù)據(jù)庫服務(wù)器資源情況來看,Web應(yīng)用服務(wù)器CPU在30%左右,JAVA應(yīng)用服務(wù)器CPU不超過5%,數(shù)據(jù)庫服務(wù)器CPU不超過5%,服務(wù)器資源運(yùn)行良好。
從上述結(jié)果中我們看到登陸功能壓力測試期間運(yùn)行穩(wěn)定,各個(gè)系統(tǒng)資源沒有形成明顯的瓶頸。
④問題癥結(jié):平均響應(yīng)時(shí)間為3.139 s,不符合要求。針對這種情況,我們對登陸事務(wù)進(jìn)行網(wǎng)頁細(xì)分進(jìn)一步查看時(shí)間消耗,找到登陸中時(shí)間占比最大的頁面請求,進(jìn)一步排查發(fā)現(xiàn)登陸功能的頁面請求量比較多。
4.3 系統(tǒng)優(yōu)化
經(jīng)程序代碼排查,簡化login.jsp頁面請求、壓縮grid.js文件組件,提高較大頁面組件的執(zhí)行效率,從而縮短響應(yīng)時(shí)間,提高系統(tǒng)性能。調(diào)整后,登陸響應(yīng)時(shí)間滿足測試方案需求。
5 結(jié) 語
性能測試是應(yīng)用系統(tǒng)上線前必須經(jīng)歷的過程。系統(tǒng)設(shè)計(jì)中的任何一個(gè)小問題都可能造成嚴(yán)重的性能影響,尤其針對省級(jí)集中的系統(tǒng),一旦出現(xiàn)問題影響范圍更大。在性能測試方案中,針對系統(tǒng)特點(diǎn)模擬運(yùn)行真實(shí)的業(yè)務(wù)場景發(fā)現(xiàn)系統(tǒng)架構(gòu)、系統(tǒng)設(shè)計(jì)、中間件、數(shù)據(jù)庫、應(yīng)用服務(wù)等各個(gè)方面的性能問題,對性能瓶頸有的放矢不斷優(yōu)化調(diào)整,使省級(jí)集中的營銷管理系統(tǒng)達(dá)到設(shè)計(jì)和應(yīng)用要求,為系統(tǒng)上線打下堅(jiān)實(shí)的技術(shù)基礎(chǔ)。
參考文獻(xiàn):
[1] 張永祥等.性能測試專家分析系統(tǒng)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2013,22(4):6-9.
[2] 李怡,周國祥.基于Load Runner 的一種性能測試流程方案研究與設(shè) 計(jì)[J].計(jì)算機(jī)應(yīng)用研究,2009,26(11):4143-4145.
[3] 莊嚴(yán),程紹銀,廉明,等.性能測試在等級(jí)測評(píng)中的應(yīng)用[J]計(jì)算機(jī)應(yīng)用與 軟件,2014,31(7):55-58.
[4] 李怡,周國祥.基于Load Runner 的一種性能測試流程方案研究與設(shè) 計(jì)[J].計(jì)算機(jī)應(yīng)用研究,2009,26(11):4143-4145.
[5] 簡玲.B/S系統(tǒng)性能測試的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2009,35(10):
51-53.