国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

快速部署TEST-DRIVEN DEVELOPMENT/DEBUG環(huán)境

SHERlocked93 / 2499人閱讀

摘要:關(guān)注的目標(biāo)就是在代碼提交之后,順利且迅速的把新的功能部署到產(chǎn)品環(huán)境上。由于是,那么單元測(cè)試,回歸測(cè)試,集成測(cè)試,都是實(shí)現(xiàn)的手段。高質(zhì)量的產(chǎn)品需求書和高質(zhì)量的自動(dòng)化集成測(cè)試用例毫無(wú)疑問(wèn),是高質(zhì)量軟件的保證之一。

什么是Test-Driven Development

Test-Driven Development 測(cè)試驅(qū)動(dòng)開發(fā),這個(gè)詞兒各位技術(shù)大大必定耳熟能詳,我作為一個(gè)曾經(jīng)的Develop, ops,現(xiàn)在的DevOps從業(yè)者,這次想來(lái)跟大家聊聊Test-Driven Development。測(cè)試驅(qū)動(dòng)開發(fā)傳統(tǒng)意義上就是先寫測(cè)試用例,再做代碼實(shí)現(xiàn),這樣就能明確代碼功能,減少開發(fā)無(wú)用功能的時(shí)間,很多好處,就不贅述了。

什么是Test-Driven Debug

下面聊聊我想要說(shuō)的TDD。
DevOps這一位置是互聯(lián)網(wǎng)產(chǎn)品逐漸成熟之后,為了滿足互聯(lián)網(wǎng)開發(fā)&發(fā)布周期的特點(diǎn)所提出的一個(gè)新的崗位要求。關(guān)注的目標(biāo)就是在代碼提交之后,順利且迅速的把新的功能部署到產(chǎn)品環(huán)境上。

其實(shí)這是一個(gè)很寬泛,涵蓋內(nèi)容比較多的話題,但是重中之重,顯然是在于代碼質(zhì)量。所以我們內(nèi)部提出的測(cè)試驅(qū)動(dòng)開發(fā),意義不僅僅在于單元測(cè)試用例先于開發(fā)代碼之前的編寫,而在與通過(guò)真正的測(cè)試報(bào)告來(lái)推動(dòng)代碼的Bug修復(fù)。所以應(yīng)該是Test-Driven Debug。由于是Test-Driven Debug,那么單元測(cè)試,回歸測(cè)試,集成測(cè)試,都是實(shí)現(xiàn)TDD的手段。

TDD和DevOps的關(guān)系

在整個(gè)DevOps的流程的上游,就是探究如何把這一系列的測(cè)試及時(shí)的反饋給Develop以幫助其改進(jìn)代碼質(zhì)量。

測(cè)試用例的編寫是非常重要的,我們的最終目標(biāo)是PM寫出產(chǎn)品需求之后,測(cè)試人員能夠和開發(fā)人員一同進(jìn)入編碼流程,開發(fā)人員進(jìn)行代碼編寫的同時(shí)測(cè)試人員進(jìn)行自動(dòng)化集成測(cè)試用例的編寫。這對(duì)測(cè)試開發(fā)人員和PM都提出比較高的要求,一是PM提出的需求能夠足夠詳細(xì)到最終功能的描述,其次要求測(cè)試人員能夠僅根據(jù)功能描述完成測(cè)試用例的編寫。這樣同時(shí)進(jìn)行的功能編寫和功能測(cè)試還能促進(jìn)PM的需求文檔進(jìn)一步的完善。

高質(zhì)量的產(chǎn)品需求書和高質(zhì)量的自動(dòng)化集成測(cè)試用例毫無(wú)疑問(wèn),是高質(zhì)量軟件的保證之一。

其次,作為DevOps的職責(zé)之一,就是怎么把這個(gè)過(guò)程流轉(zhuǎn)起來(lái),規(guī)范化,形成固定的軟件發(fā)布過(guò)程。

Jenkins & Docker 快速部署 TDD

我們?cè)趦?nèi)部搭建了一套即插即用的軟件測(cè)試流轉(zhuǎn)平臺(tái),整套流程使用的是Jenkins+Docker 的實(shí)現(xiàn)方式,Jenkins是標(biāo)準(zhǔn)的配置管理工具,有非常豐富的插件。Docker的優(yōu)勢(shì)在于隨用隨部署,并且能夠把不支持rest接口的工具做成支持rest 接口的工作方式,再加上Jenkins本身就支持rest接口,這樣我們?cè)诓渴鹫紫到y(tǒng)的過(guò)程中,就不需要依賴目錄/文件共享的方式,全部使用rest協(xié)議,為Jenkins之間的job實(shí)現(xiàn)了解耦。
我們先看下構(gòu)成圖:

圖畫的不好,請(qǐng)諒解...

整個(gè)環(huán)節(jié)大致如下:

Develop push 代碼到代碼庫(kù)。

代碼庫(kù)用hook 觸發(fā)Jenkins 啟動(dòng)。

Jenkins調(diào)用Checkstyle,Pmd等測(cè)試job,測(cè)試參數(shù)從report pool獲取,最終產(chǎn)生的report存入report pool。

產(chǎn)生報(bào)告,需要的報(bào)告內(nèi)容全部從report pool中獲取。

發(fā)送郵件報(bào)告。

report pool暫時(shí)使用Elastic search充任,不僅作為report的報(bào)告池,還中轉(zhuǎn)了一些必要的配置文件,譬如規(guī)則文件等。

sendmail是必須的,每次測(cè)試結(jié)束之后發(fā)送的郵件是push Develop的唯一手段,也就是說(shuō),這個(gè)step是整個(gè)項(xiàng)目的臉面,有沒(méi)有效果全看sendmail做的是不是夠“觸目驚心”了。

我們要求所有的Develop每天必須定時(shí)檢查郵件,來(lái)獲知測(cè)試結(jié)果,在項(xiàng)目后期必須當(dāng)天解決bug,如果有任何延時(shí)必須上報(bào)pm以進(jìn)行資源調(diào)配,以保證項(xiàng)目按時(shí)發(fā)布高質(zhì)量的代碼。

于此同時(shí),將配備一個(gè)SPL去trigger并且push這一過(guò)程,給項(xiàng)目按時(shí)發(fā)布配備雙重保證。

那么Docker是如何使用到這套環(huán)境中的呢?
譬如本例中的heckstyle, 這是最普遍的java代碼風(fēng)格檢查工具,執(zhí)行命令如下:

java -jar /root/checkstyle-xxx.jar -c rule.xml -f xml /var/jenkins/src -o /root/result.xml

很簡(jiǎn)單一個(gè)命令,按照rule.xml定義的代碼規(guī)范,對(duì)/var/jenkins/src目錄下的源代碼進(jìn)行掃描,輸出的結(jié)果寫入/root/result.xml中。

在使用Docker之前,我們的做法是Jenkins 的一個(gè)job checkout代碼,然后在shell script 執(zhí)行這條java命令,把輸出的result.xml做為發(fā)布文件,給之后Jenkins的Checkstyle做為輸入,并生成Checkstyle的summary report,這兩個(gè)項(xiàng)目必須指定一個(gè)能共享的文件目錄,以便信息交換,明顯制約了項(xiàng)目部署。

這種做法在Docker出現(xiàn)之前,幾乎是唯一的實(shí)現(xiàn)方式。在用了Docker之后,我們看看會(huì)怎么做這個(gè)測(cè)試工作。

代碼的checkout

獲取rule.xml

運(yùn)行Checkstyle

把生成的Checkstyle的report上傳到report pool

以上四項(xiàng)操作都集成在docker里面,做成image.

Jenkins所要做的就是調(diào)用docker api接口,兩條命令:

curl -l –H xxxxxxxxxx http://server:port/containers/create?name=checkstyle
curl -X POST http://server:port/containers/checkstyle/start

完了之后,checkstyle產(chǎn)生的report就會(huì)進(jìn)入report pool。

獲取 report:

curl -XGET http://server:port/checkstyle/reports/checkstyle_report.xml

生成Checkstyle 的 Trend graph。

這樣操作的優(yōu)點(diǎn)是顯而易見(jiàn)的。

Jenkins 的各項(xiàng)工具之間充分解耦,可以隨時(shí)部署隨時(shí)使用,不局限在某一個(gè)物理設(shè)備上

Docker做的標(biāo)準(zhǔn)工具,可以迅速的部署一套符合需求的測(cè)試流程

添加新的Jenkins工具不需要在Jenkins主機(jī)上安裝各種工具,破壞原有的結(jié)構(gòu),使用Docker的rest api可以輕松的實(shí)現(xiàn)各種工具的即插即用。

配置管理過(guò)程中使用Docker的優(yōu)勢(shì)還有很多,我這里只述及了很小的一部分。

在需要快速開發(fā)的互聯(lián)網(wǎng)時(shí)代,如何快速搭建一套軟件質(zhì)量保證的環(huán)境也是面臨的挑戰(zhàn)之一,通過(guò)Jenkins和Docker,我們能夠迅速搭建一套符合要求的測(cè)試流程,并給提供給Develop及時(shí)的反饋,推進(jìn)Develop對(duì)bug的Fix,提高Bug fix率從而提高代碼質(zhì)量。

有了這套系統(tǒng),連接Develop和Tester,相信能更好的push 軟件代碼質(zhì)量的提高,從而為快速部署和快速發(fā)布,為整個(gè)DevOps的流程打下堅(jiān)實(shí)的基礎(chǔ)。

原文作者來(lái)自 MaxLeap 團(tuán)隊(duì)_Service&Infra 成員:Kevin
原文鏈接:https://blog.maxleap.cn/archives/719

歡迎關(guān)注微信訂閱號(hào):從移動(dòng)到云端
歡迎加入我們的MaxLeap活動(dòng)qq群:555973817,我們將不定期做技術(shù)分享活動(dòng)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/26588.html

相關(guān)文章

  • 在多主機(jī)Docker網(wǎng)絡(luò)中運(yùn)行XtraDB Cluster

    摘要:正文以下,我將闡述一下,怎么樣在多主機(jī)網(wǎng)絡(luò)中運(yùn)行。舉個(gè)例子,當(dāng)你在主機(jī)上運(yùn)行發(fā)現(xiàn)服務(wù)的時(shí)候,你可以這樣啟動(dòng)節(jié)點(diǎn)這個(gè)節(jié)點(diǎn)就會(huì)自己把自己注冊(cè)到發(fā)現(xiàn)服務(wù)中去,并且加入名為的集群中。 譯者前言 Percona 所維護(hù)的XtraDB 是mysql的一個(gè)分支,使用了性能比innodb更加出色的xtrodb驅(qū)動(dòng),XtraDB-Cluster產(chǎn)品,是其集群化的方案,方案內(nèi)容,請(qǐng)自行g(shù)oogle。最近X...

    awesome23 評(píng)論0 收藏0
  • 在多主機(jī)Docker網(wǎng)絡(luò)中運(yùn)行XtraDB Cluster

    摘要:正文以下,我將闡述一下,怎么樣在多主機(jī)網(wǎng)絡(luò)中運(yùn)行。舉個(gè)例子,當(dāng)你在主機(jī)上運(yùn)行發(fā)現(xiàn)服務(wù)的時(shí)候,你可以這樣啟動(dòng)節(jié)點(diǎn)這個(gè)節(jié)點(diǎn)就會(huì)自己把自己注冊(cè)到發(fā)現(xiàn)服務(wù)中去,并且加入名為的集群中。 譯者前言 Percona 所維護(hù)的XtraDB 是mysql的一個(gè)分支,使用了性能比innodb更加出色的xtrodb驅(qū)動(dòng),XtraDB-Cluster產(chǎn)品,是其集群化的方案,方案內(nèi)容,請(qǐng)自行g(shù)oogle。最近X...

    canopus4u 評(píng)論0 收藏0
  • 從零開始的webpack生活-0x016:OtherPlugin其他常用

    摘要:概述上一章講的是分離樣式,這一章講的是剩下的一些我常用的插件和上一章是沒(méi)有任何關(guān)系。環(huán)境搭建定義環(huán)境插件介紹這個(gè)插件用來(lái)定義環(huán)境變量的,直接定義在了下。安裝依賴添加資源修改配置打包其他更多配置請(qǐng)查閱關(guān)于資源源代碼 0x001 概述 上一章講的是分離樣式,這一章講的是剩下的一些我常用的插件,和上一章是沒(méi)有任何關(guān)系。 0x002 環(huán)境搭建 $ mkdir 0x0016-other-plug...

    chinafgj 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<