借持续集成的思想搞接口测试自动化

发表于:2017-11-21 11:29

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Ivanli1990    来源:51Testing软件测试网采编

分享:
  2.4.2 配置jenkins
  首先启动容器。
  sudo docker-compose up -d
  ●将docker宿主机配置为节点
  这里我选择将docker宿主机作为jenkins的slave节点。所以首先配置jenkins ssh免密登录docker宿主机,登录用户为宿主机的ivanli用户:
  ① docker exec进入jenkins容器中,执行:
  ssh-keygen -t rsa
  一路回车生成jenkins容器的公钥和私钥。
  ② 将jenkins容器的公钥写进宿主机(192.168.201.130)ivanli用户的~./ssh/authorized_keys中:
  ssh-copy-id -i ~/.ssh/id_rsa.pub ivanli@192.168.201.130
  ③ 在jenkins容器中登录宿主机,以便将宿主机的ip写入jenkins容器的~/.ssh/known_hosts文件中:
  ssh ivanli@192.168.201.130
  ④ jenkins中新增Credentials
  页面如下:
  a、Username填入免密登录宿主机的用户ivanli;
  b、Private Key中填入jenkins容器生成的私钥。
  新增Credentials
  ⑤ jenkins中新增宿主机节点
  页面如下:
  a、启动方法选SSH;
  b、主机填入宿主机ip;
  c、Credentials选刚才新建的Credential;
  d、Java路径填入宿主机java路径。
  新增linux节点
  然后在jenkins页面中luncher宿主机节点。
  安装Gitlab Plugin 和 Gitlab Hook Plugin 插件
  要使用jenkins检测gitlab代码是否有更新(push),需要安装Gitlab和Gitlab Hook插件。
  gitlab和gitlab hook插件
  ●配置jenkins容器的jenkisn用户ssh免密访问gitlab
  ① 将jenkins容器jenkins用户生成的公钥复制到gitlab用户的settings -> SSH Keys中,过程同2.4.2节一样,不再复述。
  ② jenkins中新增Credentials,私钥填入jenkins容器jenkins用户生成的私钥。
  ●配置job
  配置一个检测gitlab测试脚本更新及触发构建测试工作的job。
  ① jenkins中新建job,名为test_git_maven,执行节点选择docker宿主机。
  执行节点选择docker宿主机
  ② 源码管理选择git
  页面如下:
  a、仓库地址填入项目的ssh地址。注意!填入项目的ssh地址,而不是http地址;
  b、Credentials选择之前新增的jenkins容器的jenkins用户的Credential;
  c、Branch选择主干master(因为我是将本地代码提交到gitlab的lego2_AdServiceTestSuite项目的主干上)。
  源码管理
  ③ 构建触发器选择Gitlab
  页面如下:
  复制图中的url。
  构建触发器
  ④ 将上步的url粘贴到gitlab项目中的webhook中。Trigger中勾选Push events。这样,本地代码提交到gitlab上后,jenkins就会通过gitlab hook插件检测到gitlab上代码有更新,触发job构建。
  gitlab项目中添加webhook
  ⑤ 构建
  构建中执行测试项目中的dockerrun.sh脚本。
  构建
  ⑥ 构建后操作
  构建后发布测试报告,这里就不多说了,具体配置如图:
  构建后操作
  测试
  首先分别启动gitlab和jenkins容器:
  ivanli@ubuntu:~$ sudo docker ps
  CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS                  PORTS                                                 NAMES
  1f6d63de064d        jenkins/jenkins:lts       "/bin/tini -- /usr..."   3 minutes ago       Up 2 minutes            0.0.0.0:50000->50000/tcp, 0.0.0.0:9001->8080/tcp      jenkins_test
  fa40db7215e5        gitlab/gitlab-ce:latest   "/assets/wrapper"        47 hours ago        Up 47 hours (healthy)   443/tcp, 0.0.0.0:2222->22/tcp, 0.0.0.0:8929->80/tcp   gitlab
  ivanli@ubuntu:~$ 
  在本地测试项目中新增一个hello文件,git push到gitlab中,触发jenkins构建job。
  ivanli@ubuntu:~/myown/docker_test/docker_gitlabProject/lego2_AdServiceTestSuite$ touch hello
  ivanli@ubuntu:~/myown/docker_test/docker_gitlabProject/lego2_AdServiceTestSuite$ git add hello
  ivanli@ubuntu:~/myown/docker_test/docker_gitlabProject/lego2_AdServiceTestSuite$ git commit -m "add hello"
  [master ac113c1] add hello
   1 file changed, 0 insertions(+), 0 deletions(-)
   create mode 100644 hello
  ivanli@ubuntu:~/myown/docker_test/docker_gitlabProject/lego2_AdServiceTestSuite$ git push -u origin master
  Counting objects: 3, done.
  Delta compression using up to 4 threads.
  Compressing objects: 100% (2/2), done.
  Writing objects: 100% (2/2), 254 bytes | 0 bytes/s, done.
  Total 2 (delta 1), reused 0 (delta 0)
  To ssh://git@192.168.201.130:2222/ivanli/lego2_AdServiceTestSuite.git
     d700f8e..ac113c1  master -> master
  Branch master set up to track remote branch master from origin.
  ivanli@ubuntu:~/myown/docker_test/docker_gitlabProject/lego2_AdServiceTestSuite$
  过一会就可以看到,jenkins检测到gitlab上lego2_AdServiceTestSuite项目有代码更新后,自动触发构建:
  Started by Gitlab push by ivanli
  jenkins job 输出:
  可见gitlab上的代码被down到执行节点,然后开始测试,首先创建并启动mysql容器:
  创建mysql容器
  接着创建maven容器,执行测试
  ,测试结束后,删除容器,jenkins收集测试报告:
  测试结束,删除容器,收集报告
  构建结果:
  构建结果
  测试报告:
  测试报告
  测试报告
  由此,实现了最初的目标,借助持续集成的思想将接口测试自动化。
  总结
  如前言所说,借着之前工作中遇到的接口测试,考虑了怎样将手动执行的接口测试给自动化实现,也考虑如何去实践持续集成的思想,故一步步将整个流程给趟了下来。在这个过程中也学到了不少东西,当然,如果想完完全全的将当前测试工作持续集成化,还有不少的限制和工作去做,这也是需要自己一点点去学习和不断的感悟。
  自己毕业也已快2年半了,从一个非科班专业出身的懵懂应届生,也算一点点入门了QA这个职业,也曾经对自身未来的职业发展感到迷茫和彷徨,平时也一点点积累和学习软件测试方面的资料,一点点明确了QA未来的发展方向,测试平台服务化,测试平台智能化,DevOpts这3个方向就是未来除了管理方向外,QA的职业发展方向吧,也希望自己要更加努力一些,跟上行业要求,早日在这3个方向中的1个方向上有所发展。
  最后,希望这篇文章能帮助一些初级QA。
22/2<12
精选软件测试好文,快来阅读吧~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号