DevOps/TestOps概念

天下大勢分久必合合久必分,早期的軟件開發只有軟件工程師一人完成,爲了提高效率逐漸實行分工模式:開發、測試、運維。不同角色擔任不同的任務。分工越來越細之後帶來了問題也越來越突出,那就是各角色之間的溝通成本越來越高。而全棧工程師、DevOps/TestOps相關職位和概念的提出,本質就是把不同的工作集中在一個人身上,或者讓一個人涉及到更多方面的工作,從而來降低這種溝通成本。

要想了解TestOps,必須要先了解DevOps。

DevOps 介紹
wikipedia解釋:DevOps是一種軟件工程文化和實踐,旨在統一軟件開發(Dev)和軟件運維(Ops)。DevOps運動的主要特點是在軟件構建的所有步驟中極力提倡自動化和監控,從集成、測試、發佈到部署和基礎設施管理。DevOps的目標是縮短開發週期,增加部署頻率,更可靠的發佈,與業務目標緊密結合。

Dev、QA、Ops的交匯處我們認爲就是DevOps。實際上,DevOps就是把產品開發過程中各角色交匯處的活給幹了,讓各部門都專注於幹他們自己的活兒。

DevOps與持續集成
DevOps是一個完整的面向IT運維的工作流,以IT自動化以及持續集成(CI)、持續部署(CD)爲基礎,來優化程式開發、測試、系統運維等所有環節。

DevOps 技術棧與工具鏈
只講理論是非常空洞的,我們必須通過技術和工具將DevOps落地。這裏整理了主流的工具,其中包括版本控制&協作開發工具、自動化構建和測試工具、持續集成&交付工具、部署工具、維護工具、監控,警告&分析工具等等,這裏補充了一些國內的服務,可以讓你更好的執行實施 DevOps 工作流。

版本控制&協作開發: GitHub、GitLab、BitBucket、SubVersion、Coding、Gitee

自動化構建和測試: Apache Ant、Maven、Selenium、UnitTest、JUnit、JMeter、Gradle、PHPUnit

持續集成&交付: Jenkins、Capistrano、BuildBot、Fabric、Tinderbox、Travis CI、flow.ci Continuum、LuntBuild、CruiseControl、Integrity、Gump、Go

容器平臺: Docker、Rocket、Ubuntu(LXC)、第三方廠商如(AWS/阿里雲)

配置管理: Chef、Puppet、CFengine、Bash、Rudder、Powershell、RunDeck、Saltstack、Ansible

微服務平臺: OpenShift、Cloud Foundry、Kubernetes、Mesosphere

服務開通: Puppet、Docker Swarm、Vagrant、Powershell、OpenStack Heat

日誌管理: Logstash、CollectD、StatsD、ElasticSearch、Logstash

監控,警告&分析: Nagios、Ganglia、Sensu、zabbix、ICINGA、Graphite、Kibana

除了這種技術和工具外,在項目中制定出符合DevOps的工作流程是關鍵,但是,這個東西沒有固定模板的,不同的項目、不同的團隊和公司文化流程和可能有所不同,只要符合DevOps的理念和思想,你們需要走出一條自己的路。

TestOps 介紹
TestOps主要目的是推動整個研發體系與發佈體系更多在質量方面。可以這樣理解DevOps是從研發推動配合運維和測試,而TestOps是從測試角度推動研發和運維。所以TestOps纔是真正把測試落地到整個研發體系的關鍵崗位。

關於TestOps定義:測試運維,測試角度推動研發、運維、持續測試到持續集成。

測試與開發交叉的工作,通過測試驅動開發(TestDev)來進行。

測試與運維交叉的工作,通過TestOps來完成。

開發與運維交叉的工作,通過DevOps來完成。

三個角色交叉的部分工作,由god來做吧!哈哈。

TestOps技能

“TestOps”團隊的本質是專注於提供所需的基礎設施和平臺所有級別的測試,從功能測試到集成測試,再到低級單元和API測試。

Dev能力:Java、Python、PHP、Shell

Ops能力:Jenkins、Docker、Maven、Ansible、Git、Linux

Test能力:測試用例、測試方法、缺陷生命週期、單元測試、接口測試、Selenium

TestOps未來的價值

團隊價值:推動先進的團隊協作方式,持續交付生命週期的把控,持續集成高質量要求。

個人價值:DevOps和TestOps技能,自動化測試推動持續交付,主導開發流程的生命週期。

DevOps能推動整個測試和運維團隊統一整個研發流程,幫助團隊更敏捷的提交產品。他能解決流程問題,但無法發現開發過程中的測試的缺陷。只有更專業TestOps的站在專業的測試角度推動開發和運維一起進行。TestOps和DevOps形成一個完整的持續集成和持續交付體系,纔是真正提升整個團隊的效率。

總結
最後,拋開這些概念,我覺得測試人員提升自己的綜合能力纔是關鍵:培養自己的編程能力,更早的介入項目測試(單元、接口),提高自己的(接口/UI)自動化能力,提升測試效率。學習運維技術,能夠獨立部署和維護測試環境。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章