王 巍,薛堯予,張輝
(國家圖書館 信息網絡部,北京 100081)
快速印刷管理系統作為一種將IT軟件與數字印刷設備整合起來的系統,通常具有文獻印刷數據自由存取、按需印刷、圖文混排印刷、可變數據印刷、多批次重復印刷、各種厚度文獻的裝訂等功能。該系統能否最大限度地發揮了高速數碼印刷機的優勢?能否在多人同時操作情況下,不會出現系統崩潰、反應滯后等問題?能否全天候正常服務并同時保證印刷質量?這些系統性能問題,迫切需要通過性能測試來進行驗證,為系統的投入運行提供技術保證,從而解除用戶的憂慮,防患于未然。本文就此展開論述,以一個具有代表性的快速印刷管理系統為例,探討系統的性能測試工作。

圖1 測試過程
性能測試的過程大體分為三個階段:準備、執行和分析。此外,風險評估和控制貫穿整個測試過程始終(如圖1所示)。
1)準備階段:了解被測系統情況、測試范圍、性能需求等,準備測試環境、工具、用例、數據、腳本等。
2)執行階段:使用錄制好的腳本,通過場景模擬進行性能測試,同時收集監控數據。
3)分析階段:收集測試性能表現數據與日志,進行性能測試結果分析。
風險評估和控制:這里的風險包括測試過程中遇到的各種問題,如測試不能按計劃進行、測試工具出現問題、測試數據無法使用等,也包括測試執行后帶來的各種后果的風險,如生產數據被破壞、系統被壓垮等。應提前考慮到各個環節可能遇見的風險,同時提出規避風險的方法[1]。
1)了解被測系統情況

圖2 快速印刷管理系統邏輯結構圖
此系統的硬件部分由Nuver a高速數碼印刷機、多臺服務器、客戶端PC機、網絡設備等組成;軟件部分由定制開發的工單管理軟件、工作流管理軟件、印刷控制軟件和Web服務IIS、數據庫SQL Ser ver等組成。其中,工單管理系統負責接收電子書數據和用戶請求、對數據進行印刷預處理和格式轉換;工作流管理軟件負責定義數據處理的序列,控制印刷數據按照要求完成數據處理;印刷控制軟件負責最終的印刷輸出。

表1 測試硬件環境與軟件部署
2)測試工具選擇
并發性能測試是在客戶端執行的黑盒測試,一般不采用手工方式,而是利用工具采用自動化方式進行。本次測試采用自動負載測試工具Load Runner,它可通過模擬真正用戶的操作行為并進行實時性能監測,來幫助客戶快速地查找性能問題。
3)測試范圍
系統性能測試范圍盡量避免大而全的測試,而是根據需求和系統特點來制定測試方案,選取可用于衡量系統性能的典型的業務流程來展開測試。測試人員經過分析,本案例最終選擇“登錄”、“讀取MARC”、“合并PDF”、“提交印刷”等幾個有代表性的功能來進行測試,其中,“登錄”操作能提現B/S結構中IIS、SQL Ser ver數據庫的效率,“讀取MARC”、“合并PDF”、“提交印刷”能提現多用戶并發讀/寫對服務器硬盤造成的壓力。
4)測試場景
由于系統操作人員共40人左右,根據“并發在線用戶數是實時在線用戶數的10%~20%”的原則,將并發用戶數設為4、6、8,在LoadRunner的Control l er中控制Load Generator對系統進行壓力加載,觀察性能表現。
5)測試數據
測試數據包括電子書數據、數據庫數據和參數化數據。結合實際情況,本次測試選用PDF、TIFF兩種電子書數據(共16本),每本書一個目錄,其中包括圖像文件、mdb文件、MARC文件等;數據庫數據即在數據庫中構造用戶數據(操作員ID、姓名、密碼、部門等字段)和書籍數據(ID、書名、尺寸、比例、數據格式、存儲位置、文件大小等字段);參數化數據是用于腳本中的常量替換,由測試人員在腳本中找出需要參數化的對象,如操作員ID、密碼,用參數表加以替換,從而模擬實現多用戶的同時運行。
6)測試腳本
使用Load Runner的VuGen,錄制系統客戶端與服務器端之間的交互行為,生成測試腳本。然而錄到的腳本不能直接使用,需要做參數化、變量獲取(web_r eg_save_par am)、關聯、設集合點等多種修改和完善,才能最終用于客戶端仿真。
7)測試環境
8)系統監控
在壓力加載的同時,我們對應用服務器的系統資源進行實時監控,如CPU、內存、硬盤、網絡、數據庫等,將監測到的數據與運行腳本返回的數據進行比較和分析,為系統瓶頸診斷提供線索。
1)測試執行
在不同并發用戶數(4、6、8)條件下,分別運行“登錄”、“讀取MARC”、“合并PDF”、“提交印刷”腳本,發現除了在運行“合并PDF”腳本時出現操作失敗情況之外,其余腳本均成功運行(如表2所示),且系統監控數據平穩,CPU、內存、網絡、硬盤、IIS及數據庫均未出現緊張、擁堵情況。

表2 場景運行結果表
“合并PDF”腳本運行時,分別在6個、8個并發情況下,均有1個用戶操作失敗,導致不能產生正確的PDF文件,且操作失敗時,系統界面顯示“系統忙,請稍后再試”。
結合同步監測到的系統數據進行分析,發現“合并PDF”時:
隨著并發人數不斷增加,CPU的平均利用率一直處于20%以下,“%DPC t ime”的值處于較低水平,處理器隊列長度始終小于2,未出現堵塞;
內存基本保持穩定,并發人數增加對內存影響不大,可用物理內存始終在總物理內存的70%左右;
服務器硬盤的“Disk Transf er/sec”的值一直大于120ms,最高時達到197ms。這個參數反映硬盤完成請求所用的時間,一般而言,此值應小于60ms,過大則表示系統要求的I/O速度已接近硬盤的最大速度,需要更換更快的硬盤或更換硬盤的RAID方式;
SQL Ser ver數據庫和IIS性能數據穩定,無報錯。
2)結果分析
結果分析是對測試過程產生的數據及現象進行分析,判斷是否符合設計用戶需求、是否達到預期的性能指標,如有不達標需進一步分析原因并提出解決方法。
本案例通過對上面測試執行產生的數據進行分析,可以判斷,“合并PDF”腳本運行時產生了大量的硬盤讀寫,特別是當操作對象是大數據文件(如TIFF格式)時,系統壓力集中在硬盤上,導致硬盤繁忙無法及時響應,影響了系統性能。
因此,提出以下解決思路:
要求廠商調整軟件代碼算法結構、分散系統壓力;
提升硬盤I/O速度或更換硬盤的RAID方式。
軟件性能測試技術是查找軟件性能問題和檢驗軟件質量的重要手段,已經成為軟件工程實施的必要環節。以LoadRunner作為測試工具,創建真實的負載并精確定位性能問題,為保證軟件應用性能和軟件工程順利實施提供嚴謹的技術保障。
[1] 劉群策.LoadRunner和軟件項目性能測試[M].北京:機械工業出版社,2008.
[2] 陳紹英,金成姬,馮艷碩. LoadRunner虛擬用戶開發指南[M].北京:電子工業出版社,2009.