王 巍,薛堯予,張輝
(國(guó)家圖書(shū)館 信息網(wǎng)絡(luò)部,北京 100081)
快速印刷管理系統(tǒng)作為一種將IT軟件與數(shù)字印刷設(shè)備整合起來(lái)的系統(tǒng),通常具有文獻(xiàn)印刷數(shù)據(jù)自由存取、按需印刷、圖文混排印刷、可變數(shù)據(jù)印刷、多批次重復(fù)印刷、各種厚度文獻(xiàn)的裝訂等功能。該系統(tǒng)能否最大限度地發(fā)揮了高速數(shù)碼印刷機(jī)的優(yōu)勢(shì)?能否在多人同時(shí)操作情況下,不會(huì)出現(xiàn)系統(tǒng)崩潰、反應(yīng)滯后等問(wèn)題?能否全天候正常服務(wù)并同時(shí)保證印刷質(zhì)量?這些系統(tǒng)性能問(wèn)題,迫切需要通過(guò)性能測(cè)試來(lái)進(jìn)行驗(yàn)證,為系統(tǒng)的投入運(yùn)行提供技術(shù)保證,從而解除用戶的憂慮,防患于未然。本文就此展開(kāi)論述,以一個(gè)具有代表性的快速印刷管理系統(tǒng)為例,探討系統(tǒng)的性能測(cè)試工作。
圖1 測(cè)試過(guò)程
性能測(cè)試的過(guò)程大體分為三個(gè)階段:準(zhǔn)備、執(zhí)行和分析。此外,風(fēng)險(xiǎn)評(píng)估和控制貫穿整個(gè)測(cè)試過(guò)程始終(如圖1所示)。
1)準(zhǔn)備階段:了解被測(cè)系統(tǒng)情況、測(cè)試范圍、性能需求等,準(zhǔn)備測(cè)試環(huán)境、工具、用例、數(shù)據(jù)、腳本等。
2)執(zhí)行階段:使用錄制好的腳本,通過(guò)場(chǎng)景模擬進(jìn)行性能測(cè)試,同時(shí)收集監(jiān)控?cái)?shù)據(jù)。
3)分析階段:收集測(cè)試性能表現(xiàn)數(shù)據(jù)與日志,進(jìn)行性能測(cè)試結(jié)果分析。
風(fēng)險(xiǎn)評(píng)估和控制:這里的風(fēng)險(xiǎn)包括測(cè)試過(guò)程中遇到的各種問(wèn)題,如測(cè)試不能按計(jì)劃進(jìn)行、測(cè)試工具出現(xiàn)問(wèn)題、測(cè)試數(shù)據(jù)無(wú)法使用等,也包括測(cè)試執(zhí)行后帶來(lái)的各種后果的風(fēng)險(xiǎn),如生產(chǎn)數(shù)據(jù)被破壞、系統(tǒng)被壓垮等。應(yīng)提前考慮到各個(gè)環(huán)節(jié)可能遇見(jiàn)的風(fēng)險(xiǎn),同時(shí)提出規(guī)避風(fēng)險(xiǎn)的方法[1]。
1)了解被測(cè)系統(tǒng)情況
圖2 快速印刷管理系統(tǒng)邏輯結(jié)構(gòu)圖
此系統(tǒng)的硬件部分由Nuver a高速數(shù)碼印刷機(jī)、多臺(tái)服務(wù)器、客戶端PC機(jī)、網(wǎng)絡(luò)設(shè)備等組成;軟件部分由定制開(kāi)發(fā)的工單管理軟件、工作流管理軟件、印刷控制軟件和Web服務(wù)IIS、數(shù)據(jù)庫(kù)SQL Ser ver等組成。其中,工單管理系統(tǒng)負(fù)責(zé)接收電子書(shū)數(shù)據(jù)和用戶請(qǐng)求、對(duì)數(shù)據(jù)進(jìn)行印刷預(yù)處理和格式轉(zhuǎn)換;工作流管理軟件負(fù)責(zé)定義數(shù)據(jù)處理的序列,控制印刷數(shù)據(jù)按照要求完成數(shù)據(jù)處理;印刷控制軟件負(fù)責(zé)最終的印刷輸出。
表1 測(cè)試硬件環(huán)境與軟件部署
2)測(cè)試工具選擇
并發(fā)性能測(cè)試是在客戶端執(zhí)行的黑盒測(cè)試,一般不采用手工方式,而是利用工具采用自動(dòng)化方式進(jìn)行。本次測(cè)試采用自動(dòng)負(fù)載測(cè)試工具Load Runner,它可通過(guò)模擬真正用戶的操作行為并進(jìn)行實(shí)時(shí)性能監(jiān)測(cè),來(lái)幫助客戶快速地查找性能問(wèn)題。
3)測(cè)試范圍
系統(tǒng)性能測(cè)試范圍盡量避免大而全的測(cè)試,而是根據(jù)需求和系統(tǒng)特點(diǎn)來(lái)制定測(cè)試方案,選取可用于衡量系統(tǒng)性能的典型的業(yè)務(wù)流程來(lái)展開(kāi)測(cè)試。測(cè)試人員經(jīng)過(guò)分析,本案例最終選擇“登錄”、“讀取MARC”、“合并PDF”、“提交印刷”等幾個(gè)有代表性的功能來(lái)進(jìn)行測(cè)試,其中,“登錄”操作能提現(xiàn)B/S結(jié)構(gòu)中IIS、SQL Ser ver數(shù)據(jù)庫(kù)的效率,“讀取MARC”、“合并PDF”、“提交印刷”能提現(xiàn)多用戶并發(fā)讀/寫(xiě)對(duì)服務(wù)器硬盤造成的壓力。
4)測(cè)試場(chǎng)景
由于系統(tǒng)操作人員共40人左右,根據(jù)“并發(fā)在線用戶數(shù)是實(shí)時(shí)在線用戶數(shù)的10%~20%”的原則,將并發(fā)用戶數(shù)設(shè)為4、6、8,在LoadRunner的Control l er中控制Load Generator對(duì)系統(tǒng)進(jìn)行壓力加載,觀察性能表現(xiàn)。
5)測(cè)試數(shù)據(jù)
測(cè)試數(shù)據(jù)包括電子書(shū)數(shù)據(jù)、數(shù)據(jù)庫(kù)數(shù)據(jù)和參數(shù)化數(shù)據(jù)。結(jié)合實(shí)際情況,本次測(cè)試選用PDF、TIFF兩種電子書(shū)數(shù)據(jù)(共16本),每本書(shū)一個(gè)目錄,其中包括圖像文件、mdb文件、MARC文件等;數(shù)據(jù)庫(kù)數(shù)據(jù)即在數(shù)據(jù)庫(kù)中構(gòu)造用戶數(shù)據(jù)(操作員ID、姓名、密碼、部門等字段)和書(shū)籍?dāng)?shù)據(jù)(ID、書(shū)名、尺寸、比例、數(shù)據(jù)格式、存儲(chǔ)位置、文件大小等字段);參數(shù)化數(shù)據(jù)是用于腳本中的常量替換,由測(cè)試人員在腳本中找出需要參數(shù)化的對(duì)象,如操作員ID、密碼,用參數(shù)表加以替換,從而模擬實(shí)現(xiàn)多用戶的同時(shí)運(yùn)行。
6)測(cè)試腳本
使用Load Runner的VuGen,錄制系統(tǒng)客戶端與服務(wù)器端之間的交互行為,生成測(cè)試腳本。然而錄到的腳本不能直接使用,需要做參數(shù)化、變量獲?。╳eb_r eg_save_par am)、關(guān)聯(lián)、設(shè)集合點(diǎn)等多種修改和完善,才能最終用于客戶端仿真。
7)測(cè)試環(huán)境
8)系統(tǒng)監(jiān)控
在壓力加載的同時(shí),我們對(duì)應(yīng)用服務(wù)器的系統(tǒng)資源進(jìn)行實(shí)時(shí)監(jiān)控,如CPU、內(nèi)存、硬盤、網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)等,將監(jiān)測(cè)到的數(shù)據(jù)與運(yùn)行腳本返回的數(shù)據(jù)進(jìn)行比較和分析,為系統(tǒng)瓶頸診斷提供線索。
1)測(cè)試執(zhí)行
在不同并發(fā)用戶數(shù)(4、6、8)條件下,分別運(yùn)行“登錄”、“讀取MARC”、“合并PDF”、“提交印刷”腳本,發(fā)現(xiàn)除了在運(yùn)行“合并PDF”腳本時(shí)出現(xiàn)操作失敗情況之外,其余腳本均成功運(yùn)行(如表2所示),且系統(tǒng)監(jiān)控?cái)?shù)據(jù)平穩(wěn),CPU、內(nèi)存、網(wǎng)絡(luò)、硬盤、IIS及數(shù)據(jù)庫(kù)均未出現(xiàn)緊張、擁堵情況。
表2 場(chǎng)景運(yùn)行結(jié)果表
“合并PDF”腳本運(yùn)行時(shí),分別在6個(gè)、8個(gè)并發(fā)情況下,均有1個(gè)用戶操作失敗,導(dǎo)致不能產(chǎn)生正確的PDF文件,且操作失敗時(shí),系統(tǒng)界面顯示“系統(tǒng)忙,請(qǐng)稍后再試”。
結(jié)合同步監(jiān)測(cè)到的系統(tǒng)數(shù)據(jù)進(jìn)行分析,發(fā)現(xiàn)“合并PDF”時(shí):
隨著并發(fā)人數(shù)不斷增加,CPU的平均利用率一直處于20%以下,“%DPC t ime”的值處于較低水平,處理器隊(duì)列長(zhǎng)度始終小于2,未出現(xiàn)堵塞;
內(nèi)存基本保持穩(wěn)定,并發(fā)人數(shù)增加對(duì)內(nèi)存影響不大,可用物理內(nèi)存始終在總物理內(nèi)存的70%左右;
服務(wù)器硬盤的“Disk Transf er/sec”的值一直大于120ms,最高時(shí)達(dá)到197ms。這個(gè)參數(shù)反映硬盤完成請(qǐng)求所用的時(shí)間,一般而言,此值應(yīng)小于60ms,過(guò)大則表示系統(tǒng)要求的I/O速度已接近硬盤的最大速度,需要更換更快的硬盤或更換硬盤的RAID方式;
SQL Ser ver數(shù)據(jù)庫(kù)和IIS性能數(shù)據(jù)穩(wěn)定,無(wú)報(bào)錯(cuò)。
2)結(jié)果分析
結(jié)果分析是對(duì)測(cè)試過(guò)程產(chǎn)生的數(shù)據(jù)及現(xiàn)象進(jìn)行分析,判斷是否符合設(shè)計(jì)用戶需求、是否達(dá)到預(yù)期的性能指標(biāo),如有不達(dá)標(biāo)需進(jìn)一步分析原因并提出解決方法。
本案例通過(guò)對(duì)上面測(cè)試執(zhí)行產(chǎn)生的數(shù)據(jù)進(jìn)行分析,可以判斷,“合并PDF”腳本運(yùn)行時(shí)產(chǎn)生了大量的硬盤讀寫(xiě),特別是當(dāng)操作對(duì)象是大數(shù)據(jù)文件(如TIFF格式)時(shí),系統(tǒng)壓力集中在硬盤上,導(dǎo)致硬盤繁忙無(wú)法及時(shí)響應(yīng),影響了系統(tǒng)性能。
因此,提出以下解決思路:
要求廠商調(diào)整軟件代碼算法結(jié)構(gòu)、分散系統(tǒng)壓力;
提升硬盤I/O速度或更換硬盤的RAID方式。
軟件性能測(cè)試技術(shù)是查找軟件性能問(wèn)題和檢驗(yàn)軟件質(zhì)量的重要手段,已經(jīng)成為軟件工程實(shí)施的必要環(huán)節(jié)。以LoadRunner作為測(cè)試工具,創(chuàng)建真實(shí)的負(fù)載并精確定位性能問(wèn)題,為保證軟件應(yīng)用性能和軟件工程順利實(shí)施提供嚴(yán)謹(jǐn)?shù)募夹g(shù)保障。
[1] 劉群策.LoadRunner和軟件項(xiàng)目性能測(cè)試[M].北京:機(jī)械工業(yè)出版社,2008.
[2] 陳紹英,金成姬,馮艷碩. LoadRunner虛擬用戶開(kāi)發(fā)指南[M].北京:電子工業(yè)出版社,2009.