Rational Performance Tester 一般都是用來測試系統的性能,可以測試系統在某個時間能夠同時承載的用戶個數;測試一段時間內系統能支持多少個用戶進行操作;測試系統在一段時間內性能的變化情況等等。但是除此常規功能外,我們發掘到了 Rational Performance Tester 還具備其他強大的功能---monitor。本文以典型的基於 J2EE 的 Web 項目為例,介紹如何利用 Rational Performance Tester 檢測系統狀態,進而達到借助 RPT 進行監控系統狀態的目的。
在使用 Rational Performance Tester 監控系統前,首先應將用戶場景錄制下來,用於後期 RPT 自行模擬用戶操作,進而測試系統所處的狀態。
下面介紹下如何在 RPT 裡新建工程和新建 test,以及如何修改錄制後的 test。
首先介紹新建工程的步驟:File --> New -->Performance Test Project,如下圖所示:
輸入 Project name 後,點擊 Finish,新建工程完畢。
其次介紹新建 test 的步驟:File --> New -->New Test From Recording,如下圖所示:
點擊 Next,選擇 test 要被存放的路徑,然後輸入 test 的 File Name:
查看本欄目
然後點擊 Next,選擇浏覽器,本文以 IE 浏覽器為例:
點擊 Finish,即可開始錄制。
錄制完成後,將 Monitor 文件各個步驟的 Page title 設置為符合用戶場景的 title,以方便用戶在後期查看日志記錄,詳細的 Page title 可以讓用戶清晰的看懂運行後的 log。如下圖所示,點擊 title 後,就可以修改其 name 了。
根據 Scenario,設置一些延遲(delay),delay 時間多久可以由用戶根據實際場景自定義。比如:刷新頁面後,需要等待一分鐘再退出系統,則在 Refresh 下 insert 個 Delay,設置 delay 時間為 1s,效果如下圖所示:
查看本欄目
利用 RPT 監控系統的原理是:首先用 RPT 對系統進行測試,通過捕獲系統所處的狀態,然後對每個異常場景進行處理,並發送郵件通知相關工作人員當前系統所處的異常狀態。下面以 server down 這個 scenario 為例,來介紹如何監控系統。當系統 server down 後,訪問系統時頁面出現如下圖所示的提示信息。
如下圖所示,Create Field Reference,對頁面的 response 內容進行捕獲:
通過 insert If 判斷頁面 response 內容裡是否含有 Server Error,如果含有 Server Error,則證明 server down。
(1)insert If 判斷語句,並將前文中創建的 field reference 添加為 if 條件的 First operand:
(2)添加 if 條件內容,即判斷頁面的 response 內容裡是否含有提示 server down 的相關信息,本例中當 server down 後,頁面上提示信息中含有 Server Error,所以本例添加 if 條件後,效果如下圖:
查看本欄目
在 If 語句下,add custom code,如下圖所示:
在 custom code 裡對捕獲的系統狀態進行處理,郵件的主題和內容支持在 custom code 裡自定義,以 server down 時發送 System alert 郵件為例,代碼如下:
public String exec(ITestExecutionServices tes, String[] args) { ITestLogManager logMgr = tes.getTestLogManager(); String address = {address}; sendMail(address); logMgr.reportMessage("serverDown---sendMail"); return null; } public static void sendMail(String address) { Properties props = System.getProperties(); props.setProperty("mail.smtp.host", {mailHost}); Session s = Session.getInstance(props); s.setDebug(true); MimeMessage message = new MimeMessage(s); try { InternetAddress from = new InternetAddress({InternetAddress}); message.setFrom(from); InternetAddress to = new InternetAddress(address); message.setRecipient(Message.RecipientType.TO, to); message.setSubject("System alert"); String content = "Hello Monitor,now server down! Please check it. This is an auto-reply email. Please don't reply!"; message.setContent(content, "text/html;charset=GBK"); message.saveChanges(); Transport transport = s.getTransport("smtp"); transport.connect({mailHost},address); transport.sendMessage(message, message.getAllRecipients()); transport.close(); } catch (Exception e) { e.printStackTrace(); } }
RPT 每 10 分鐘向系統發起一次測試,即可提供 7*24 小時的監控系統。新建一個 schedule
File --> New -->Performance Schedule:
點擊 Finish,完成創建 schedules.
由於 24*7 小時內,一共要監控 1008 次,所以在本例中,設置 Number of users 為 1100 個,每個 user 間隔 10 分鐘,如下圖所示:
查看本欄目
設置 user load 後的效果如下圖所示:
(1)在 Monitor Schedules 裡 add test:
(2)add test 後的效果如下圖所示:
點擊圖 16 中的綠色 run 按鈕後,就可以對系統進行監控了。
查看本欄目
當系統出現問題後,相關人員會收到主題為System alert 的郵件,郵件的主題和內容都是在 custom code 裡定義的。下面展示 4 種 monitor 的結果:
(1)當 server down 時,本例在郵件中的內容為通知相關工作人員:系統宕機。發送的監控郵件效果如下圖所示:
(2)當系統的不能處理用戶提交的問題時,本例在郵件中的內容為通知相關工作人員:系統無法提交問題。發送的監控郵件效果如下圖所示:
(3)當系統處理用戶提交的問題失敗時,本例在郵件中的內容為通知相關工作人員:系統處理問題失敗。發送的郵件效果如下圖所示:
(4)當系統處理用戶提交的問題,超過 5 分鐘還未處理完成時,本例在郵件中的內容為通知相關工作人員:系統處理問題超過 5 分鐘。發送的郵件效果如下圖所示:
本文以典型的基於 J2EE 的 Web 項目為例,探索了如何使用 Rational Performance Tester(RPT)對系統進行 7*24 小時的監控。您可以根據本文介紹的方法,對基於 B/S 或者 C/S 架構的系統進行監控其是否處於正常狀態,能否滿足用戶的需求。系統出現故障時,相關人員會收到 System alert 郵件,進而及時處理系統的異常。