摘要:在歐洲中世紀(jì)的傳說中,有一種叫“人狼”的妖怪类浪,就是人面狼身。它們會講人話费就,專在月圓之夜去襲擊人類。而且傳說中對“人狼”用一般的槍彈是不起作用的睬澡,普通子彈都傷不到也打不死它艳汽,只有一種用銀子作成的特殊子彈才能把它殺死。
作者簡介:武小平(平曉)河狐,阿里巴巴測試專家瑟捣,在CICD迈套、自動化測試工具和質(zhì)量管理方面有較多的經(jīng)驗(yàn),目前負(fù)責(zé)阿里巴巴研發(fā)協(xié)同平臺阿里云RDC的測試桑李。
轉(zhuǎn)載來源:研發(fā)協(xié)同RDC微信公號(alirdc)
在歐洲中世紀(jì)的傳說中窿给,有一種叫“人狼”的妖怪,就是人面狼身崩泡。它們會講人話,專在月圓之夜去襲擊人類角撞。而且傳說中對“人狼”用一般的槍彈是不起作用的,普通子彈都傷不到也打不死它热康,只有一種用銀子作成的特殊子彈才能把它殺死。Brooks在他最著名的隨筆文章《No Silver Bullet》里引用了這個典故 姐军,說明在軟件開發(fā)過程里是沒有萬能的終殺性武器的剖踊,只有各種方法綜合運(yùn)用,才是解決之道歇攻。
那么在軟件研發(fā)過程中,哪怕沒有銀彈缴守,如何用各種方法去解決這些“人狼”帶來的威脅呢镇辉?阿里巴巴在多年的研發(fā)過程中,又是如何對付這頭“人狼”忽肛?這一路走來,又有哪些方法和實(shí)踐被沉淀础废?
1.阿里巴巴的研發(fā)平臺是一個怎樣的平臺?
阿里巴巴研發(fā)協(xié)同平臺(AONE)是云上企業(yè)級一站式智能研發(fā)協(xié)同平臺评腺,目前為阿里巴巴集團(tuán),下屬子公司以及生態(tài)合作伙伴提供從“需求->編碼->測試->發(fā)布->反饋”端到端的持續(xù)交付服務(wù)蒿讥,并解決研發(fā)過程中跨角色、跨組織媒殉、跨地區(qū)的協(xié)作問題,在此基礎(chǔ)上通過數(shù)據(jù)驅(qū)動度量分析為組織效能提升提供決策依據(jù)适袜,目前這一平臺已經(jīng)上云對外提供服務(wù)舷夺,稱為阿里云研發(fā)協(xié)同RDC给猾。(以下簡稱為RDC)
上圖是整個RDC的業(yè)務(wù)框架颂跨,RDC采用微服務(wù)的架構(gòu),從規(guī)劃到運(yùn)營提供了業(yè)務(wù)全生命周期的服務(wù)恒削,眾多的服務(wù)造成了RDC的復(fù)雜度,另一方面作為一個面向用戶的平臺躯砰,RDC又涵蓋了阿里三個層次的技術(shù)服務(wù)棧携丁。
第一層,基礎(chǔ)資源層梦鉴,包括idc機(jī)房、網(wǎng)絡(luò)設(shè)施魄宏、OS、Docker宠互、數(shù)據(jù)庫等。
第二層名秀,平臺服務(wù)層,包括中間件匕得、調(diào)度層、應(yīng)用服務(wù)器等略吨。
第三層,RDC研發(fā)協(xié)同平臺翠忠,包括 項(xiàng)目乞榨、代碼、應(yīng)用吃既、測試、交付河质、運(yùn)營的管理。
三個層次加起來涉及的核心應(yīng)用達(dá)50+掀鹅,隨便一個風(fēng)吹草動就會對系統(tǒng)的穩(wěn)定性造成影響媒楼,這些影響最終體現(xiàn)到面向用戶的RDC,因此好的質(zhì)量保障才能為用戶提供一個穩(wěn)定匣砖,高可用性的研發(fā)協(xié)同平臺。
2.質(zhì)量保障策略
總體采用 “事前預(yù)防”对人,“事中控制”拂共,“事后總結(jié)改進(jìn)”的思想,主要做的三件事情:
測試驅(qū)動持續(xù)交付測試驅(qū)動持續(xù)交付势告,每一次的持續(xù)集成和發(fā)布都從單元測試,API測試咱台,集成測試,UI測試進(jìn)行自動化測試覆蓋回溺;具體包括:單元測試,集成測試遗遵,WebUI測試,移動端UI測試允粤,壓測,線上引流的API測試类垫,線上冒煙測試登澜。
線上質(zhì)量監(jiān)控對線上質(zhì)量的保障,主要采用監(jiān)控的方式脑蠕,希望一有問題就能及時發(fā)現(xiàn)解決谴仙,避免問題的大面積擴(kuò)大。主要包括:
(1) 機(jī)器監(jiān)控報(bào)警晃跺,業(yè)務(wù)數(shù)據(jù)監(jiān)控毫玖。
(2) 對線上運(yùn)行日志的聚合分析,發(fā)現(xiàn)存在的錯誤付枫。
(3) SLA數(shù)據(jù)質(zhì)量提升,將業(yè)務(wù)數(shù)據(jù)可視化二打,指導(dǎo)改進(jìn)方向。
(4) 面向業(yè)務(wù)的監(jiān)控和故障演練继效,通過對線上7*24的監(jiān)控提前發(fā)現(xiàn)問題保障系統(tǒng)的穩(wěn)定運(yùn)行。
研發(fā)質(zhì)量提升通過代碼審核瑞信,集團(tuán)規(guī)約掃描,規(guī)范代碼和提升研發(fā)質(zhì)量凡简。
3. 持續(xù)交付流程
上圖是測試驅(qū)動的的持續(xù)交付流程潘鲫,也是RDC各個應(yīng)用在發(fā)布時的持續(xù)交付流程,通過RDC的發(fā)布功能實(shí)現(xiàn)溉仑。
(1) 開發(fā)在變更(Change Request)中提交代碼后,觸發(fā)單元測試怨喘,檢查代碼中基本的邏輯問題,實(shí)踐中單測的覆蓋率和維護(hù)由開發(fā)同學(xué)自己保證必怜,目前RDC核心應(yīng)用的單測行覆蓋率在50%左右后频。
(2) 部署測試環(huán)境,開發(fā)進(jìn)行自測卑惜,主要對新的功能進(jìn)行基本的驗(yàn)證。測試環(huán)境與生產(chǎn)環(huán)境完全隔離更米,具有獨(dú)立的網(wǎng)絡(luò)環(huán)境,單獨(dú)的數(shù)據(jù)庫和中間件等依賴環(huán)境征峦。
(3) 自測完成后發(fā)布預(yù)發(fā)環(huán)境消请,由測試同學(xué)進(jìn)行集成測試,包括回歸測試和新功能的驗(yàn)證梯啤,以及對核心接口的小壓測。預(yù)發(fā)環(huán)境與生產(chǎn)環(huán)境在同一個網(wǎng)絡(luò)中七婴,共享同一個數(shù)據(jù)庫,數(shù)據(jù)隔離采用邏輯隔離打厘,但是它具有一個獨(dú)立的依賴環(huán)境,如獨(dú)立的上下游和中間件户盯。
(4) 接著進(jìn)入Beta測試環(huán)節(jié),通過截取一部分生產(chǎn)環(huán)境的流量到Beta環(huán)境回放來對核心接口做進(jìn)一步的驗(yàn)證吗伤。Beta環(huán)境與線上環(huán)境完全相同,不同的是Beta環(huán)境不對外提供服務(wù)足淆。
(5) Beta測試完成后礁阁,正式發(fā)布生產(chǎn)環(huán)境并對生產(chǎn)環(huán)境執(zhí)行冒煙測試。
以上是一個變更的生命周期姥闭,也是一次完整的持續(xù)交付流程。得益于RDC發(fā)布系統(tǒng)和RDC實(shí)驗(yàn)室的集成靠欢,我們可以在持續(xù)交付的流程中實(shí)現(xiàn)測試的卡點(diǎn),測試不通過掺涛,無法進(jìn)入下一個階段的發(fā)布疼进。
4.測試技術(shù)和方法
以下內(nèi)容重點(diǎn)討論測試方法和實(shí)現(xiàn)方案秧廉,以及如何通過RDC完成持續(xù)交付,不涉及代碼實(shí)現(xiàn)嚼锄,部分服務(wù)也會在未來上云提供給外部用戶試用。
4.1 分層的自動化測試