qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          Test Load Balancer 測(cè)試均衡負(fù)載

           什么是Test Load Balancer ?

            Test Load Balancer 測(cè)試分發(fā)工具,它能把所有的測(cè)試按照某個(gè)策略(數(shù)量、時(shí)間)均衡分布到不同的計(jì)算機(jī)上運(yùn)行。

            問(wèn)題域?

            一個(gè)典型的問(wèn)題,當(dāng)軟件開發(fā)團(tuán)隊(duì)在做CI(持續(xù)集成)時(shí),必須讓CI的構(gòu)建時(shí)間保持在一個(gè)合理的時(shí)間,比如10分鐘為一個(gè)上線,但是由于需求的不斷增多測(cè)試的數(shù)量也隨之增加,花費(fèi)在運(yùn)行這些測(cè)試的時(shí)間越來(lái)越多,影響到了整個(gè)交付團(tuán)隊(duì)的進(jìn)度。為了盡可能的縮短交付周期時(shí)間,減少測(cè)試的運(yùn)行時(shí)間,一個(gè)行之有效的方法就是讓測(cè)試并行執(zhí)行。

            Test Load Balancer 如何工作 ?

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

            server:存儲(chǔ),查詢測(cè)試數(shù)據(jù)(測(cè)試時(shí)間、測(cè)試結(jié)果等)

            balancer:測(cè)試分支,指定測(cè)試套件,設(shè)置server的url等

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

            如何使用?

            TLB必須結(jié)合構(gòu)建工具使用,我們以TLB自帶的例子為例。

            examples/ant_junit

            這個(gè)例子使用shell寫的運(yùn)行腳本,我在windows上做的,先把它的腳本改改。

            把run_balancer.sh和上級(jí)目錄的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所有的設(shè)置依賴環(huán)境變量, TLB_TOTAL_PARTITIONS指定所有的測(cè)試分成多少份,TLB_BASE_URL指定TLB Server的地址,TLB_PARTITION_NUMBER當(dāng)前node執(zhí)行那一份測(cè)試,TLB_BALANCER_PORT指定node的端口。

            StartServer啟動(dòng)TLB服務(wù)器,會(huì)開啟一個(gè)cmd窗口,關(guān)閉的時(shí)候調(diào)用腳本關(guān)閉這個(gè)窗口就可以關(guān)閉TLB 服務(wù)器。

            RunTest 運(yùn)行測(cè)試,在每個(gè)node都必須配置TLB_PARTITION_NUMBER和TLB_BALANCER_PORT.

            StopServer 關(guān)閉TLB Server。

            Runner 腳本入口函數(shù)。

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

            TLB不足?

            TLB雖然可以實(shí)現(xiàn)測(cè)試分發(fā),但是如果不結(jié)合CI工具的話,就必須手動(dòng)的去運(yùn)行每個(gè)node,而且在server也不能監(jiān)控和收集每個(gè)node的運(yùn)行結(jié)果。

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

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

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 滁州市| 新干县| 右玉县| 花垣县| 苍山县| 磐石市| 墨玉县| 贵港市| 宁晋县| 邵阳县| 阿勒泰市| 海安县| 洛宁县| 荣昌县| 蓝田县| 华阴市| 镇雄县| 莎车县| 于都县| 龙游县| 甘南县| 吴桥县| 阳原县| 海安县| 额尔古纳市| 资阳市| 崇左市| 绩溪县| 宁蒗| 桃江县| 阿荣旗| 自贡市| 太原市| 冷水江市| 玉龙| 安溪县| 崇阳县| 布拖县| 辽宁省| 汝城县| 仪陇县|