李金萌



關鍵詞:性能測試;性能測試工具;LoadRunner;JMeter
1 資產管理系統(tǒng)的介紹
隨著現(xiàn)在信息化時代的快速發(fā)展,對計算機軟件的要求也越來越高,特別是對于資產管理系統(tǒng)來說,如何提高資產管理系統(tǒng)的準確性、便捷性以及后期維護起來的困難性。對于資產系統(tǒng)來說,需要符合用戶的需求、實際工作中的需要、對企業(yè)資產信息維護是迫切的,該系統(tǒng)就是基于這樣的需求開發(fā)出來的資產管理系統(tǒng),對于用戶來說,減少手動分析數據的事情,對于管理人員來說,將其交給資產管理系統(tǒng),可以提高工作質量和效率[1]。
2 LoadRunner 和JMeter 基于資產管理系統(tǒng)的不同
2.1 腳本添加
腳本的添加是性能測試最基本的內容,后面所有的操作基本上都是基于腳本的操作,然而LoadRunner和JMeter對于腳本添加來說,區(qū)別還是很大的。
對于LoadRunner來說,腳本的添加其實是錄制腳本并回放,需要使用LoadRunner—Virtual User Gen?erator錄制腳本并進行回放。腳本內容基本上是進行錄制的,錄制成功后對部分腳本內容進行代碼的添加和修改,然而對于JMeter來說,是腳本添加和運行。對于JMeter的來說需要注意的是:JMeter中一個腳本即是一個測試計劃,也是一個管理單元。然而在測試計劃中,測試計劃只有一個;測試計劃中至少要有一個線程組;測試計劃中至少要有一個取樣器;測試計劃中至少要有一個監(jiān)聽器。腳本中還需添加HTTPCookie 管理器、Sampler-HTTP 請求、Web 服務器、HTTP請求等元件。
針對腳本添加來說,LoadRunner使用性會比JMe?ter更加方便,對于初學者來說,LoadRunner更加容易接受,但對公司來說,使用各有千秋。
2.2 思考時間
思考時間是對于性能測試來說很關鍵的,也有另外一種說法叫休眠時間,從業(yè)務的角度來說,思考時間其實就是用戶在進行某些操作時和下一個操作之間需要的間隔。對于交互式應用來說,用戶在使用資產管理系統(tǒng)的時候,請求不是一直不斷地點擊發(fā)出的,而是用戶在發(fā)出一個請求后,需要等待一段時間,才進行下一個請求發(fā)出[2]。因此,從性能測試實現(xiàn)的角度來說,要真實地模擬用戶操作,就必須在測試腳本中讓各個操作之間等待一段時間。
思考時間的設置,LoadRunner和JMeter都是需要手動添加的,針對于LoadRunner來說,就是需要在進行操作之前放置一個思考時間的函數——ThinkTime,具體思考時間可以根據實際需求進行填寫,這樣可以在兩個操作的中間加一個緩沖時間,可以讓下一個操作頁面充分的加載。比如,當前操作因為網速等原因沒有正常的顯示,這個時候就可以使用到lr_think_time()函數,括號里面寫上具體的思考時間,例如:3秒。在回放的時候,如果想看到具體思考時間的回放結果,需要在Runtime Settings 中選擇ThinkTime中選擇:Replay think time as recorded,這樣在回放腳本時,就可以查看日志中思考時間回放結果。如圖1所示。
對于在JMeter腳本中,思考時間是用定時器來模擬實現(xiàn)的。主要有固定定時器和高斯隨機定時器,兩個都是可以選擇的,其中,如果需要讓線程按指定的時間停頓,這個時候就需要選擇固定定時器(ConstantTimer) 。但如果需要讓線程在請求前按隨機時間停頓,那么可以使用高斯隨機定時器(Gaussian RandomTimer) ,在設置過程中選擇,偏差:設置的偏差值,是一個浮動范圍,單位毫秒。固定延遲偏移:固定延遲時間[3]。比如:偏差設置1000毫秒,固定延遲偏移設置3000毫秒,如圖2所示。
對于“事務控制器”來說,定時器相當于LoadRun?ner中的Think Time。對于思考時間來說,固定思考時間是一樣的,但是在JMeter中的高斯隨機定時器和固定思考時間不同,高斯隨機定時器是讓線程在請求前按隨機時間停頓,在思考時間方面,JMeter 比Load?Runner更加靈活。
2.3 檢查點
對于檢查點來說,如果是針對添加成功等操作,需要設置檢查點來進行驗證。腳本回放成功,只是代表請求成功,并不能代表請求的業(yè)務成功。要判斷業(yè)務是否成功,就需要在腳本中加入檢查點[4]。
對于LoadRunner來說,檢查點的原理是在回放腳本時搜索特定的文本、字符串或者服務器返回的文字、返回的code鍵值等設置檢查點,從而驗證請求業(yè)務的正確性。而對于JMeter來說,檢查點主要是通過斷言組件來實現(xiàn)的。
對于LoadRunner來說,檢查點的設置主要是使用函數--web_reg_find函數。在設置檢查點時,需要注意的是必須將web_reg_find函數放到該操作前面,否則該檢查點的結果就會出錯。例如:服務器返回的值是 OK,在 腳 本 中 添 加 web_reg_find“( Text=OK”,LAST) ;,運行成功后可以再回放結果中查看檢查點設置是否成功。
斷言組件通過獲取服務器響應數據,然后根據斷言規(guī)則去匹配這些響應數據;匹配到是正常現(xiàn)象,此時看不到任何提醒,如果匹配不到,即出現(xiàn)了異常情況,此時JMeter就會斷定這個請求失敗,那么在查看結果樹中看到的請求名稱就是紅色字體。斷言組件有多個,檢查點可以運用響應斷言元件來實現(xiàn)[5]。
斷言添加成功后,進行斷言結果的查看,需在測試計劃中添加監(jiān)聽器-斷言結果。對于請求,正常通過時在斷言結果里面會打印一行請求的名稱;如沒有通過,在斷言結果里有請求的名稱,以及出現(xiàn)失敗的原因。如果不同類型的斷言,則顯示的斷言結果不同。
對于檢查點來說,LoadRunner和JMeter是非常重要的元件,LoadRunner添加后只需運行后查看檢查點即可,而對于JMeter,是添加監(jiān)聽器-斷言結果,才可看到斷言的結果。
2.4 參數化
性能測試工具通常會模擬多個用戶對系統(tǒng)進行操作。比如現(xiàn)在對于新增資產登錄,資產名稱進行參數化。對于LoadRunner來說,對于資產名稱進行參數,在回放的時候,可以對參數化里面的數據進行數據順序選擇,每次都進行更新[6]。在回放的結果中也可以看到參數的具體取值情況,如圖3所示。
然而對于JMeter來說,創(chuàng)建CSV數據文件設置,文件的位置以及變量名稱,文件是.dat文件,需要提前創(chuàng)建好的。設置好CSV數據文件設置,需要到對應的地方將值設置為${value},這樣整個過程才算是可以的。在查看結果樹中,查看參數取值如圖4所示。
對于LoadRunner和JMeter來說,參數化是同樣重要,因為模擬用戶登錄,或者進行多條信息進行添加,這個時候使用參數化來說會更加便捷。
2.5 事務與集合點
事務(Transaction) :為了衡量服務器的性能,需要定義事務。比如:在登錄時,可以對登錄操作設置成一個事務[7]。
在LoadRunner 中設置事務需要有開始事務和結束事務,而且事務的運行時間會在結果中顯示[8]。在LoadRunner中,添加事務操作可以在錄制過程中進行添加,也可以在錄制結束后選擇插入步驟進行添加。而且,LoadRunner 對于事務的數量是沒有限制的。在JMeter中,事務是通過定時器-Synchronizing Timer實現(xiàn)的。
集合點是達到特定的用戶數后再“一起”進行某個操作,比如“一起”進行登錄,“一起”進行新增資產維修等[9],其中,“一起”就是集合點設置的內涵所在。
對于LoadRunner 來說,集合點使用的函數是lr_rendezvous“( login”),后面在分析器中需要對集合點策略進行設置,而在JMeter中,增加同步定時器元件就可以。
集合點的使用可以進行壓力測試,這對于Load?Runner 和JMeter 來說都是很重要的,在使用方面,LoadRunner需要設置集合點策略,在LoadRunner中集合點策略的設置是在控制器中,比較容易遺漏。
3 小結
對于資產管理系統(tǒng)來說,性能測試可以使用不同的性能測試工具,只是在具體的使用方面不一樣。對于LoadRunner 來說是三個組件,分別是Virtual UserGenerator、Controller、Analysis[10],在使用方面來說,JMeter更方便些,不需要使用那么多的組件。對于腳本添加來說,初學者使用LoadRunner會更加方面,因為腳本是通過錄制生成的;對于思考時間來說,JMeter除了固定式定時器來說,還有高斯定時器;對于檢查點來說,LoadRunner 添加后只需要在運行后查看即可,然而對于JMeter來說,是需要進行添加監(jiān)聽器-斷言結果,才可以看到斷言的結果;對于參數化來說,兩個工具基本上差不多;對于事務來說,LoadRunner需要添加開始事務和結束事務,而JMeter只需要添加定時器-Synchronizing Timer 即可;對于集合點來說,LoadRunner設置集合點時,需在控制器中設置集合點策略。
兩個性能測試工具都有自己的特點,沒有說哪個工具一定比另外一個工具強,公司在選擇工具使用方面,不僅考慮使用方面,還要考慮費用方面的問題。但是不管使用哪個性能測試工具,都是為了提高測試的速度和質量。