记一次,ant+ivy+jacoco+testNG+tomcat搭建 接口自动化CI

目录

需要的工具

项目的目录

一、ant

二、Ivy 管理依赖项

三、testNg 测试框架

四、jacoco 代码覆盖率

五、运行

六、jenkins持续集成实践

七、报告


需要的工具

ant :用来构建

ivy:配置及用来,现在可以用maven

CI:由jenkins是检测代码库的变更,触发CI过程

testNG:写case

jacoco:统计代码覆盖率

shell/python:报警脚本

 

项目的目录

记一次,ant+ivy+jacoco+testNG+tomcat搭建 接口自动化CI_第1张图片

 

下面一步一步来说明一下。

一、ant

ant 是个构建工具。主要是他的构建文件:bulid脚本(build.xml), 其有一个或者多个target 组成,每个target 完成一项特定的任务,比如编译代码,运行单元测试。对于一个bulid.xml任务来说,需要按照顺序来执行target,那么就需要有依赖文件,比如你得先编译你的代码,才能运行单元测试。为了对ant 项目的依赖项进行管理,所以引入了Ivy 项目。后面会介绍。

1、构建ant 环境

(1)安装JDK

(2)下载ant

 

 apache ant 的网址:http://ant.apache.org/ 下载地址:apache-ant-1.9.7-bin.tar.gz 

(3)解压

tar -zxvf apache-ant-1.8.4-bin.tar.gz

(4)设置ANT_HOME

如果是全局生效,则在/etc/profile文件中添加。如下:

 

##set java environment
export JAVA_HOME=/home/tools/jdk1.8.0_112
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH
#set hadoop environment
export HADOOP_HOME=/home/tools/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
#set ant environment
export ANT_HOME=/home/tools/apache-ant-1.9.7
export PATH=$ANT_HOME/bin:$PATH
#set ivy
export IVY_HOME=/home/tools/apache-ivy-2.4.0
export MVN_HOME=/home/tools/apache-maven-3.3.9
export HIVE_HOME=/home/tools/hive
export NODE_HOME=/home/tools/node-v6.10.0-linux-x64
export PATH=$MVN_HOME/bin:$HIVE_HOME/bin:$NODE_HOME/bin:$PATH
export PYTHON_HOME=/home/tools/python27
export PATH=$PYTHON_HOME/bin:$PATH


(5)测试一下,输入ant ,如果看到下面的内容,则表示完成了ant 的设置

 

Buildfile: build.xml does not exist!
Build failed

 

build.xml 详解可以参加另外一篇博文: http://blog.csdn.net/u011138533/article/details/52174681

 

二、Ivy 管理依赖项

ivy 特有的文件是 ivy.xml 和一个 Ivy 设置文件。ivy.xml 文件中列举了项目的所有依赖项。ivysettings.xml 文件(可以随意为此文件命名)用于配置从中下载有依赖关系的 jar文件的存储库。

1、安装ivy

    从官网http://ant.apache.org/ivy/下载到最新的ivy2.4.0正式版,选择的是with dependencies的包。

    在安装ivy之前,请先安装好ant1.6.2以上版本,因为Ivy是基于ant的。并且需要保证JDK是1.5以上版本的,因为ant是基于Java的。

    参照官网的安装,将下载下来的ivy安装包解压,然后复制ivy的jar文件到ant的lib目录下(ANT_HOME/lib)。设置系统属性IVY_HOME到ivy的安装目录。
    另外一个简单的安装方法,就是直接到ivy的src/example/hello-ivy 目录下执行ant,会从网上下载ivy并安装的。

参考链接:http://blog.csdn.net/u011138533/article/details/53945449

 

三、testNg 测试框架

(1)在testng.xml 中配置需要测试的接口或者方法。

 在测试过程中,可能需要大量的数据集,只是测试的数据不一致,代码逻辑完全一致,这时候就需要使用参数化传递参数。TestNG 提供了两种传递测试数据的方式。一种是:在testng.xml中配置,使测试数据和代码分离。 第二种是:@DataProvide方式,可以提供比较复杂的参数。可以通过excel来管理case数据。

可以参考博文:http://blog.csdn.net/u011138533/article/details/52174446

编写一个测试的过程有三个过程:

首先,将测试信息添加到testng.xml 文件和build.xml文件中

其次,编写测试的业务逻辑并在代码中插入TestNG annotation

最后,运行TestNG

四、jacoco 代码覆盖率

参考博文:http://blog.csdn.net/u011138533/article/details/54091043

 

五、运行

写完接口测试的代码之后 ,通过ant 构建运行。

ant -buildfile build.xml -propertyfile ../properties/tag_servicespp.properties -DtestngXML=tag_services.xml

 

 

 

六、jenkins持续集成实践

更详细的教程: https://www.cnblogs.com/zz0412/tag/jenkins/

准备好以上的测试case和工具之后,可以通过Jenkins 将任务调度及模块持续集成起来。

持续集成大体分为以下5个部分:

(1)代码更新

(2)编译

(3)自动打包部署

(4)自动化测试,此步骤还可以加入主干和分支的结果diff

(5)结果报告

(6)结果通知及展现,可以用jenkins自带的邮件通知测试结果,也可以自己写通知

 

参数化构建过程:

主干和分支的测试过程最好分开。我的做法是,主干依赖源码管理(git),一旦master分支代码有更新之后,自动触发。分支采用参数化构建过程,可以用于自测。

记一次,ant+ivy+jacoco+testNG+tomcat搭建 接口自动化CI_第2张图片

 

记一次,ant+ivy+jacoco+testNG+tomcat搭建 接口自动化CI_第3张图片

 

 

记一次,ant+ivy+jacoco+testNG+tomcat搭建 接口自动化CI_第4张图片

 

 

构建过程可以使用SHELL

以下是自己的一个部署的例子:

#!/bin/bash
# pretend to be user WORK
source /home/.bashrc
source /etc/profile

function check()
{
    if [ $1 -ne 0 ]
    then
        echo -e "\033[0;31mwe got an error on [$2]"
        echo -e "\033[0;31mexit the hudson shell script without any doubt"
        exit 1
    fi
}

function steplog()
{
    echo -e "\033[0;34m================================================ $@ ================================================"
}


function init()
{
	#异常检查,判断buildnum号是否为空并且判断是否有同源存储路径,否则退出
    if [ x${BUILD_NUMBER} = x ]
    then
        echo -e "the buildnum is null, please check"
        exit 1
    fi
    echo -e "THE BUILD_NUM : ${BUILD_NUMBER}"
   
}


function compile()
{
    echo "hostname : $(hostname)"
	#禁止杀死衍生进程
    OLD_BUILD_ID=$BUILD_ID
    echo "OLD_BUILD_ID : $OLD_BUILD_ID"
    BUILD_ID=DONTKILLME
    
    
    cd $WORKSPACE
     #下载tag环境部署的脚本
    if [ -d tag_ci ];then
    	rm -rf tag_ci
    fi
       
    git clone 路径
    
    echo "pwd : $(pwd)"
    cd $WORKSPACE/tag_ci/deploy/
    echo "pwd : $(pwd)"
    sh deploy_tag.sh
    
    #禁止杀死衍生进程cd
    BUILD_ID=$OLD_BUILD_ID
    echo "OLD_BUILD_ID : $OLD_BUILD_ID"

}

init
compile

七、报告

1、日志

日志模块可以采用Log4j

2、统计结果

 

以上。

 

 

你可能感兴趣的:(自动化测试系列)