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

====================================分割线================================

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-11-01 07:41:59

Test Load Balancer 测试均衡负载的相关文章

Zen Load Balancer v2 stable发布 TCP负载平衡设备

Zen Load Balancer 是一个基于http://www.aliyun.com/zixun/aggregation/33836.html">Debian来创建一个TCP负载平衡的设备.其工作原理是自定义脚本来检查后端的运行状态,创建一个Zen主动/被动的集群达到高可用性,RRD监控服务器的状态,查看TCP的信息,通过HTTPS的用户界面来轻松执行性能管理和路由配置以及等等. Zen Load Balancer v2 stable该版本修正了一些错误,增加了一些改进. 软件信息:h

Zen Load Balancer v1 stable发布 TCP负载平衡设备

Zen Load Balancer是一个基于http://www.aliyun.com/zixun/aggregation/33836.html">Debian来创建一个TCP负载平衡的设备.其工作原理是自定义脚本来检查后端的运行状态,创建一个Zen主动/被动的集群达到高可用性,RRD监控服务器的状态,查看TCP的信息,通过HTTPS的用户界面来轻松执行性能管理和路由配置以及等等. Zen Load Balancer v1 stable此版本修复了群集配置SSH验证的一个错误,修改了全局视

Zen Load Balancer 1rc5发布 TCP负载平衡设备

Zen Load Balancer 1rc5该版本修正一些错误和增加一些新的特点. Zen Load Balancer是一个基于http://www.aliyun.com/zixun/aggregation/33836.html">Debian来创建一个TCP负载平衡的设备.其工作原理是自定义脚本来检查后端的运行状态,创建一个Zen主动/被动的集群达到高可用性,RRD监控服务器的状态,查看TCP的信息,通过HTTPS的用户界面来轻松执行性能管理和路由配置以及等等. 如果您已安装Zend的I

Zen Load Balancer v1rc4发布 TCP负载平衡设备

Zen Load Balancer是一个基于http://www.aliyun.com/zixun/aggregation/33836.html">Debian来创建一个TCP负载平衡的设备.其工作原理是自定义脚本来检查后端的运行状态,创建一个Zen主动/被动的集群达到高可用性,RRD监控服务器的状态,查看TCP的信息,通过HTTPS的用户界面来轻松执行性能管理和路由配置以及等等. Zen Load Balancer v1rc4这个版本修复了一些错误和增加了新开发的建议.用户可以直接下载I

Linux下基于DNS的多机均衡负载的实现

前二天为一个客户添加了一台服务器.共同承担一个论坛的运作.但是.要实现负载均衡.的确是件难事. 之前有试过几个方法, 一.DNS轮值..优点:简单实现.缺点:无法检测各个服务器的负荷.难控制访客的访问地址(一般DNS服务器都有缓存,所以.效果不明显) 二.前台程序..使用了一个类似Zeus Load Balancer的服务程序.在前台接受访问请求.再分流到各个实际的服务器. 但以上二个方法都不太适用我的情况.. 第一种.无法正确分配访客流量...常发生一台服务器的负荷很大.而另一台就很低...

nginx-用Nginx实现均衡负载效率反而降低,为什么?

问题描述 用Nginx实现均衡负载效率反而降低,为什么? 我在Win7系统下安装了两个tomcat,一个8080端口,一个8088端口.跑着同样的WEB项目.然后在Win7下用VMWare装了个CentOS6.5虚拟机,在该虚拟机上安装并配置了Nginx.然后在该虚拟机上用apache ab进行压力测试,结果用nginx反而比不用差一些.请高手帮助解惑!!! 下面是我的测试方法和结果: [root@localhost local]# ab -n 10000 -c 1000 -H "Authori

apache+tomcat均衡负载 not

问题描述 apache+tomcat均衡负载 not apache2.4+tomcat7均衡负载,按照这里http://blog.csdn.net/shaozengwei/article/details/40861447的配置完成,出现这个错误:Not Found The requested URL /test/test.jsp was not found on this server.,apache和tomcat都能正常的启动和单独访问,哪位大师可以指点一下,谢谢! 解决方案 http://b

Load balancer does not have available server for client

  最近在研究spring-cloud,研究zuul组件时发生下列错误: Caused by: com.netflix.client.ClientException: Load balancer does not have available server for client: zuul-server  解决办法就是在pom文件里添加  <dependency> <groupId>org.springframework.cloud</groupId> <arti

kbmMW均衡负载与容灾(2)(转载红鱼儿)

集中式均衡负载 为实现集中式均衡负载方案,需要实现两个不同的应用服务器,一个是只包含均衡负载组件再无其他内容的应用服务器,可称之为均衡负载应用服务器,下文简称LB Server,另外一个就是包含一个或多个业务逻辑服务(Query Service and Http Service...)及一个均衡负载服务(Load Balancing Service)的应用服务器,可称之为业务逻辑应用服务器,简称APP Server. kbmMW提供了较多的负载均衡组件: TkbmMWRandomLoadBala