<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          百度廣告產(chǎn)品系統(tǒng)級(jí)測(cè)試技術(shù)演進(jìn)

          共 3937字,需瀏覽 8分鐘

           ·

          2021-01-18 13:03

          背景


          根據(jù)典型的測(cè)試金字塔結(jié)構(gòu),一個(gè)產(chǎn)品的測(cè)試可分為三個(gè)層級(jí)。第一層是單元測(cè)試,主要對(duì)程序函數(shù)進(jìn)行測(cè)試。第二層是集成測(cè)試,在百度內(nèi)部是大家常理解的模塊測(cè)試。第三層是系統(tǒng)級(jí)測(cè)試,對(duì)產(chǎn)品整體進(jìn)行的測(cè)試。這種測(cè)試分層原理同樣遵循二八定律,越往下的層級(jí),往往用較小的測(cè)試成本,就能換取較多的功能覆蓋;而越往上的層級(jí),往往會(huì)耗用很多的時(shí)間,卻發(fā)現(xiàn)很少量的問(wèn)題,但是一旦有bug出現(xiàn),問(wèn)題影響面、定位成本,修復(fù)成本也是很高的。因此很多新的產(chǎn)品線,在系統(tǒng)級(jí)測(cè)試上的技術(shù)投入,是望而卻步的,往往僅在最終上線前,才在接近線上的真實(shí)環(huán)境上做人工驗(yàn)收測(cè)試。



          然而像搜索、廣告這種系統(tǒng)架構(gòu)非常復(fù)雜,質(zhì)量要求又特別高的產(chǎn)品,就比較依賴系統(tǒng)級(jí)測(cè)試的手段來(lái)保證線上的穩(wěn)定性,往往一個(gè)系統(tǒng)性能缺陷或異常分支問(wèn)題,就有可能影響到上百萬(wàn)的流量或收入損失。因此在很多產(chǎn)品線系統(tǒng)級(jí)測(cè)試是上線不可缺失的一環(huán)。


          產(chǎn)品創(chuàng)立初期系統(tǒng)比較簡(jiǎn)單,系統(tǒng)級(jí)測(cè)試往往并不會(huì)成為測(cè)試效率的瓶頸。但隨著系統(tǒng)架構(gòu)越來(lái)越復(fù)雜,對(duì)于系統(tǒng)級(jí)測(cè)試技術(shù)和自動(dòng)化水平的要求也是與日俱增的。百度商業(yè)產(chǎn)品的系統(tǒng)級(jí)測(cè)試技術(shù),有著超過(guò)6年的技術(shù)積累,期間也是經(jīng)歷了幾次技術(shù)的演進(jìn)。這篇文章就給大家回顧一下,這幾次技術(shù)架構(gòu)演進(jìn),團(tuán)隊(duì)是怎么樣根據(jù)產(chǎn)品需求和公司導(dǎo)向不斷變化而一直努力和堅(jiān)持,把系統(tǒng)級(jí)測(cè)試技術(shù)從0分做到60分,又從60分做到90分的過(guò)程的。


          演進(jìn)歷史


          ▌手工測(cè)試時(shí)代


          還記得2009年之前系統(tǒng)只有幾個(gè)模塊的時(shí)候,當(dāng)時(shí)的環(huán)境還是比較簡(jiǎn)單的,有兩臺(tái)機(jī)器就能把整個(gè)系統(tǒng)給部署起來(lái),當(dāng)然那時(shí)候的環(huán)境部署也是靠人手工從線上同步的。QA通過(guò)apache自帶的ab工具或通過(guò)loadrunner模擬http請(qǐng)求,對(duì)系統(tǒng)進(jìn)行發(fā)壓,壓力結(jié)束之后通過(guò)手工執(zhí)行一系列stat腳本統(tǒng)計(jì)出模塊的各種性能數(shù)據(jù),最后編輯到word文檔里,作為當(dāng)時(shí)的主要一份測(cè)試報(bào)告內(nèi)容。


          這個(gè)時(shí)代,沒(méi)有太多可講的內(nèi)容,當(dāng)時(shí)百度還是普遍以傳統(tǒng)瀑布開(kāi)發(fā)流程和手工測(cè)試為主,在團(tuán)隊(duì)規(guī)模相對(duì)較小以及迭代效率相對(duì)很低的情況下,這種測(cè)試手段也沒(méi)有遇到明顯的瓶頸。


          ▌自動(dòng)化腳本時(shí)代


          2009年開(kāi)始百度QA內(nèi)部開(kāi)始大力發(fā)展自動(dòng)化。當(dāng)時(shí)很容易想到了,系統(tǒng)級(jí)測(cè)試改進(jìn)的第一站就是如何將重復(fù)的,手工執(zhí)行的工作用腳本給自動(dòng)化起來(lái)。因此有了后面的一鍵自動(dòng)部署環(huán)境,一鍵自動(dòng)發(fā)壓,以及自動(dòng)生成報(bào)告等功能。相比手工測(cè)試,效率上的確有了一個(gè)質(zhì)的飛躍。


          但同時(shí)也發(fā)現(xiàn)像環(huán)境搭建、壓力、性能、diff等測(cè)試各種工具推出來(lái)之后,工程師學(xué)習(xí)使用和配置這些工具的成本變得很大。工具之間也有很多重復(fù)性的邏輯,比如所有工具都需要考慮模塊啟停控制,日志分析等功能。另外,當(dāng)有項(xiàng)目并行時(shí),機(jī)器協(xié)調(diào)及溝通成本就變得越來(lái)越大。


          ▌自動(dòng)化平臺(tái)時(shí)代


          為解決自動(dòng)化腳本泛濫之后帶來(lái)的技術(shù)冗余以及測(cè)試過(guò)程管理等問(wèn)題,團(tuán)隊(duì)從2011年開(kāi)始考慮建設(shè)業(yè)務(wù)線自有的系統(tǒng)級(jí)測(cè)試平臺(tái)。


          平臺(tái)設(shè)計(jì)成測(cè)試平臺(tái)、環(huán)境、任務(wù)三層管理模式。測(cè)試平臺(tái)是一批資源的集合,該資源可以用于部署不同場(chǎng)景的測(cè)試環(huán)境,每個(gè)環(huán)境上可以串行的運(yùn)行多個(gè)測(cè)試任務(wù)。平臺(tái)通過(guò)合理的調(diào)度,使得多人使用的時(shí)候,資源可以互斥。另外,通過(guò)可視化的配置管理,使得底層工具對(duì)用戶透明,用戶僅需要關(guān)注環(huán)境需求和測(cè)試場(chǎng)景需求本身。



          為解決工具泛濫的難題,首先從工具層面定義了統(tǒng)一的接口規(guī)范,以及所有工具放到統(tǒng)一的框架中進(jìn)行開(kāi)發(fā)。通過(guò)將環(huán)境工具以及各種系統(tǒng)測(cè)試工具底層抽取了公共的lib以及環(huán)境操作lib,使得各個(gè)工具之間重復(fù)的功能得到了有效控制。另外各個(gè)工具對(duì)平臺(tái)暴露統(tǒng)一的接口,使得平臺(tái)在調(diào)度不同的工具的時(shí)候,都能用統(tǒng)一的邏輯。



          為解決系統(tǒng)架構(gòu)日益膨脹之后帶來(lái)的資源成本的難題,平臺(tái)引入環(huán)境解耦技術(shù),將產(chǎn)品拆解成多個(gè)子系統(tǒng),通過(guò)驅(qū)動(dòng)和樁模擬系統(tǒng)上下游服務(wù),使得每個(gè)子系統(tǒng)都能獨(dú)立的進(jìn)行測(cè)試,通過(guò)流量錄制和回放技術(shù),使得測(cè)試效果接近真實(shí)系統(tǒng)。從這個(gè)方案中大家也能看到,系統(tǒng)拆分不是很靈活,且不同的拆分方案下,需要定制不同的下游樁來(lái)做定制回放,整套方案的管理成本也是不小的,這個(gè)也為后面可定制子系統(tǒng)的發(fā)展打下了很好的基礎(chǔ)。



          產(chǎn)品的系統(tǒng)級(jí)測(cè)試由此進(jìn)入到工業(yè)時(shí)代。整個(gè)團(tuán)隊(duì)的測(cè)試模式和工具研發(fā)模式也因此平臺(tái)的誕生而變得更加規(guī)范、統(tǒng)一。


          ▌測(cè)試云時(shí)代


          產(chǎn)品線從2011年開(kāi)始推行持續(xù)集成研發(fā)模式轉(zhuǎn)型。在持續(xù)集成能力建設(shè)初期,也感受到了此前積累的測(cè)試自動(dòng)化在此過(guò)程中發(fā)揮了更大的價(jià)值。但同時(shí)也發(fā)現(xiàn),持續(xù)集成使得系統(tǒng)級(jí)測(cè)試的需求變得更加頻繁,為了保證主干的穩(wěn)定性,甚至想嘗試把系統(tǒng)級(jí)測(cè)試前置到開(kāi)發(fā)階段來(lái)執(zhí)行,這樣對(duì)于系統(tǒng)級(jí)測(cè)試資源和執(zhí)行效率的要求也變得越來(lái)越高。


          考慮到平臺(tái)對(duì)于資源管理的方案,還是一個(gè)個(gè)獨(dú)立的私有集群,由于集群之間用戶、環(huán)境和任務(wù)分布不均與,帶來(lái)很大的資源浪費(fèi)以及任務(wù)排隊(duì)等問(wèn)題。隨著業(yè)界Cloud技術(shù)的發(fā)展,也給系統(tǒng)級(jí)測(cè)試技術(shù)優(yōu)化帶來(lái)了新的思路。通過(guò)將資源整合和模塊混布,使得相同資源的情況下,任務(wù)的吞吐量得到了一個(gè)很好的提升。另外多個(gè)用戶共同競(jìng)爭(zhēng)剩余資源,整體的任務(wù)排隊(duì)時(shí)間也有了一個(gè)很好的控制。為減小資源靈活分配帶來(lái)的環(huán)境數(shù)據(jù)遷移的成本,引入hdfs/nfs做中間數(shù)據(jù)緩存,通過(guò)增量存儲(chǔ)技術(shù),使得環(huán)境數(shù)據(jù)可以進(jìn)行快速的快照和鏡像恢復(fù)。


          同時(shí),為了進(jìn)一步縮減測(cè)試成本,希望系統(tǒng)可以解耦到任意組合。在此前子系統(tǒng)解耦的方案的基礎(chǔ)上,也進(jìn)行了重構(gòu)。


          • 錄制環(huán)境從線下搭建的環(huán)境遷移到了線上旁路,模塊的更新更加及時(shí),截取的數(shù)據(jù)更加真實(shí)實(shí)時(shí),線下仿真效果更好。


          • 通過(guò)nb(百度內(nèi)部使用的通用截包工具)+redis做數(shù)據(jù)回放服務(wù),免去了此前stub的數(shù)據(jù)管理和部署成本。


          • 系統(tǒng)可以任意定制,缺失的下游通過(guò)回放服務(wù)來(lái)補(bǔ)充數(shù)據(jù),數(shù)據(jù)覆蓋和測(cè)試效果可以和全系統(tǒng)下的表現(xiàn)相當(dāng)。



          這套方案在很長(zhǎng)一段時(shí)間內(nèi)支撐著鳳巢檢索系統(tǒng)從數(shù)10個(gè)模塊發(fā)展到上百個(gè)模塊,幾百人研發(fā)團(tuán)隊(duì)的持續(xù)集成工作開(kāi)展,是幫助鳳巢團(tuán)隊(duì)成為公司第一批CI標(biāo)桿團(tuán)隊(duì)的重要武器。同時(shí)基于業(yè)務(wù)線多年精細(xì)化的打磨,也為后面平臺(tái)化的重構(gòu)提供了很好的技術(shù)保障。


          平臺(tái)化時(shí)代


          2014年,在公司提出的接口化、平臺(tái)化的戰(zhàn)略口號(hào)下。平臺(tái)也在考慮如何將系統(tǒng)級(jí)測(cè)試這種技術(shù)門(mén)檻很高的技術(shù)抽象成服務(wù),從而在其他產(chǎn)品線得到更廣泛的使用和推廣。因此平臺(tái)進(jìn)行了一次整體的重構(gòu),旨在通過(guò)提供一套通用的建模工具和測(cè)試組件,使得產(chǎn)品線構(gòu)建系統(tǒng)級(jí)測(cè)試能力可以像搭積木一樣簡(jiǎn)單、靈活。



          平臺(tái)提供兩個(gè)通用測(cè)試組件。一個(gè)是環(huán)境搭建組件,可以支持單機(jī)、多機(jī)部署方式,物理機(jī)/虛擬機(jī)/容器等多種資源形式,和公司內(nèi)的主流PAAS平臺(tái)打通。另一個(gè)是系統(tǒng)測(cè)試組件,通過(guò)一些合理的抽象分層設(shè)計(jì)和靈活的測(cè)試場(chǎng)景描述能力,產(chǎn)品線只需要通過(guò)簡(jiǎn)單的配置,就能夠支持性能、diff和壓測(cè)等不同的系統(tǒng)級(jí)測(cè)試場(chǎng)景。同時(shí)框架支持開(kāi)發(fā)diy插件,滿足產(chǎn)品線定制化的場(chǎng)景需求。當(dāng)然產(chǎn)品線也可以自己開(kāi)發(fā)工具,只需要實(shí)現(xiàn)平臺(tái)所定義的接口,就可以接入到平臺(tái)變成服務(wù)。


          平臺(tái)提供了一套拓?fù)浣9ぞ撸a(chǎn)品線可以根據(jù)被測(cè)系統(tǒng)的部署和測(cè)試需求,構(gòu)建測(cè)試拓?fù)洹F脚_(tái)通過(guò)三層結(jié)構(gòu)來(lái)刻畫(huà)測(cè)試需求,第一層是模塊,產(chǎn)品線可以配置模塊的CPU/MEM/DISK/PORT等需求,以便平臺(tái)可以調(diào)度到合適的資源,同時(shí)需要模塊設(shè)置一些靜態(tài)參數(shù)(如log位置、啟動(dòng)命令、啟動(dòng)線程數(shù)等)和自定義參數(shù),使得工具和平臺(tái)可以更好的理解模塊的屬性。這里除了被測(cè)模塊,測(cè)試程序也需要進(jìn)行定義,如driver/stub。第二層是子系統(tǒng),也可理解是被測(cè)模塊的集合,方便用戶理解測(cè)試范圍。第三層是拓?fù)淠0澹a(chǎn)品線根據(jù)測(cè)試場(chǎng)景驅(qū)動(dòng),繪制出測(cè)試系統(tǒng)的拓?fù)洌芍С帜K分組、多實(shí)例,以及支持實(shí)例間直連/混連,同時(shí)選擇和配置配套的環(huán)境工具和測(cè)試工具,就能構(gòu)建出一個(gè)用戶可見(jiàn)的測(cè)試服務(wù)。


          用戶使用的時(shí)候就比較簡(jiǎn)單了,只需要選擇拓?fù)淠0澹罱ōh(huán)境,啟動(dòng)測(cè)試任務(wù),即可由平臺(tái)調(diào)度,最終生成測(cè)試報(bào)告了。通過(guò)平臺(tái)化重構(gòu),使得開(kāi)發(fā)者更加專注工具的實(shí)現(xiàn)邏輯,而不用資源和任務(wù)調(diào)度。用戶更加關(guān)注測(cè)試需求本身,而不用考慮工具和資源細(xì)節(jié),最終形成一個(gè)良性發(fā)展的平臺(tái)生態(tài)。目前平臺(tái)已經(jīng)支持公司內(nèi)幾十個(gè)產(chǎn)品,每周接近1W次規(guī)模的系統(tǒng)級(jí)測(cè)試任務(wù)執(zhí)行。


          總結(jié)和未來(lái)展望


          通過(guò)歷史上三次大的系統(tǒng)級(jí)測(cè)試技術(shù)的重構(gòu),從業(yè)務(wù)線專用做到公司通用,不斷將技術(shù)和用戶體驗(yàn)做到極致,這里有很關(guān)鍵的三點(diǎn)信念。


          • 與時(shí)俱進(jìn):技術(shù)的發(fā)展需要適應(yīng)產(chǎn)品業(yè)務(wù)的發(fā)展需要,追求過(guò)度設(shè)計(jì)或者設(shè)計(jì)不足都會(huì)導(dǎo)致項(xiàng)目失敗。


          • 匠人精神:任何技術(shù)的成功都不可能一蹴而就,需要一點(diǎn)點(diǎn)做起,并不斷在產(chǎn)品線進(jìn)行打磨,當(dāng)技術(shù)遇到瓶頸的時(shí)候,要敢于尋求突破而不是逃避。


          • 開(kāi)放心態(tài):通過(guò)內(nèi)部開(kāi)源,擴(kuò)大技術(shù)生態(tài)。沒(méi)有任何通用的技術(shù)可以解決所有產(chǎn)品線的問(wèn)題,只有通過(guò)開(kāi)源讓可以讓大家共同參與改進(jìn),才能讓產(chǎn)品線不會(huì)因?yàn)?0%的需求不滿足而放棄使用技術(shù)。


          平臺(tái)離一百分的目標(biāo)還很遙遠(yuǎn),微服務(wù)、容器化技術(shù)的迅速發(fā)展,使得系統(tǒng)的環(huán)境部署和測(cè)試變得更加復(fù)雜,同時(shí)也對(duì)測(cè)試工具和平臺(tái)有著更高的標(biāo)準(zhǔn)規(guī)范。線上測(cè)試也是系統(tǒng)級(jí)測(cè)試場(chǎng)景創(chuàng)新的下一站,到時(shí)候也會(huì)對(duì)工具和平臺(tái)提出新的要求。只要抱著十年磨一劍的信念,緊跟著公司和業(yè)務(wù)發(fā)展的步伐不斷前行,相信系統(tǒng)級(jí)測(cè)試的技術(shù)還會(huì)迎來(lái)更多的創(chuàng)新和挑戰(zhàn)。



          作者介紹

          董海煒

          百度資深測(cè)試工程師,多年從事復(fù)雜檢索系統(tǒng)的系統(tǒng)級(jí)測(cè)試和持續(xù)集成工作,在測(cè)試自動(dòng)化和平臺(tái)化方面有著豐富的實(shí)踐經(jīng)驗(yàn)。

          end


          瀏覽 48
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  16一17女人毛片 | 日日干日日摸 | 求一个做爱视频网站免费在线观看 | 欧美一级黄 | 成人香蕉网 |