zoukankan      html  css  js  c++  java
  • 软件测试之持续集成

    作者:chu.qingqing[ZSK]

    软件测试历史模式

            说到软件测试,自然就会联想到持续集成。测试工作繁琐,如果测试人员仍然坚持按照旧的模式,开发人员提交代码至svn》测试人员检出源码》编译打包》上传服务器》部署启动,十分耗时,且过程中都需要测试人员进行操作,易造成人力资源的浪费。

    软件测试集成工具jenkins

            针对这种情况,持续集成工具jenkins被引入到测试工作中,协助测试人员进行“自动化部署、启动”。

            Jenkins,基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

            当开发人员完成一个阶段性的研发工作或修复完一个周期的bug后,所有代码均已提交到svn,测试人员只需要登入jenkins,对已创建好的工程(工程如何创建会在下面进行描述)进行构建,jenkins会自动将svn最新代码进行检出、编译并打包,部署到远程服务器启动,测试人员不需要进行任何其他操作,jenkins构建全程有日志,当构建成功后,测试人员看到的就是最新的应用程序。

            搭建上述持续集成环境可以把整个构建、部署过程自动化,很大程度上减轻测试人员工作量。

            Jenkins的安装教程网上可以搜索到,此处不再进行赘述。今天主要是结合具体项目来讲解,如何通过jenkins实现其自动化部署及启动。 

    Jenkins基础环境配置

            1)基础插件配置:登录jenkins,jenkins【系统管理】》【插件管理】,安装Maven Integration plugin、Deploy to container Plugin

            2)基础参数配置:jenkins【系统管理】》【全局工具配置】,配置好jenkins所在服务器的maven和jdk路径

            3)修改maven全局配置:jenkins【系统管理】》【系统设置】,修改Maven项目配置

    全局MAVEN_OPTS:-Xms128m -Xmx512m
    Local Maven Repository :Local to the executor

            全局MAVEN_OPTS:-Xms128m -Xmx512mLocal Maven Repository :Local to the executor

    Jenkins构建项目

            1) 新建项目:构建一个自由风格的软件项目

            2) 配置源码路径并添加权限用户,源码路径及依赖包需要按照次序进行添加

    Local module directory:这是让你自己设置代码存储到本地工作区的自定义目录
    如果为“.”,则码直接放在当前工作区目录下;
    如果自定义目录,则会在工作区创建这个目录结构,然后代码存储到这个目录下
     

            3) 添加构建脚本

    export JAVA_HOME=/home/qingqing/jdk8
    export JRE_HOME=$JAVA_HOME/jre
    export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
    export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
    cd $WORKSPACE
    cd bdp-parent
    MAVEN_BIN=/home/qingqing/maven3/bin
    $MAVEN_BIN/mvn clean install -Dmaven.test.skip=true
    cd ../bdp-transfer
    $MAVEN_BIN/mvn clean install -Dmaven.test.skip=true
    $WORKSPACE: Job的工作空间路径,这里就是/home/qingqing/.jenkins/workspace/bdp-console


            4) 先保存应用,到此构建该项目,代码没有问题的前提下,能够编译成功并打成war包,到这里只能算是自动化打包,那么自动化部署和启动,还需要在打包完成后进行操作 

    Jenkins配置SSH

            1) 保存完毕后,进入【系统管理】》【系统设置】,定位到Publish over SSH

    Passphrase:全局的ssh密码
    SSH Servers : 远程服务器信息设置区
    Name:当前SSH Server的名称(随意取)
    Hostname:远程服务器ip地址
    Username:远程服务器的用户名
    Remote Directory :连接远程服务器路径(绝对路径),也是在此路径下执行shell命令,默认为/home/admin(根据每台服务器用户名而改变)。

    Passphrase:全局的ssh密码 SSH Servers : 远程服务器信息设置区 Name:当前SSH Server的名称(随意取) Hostname:远程服务器ip地址 Username:远程服务器的用户名 Remote Directory :连接远程服务器路径(绝对路径),也是在此路径下执行shell命令,默认为/home/admin(根据每台服务器用户名而改变)。

    点击“高级”,勾选“Use password authentication, or use a different key”,在“Passphrase / Password”中输入远程服务器用户名的密码,比如该处输入用户名为“usieip”的密码。使用“Test Configuration”进行校验该配置是否通过,如下图:

     

    Jenkins通过shell脚本远程启动工程

            1) 此时再次进入初始构建的项目,bdp-console中,找到“构建后操作”,点击“增加构建后操作步骤”,选择“Send build artifacts over SSH”

            说明:此操作的目的,主要是将jenkins服务器上面打好的war包上传到远程服务器,并执行远程服务器的脚本(脚本中会进行停止在运行进程、换包、替换配置文件、重启工程)

    (1)Source files:这是一个相对路径,相对于该job的工作区的路径(存放源码的路径);(2)Remove prefix :移除Source files中的前缀;
    (2)Remote directory:远程服务器的目标位置,相对路径,相对于在“系统设置”中的“Publish over SSH”里的“SSH Server”设置里的“Remote Directory”的路径。
    (3)Exec command:此处写在远程服务器上执行的shell脚本
     

    Start.sh脚本内容:

    #tomcat路径
    TOMCAT_HOME=/home/usieip/bdp-console-8081

    #查看进程并杀掉进程
    ID=`ps -ef | grep "$TOMCAT_HOME" | grep -v "$0" | grep -v "grep" | awk '{print $2}'`
    echo $ID
    for id in $ID
    do
    kill -9 $id
    echo "killed $id"
    done

    #删除旧的war包等
    cd $TOMCAT_HOME/webapps
    rm -rf bdp*

    #拷贝新war包到Tomcat下
    cd ../../war/
    cp bdp-transfer-console-3.0.0.war $TOMCAT_HOME/webapps
    mkdir bdp-transfer-console-3.0.0
    cp bdp-transfer-console-3.0.0.war bdp-transfer-console-3.0.0/
    cd bdp-transfer-console-3.0.0/
    unzip bdp-transfer-console-3.0.0.war
    cp /home/usieip/web_config/bdp.yml WEB-INF/classes/

    #启动tomcat
    "$TOMCAT_HOME"/bin/startup.sh

    Worker.sh脚本内容:

    #tomcat路径
    TOMCAT1_HOME=/home/usieip/bdp-worker-8020

    #查看进程并杀掉进程
    ID=`ps -ef | grep "$TOMCAT1_HOME" | grep -v "$0" | grep -v "grep" | awk '{print $2}'`
    echo $ID
    for id in $ID
    do
    kill -9 $id
    echo "killed $id"
    done

    #删除旧的war包等
    cd $TOMCAT1_HOME/webapps
    rm -rf bdp*

    #拷贝新war包到Tomcat下
    cd ../../war/
    cp bdp-transfer-worker-3.0.0.war $TOMCAT1_HOME/webapps
    cd $TOMCAT1_HOME/webapps
    mkdir bdp-transfer-worker-3.0.0
    cp bdp-transfer-worker-3.0.0.war bdp-transfer-worker-3.0.0/
    cd bdp-transfer-worker-3.0.0
    unzip bdp-transfer-worker-3.0.0.war
    cp /home/usieip/worker_config/bdp.yml WEB-INF/classes/

    #启动tomcat
    "$TOMCAT1_HOME"/bin/startup.sh
     

            至此,一个基本的自动化部署工程已经创建完毕。jenkins中,直接对该工程进行构建,将对此工程进行编译,打包、部署、启动,浏览器直接输入访问地址就可以进行访问,如果构建失败,则需要查看构建日志,查看报错,解决问题,最终迎来自动化的“春天”~(当然,如果您在使用jenkins构建过程中有任何疑问,也可以联系我)

     

  • 相关阅读:
    PAT (Advanced Level) 1060. Are They Equal (25)
    PAT (Advanced Level) 1059. Prime Factors (25)
    PAT (Advanced Level) 1058. A+B in Hogwarts (20)
    PAT (Advanced Level) 1057. Stack (30)
    PAT (Advanced Level) 1056. Mice and Rice (25)
    PAT (Advanced Level) 1055. The World's Richest (25)
    PAT (Advanced Level) 1054. The Dominant Color (20)
    PAT (Advanced Level) 1053. Path of Equal Weight (30)
    PAT (Advanced Level) 1052. Linked List Sorting (25)
    PAT (Advanced Level) 1051. Pop Sequence (25)
  • 原文地址:https://www.cnblogs.com/ustcinfo-qc/p/12124482.html
Copyright © 2011-2022 走看看