STAX XML 腳本用于靈活控制 STAF Agent 的運行的事務,并可以作為通用框架來重用,該腳本是實現并發執行的核心,主要實現思想:根據性能測試的負載定義,把每個產生負載的機器(安裝了 STAF 的遠程機器)定義為 虛擬用戶,根據一系列參數輸入(如 IP 列表,初始啟動虛擬用戶,負載穩定時長,負載爬升高度等)傳入 XML 調度文件,執行 XML 任務時,先針對每個虛擬用戶創建一個任務,并且掛住(STAX 提供的 hold 方法)所有的任務,然后
并發(利用 STAX 的 paralleliterate 方法)釋放指定數目的虛擬用戶任務,每隔一段時間(即負載穩定一段時間),并發釋放一定數目的虛擬用戶任務,于是虛擬用戶開始執行,根據 XML 中調用的命令,運行定義好的一系列事務,每個事務結束后繼續執行下一個事務,重復釋放的動作,就可以實現負載的階梯上升,從而觀察系統在不同的負載,以及隨著負載漸增時的性能表現。
主要實現是基于下面的示例,詳細范例請參考 Getting Started with STAF V3 Guide
并發執行元素 paralleliterate
清單 1. XML 并發執行的元素
<paralleliterate var="machine" indexvar="i" in="machineList" maxthreads="20"> <block name="'#%s: %s' % (i + 1, machine)"> <call function="'RunTest'">machine</call> </block> </paralleliterate> |
掛住和釋放任務
清單 2. XML 掛住和釋放任務
<function name="ReleaseBlock" scope="local"> <function-list-args> <function-required-arg name="parentBlock" /> <function-required-arg name="blocknameList" /> <function-required-arg name="sleeptime" /> </function-list-args> <sequence> <script> import time time.sleep(int(sleeptime)) </script> <message>'ReleaseBlock: sleep time=%s, then paral to release specific blocks num:%s' %(sleeptime, len(blocknameList))</message> <paralleliterate var="block" indexvar="i" in="blocknameList"> <sequence> <message>'ReleaseBlock: release blocks:%s.%s' %(parentBlock,block)</message> <script> BlockChain = '%s.%s' %(parentBlock, block) </script> <release block="BlockChain" /> </sequence> </paralleliterate> </sequence> </function> |
編寫模擬用戶行為的 Autoit 腳本:
1). 模擬用戶行為的用例示范:
表 1. 用例設計示例
用例序號 | 行為 | 響應時間檢查點 | |
---|---|---|---|
用例1:瀏覽網頁 | |||
1-1 | 按下 Win+R 組合鍵 | ||
1-2 | 在“運行”中,輸入瀏覽器路徑,回車 | ||
1-2 | 思考時間 | ||
1-3 | 按順利訪問 URL | 加載完每個網頁的時間 | |
1-4 | 關閉瀏覽器 | ||
用例2: 記事本輸入 | |||
2-1 | 按下 Win+R 組合鍵 | ||
2-2 | 打開 notepad,輸入文字 | 輸入的文字完全顯示的時間延遲 | |
2-3 | 思考時間 | ||
2-4 | 關閉記事本 | ||
用例3: 打開 Word 文檔、翻頁 | |||
3-1 | 按下 Win+R 組合鍵 | ||
3-2 | 打開 Word 文檔 | ||
3-3 | 思考指定時間,翻頁 | 從翻頁動作發生到下頁顯示完全的時間 | |
3-4 | 關閉文檔 |
原文轉自:http://www.anti-gravitydesign.com