99热99这里只有精品6国产,亚洲中文字幕在线天天更新,在线观看亚洲精品国产福利片 ,久久久久综合网

歡迎加入QQ討論群258996829
麥子學院 頭像
蘋果6袋
6
麥子學院

用docker 做自動化測試教程

發(fā)布時間:2016-07-06 20:50  回復:0  查看:3243   最后回復:2016-07-06 20:50  
用docker 來啟用應用和微服務是很多人用docker的目的,我今天介紹的是,如何用docker 做 自動化測試 。 

前提
請務必將 Kitchen test 的 Getting started 瀏覽一遍,保證其介紹的所有命令你都能正確的理解和使用。
為什么要自動化測試?
你想過沒有,每次你對代碼做了修改,增加新功能,修復某個bug,你如何保障你的代碼依舊是健康的,不會產(chǎn)生新的問題。 手工一個個去排查是非常耗時的,而且容易遺漏。 

自動化測試就是在你提交的新代碼前,你自己可以預先檢測一下。在代碼遞交到代碼倉庫后被合并(merge)后,讓CI/CD 工具(jenkins,bamboo,等等)自動測試新代碼是否工作。 因為一切過程都是自動化,能省去很多維護的時間,保證遞交的代碼通過測試后,可以正常部署到實例上。
自動化測試的方式
自動化測試的方式有很多,類型也分 unit test,acceptance test,integration test, serverspec test, etc 

我們今天著重講的是,使用kitchen-docker 這個組件來做自動化測試。 
kitchen-docker 是什么?
kitchen-docker 是chef 公司出品的kitchen test 的一個開源社區(qū)的插件??赐晡乙婚_始提到的kitchen test 的getting start guide 后,你就能體會到kitchen test 能做什么了。 

通常我們在自己的電腦環(huán)境中,用vagrant虛擬機做測試。使用kitchen-docker 后,就是調用docker 鏡像和容器來做測試的媒體了。速度上會比vagrant快,尤其是在macbook上,安裝了native docker for mac
如何使用 kitchen-docker?
下面是演示:
進入正確的目錄
$ git clone  https://github.com/BWITS/kitchen-test-demo.git
$ cd kitchen-test-demo
$ find . -name ".kitchen.yml"
./kitchen-docker-ansible-serverspec/roles/demo/.kitchen.yml
./kitchen-docker-chef/.kitchen.yml
./kitchen-vagrant-ansible-serverspec/roles/demo/.kitchen.yml
./kitchen-vagrant-chef/.kitchen.yml

$ cd kitchen-docker-ansible-serverspec/roles/demo
列出測試實例
$ kitchen list
Instance           Driver  Provisioner      Verifier    Transport  Last Action
default-centos-72  Docker  AnsiblePlaybook  Serverspec  Ssh        Verified

#創(chuàng)建實例
$ kitchen create
-----> Starting Kitchen (v1.10.2)
-----> Creating <default-centos-72>...
   0.0.0.0:32790
   [SSH] Established
   Finished creating <default-centos-72> (0m0.10s).
-----> Kitchen is finished. (0m0.25s)
準備環(huán)境
如果測試的是ansible playbook,那么kitchen test 就會運行ansible-playbook安裝該角色所有的應用配置
$ kitchen converge
-----> Starting Kitchen (v1.10.2)
-----> Converging <default-centos-72>...
...
   Transferring files to <default-centos-72>
   Using /etc/ansible/ansible.cfg as config file

   PLAYBOOK: default.yml **********************************************************
   1 plays in /tmp/kitchen/default.yml
...
   PLAY RECAP *********************************************************************
   localhost                  : ok=2    changed=0    unreachable=0    failed=0

   Finished converging <default-centos-72> (0m6.56s).
-----> Kitchen is finished. (0m6.71s)
檢測
$ kitchen verify
-----> Starting Kitchen (v1.10.2)
-----> Setting up <default-centos-72>...
...
   Installing ruby, bundler and serverspec remotely on server
   Running Serverspec
   /usr/local/bin/rspec

   Package "httpd"
     should be installed

   Finished in 0.07733 seconds (files took 0.40255 seconds to load)
   1 example, 0 failures

   Finished verifying <default-centos-72> (0m0.89s).
-----> Kitchen is finished. (0m1.41s)


你可以加新的測試代碼到 kitchen-docker-ansible-serverspec/roles/demo/test/integration/default/serverspec/default_spec.rb

如果想要快速的了解如何添加新的測試代碼,請看 serverspec resources
用jenkings/bamboo做自動化測試
代碼遞交后,我們一般會用jenkins或者bamboo做build和deploy(可以自動觸發(fā)),在build的過程里,你可以添加新任務做測試: 
cd kitchen-docker-ansible-serverspec/roles/demo
kitchen test

kitchen test = kitchen create + kitchen converge + kitchen verify + kitchen destroy
kitchen-docker 的缺陷
你不可能用kitchen-docker 去測試 docker container 的運行情況。這個只能轉用kitchen-vagrant

我還沒有找到如何一次測試所有的ansible roles?,F(xiàn)在只能做到一個個測




原文來自:dockone.io
您還未登錄,請先登錄

熱門帖子

最新帖子

?