摘要賬單系統(tǒng)是行業(yè)的一個重要的商家服務系統(tǒng)為后期商家查詢、下載賬單提供支持。為了保證商家服務質量從賬單系統(tǒng)的架構以及特點出發(fā)文章對其性能測試的要求、場景、指標、流程、策略以及用例設計進行分析并研究測試方法采用阿里體系內的服務壓測平臺進行后端服務的性能測試。結果表明性能測試有助于發(fā)現(xiàn)系統(tǒng)中存在的問題為系統(tǒng)進一步優(yōu)化提供依據(jù)。
關鍵詞性能測試;賬單系統(tǒng);系統(tǒng);性能調優(yōu)
中圖法分類號:TP311文獻標識碼:A
Application of software performance test in bill query system
Ll Jiang
( Alipay(China)Network Technology Co.,Ltd.,Shanghai 200135,China)
Abstract; Billing system is an important business service system in 020 industry,which providessupport for later businesses to query and download bills. In order to ensure the service quality ofmerchants,starting from the architecture and characteristics of the billing system,this paperanalyzes the requirements,scenarios,indicators,processes,strategies and use case design of itsperformance test,studies the test methods,and uses the service pressure test platform in Alibabasystem to test the performance of back-end services. The results show that the performance test ishelpful to find the problems existing in the system and provide a basis for further optimization of thesystem.
Key words: performance test,billing system,Web system,performance tuning
1? 引言
隨著“互聯(lián)網(wǎng)+”的飛速發(fā)展,O2O 行業(yè)用戶日益增多,用戶與系統(tǒng)之間產生的交互、沉淀的數(shù)據(jù)量也猛增。因此,作為服務端,不僅僅要滿足用戶功能上的需求,同時要考慮大量用戶、海量數(shù)據(jù)的背景下,系統(tǒng)的表現(xiàn)能力。為了在發(fā)布之前有效保障用戶體驗,賬單系統(tǒng)除了要完成功能測試,還要驗證后端服務的各項性能指標,發(fā)現(xiàn)系統(tǒng)存在的瓶頸,并針對這些瓶頸進行優(yōu)化、改善,最終滿足發(fā)布要求,以保障用戶體驗[1 ]。
2? 性能測試概述
性能測試是指在一定的軟件、硬件、網(wǎng)絡環(huán)境下,通過模擬用戶請求,針對系統(tǒng)進行測試,考察監(jiān)控服務的響應能力。在一定的壓力負載下,測試系統(tǒng)的響應時間、空間資源是否達到預期。如果沒有達到預期,對結果指標進行分析,為軟件調優(yōu)提供解決方案[2]。
在互聯(lián)網(wǎng)行業(yè),如果將性能測試按照被測對象進行劃分,可以分為客戶端性能測試( APP 或者 Web)、服務端性能測試、全鏈路性能測試。按不同的測試目的,又可分為壓力測試、負載測試、疲勞度測試、穩(wěn)定性測試[3]。
經過性能測試后,會出現(xiàn)一些常用的監(jiān)控指標,如服務器(CPU 使用率、內存使用率、處理器隊列、磁盤狀態(tài)等)、數(shù)據(jù)庫(連接數(shù)、數(shù)據(jù)庫讀寫響應時間長度、數(shù)據(jù)庫讀寫吞吐量等)、服務(吞吐量、響應時間)、緩存(緩存容量、連接數(shù)、吞吐量)。
在業(yè)界,常用的性能測試工具較多,包括開源工具和公司內部工具。開源工具有LoadRunner,Jemter,WebLoad,QALoad[4]等;在螞蟻體系(阿里體系)內,出于數(shù)據(jù)安全考慮,采用自己的壓測平臺。螞蟻壓測全鏈路壓測方案如圖1 所示。
完整的性能測試流程一般分為以下幾個過程:測試需求分析、性能指標的劃定、執(zhí)行、數(shù)據(jù)統(tǒng)計、結果分析、優(yōu)化、測試報告聲稱。
3? 賬單查詢系統(tǒng)性能測試需求分析及方案設計
3.1? 需求分析
圖2 所示是賬單系統(tǒng)功能圖。
測試目標:賬單系統(tǒng)作為訂單系統(tǒng)的下游,需要支持日均1000萬的訂單數(shù)據(jù)同步;支持商戶按周、月查詢賬單,方便對賬。從功能上看,賬單系統(tǒng)分為兩大塊:訂單狀態(tài)變更時,通過同步調用同步數(shù)據(jù);商戶會通過 Web 頁面查詢一段時間內的匯總和明細數(shù)據(jù)。
寫數(shù)據(jù)的量:取決于上游訂單并發(fā)量。日均1000萬訂單創(chuàng)建量對應的就是峰值100萬tps的訂單創(chuàng)建量。也就是說,高峰時間,同時會有100萬人下單。因此,賬單同步數(shù)據(jù)接口也需要滿足100萬tps的請求量。
讀數(shù)據(jù)的量:商戶在后臺查詢并發(fā)量并不大,10tps 即可。但是,對于頭部商戶而言,一個月交易量達上千萬條時,查詢接口需要針對海量數(shù)據(jù)進行測試。
3.2? 方案設計
(1)賬單系統(tǒng)性能測試目的
數(shù)據(jù)同步能支持100萬tps壓力訂單創(chuàng)建的壓力值。數(shù)據(jù)讀取能支持千萬級別數(shù)據(jù)量匯總以及明細下載。
(2)工具
螞蟻壓測中心,對接口進行壓測。
(3)環(huán)境
線上環(huán)境,直接在線上進行壓測,更加真實。時間點選擇在真實用戶較少的晚上,對實際客戶影響較小。
服務器:64位,8核 CPU,16GB 內存,150GB 硬盤,千兆以太網(wǎng)網(wǎng)絡,Linux 操作系統(tǒng),線上服務器總量為200臺。
數(shù)據(jù)庫:MySQL l6。
(4)監(jiān)控
服務端:監(jiān)控 CPU 利用率、內存占用率、磁盤 IO 。
客戶端:壓測期間體驗良好,不卡頓。
3.3? 場景設計
場景設計如表1 所列。
4? 賬單查詢系統(tǒng)性能測試實施及結果分析
4.1? 性能測試實施
(1)性能測試腳本開發(fā)
創(chuàng)建訂單代碼:createOrderAction
(2)場景的執(zhí)行
每個讀寫 case 關聯(lián) Action ,通過壓測平臺配置并發(fā)數(shù)量及持續(xù)時間,配置參考圖3 。
4.2? 性能測試結果
第一輪測試結果(詳見表2、表3):賬單同步數(shù)據(jù)接口,通過上游創(chuàng)建訂單連動同步數(shù)據(jù),對上游創(chuàng)建訂單進行并行調用1000tps。
4.3? 性能結論
從第一輪壓測結果看,數(shù)據(jù)同步和查詢均未達到產品需求標準,問題包括:寫高峰時,DB 負載過大,導致查詢無法正常進行;商家的數(shù)據(jù)量大時,查 DB 的時間過長導致接口響應超時,商家通過頁面無法看到結果。
4.4? 性能初步調優(yōu)
(1)性能瓶頸判斷
經過開發(fā)、運維的協(xié)商判定,在不增加線上服務器的前提下,針對上述兩個問題,計劃做以下優(yōu)化改造:當寫出現(xiàn)“洪峰”時,采用“蓄洪、泄洪”,即當前單機請求量超過2000tps 時,同步請求到賬單系統(tǒng),賬單不做存 DB 處理,而是將請求緩存到本地臨時文件中(蓄洪);系統(tǒng)另外起線程,勻速讀取臨時文件,異步處理,不做實時返回,單次處理1000條(泄洪)。針對熱點商戶,采用“預緩存”數(shù)據(jù),即每日 0點,以周/月為單位,后臺事先將頭部商戶的數(shù)據(jù)進行匯總計算、明細下載到文件中,商戶請求時,頭部商戶直接從文件中拉取,普通商戶走 DB 實時拉取。
(2)性能調優(yōu)效果
經過上述改造,重新部署,進行第二輪壓測,結果見表6 。當負載為5000tps 時,超過2000tps ,自動切換到“蓄洪”模式,接口只對請求進行文件轉存,并不做實質性邏輯處理,因此處理速度很快。“泄洪”線程控制單次處理1000條請求,處理也正常。
5? 結論
本文通過完整的性能測試思考、執(zhí)行流程,描述了其在賬單系統(tǒng)中的有效應用。性能測試在當下互聯(lián)網(wǎng)測試中必不可少,在海量數(shù)據(jù)、大量用戶的背景下,是對功能測試的一種補充,能發(fā)現(xiàn)功能測試發(fā)現(xiàn)不了的問題,幫助開發(fā)、運維人員發(fā)現(xiàn)問題,完善架構設計,給用戶帶來更加平滑的體驗。
參考文獻:
[1] 劉一蒙.基于 web 下網(wǎng)絡安全工具的測試與分析[ D].西安:西安電子科技大學,2012.
[2] 丁秀蘭.Web 測試中性能測試工具的研究與應用[ D].太原:太原理工大學,2006.
[3] 劉蒙華.基于 OA 系統(tǒng)性能測試的研究與應用[ D].西安:西安科技大學,2017.
[4]鄭潤萍.基于 LoadRunner 的 Web 軟件性能瓶頸分析調優(yōu)研究與實踐[D].廣州:華南農業(yè)大學,2016.
作者簡介:
李江(1986—),工程師,研究方向:軟件測試。