天下大勢分久必合合久必分,早期的軟件開發只有軟件工程師一人完成,爲了提升效率逐漸實行分工模式:開發、測試、運維。不一樣角色擔任不一樣的任務。分工愈來愈細以後帶來了問題也愈來愈突出,那就是各角色之間的溝通成本愈來愈高。而全棧工程師、DevOps/TestOps相關職位和概念的提出,本質就是把不一樣的工做集中在一我的身上,或者讓一我的涉及到更多方面的工做,從而來下降這種溝通成本。html
要想了解TestOps,必需要先了解DevOps。ios
wikipedia解釋:DevOps是一種軟件工程文化和實踐,旨在統一軟件開發(Dev)和軟件運維(Ops)。DevOps運動的主要特色是在軟件構建的全部步驟中極力提倡自動化和監控,從集成、測試、發佈到部署和基礎設施管理。DevOps的目標是縮短開發週期,增長部署頻率,更可靠的發佈,與業務目標緊密結合。shell
Dev、QA、Ops的交匯處咱們認爲就是DevOps。實際上,DevOps就是把產品開發過程當中各角色交匯處的活給幹了,讓各部門都專一於幹他們本身的活兒。編程
DevOps是一個完整的面向IT運維的工做流,以IT自動化以及持續集成(CI)、持續部署(CD)爲基礎,來優化程式開發、測試、系統運維等全部環節。api
只講理論是很是空洞的,咱們必須經過技術和工具將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主要目的是推進整個研發體系與發佈體系更多在質量方面。能夠這樣理解DevOps是從研發推進配合運維和測試,而TestOps是從測試角度推進研發和運維。因此TestOps纔是真正把測試落地到整個研發體系的關鍵崗位。
關於TestOps定義:測試運維,測試角度推進研發、運維、持續測試到持續集成。
新的趨勢圖:
測試與開發交叉的工做,經過測試驅動開發(TestDev)來進行。
測試與運維交叉的工做,經過TestOps來完成。
開發與運維交叉的工做,經過DevOps來完成。
三個角色交叉的部分工做,由god來作吧!哈哈。
「TestOps」團隊的本質是專一於提供所需的基礎設施和平臺全部級別的測試,從功能測試到集成測試,再到低級單元和API測試。
Dev能力:Java、Python、PHP、Shell
Ops能力:Jenkins、Docker、Maven、Ansible、Git、Linux
Test能力:測試用例、測試方法、缺陷生命週期、單元測試、接口測試、Selenium
團隊價值:推進先進的團隊協做方式,持續交付生命週期的把控,持續集成高質量要求。
我的價值:DevOps和TestOps技能,自動化測試推進持續交付,主導開發流程的生命週期。
DevOps能推進整個測試和運維團隊統一整個研發流程,幫助團隊更敏捷的提交產品。他能解決流程問題,但沒法發現開發過程當中的測試的缺陷。只有更專業TestOps的站在專業的測試角度推進開發和運維一塊兒進行。TestOps和DevOps造成一個完整的持續集成和持續交付體系,纔是真正提高整個團隊的效率。
最後,拋開這些概念,我以爲測試人員提高本身的綜合能力纔是關鍵:培養本身的編程能力,更早的介入項目測試(單元、接口),提升本身的(接口/UI)自動化能力,提高測試效率。學習運維技術,可以獨立部署和維護測試環境。