qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          Test Load Balancer 測試均衡負載

           什么是Test Load Balancer ?

            Test Load Balancer 測試分發工具,它能把所有的測試按照某個策略(數量、時間)均衡分布到不同的計算機上運行。

            問題域?

            一個典型的問題,當軟件開發團隊在做CI(持續集成)時,必須讓CI的構建時間保持在一個合理的時間,比如10分鐘為一個上線,但是由于需求的不斷增多測試的數量也隨之增加,花費在運行這些測試的時間越來越多,影響到了整個交付團隊的進度。為了盡可能的縮短交付周期時間,減少測試的運行時間,一個行之有效的方法就是讓測試并行執行。

            Test Load Balancer 如何工作 ?

            TLB(Test Load Balancer)有兩個比較重要的概念:

            server:存儲,查詢測試數據(測試時間、測試結果等)

            balancer:測試分支,指定測試套件,設置server的url等

            Balancer與CI或者與某種測試框架一起工作,Server只是一個數據交互中心,Balancer需要測試的數據需要和Server通信。

            如何使用?

            TLB必須結合構建工具使用,我們以TLB自帶的例子為例。

            examples/ant_junit

            這個例子使用shell寫的運行腳本,我在windows上做的,先把它的腳本改改。

            把run_balancer.sh和上級目錄的recipe.sh在powershell腳本里面合并。

          $env:TLB_JOB_NAME='ant_junit'
          $env:TLB_TOTAL_PARTITIONS='2'
          $env:TEST_TASK='ant test.balanced'

          Function StartServer() {
              cd ..\..\server
              .\server.bat start
              cd ..\examples\ant_junit
          }

          Function RunTest() {
              $env:TLB_DATA_DIR='.\demo_tlb_store'
              $env:TLB_OUT_FILE-".\tlb_balancer.out"
              $env:TLB_ERR_FILE='.\tlb_balancer.err'
              $env:TLB_BASE_URL='http://localhost:7019'
              $env:TLB_JOB_VERSION='1.0.0'

              for($i=1; $i -le $env:TLB_TOTAL_PARTITIONS; $i++) {
                  $env:TLB_PARTITION_NUMBER='$i'
                  $env:TLB_BALANCER_PORT='300$i'
                  iex $TEST_TASK
              }
          }

          Function StopServer() {
              cd ..\..\server
              .\server.bat stop
              cd ..\examples\ant_junit
          }

          Function Runner() {
              StartServer
              RunTest
              StopServer
          }

          Runner

            TLB所有的設置依賴環境變量, TLB_TOTAL_PARTITIONS指定所有的測試分成多少份,TLB_BASE_URL指定TLB Server的地址,TLB_PARTITION_NUMBER當前node執行那一份測試,TLB_BALANCER_PORT指定node的端口。

            StartServer啟動TLB服務器,會開啟一個cmd窗口,關閉的時候調用腳本關閉這個窗口就可以關閉TLB 服務器。

            RunTest 運行測試,在每個node都必須配置TLB_PARTITION_NUMBER和TLB_BALANCER_PORT.

            StopServer 關閉TLB Server。

            Runner 腳本入口函數。

            這里的腳本是把TLB Server 和 Balancer寫在一起的,只為show一下TLB如何使用,如果要在不同node運行,必須把它分成server和balancer兩部分腳本。server只需要 StartServer 和StopServer函數,而node只需要RunTest函數,去掉for循環,指定具體的TLB_PATTITION_NUMBER和PORT就可以了。

            TLB不足?

            TLB雖然可以實現測試分發,但是如果不結合CI工具的話,就必須手動的去運行每個node,而且在server也不能監控和收集每個node的運行結果。

          posted on 2012-06-27 09:48 順其自然EVO 閱讀(332) 評論(0)  編輯  收藏 所屬分類: 性能測試

          <2012年6月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 永新县| 图片| 纳雍县| 贵溪市| 江永县| 贵德县| 台东县| 大理市| 政和县| 综艺| 南通市| 玛纳斯县| 东海县| 胶南市| 邯郸市| 宜川县| 安仁县| 黄石市| 亳州市| 灯塔市| 班戈县| 高邮市| 澎湖县| 莱阳市| 普洱| 城口县| 铜陵市| 禄丰县| 祁东县| 南乐县| 迁西县| 胶南市| 白银市| 内黄县| 延庆县| 泰宁县| 通许县| 迁安市| 台北县| 土默特右旗| 泾阳县|