點評性能測試工具OpenSTA

點評性能測試工具OpenSTA.

作者: 緱萍萍
關鍵字:性能測試,測試工具,OpenSTA
 
摘要:
    本文將介紹一個免費的、源代碼開放的web性能測試工具OpenSTA,包括它的原理、組成部分、錄製腳本的過程。另外,還將介紹如何在OpenSTA的測試腳本中引入變量,並給變量賦不同值,比如,將登陸被測試網站的用戶名稱設置爲一個變量,在執行性能測試時,虛擬多個不同的用戶同時登陸被測試網站,通過將訪問網站的用戶名稱打印出來的方法,驗證該變量在測試執行過程中被賦與了不同值。
 
正文:
    作爲測試工程師,不能只關注系統的功能,還必須對系統的性能進行全面的測試,才能確認系統是否滿足用戶的需求。那麼什麼是性能測試呢?
    “中國軟件評測中心將性能測試概括爲三個方面:應用在客戶端性能的測試、應用在網絡上性能的測試和應用在服務器端性能的測試。應用在客戶端性能測試的目的是考察客戶端應用的性能,測試的入口是客戶端。它主要包括併發性能測試、疲勞強度測試、大數據量測試和速度測試等,其中併發性能測試是重點。”(《性能測試:軟件測試的重中之重》作者:中國軟件評測中心 發文時間:2003.08.26) 
    目前比較著名的併發性能測試工具有Rational Robot、QALoad、LoadRunner和微軟的WAS等。這其中QALoad、LoadRunner、Rational Robot都是比較不錯的商業測試工具(價格也很貴哦),微軟的WAS是一個免費的測試工具,使用起來比較簡單,但是由於不能顯示和編輯所錄製的測試腳本,其可控性和圖形化測試結果都較弱,故造成一定的侷限性。
    OpenSTA是專用於B/S結構的、免費的性能測試工具。它的優點除了免費、源代碼開放的優點外,還能對錄製的測試腳本進行,按指定的語法進行編輯。測試工程師在錄製完測試腳本後,只需要瞭解該腳本語言的特定語法知識,就可以對測試腳本進行編輯,以便於再次執行性能測試時獲得所需要的參數,之後進行特定的性能指標分析。OpenSTA以最簡單的方式讓大家對性能測試的原理有較深的瞭解,其較爲豐富的圖形化測試結果大大提高了測試報告的可閱讀性。
    OpenSTA是基於Common Object Request Broker Architecture (CORBA)的結構體系。它是通過虛擬一個proxy, 使用其專用的腳本控制語言,記錄通過proxy 的一切HTTP/S traffic。測試工程師通過分析OpenSTA的性能指標收集器收集的各項性能指標,以及HTTP數據,對被測試系統的性能進行分析。
    首先,OpenSTA都有哪些組成部分?
u   OpenSTACommander – 主要控制應用程序;
u   NameServer – CORBA背景處理器,保證OpenSTA各個組成部分之間的交流;
(NameServer是安裝OpenSTA的同時被安裝的,正常運行時,可以在Windows任務欄的右側看到圖標 ,如果沒有正常運行或者被停止了,圖標顯示爲 。)
u   ScriptModeler – 配置、啓動HttpGateway的工具程序,同時也是錄製腳本的工具程序;
u   HttpGateway – 模擬proxy 處理器,執行錄製;
(接受用戶手工配置的proxy設置,不接受任何自動配置proxy機制);
u   TestExecuter – 真正執行測試的背景處理器;
u   WebRelayDaemon  –使用XML RPC在internet上過濾 CORBA限制;
u   Repository–測試腳本、配置和測試結果存貯目錄;
u   TestManager–管理測試運行的背景程序;
u   TaskGroupExecuter–運行TaskGroup的處理器。
    其次,什麼是性能指標收集器(即Collector)呢?這是用戶定義的一組問題,決定在測試過程中哪些性能指標需要記錄。包括兩種類型:
1)NT Performance Collectors 用於採集運行WinNT或Win 2000的主機的性能指標.
2)SNMP Collectors 用於採集主機和其他運行 SNMP agent 或 proxy SNMP agent的SNMP數據.
Collector的設置將在下面如何錄製測試腳本中介紹。
 
    第三,如何錄製測試腳本呢?
1、    安裝OpenSTA後,在“程序”中出現OpenSTA的三個工具程序,如下圖:
1-1安裝後的界面
    檢查OpenSTA NameServer狀態爲運行中,即圖標爲
 
    運行“OpenSTA Commander”,界面顯示爲下圖:
1-2運行後的界面
2、錄製新腳本
    1)鼠標點“Scripts”,通過右鍵菜單“New Script”->“HTTP”生成新腳本,腳本名稱缺省爲NEWSCRIP(如下圖);
1-3腳本界面
    2) 雙擊新腳本,打開Script Modeler窗口,在Options菜單中設置Browser和Gateway,一般情況下,保持Gateway的缺省設置 ;
1-4錄製腳本界面
    3)按工具欄中的紅色圓鈕,自動打開指定的瀏覽器,輸入需要錄製的系統URL, 顯示被測試網站的首頁內容。在登陸成功之後,執行各個既定的操作步驟。按工具條上的方框按鈕,或直接退出瀏覽器,可以停止腳本的錄製,這是在Script Modeler窗口中將看到被錄製下來的腳本語句。
 
3、生成Collector
    1)    鼠標點“Collectors”,通過右鍵菜單生成新指標收集器,缺省爲NEWCOLLECTOR;
1-5生成收集器
    2)    通過browse Queries瀏覽並設置需要收集的性能指標。(各個性能指標的含義不是這篇文章所包含的內容,這裏不做介紹)
 
4、   組成測試環境
    與腳本和性能收集器同樣的方法,在Tests中新建一個NEWTEST(下圖中已將新建的Test進行了重新命名), 將測試腳本和性能指標收集器拖到該Test中,如下圖;
1-6 測試環境界面
5、   按工具欄中的 ,執行測試,測試過程中可以查看“Monitoring”頁籤的內容,測試結束後,該頁籤爲空;
6、   測試結束後,點工具按鈕下方的Results頁籤,顯示所記錄的測試結果數據,如下圖。
1-7 測試結果界面
    至此,讀者對如何使用OpenSTA這個測試工具應該有了一個大概的瞭解,如果需要詳細瞭解使用的細節,可以查看該工具的使用手冊,不過是E文的哦:)。需要下載OpenSTA工具的朋友可以訪問網站http://www.opensta.org/,使用手冊也可以在這個網站上下載。

    下面,介紹如何在OpenSTA的測試腳本中引入變量,並給變量賦不同值的過程。網絡應用系統一般都會有一個登陸網頁,需要用戶輸入正確的用戶名稱和密碼,經過系統驗證後,用戶才能進入該應用系統。在使用OpenSTA錄製測試腳本時,輸入的用戶名稱和密碼將被OpenSTA記錄在腳本中,錄製完成後,可以在腳本文件中發現如下語句:

 這裏“mike”、“ekim”就是錄製腳本時登陸系統所輸入的用戶名稱和密碼。

  問題是在執行性能測試時,往往需要模擬很多個不同的用戶同時登陸系統,觀察系統的各項性能指標。爲每個不同的系統用戶錄製單獨的測試腳本是不現實的。那麼,如何修改已錄製好的測試腳本,使其在測試過程中可以模擬多個不同的虛擬用戶,而每個虛擬用戶的用戶名稱和密碼都被寫入測試腳本中呢?
 
1、首先,在測試腳本的Definition部分中增加變量USERNAME、PASSWORD的定義:
這裏假設mike、allan、david、robert是該系統正確的用戶名稱,ekim、nalla、divad、trebor分別是這些用戶的登陸密碼
(說明:OpenSTA測試腳本分三個部分, Environment、Definition、Code)
2、同時,在腳本的Definition 部分增加變量MY_USERNAME、MY_PASSWORD的定義:
CHARACTER*512 MY_USERNAME, LOCAL
    CHARACTER*512 MY_PASSWORD, LOCAL 
(注意,這兩個變量範圍是LOCAL型)
3、在發送登陸請求的語句“PRIMARY POST URI"http://demosite.opensta.org/gsg-v1 HTTP/1.0"ON 2…….”之前, 添加下列語句:
ACQUIRE MUTEX "LOGIN"
   NEXT USERNAME
   NEXT PASSWORD
   SET MY_USERNAME = USERNAME
   SET MY_PASSWORD = PASSWORD
RELEASE MUTEX "LOGIN"
其中:
AQUIRE MUTEX命令 的含義是: 將變量USERNAME 和PASSWORD 設置爲用戶名稱和密碼這兩個變量選擇值序列中的第一個值,並設置爲local 形式,避免其他虛擬用戶使用這個值;
RELEASE MUTEX命令 的含義是:釋放Mutex, 其他虛擬用戶可以選擇序列中的第一個值(序列中的值是被循環使用的);
    這裏需要解釋一下MUTEX鎖定機制 的含義,是爲了避免多個虛擬用戶測試時,自動從變量選擇值序列中進行選擇時,出現選擇同一值的現象(即選擇了同一個用戶的現象);
4、將發送登陸請求的PRIMARY POST語句中BODY的用戶名和密碼替換成變量:
    至此,對測試腳本的修改已經完成。按照本文前面所介紹的OpenSTA操作步驟,設置性能測試收集器,設置虛擬用戶的個數爲4,開始執行測試,OpenSTA就會模擬mike、allan、david、robert這4個不同的用戶同時登陸系統的情況。說到這裏,讀者可能又會問,怎麼驗證在測試執行過程中,確實是模擬了這幾個用戶進行登陸的呢?我們可以通過將所有登陸系統的用戶名稱打印出來的方法進行驗證。
方法是,在發送登陸請求的PRIMARY POST語句之後,添加Report語句:
REPORT  "USER ", MY_USERNAME
這樣在測試執行完成後,Test Report Log中就可以看到打印出來的登陸用戶名稱。(是不是很簡單?大家可以來試試)
作者在自己的測試腳本中進行實驗,設置虛擬用戶爲3個,在登陸請求語句之後增加Report語句,以下是測試結束後Test Report Log信息
 
1-8 測試結果
這裏,“admin”、“sjcj”、“data”是被測試系統的三個用戶名稱。
通過上邊的一系列闡述,大家對Web性能測試工具OpenSTA應該有了一定的瞭解。如何更有效的利用這個工具,收集系統的性能指標進行性能分析,希望大家共同探討。
 
參考文獻:
1.OpenSTA user manual
----------------------------------------------------------------------------------------------
[作者簡介]
姓名:緱萍萍:女,在軟件行業有將近10年的經歷,前後從事過技術支持、C++軟件開發、流程管理和軟件測試的工作,期間在英國攻讀完工程管理的碩士學位。至今,已經做了1年多的web應用系統軟件測試工作,對這個工作非常有興趣,也小有一些心得。測試行業在國外已經發展的比較成熟了,在國內這幾年才逐漸引起重視,作者希望能夠通過自己的努力將國外先進的技巧、理念引入國內,與國內同行共同交流,以快速提高我國的軟件測試水平。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章