成在人线av无码免费,,,

米樂(lè)M6

公司新聞

自動(dòng)化測(cè)米樂(lè)M6 M6米樂(lè)試在京東數(shù)科的實(shí)踐與探索

  米樂(lè)M6 M6米樂(lè)米樂(lè)M6 M6米樂(lè)米樂(lè)M6 M6米樂(lè)DevOps的目標(biāo)是實(shí)現(xiàn)軟件系統(tǒng)的快速交付、并且提升系統(tǒng)穩(wěn)定性和獲得用戶良好的反饋。不知道是不是有些同學(xué)和我一樣,僅僅靠單純概念性的描述比較難以理解什么是DevOps。

  就好像我們常常說(shuō)要養(yǎng)成“良好的生活習(xí)慣”,那這個(gè)“良好的生活習(xí)慣”可能會(huì)包含:早睡早起、健康飲食和合理鍛煉鍛煉等等具體的行為。其實(shí)DevOps這個(gè)有點(diǎn)抽象的概念也是由一系列具體的行為和軟件工程實(shí)踐組成的。包含:基礎(chǔ)設(shè)施即代碼、CI/CD、自動(dòng)化測(cè)試、容器化、服務(wù)編排、自動(dòng)化部署和軟件度量等。

  CI/CD流水線是決定系統(tǒng)能否實(shí)現(xiàn)快速交付的關(guān)鍵所在,也是DevOps實(shí)踐中關(guān)鍵的一環(huán)。

自動(dòng)化測(cè)米樂(lè)M6 M6米樂(lè)試在京東數(shù)科的實(shí)踐與探索(圖1)

  而在研發(fā)團(tuán)隊(duì)的實(shí)踐過(guò)程中,自動(dòng)化測(cè)試往往是一個(gè)比較難啃的硬骨頭。我列出其中兩個(gè)困難點(diǎn):

  在眾多的研發(fā)團(tuán)隊(duì)中,有一些負(fù)責(zé)質(zhì)量效能的團(tuán)隊(duì)是自動(dòng)化測(cè)試的先行者。他們能夠抽出專門的資源來(lái)編寫自動(dòng)化測(cè)試用例;并通過(guò)自己搭建Jenkins來(lái)實(shí)現(xiàn)自動(dòng)化測(cè)試用例的夜間定時(shí)執(zhí)行;還有些團(tuán)隊(duì)自己開發(fā)了測(cè)試平臺(tái)實(shí)現(xiàn)自動(dòng)化測(cè)試用例管理、執(zhí)行和度量等功能。但是這種各自獨(dú)立的自動(dòng)化測(cè)試平臺(tái)又存在以下問(wèn)題:

  按照各自平臺(tái)標(biāo)準(zhǔn)開發(fā)的自動(dòng)化測(cè)試用例,由于技術(shù)框架不同等原因,并不能實(shí)現(xiàn)資源共享和重用。

  自動(dòng)化測(cè)試相關(guān)數(shù)據(jù)都是存在各自的平臺(tái)中,當(dāng)需要在更大范圍內(nèi)對(duì)不同應(yīng)用或系統(tǒng)的自動(dòng)化測(cè)試程序進(jìn)行度量和評(píng)估時(shí),由于標(biāo)準(zhǔn)不統(tǒng)一和數(shù)據(jù)不互通而導(dǎo)致難以實(shí)現(xiàn)。

  自動(dòng)化測(cè)試的機(jī)器資源有限,常常由于執(zhí)行資源受限而影響自動(dòng)化測(cè)試的運(yùn)行效率。而且不時(shí)會(huì)由于執(zhí)行機(jī)器的偶發(fā)性故障影響自動(dòng)化測(cè)試執(zhí)行的穩(wěn)定性。

  自動(dòng)化測(cè)試常常通過(guò)手動(dòng)觸發(fā)或者定時(shí)觸發(fā)執(zhí)行,并沒(méi)有與實(shí)際的研發(fā)流程結(jié)合起來(lái)。研發(fā)在進(jìn)行日常特性功能開發(fā)、變更的提測(cè)、合并主干和發(fā)布上線等操作的時(shí)候,并沒(méi)有實(shí)現(xiàn)實(shí)時(shí)觸發(fā)自動(dòng)化測(cè)試的執(zhí)行,

  筆者所在的團(tuán)隊(duì)已經(jīng)為公司內(nèi)部提供了一套完整的DevOps工具方案,從迭代管理、代碼倉(cāng)庫(kù)、分支策略、編譯構(gòu)建、靜態(tài)代碼分析、單元測(cè)試、測(cè)試環(huán)境部署、自動(dòng)化測(cè)試到線上發(fā)布,貫穿了整個(gè)研發(fā)過(guò)程。

  下面重點(diǎn)介紹下自動(dòng)化測(cè)試子系統(tǒng)如何結(jié)合實(shí)際業(yè)務(wù)場(chǎng)景來(lái)解決研發(fā)過(guò)程中的痛點(diǎn)。說(shuō)起自動(dòng)化測(cè)試的實(shí)現(xiàn)方式,筆者以目前通用的實(shí)現(xiàn)方案為例,從是否需要寫代碼的角度來(lái)分析下其優(yōu)劣:

  優(yōu)點(diǎn):靈活性強(qiáng),可以基于不同的XUnit測(cè)試框架(例如基于Java語(yǔ)言的Junit、TestNG;基于Python的Pytest、Unittest等)來(lái)實(shí)現(xiàn)自動(dòng)化測(cè)試代碼的編寫。對(duì)于測(cè)試開發(fā)工程師來(lái)說(shuō),使用原生的框架來(lái)通過(guò)寫代碼的方式實(shí)現(xiàn)自動(dòng)化測(cè)試,有利于自身的技能提升,能夠?qū)W到更多的東西。

  缺點(diǎn):有一定門檻,有些測(cè)試同學(xué)缺乏編碼能力,要想寫自動(dòng)化測(cè)試代碼,需要首先學(xué)習(xí)基本的編程語(yǔ)言語(yǔ)法,還需要學(xué)習(xí)測(cè)試框架的基本使用。

  優(yōu)點(diǎn):上手簡(jiǎn)單,成本低;測(cè)試工程師不需要掌握編程技能,便可以通過(guò)頁(yè)面配置的方式來(lái)編寫一個(gè)自動(dòng)化測(cè)試用例(參考Postman等工具)。

  缺點(diǎn):擴(kuò)展能力較差,操作步驟和配置項(xiàng)較繁瑣。不像基于代碼來(lái)實(shí)現(xiàn)自動(dòng)化測(cè)試有強(qiáng)大的擴(kuò)展能力,而且一般有較多的配置項(xiàng),需要通過(guò)較多的步驟和配置來(lái)實(shí)現(xiàn)復(fù)雜業(yè)務(wù)場(chǎng)景。

  另外還有智能化的自動(dòng)化測(cè)試,既不需要寫測(cè)試代碼/腳本,又不需要繁瑣配置,一般可基于線上流量或者業(yè)務(wù)代碼自動(dòng)生成自動(dòng)化測(cè)試;不過(guò)目前來(lái)看,智能化測(cè)試和基于流量錄制的Diff測(cè)試等等覆蓋的場(chǎng)景有限,仍然不能完全替代傳統(tǒng)的自動(dòng)化測(cè)試。

  而筆者目前所在團(tuán)隊(duì)開發(fā)的JAT自動(dòng)化測(cè)試子系統(tǒng),支持以上兩種方式來(lái)實(shí)現(xiàn)自動(dòng)化測(cè)試。用戶既可以通過(guò)編寫Java代碼的方式,也可以通過(guò)頁(yè)面配置化的方式來(lái)實(shí)現(xiàn)自動(dòng)化測(cè)試。

  JAT自動(dòng)化測(cè)試平臺(tái)致力于解決研發(fā)過(guò)程的測(cè)試痛點(diǎn),其目標(biāo)是為各業(yè)務(wù)研發(fā)團(tuán)隊(duì)提供自動(dòng)化測(cè)試的基礎(chǔ)能力,包含測(cè)試生成、測(cè)試執(zhí)行和測(cè)試度量等。通過(guò)與持續(xù)集成流水線的集成和在研發(fā)過(guò)程中的內(nèi)嵌,在保障系統(tǒng)高質(zhì)量的前提下,使用自動(dòng)化的手段逐步提升研發(fā)團(tuán)隊(duì)的交付效率,從而實(shí)現(xiàn)DevOps的落地。

自動(dòng)化測(cè)米樂(lè)M6 M6米樂(lè)試在京東數(shù)科的實(shí)踐與探索(圖2)

自動(dòng)化測(cè)米樂(lè)M6 M6米樂(lè)試在京東數(shù)科的實(shí)踐與探索(圖3)

  由原來(lái)直接拉取測(cè)試工程代碼通過(guò)Maven命令執(zhí)行,改為打包服務(wù)和執(zhí)行服務(wù)分離,采用先構(gòu)建測(cè)試包,再發(fā)到測(cè)試區(qū)執(zhí)行的方式。這種把測(cè)試代碼管理和執(zhí)行服務(wù)分開的方式,能夠滿足對(duì)測(cè)試代碼管理比較嚴(yán)格的訴求,可以避免把測(cè)試代碼直接拉到測(cè)試執(zhí)行環(huán)境,從而一定程度上控制測(cè)試代碼的擴(kuò)散和外漏風(fēng)險(xiǎn)。

自動(dòng)化測(cè)米樂(lè)M6 M6米樂(lè)試在京東數(shù)科的實(shí)踐與探索(圖4)

  如果是手動(dòng)觸發(fā)或者定時(shí)執(zhí)行的自動(dòng)化測(cè)試計(jì)劃,那么只需要在JAT平臺(tái)上創(chuàng)建相應(yīng)的測(cè)試計(jì)劃就可以了。

  而想要實(shí)現(xiàn)一個(gè)持續(xù)集成流水線,也就是當(dāng)代碼變更時(shí),能觸發(fā)拉取代碼、編譯構(gòu)建、環(huán)境部署和自動(dòng)化測(cè)試執(zhí)行一連串的操作。就需要在JCI系統(tǒng)里配置一個(gè)自定義流水線來(lái)實(shí)現(xiàn)。

自動(dòng)化測(cè)米樂(lè)M6 M6米樂(lè)試在京東數(shù)科的實(shí)踐與探索(圖5)

  目前是通過(guò)測(cè)試套件(TestNG測(cè)試套件)的方式與流水線集成,后續(xù)還會(huì)支持通過(guò)測(cè)試計(jì)劃的方式與流水線集成,也就是在流水線中可以選擇該產(chǎn)品/應(yīng)用下屬的自動(dòng)化測(cè)試計(jì)劃。

  為了更好的支持研發(fā)團(tuán)隊(duì)的DevOps實(shí)踐落地,JAT自動(dòng)化測(cè)試平臺(tái)后續(xù)計(jì)劃在以下幾點(diǎn)繼續(xù)豐富功能:

  接口自動(dòng)化測(cè)試用例的自動(dòng)生成:能夠進(jìn)一步簡(jiǎn)化編寫自動(dòng)化用例的成本;基于被測(cè)應(yīng)用服務(wù)的源碼和配置等信息,自動(dòng)生成門檻覆蓋率的自動(dòng)化測(cè)試用例,并一鍵創(chuàng)建測(cè)試計(jì)劃,從而滿足最基本的基本功能回歸測(cè)試需求。

  自動(dòng)化測(cè)試的精準(zhǔn)度量:在目前接口覆蓋率和代碼覆蓋率的基礎(chǔ)上,實(shí)現(xiàn)產(chǎn)品/應(yīng)用代碼覆蓋率及變更代碼覆蓋多維度的度量。給研發(fā)提測(cè)、部署和發(fā)布等操作提供更加精確和可參考的自動(dòng)化測(cè)試數(shù)據(jù) 。

  進(jìn)一步豐富持續(xù)測(cè)試功能:在目前對(duì)接自定義流水線的基礎(chǔ)上,進(jìn)一步增加流水線觸發(fā)自動(dòng)化測(cè)試執(zhí)行的場(chǎng)景;并且能夠?qū)崿F(xiàn)自動(dòng)化測(cè)試結(jié)果數(shù)據(jù)與CI/CD流水線系統(tǒng)(JCI)上的其他研發(fā)過(guò)程數(shù)據(jù)的深度整合,比如自動(dòng)化測(cè)試覆蓋率與功能測(cè)試覆蓋率的數(shù)據(jù)合并計(jì)算等。

  互動(dòng)討論:你在日常工作中都遇到哪些自動(dòng)化測(cè)試的痛點(diǎn)?又使用了哪些自動(dòng)化測(cè)試的工具?你眼中一個(gè)好的自動(dòng)化測(cè)試工具是什么樣子的呢?歡迎在留言區(qū)分享你的困惑或你的見解。