编辑推荐: |
本文章向大家介绍软件测试之持续集成,主要包括软件测试之持续集成使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值。
本文来自于博客园,由火龙果软件Anna编辑、推荐。 |
|
软件测试历史模式
说到软件测试,自然就会联想到持续集成。测试工作繁琐,如果测试人员仍然坚持按照旧的模式,开发人员提交代码至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构建过程中有任何疑问,也可以联系我)
|