Test Load Balancer 测试均衡负载

发表于:2012-6-26 11:00

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:devhup    来源:51Testing软件测试网采编

分享:

  什么是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的运行结果。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号