測試環(huán)境困局
測試環(huán)境治理專項是在我入職2個月接手的活,用“爛攤子”來形容一點也不為過。年久失修,需求基本沒有在測試環(huán)境使用,想用也有很多問題。人員缺乏信心,之前負(fù)責(zé)測試環(huán)境的同學(xué)抱怨極多,外部推不動,內(nèi)部又沒有技術(shù)能力支撐,負(fù)能量已經(jīng)蔓延到整個團(tuán)隊。當(dāng)然,我也是其中一員,這事確實難搞。在技術(shù)部測試環(huán)境平臺化的大方向下,需要每個組出一個接口人來牽頭,考慮到我以前寫過測試平臺,亂七八糟的事都整過,老板就指定了我。What,測試環(huán)境是什么?測試環(huán)境是一套能夠支撐業(yè)務(wù)系統(tǒng)運行的環(huán)境,是相對于預(yù)發(fā)環(huán)境和生產(chǎn)環(huán)境來說完全隔離的環(huán)境。測試環(huán)境=應(yīng)用+數(shù)據(jù)+配置+依賴服務(wù)。應(yīng)用包含系統(tǒng)應(yīng)用和中間件等,數(shù)據(jù)就是測試物料,配置針對測試環(huán)境應(yīng)該有單獨的一套,依賴服務(wù)要跟外部聯(lián)調(diào)好以后整個環(huán)境才是可用的。測試環(huán)境治理就是通過內(nèi)部搭建和外部聯(lián)調(diào),保障業(yè)務(wù)系統(tǒng)能夠在完全隔離的環(huán)境中運行。Why,為什么要做測試環(huán)境?測試環(huán)境是為了隔離。如果只有一套生產(chǎn)環(huán)境,那么開發(fā)、測試、上線等活動,可能會對線上系統(tǒng)穩(wěn)定性造成影響,可能會污染線上用戶數(shù)據(jù),可能引起客戶投訴甚至資產(chǎn)損失,所以需要有一套完全隔離的測試環(huán)境。Who,誰來負(fù)責(zé)測試環(huán)境?每個測試人員都需要具備測試環(huán)境搭建能力。當(dāng)然可以推動運維或研發(fā)來搭建測試環(huán)境,但是測試人員需要具備搭建能力,能夠自主編譯,構(gòu)建,部署,遇到問題能夠根據(jù)日志做初步定位,將問題拋出推動研發(fā)或外部依賴方解決。When,什么時間做測試環(huán)境?測試環(huán)境治理需要前置到研發(fā)自測階段。在實踐過程中,測試同學(xué)暴露出來最多的問題是,沒有時間投入到測試環(huán)境搭建中,一方面是缺乏動力,不肯邁出艱難的第一步,另一方面也是跟項目節(jié)奏有關(guān),研發(fā)就算用測試環(huán)境自測,也會在預(yù)發(fā)聯(lián)調(diào)好以后再提測,到測試手上時,已經(jīng)有可用的預(yù)發(fā)環(huán)境了,就不會再去用測試環(huán)境。“項目時間緊,測試環(huán)境不好用,直接用預(yù)發(fā)測吧”,順理成章的就成為了很合理的借口。所以需要從提測,前置到,研發(fā)自測,做測試環(huán)境治理:Where,從哪里入手測試環(huán)境?測試環(huán)境治理需要從上往下才能推動,先有文化,才有行動。假如只有某個部門想做測試環(huán)境治理,外部依賴基本上是推不動的,一個人吶喊得再憤怒其他人也可能無動于衷。所以得先把測試環(huán)境治理這件事,跟老板溝通,從高層入手,把它定義為一項政治任務(wù),從上往下層層遞進(jìn)。How,怎么做測試環(huán)境?工欲善其事,必先利其器,公司的基建比較完善,給測試人員搭建測試環(huán)境降低了很大難度。設(shè)想一下,假如只能折騰Docker和K8S,那可能需要專門的運維才能搞得定環(huán)境,對測試來說門檻就會比較高了,除了少數(shù)技術(shù)能力強的,其他同學(xué)基本沒有什么可操作性。測試環(huán)境平臺化就是武器。公司有個部署平臺叫做JDOS,日常運維都是在這上面操作,沒有運維人員,環(huán)境全靠開發(fā)人員和測試人員自己整。JDOS已經(jīng)是頁面化操作了,但它對測試環(huán)境沒有特殊的應(yīng)用場景,是個大而全的平臺,所以二級部門開了一個測試環(huán)境平臺,Env,"一款全流程自動化測試環(huán)境搭建的利器"。Env的核心思想是1+N。1代表穩(wěn)定分組(分組≈Pod),搭建穩(wěn)定分組需要經(jīng)過創(chuàng)建系統(tǒng),創(chuàng)建應(yīng)用,創(chuàng)建集群,申請機器,代碼編譯構(gòu)建,部署鏡像,修改配置等操作,需要選取master穩(wěn)定版本,這樣才能對外提供穩(wěn)定服務(wù)。N是克隆1產(chǎn)生的多個分組,相互隔離,能讓開發(fā)同學(xué)復(fù)用測試搭建好的環(huán)境,完成冒煙自測等過程;也能在多業(yè)務(wù)聯(lián)調(diào)測試時,通過平臺快速搭建一套全鏈路測試環(huán)境。Env提供了環(huán)境監(jiān)控的功能。對于搭建好的穩(wěn)定環(huán)境,它可以每天監(jiān)控機器是否可用,服務(wù)是否正常,鏡像是否老舊,等等等,讓你及時維護(hù)環(huán)境,保障穩(wěn)定性。Env提供了一鍵搭建的功能。新克隆的環(huán)境,只要點一下“一鍵搭建”,就會基于穩(wěn)定分組,自動化搭建一套新環(huán)境,大大節(jié)約了時間成本。Env提供了拓?fù)洚媹D的功能。將多個應(yīng)用拖到一張拓?fù)鋱D里面,根據(jù)依賴關(guān)系連線,能夠直觀了解到應(yīng)用之間的依賴關(guān)系?;谕?fù)鋪砜寺⌒颅h(huán)境,也能批量克隆多個應(yīng)用。假如多項目需求并行迭代,想要多套聯(lián)調(diào)的測試環(huán)境,就可以克隆多套新環(huán)境。Env還解決了一個資源浪費的問題,以前搭建測試環(huán)境比較隨意,申請資源也很容易,其實會導(dǎo)致很多機器用過后,一直空置在那里。Env收攏了申請資源入口,基于Env來創(chuàng)建穩(wěn)定分組,只能有1個,想要更多必須走審批。而對于克隆的新環(huán)境,也會有期限,14天以后會自動釋放,想要延期也必須走審批。我所負(fù)責(zé)的第一件事,就是用Env來搭建一張拓?fù)鋱D,把組內(nèi)所有應(yīng)用都從JDOS遷移到Env上,維持穩(wěn)定環(huán)境對外提供支撐對接,克隆環(huán)境對內(nèi)支持多項目并行。搭建測試環(huán)境只是起步,測試環(huán)境治理的目標(biāo)是需求能夠使用測試環(huán)境。對于外部依賴少的業(yè)務(wù)模塊來說,這相對容易。對于外部依賴很多的業(yè)務(wù)模塊來說,這就很難了。那么該如何推動這件事呢?第1個策略是共建,讓研發(fā)和測試一起來搭建和維護(hù)測試環(huán)境。第2個策略是做功能驗證,梳理出鏈路用例,跟蹤驗證結(jié)果,識別卡點問題:對于卡點問題的處理,把干系人單獨拉群對,響應(yīng)超過3天就往上拋,一定會遇到推不動的問題,那么辦法只能找自己的上游負(fù)責(zé)人,層層向上反饋,讓上面的負(fù)責(zé)人去找對方負(fù)責(zé)人,然后推動對方的下游同學(xué)來協(xié)助解決??c問題記錄后需要做問題分類,做好統(tǒng)計,這既是工作量的體現(xiàn),也是每周進(jìn)度匯報的依據(jù):第3個策略就是制定kpi,強制大家使用測試環(huán)境完成績效。How much,測試環(huán)境做到什么程度?測試環(huán)境的kpi能反應(yīng)出測試環(huán)境應(yīng)該做到什么程度,可以使用需求使用測試環(huán)境占比和測試環(huán)境bug占比。需求使用測試環(huán)境占比的計算公式是打標(biāo)了測試環(huán)境的提測卡片數(shù)/總的提測卡片數(shù),測試在點擊開始測試時,選擇是否使用測試環(huán)境進(jìn)行打標(biāo)。測試環(huán)境bug占比的計算公式是測試環(huán)境bug/(測試環(huán)境bug+預(yù)發(fā)環(huán)境bug+生產(chǎn)環(huán)境bug),在提交缺陷時選擇環(huán)境類型進(jìn)行打標(biāo)。測試環(huán)境bug占比的意義更大,因為使用測試環(huán)境與否,最終的體現(xiàn)還是落在缺陷上面的,比較容易量化,需求使用測試環(huán)境占比不是很確定,需求多少功能在測試環(huán)境使用了,相對來說不是很好度量,但也可以作為輔助指標(biāo)進(jìn)行觀察。測試環(huán)境破局測試環(huán)境關(guān)聯(lián)了很多東西,比如物料、自動化、精準(zhǔn)、流水線等,都可以圍繞測試環(huán)境來做文章。測試環(huán)境既是團(tuán)隊重點,也是是我個人的大案例,目前已經(jīng)解決了部分困難,要想做出一鳴驚人的成績,還需要站在更高的角度去看待整個事情,這也是一個全新的挑戰(zhàn),需要不斷刷新自己,突破。
|