天天看点

基于Python的测试框架

Buildbot:基于Python的持续集成测试框架

Buildbot是一个开源框架,可以自动化软件构建、测试和发布等过程。每当代码有改变,服务器要求不同平台上的客户端立即进行代码构建和测试,收集并报告不同平台的构建和测试结果。

buildbot自动化测试工具

  搭建一个完全自动化的buildbot服务器相对来说比较麻烦,所以打算开几条博客来具体说明,我以git作为本次搭建测试自动化测试的例子,

  由于本次自动化测试服务器需要一台buildmaster主机、两台buildslave(linux和windows)主机,所以本次搭建需要三台虚拟机

  最近公司的项目中的测试用例越来越多,并且项目必须要在linux和Windows下运行,每次提交patch后,我们只测试提交patch的部分,而没有对其他测试用例进行测试,为了防止由于提交patch而影响了其他功能,打算找一个自动化测试工具,在每次提交patch之后能够对所有的功能和测试用例进行测试,于是在网上收集了一些资料之后决定使用buildbot作为公司的自动化测试工具。

一、BuildBot简介

  BuildBot是一个开源的基于python的持续集成系统,它能够以下三种方式触发相应的自动构建和测试运行,从而迅速的发现问题所在,同时指出造成这个错误的开发人员,当然我们还可以通过页面直观的了解到当前所有和master绑定的任务以及各种测试状态。

监控代码管理库的变化从而触发构建测试任务

通过配置从而定时触发构建测试任务

通过配置从而允许强制触发构建测试任务

因为它有很多比较好的特点:

跨平台:可以运行在各种平台上,实现不同平台上的测试

可以处理各种语言编写的程序,例如C,Java,Python

环境要求低并且配置简单:仅仅需要Python,和网络库Twisted

结果的交付方式多,例如Email,webpage,IRC或者其他协议工具

通过子类继承并重写父类从而灵活的配置

很好的实现了分布式部署和集成工作

  BuildBot用python写的,该python程序只依赖python环境和Twisted(一个python网络框架),可以在很多平台运行。 自动化构建一般包括自动下载源码,编译,测试,打包。

二. buildbot工作原理

2.1系统架构

  Buildbot包含一个服务端,一个或多个客户端。以星形拓扑结构连接。需要配合GIT,SVN,CVS等相关版本工具使用。master可以给任意一个slave发送命令,slave执行master发送的命令并返回执行的结果。

来回发送大量命令是不太合适的,可以在slave中写出一个总的执行脚本,而master发送的命令只是启动这个脚本。

  Buildbot的原理是git,SVN等源码服务器上代码发生变化后,buildmaster(服务端)通知连接到它上的buildslave(客户端)从git或SVN服务器上自动下载源码,编译,测试,打包。最后把各个buildslave的自动化构建的结果搜集起来在web上展现,或通过email,IRC等方式通知相应的项目开发人员。

2.2测试状态结构体系

  master有一个总的status对象负责监控所有连接到自己的slave的连接状态对象,通过这个连接对象获得完整构建的状态及层次结构。

  在master.cfg配置文件中,控制各个status对象,获得每个slave的连接状态,以前的构建信息等,通过浏览器创建一个url调用html.Waterfall插件的query-on-demand接口可以获得Builder, Build, Step, and LogFile等各种请求信息。

  每一次的项目构建都可以产生一个status对象,可以通过MailNotifier每一次构建都建立一个邮件列表。

三、安装

3.1 环境搭建

  Buildbot所需要的Python依赖环境比较多,而且版本依赖比较严重,0.8.x和0.9.x中很多类的使用以及命名有很大区别本教程的master是以0.9.0b7这个版本来搭建的。

要求:

Python 版本:2.7

官方手册中要求的是2.6或2.7,不能使用其他的版本

Twisted 版本:11.0.0及以上

sqlite3 版本:3.7.0及以上

Jinja2 版本:2.1及以上

SQLAlchemy 版本:0.8.0及以上

SQLAlchemy-Migrate 版本:0.9.0及以上

Python-Dateutil 版本1.5及以上

Autobahn0.10.0及以上

windows下还需要安装Pywin32支持

  建议安装pip,由于buildbot版本更新以及python的更新,一些依赖可能并没有在官方文档里面显示出来,使用pip能使我们的安装更便捷一些

3.2 buildmaster环境搭建

环境:VMware Workstation

系统:winXP

安装Python

  双击.msi,一路next即可。安装完成之后需要在环境变量path中加入Python路径

install Twisted

安装 (解压进入此目录,下同)

$sudo python setup.py install 

1

安装 zope.interface

安装命令:

$python setup.py build  

$sudo python setup.py install 

1

2

安装 buildbot(依赖Twisted和Python)(本例是在XP下建立master,Ubuntu下建立slave)

安装

$python setup.py build  

$sudo python setup.py install

1

2

如果有安装出现Unable to find vcvarsall.bat的问题是没有安装Microsoft Visual C++ Compiler Package for Python 2.7的缘故,安装之后还需要配置环境变量,然后需要修改注册表:

打开注册表编辑器

配置

2.1. 如果你安装的Python是32位的,则,创建如下项:

HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\Setup\VC

2.2. 如果你安装的Python是64位的,则,创建如下项:

HKEY_CURRENT_USER\Software\Wow6432Node\Microsoft\VisualStudio\9.0\Setup\VC

并在此项下新建字符串值:

名称:productdir。

数据:vcvarsall.bat所在路径。

注意:路径中不包含最后的反斜杠。

检测buildbot是否安装成功

终端下执行如下命令:

$buildbot --version 

Buildbot version: 0.9.1

Twisted version: 16.6.0 

1

2

3

建立buildbot master

在终端中执行如下命令:

$buildbot create-master buildbot_master 

1

该命令会在当前目录下生成buildbot_master目录,且该目录下有一个配置文件为master.cfg.sample

1). 在启动之前,可以测试下配置文件。

终端下执行如下命令:

$cd buildbot_master              

$mv master.cfg.sample master.cfg 

$buildbot checkconfig master.cfg 

1

2

3

正确则:Config file is good!

2).启动、停止

$cd buildbot_master

$buildbot start ./  

$buildbot stop ./  

1

2

3

  到这里,buildmaster比较麻烦的时候就来了,在这一章节我不详细介绍master.cfg里面的各种配置,而是让大家能够让我们的master服务器正常跑起来————在浏览器中可以访问我们的buildbot。

运行buildmaster

  buildbot是在web页面对我们的项目测试以及代码监控进行显示,对于一个局域网下,只要我们能够连接到这台虚拟机,我们就可以通过web页面的形式来随时了解我们的slave的连接以及代码的变化和以往的测试情况。

首先我们先要知道我们master主机的IP地址,在终端下执行如下命令:

$ipconfig

Ethernet adapter 本地连接:

        Connection-specific DNS Suffix  . :

        IP Address. . . . . . . . . . . . : 192.168.1.2

        Subnet Mask . . . . . . . . . . . : 255.255.255.0

        Default Gateway . . . . . . . . . : 192.168.1.1

1

2

3

4

5

6

7

之后打开我们的master.cfg文件,找到c[‘buildbotURL’] 和c[‘www’] 这两个属性,修改他们的URL(本地主机的IP地址)和端口号。如下图:

保存我们的master.cfg文件,然后用启动命令启动我们的buildbot。

  在上一节我们启动了buildmaster,细心的同学会发现在我们的buildmaster文件夹目录下多出来了一个twistd.log日志文件,由于buildbot所依赖的插件比较多,第一次运行不见得能成功。所以我们需要去twistd.log文件查看我们的buildbot是否启动成功,如果不成功会在.log中找到我们的出错信息。

  从这些错误信息中我们可以得到我们想要的信息,这个说明我们的buildbot缺少waterfall_view这个插件,我们可以去buildbot官网上去下载安装,安装步骤如buildbot安装步骤。

  如果我们下载成功,我们可以再任意一台可以ping通这台虚拟机的的电脑的浏览中输入我们在配置文件夹里面添加的url和端口号,就可以访问的我们的buildbot。

  这样我们就吧我们的buildbot搭建成功了,在下一节,我会详细介绍一下master.cfg配置,和buildslave的配置,搭建一个完整的buildbot服务器,对我们的代码进行监控、测试。

--------------------- 

作者:Tilane 

来源:CSDN 

原文:https://blog.csdn.net/LSMEGR/article/details/53618045 

版权声明:本文为博主原创文章,转载请附上博文链接!

继续阅读