周 健,曹曉龍,吳 琦
(安徽繼遠檢驗檢測技術有限公司,安徽 合肥 230088)
近年來,隨著Web 軟件技術的高速發展,出現了越來越多應用于系統的Web 軟件,Web 軟件成為了軟件開發的主流,逐漸深入到社會中的各個領域。隨著人們對于Web 軟件的需求越來越高,Web 軟件已經從最初的小型網站逐漸擴展為如今各式各樣的電子商務、信息發布、數據服務平臺,其應用領域越來越廣泛,軟件的性能結構也越來越復雜。在這種情況下,Web 軟件的應用質量與運行可靠性成為很多用戶關注的重點。Web 軟件性能參數的測試是Web 軟件研發的重要環節,其主要原理是在設定條件下,對一個Web 軟件進行系統測試,以此發現系統運行時出現的錯誤,及時進行修補。目前相關領域學者已針對Web 軟件性能測試進行了研究,文獻[1]提出了一種利用記憶單元改進DQN 的Web 服務組合優化方法,將C 語言作為編輯環境,通過NET 框架與系統相連的Web 軟件自動化系統測試,但該方式只適用于以C 語言作為編輯環境的Web 軟件,并不適用于所有軟件。文獻[2]提出了一種基于頁面對象的Web 應用測試用例生成方法,但其僅僅針對JAVA技術以及AJAX 技術的動態Web 應用,依舊沒有完全覆蓋所有的Web 應用。為提升Web 軟件性能參數測試效果,該文設計了一種Web 軟件性能參數自動化測試方法。
為了實現對Web 軟件性能參數的自動化測試,該文引入了FabanPlus 自動化測試工具。FabanPlus是基于JAVA 的可開源的測試工具,該測試工具允許用戶使用多種語言來自定義測試工具負載,并可一次模擬上萬次用戶操作行為,提供一個隨機模型來模擬用戶對Web 軟件的操作行為,并可以通過并發量的細粒度來調整軟件[3-4]。FabanPlus 測試架構如圖1 所示。

圖1 FabanPlus測試架構
根據圖1 可知,在執行測試操作時,FabanPlus 可自動記錄Web 軟件系統的吞吐量以及對模擬操作的響應時間,并在模擬操作結束后,對記錄的數據進行分析統計,與此同時,FabanPlus 自動化測試工具擁有管理平臺,操作人員可在管理平臺中進行上傳測試參數、修改負載配置、管理軟件運行等操作,并可隨時查看測試結果[5-6]。
FabanPlus由兩部分構成:MARS與AGEN,如圖2所示。

圖2 FabanPlus架構
觀察圖2 可知,MARS 負責控制測試負載的執行終止等操作,并負責保存和統計測試數據信息。AGEN則負責運行測試系統,執行測試操作。FabanPlus 擁有擴展的Driver 模塊,能夠提供API 組件,允許用戶修改負載的控制值,利用提供的API,用戶可以在其中定義無限個離散的負載值,每個操作由相對應的HTTP 通信單元序列組成,并模擬用戶操作,向Web軟件系統發出請求并響應[7-8]。開發人員通過Web 軟件服務系統的日志便可了解Web 軟件系統中存在的問題。Driver 包括四個組件,分別為HTTP 通信單元、DOM 結構單元、JAVA 解釋單元以及AMO 數據搜索單元并通過異步請求的負載生成算法,完成與Web 軟件的通信以及對Web 軟件性能參數數據的收集并處理。從而實現對Web 軟件的性能參數的自動化測試。
為了實現對Web 軟件性能參數的自動化測試,建立自動化測試矩陣,通過FabanPlus 指令啟動自動化測試矩陣,完成對Web 軟件性能參數的自動化測試。所謂自動化測試矩陣即為在測試流中某個負載節點所有測試用例的集合。該文提出一種按照對Web 軟件系統各個接口的參數成對組合的方式來進行測試用例的選擇,該方法考慮了所有Web 軟件在測試中可能出現的結果與可能,并覆蓋了所有可能產生問題對系統導致的影響,接口數量計算公式如下:
其中,m為Web 軟件系統接口數量,t為每個接口的取值范圍。根據式(1)構造一個虛擬網絡,該網絡第一層第一個節點就代表第一個參數m1的第一個取值t1,以此類推,從第一層第一個節點出發,直至最后一個節點,在此過程中形成一條路徑,路徑上的每一個節點即為一個測試用例。
計算順序如下:將虛擬網絡層次從左至右,從上至下開始執行,下一個節點自動給上一個節點發送數據信號,每一個節點在接收下一個節點所發送的數據信號后,自動進行順序排列,形成號碼串,每層都會形成一個號碼串,由每一層的最后一個節點發送給下一層的第一個節點,再選擇最后一個節點,該節點即具有所有虛擬網絡的測試用例信息。根據上述計算實現軟件的測試。
完成軟件測試后,進行負載調控,根據用戶對負載規則的定義,調節Web 軟件運行時的負載狀態,該調節是一個動態過程,用戶可隨時根據Web 軟件性能參數情況來進行調節,使負載強度根據運行情況隨時改變,從而有效測試Web 軟件的彈性性能。Web 軟件性能參數負載調控過程如圖3 所示。
負載調節是根據負載動態調節算法來實現運行的,用戶需要設置負載調節的規則。負載調節期望指數計算公式如下所示:
其中,W為負載調節期望指數;T1表示CPU 利用增加調節時長;Umax表示CPU 最大利用率;T2表示CPU 最長持續時間;Umin表示最小利用率;T3表示CPU利用率降低調節時長;T4表示最短持續時間。
根據負載調節期望指數進行負載動態調節,是一種基于狀態反饋的調節算法,可以實時調節負載強度,使CPU 的利用率最大限度接近期望值。但其需要考慮負載調節中的兩個重要因素:Web 軟件運行時系統的真實值S與期望值W。真實值可通過Web 軟件運行時的監測數據得出,而期望值W則利用上述公式計算得出,真實值與期望值有一個偏差值,定義為E:
設定一個閾值B,當E>B時,進行動態負載調節,通過設計一種算法來控制負載調節的運行。將負載單位的增加量看作CPU 需要增強的負載強度,若CPU 的實際利用率比預測利用率大,則可以證明加強負載影響了Web 軟件系統的狀態,需要降低負載調節;若CPU 的實際利用率比預測利用率小,則證明需要進行加強負載調節。預測的偏差值E越大,則證明需要加強的負載程度越大。當負載強度屬于上升階段,且S>Umax時,CPU 的實際利用率便達到了最初對Web 軟件系統設定時的目標值,證明該Web 軟件可以正常運行,負載強度不需要進行調節,只需穩定當前的負載調節程度即可,直至Web 軟件性能參數測試結束。
FabanPlus 中提供支持HTTP 通信的API 組件分別基于HTTPURL 以及APACHE 客戶端的編程工具完成實現,可進行自動倒計時,從而記錄每次模擬用戶發出請求的時間以及系統相應的時間,這部分時間便是負載穩定運行的時間,這段時間內搜集的信息便是用作Web 軟件性能參數測試數據信息。
在負載執行過程中,利用線程模擬用戶的行為,每次每個用戶的操作都需要輸入一個驗證碼,并提供登錄的用戶名以及密碼。FabanPlus 負載生成算法維護每一個Web 軟件的請求生成,再記錄響應時間,根據用戶定義的URL 地址生成向Web 軟件系統服務器的請求。用戶操作所產生的URL 地址可以只針對Web 軟件中的一個固定的URL 地址,也可針對該Web 中不同的URL 地址產生請求,開發人員在設定負載強度范圍時,可定義多個隨機的用戶與服務器之間產生的URL 地址,使得用戶只需定義其中一個請求行為便可向服務器產生若干需求。
至此,完成對Web 軟件性能參數的自動化測試。
為驗證該文方法的實際應用效果進行實驗分析。實驗環境如圖4 所示。

圖4 實驗環境
選用的操作系統為Ubuntu12.04,采用的中央處理器工作頻率為1.0 GHz,硬盤內存為64 GB,采用的服務器軟件為Apache2.2,設定測試時間為2 000 s,在測試過程中,同時向該文研究的自動化測試方法和傳統的基于記憶單元的測試方法(文獻[1]方法)、基于頁面對象的Web 測試方法(文獻[2]方法)發送55 000 個HTTP 請求,分別分析不同方法接收成功率、接收時間,得到的接收數據量實驗結果如表1所示。

表1 接收數據量實驗結果
由表1 可知,該文設計方法的接收成功率高于兩個傳統方法,在接收51 200 個HTTP 請求后,該文的測試方法成功數量始終在98%以上,而傳統方法的成功數量相對較低,且在接受過程中出現的誤差較大,這是由于用戶操作和比例要求出現較多問題。響應時間實驗結果如圖5 所示。

圖5 響應時間實驗結果
由圖5 可知,該文設計方法在對每個請求進行測試時,響應時間遠遠小于傳統方法的響應時間。這是因為該文設計方法應用了FabanPlus 的模擬用戶進行測試,在測試過程中對用戶進行動態調節,能夠很好地利用CPU,在相同負載強度下能夠更快速地實現響應。三種測試方法的CPU 利用率如表2所示。

表2 CPU利用率實驗結果
由表2 可知,該文研究方法對CPU 的利用率遠高于傳統方法。這是因為該文研究方法通過分析URL 和相應代碼完成信息利用,而傳統方法在進行用戶統計過程中,需要耗費的時間較多,CPU 利用率難以達到用戶要求。
Web 軟件已經逐漸滲透到人們的生活,其在各個領域得到了廣泛應用,為提升其應用效果,需要對Web 軟件性能參數進行測試。為提升參數測試效果,該文設計了一種Web 軟件性能參數自動化測試方法,該方法適用于所有語言編輯的Web 軟件,具有普及性,以期通過該文研究為后續研究此方面的學者提供一定參考。