二氮双、重要性
? ? ? ? 目前的軟件開發(fā)更加的系統(tǒng)性薄坏,早已脫離了一人或幾個人小作坊式的工作模式,注重的功能性和性能性也越來越多,而針對金融企業(yè),成立獨立測試中心的目的就是為了保證軟件質(zhì)量,那是否真的有必要成立一個獨立的測試中心嗎?它的重要性和價值到底體現(xiàn)在哪里呢?
2.1目派、環(huán)境的統(tǒng)一管理
? ? ? ? 在銀行業(yè)整個軟件體系架構(gòu)中,系統(tǒng)的規(guī)男灿可能在幾百個左右企蹭,如果用微服務(wù)的方式進行改造和重新劃分,則會有幾千個組件智末,而如此數(shù)量級的系統(tǒng)組件谅摄,在投產(chǎn)時間點上錯中復(fù)雜,相互配合起來也是十分龐雜吹害,如何保證每個系統(tǒng)版本能在符合條件的測試環(huán)境上進行測試將是一個棘手的問題螟凭。
? ? ? ? 誠然,測試環(huán)境的機器配置它呀,不論是在任何公司都無法與生產(chǎn)環(huán)境想媲美螺男,這主要是出于成本的考慮,那么如何利用有限的資源纵穿,來保證可靠的測試效果呢下隧?那么就需要測試環(huán)境的統(tǒng)一管理,按需分配谓媒,保證整體的環(huán)境可用性淆院。
? ? ? ? 另外,從專業(yè)性的角度句惯,統(tǒng)一的事項交給專業(yè)的團隊做有助于效率的大幅度提升土辩,避免了各個系統(tǒng)項目組單獨分出人力做整體層面的重復(fù)性工作,同時抢野,也利于版本的統(tǒng)一管理拷淘。
2.2、跨系統(tǒng)組織和協(xié)調(diào)
? ? ? ? 如果一個公司只有幾個系統(tǒng)指孤,且都在統(tǒng)一地點辦公启涯,則沒有必要成立測試中心,需要的時候幾個系統(tǒng)人員坐在一起開個會就解決了恃轩,但如果不是這種情況结洼,系統(tǒng)數(shù)目眾多,劃分出了不同的軟件開發(fā)中心叉跛,各個中心所在的辦公城市都不一樣松忍,這時溝通協(xié)調(diào)的成本將大幅增加,跨部門的協(xié)調(diào)在任何大型組織中來說都是極其困難的事情筷厘。
? ? ? ? 雖然管理學(xué)家經(jīng)常強調(diào)打破部門壁壘鸣峭,消除部門利益伟桅,但在實際工作情況中,部門壁壘依然堅實存在叽掘,想要有不同利益訴求的不同部門協(xié)調(diào)合作溝通,必須要抽象出一個上層部門來進行統(tǒng)一協(xié)調(diào)和溝通玖雁,在測試工作環(huán)節(jié)中更扁,該部門的角色則由測試中心來擔(dān)任。
? ? ? ? 如銀行業(yè)每年年終都會有一項固定的重要測試赫冬,年終結(jié)轉(zhuǎn)測試浓镜,也就是算賬出報表,看一年的盈利情況以及資產(chǎn)負債情況等劲厌,類似于這種測試膛薛,甚至都沒有主牽頭的系統(tǒng),如果沒有測試中心的統(tǒng)一組織补鼻,測試情況和生產(chǎn)實施效果無法想象哄啄。
2.3、測試技術(shù)的創(chuàng)新
? ? ? ? 獨立的團隊專注做測試风范,才能有效的形成測試經(jīng)驗的積累咨跌,才會導(dǎo)致測試技術(shù)的創(chuàng)新。不論是功能測試還是性能測試硼婿,經(jīng)驗的積累至關(guān)重要锌半。豐富的經(jīng)驗可以避免很多彎路,同時寇漫,相似的系統(tǒng)測試經(jīng)驗刊殉,也可以舉一反三的用在同類型的系統(tǒng)上,對于性能測試來說州胳,由于偏注在技術(shù)層面记焊,重要的測試內(nèi)容是測試指標(biāo)是否符合要求,技術(shù)經(jīng)驗的積累陋葡,更容易應(yīng)用在不同的系統(tǒng)中間亚亲。
? ? ? ? 當(dāng)經(jīng)驗積累到一定的程度,會引發(fā)技術(shù)的創(chuàng)新腐缤,如測試工具的創(chuàng)新捌归,測試方法模式的創(chuàng)新等等,這些創(chuàng)新又會大幅提高測試的效率岭粤,保證整體的測試質(zhì)量惜索。
2.4、測試人力資源的平衡
? ? ? ? 當(dāng)企業(yè)采取項目組制的工作模式剃浇,每個項目組必然要負責(zé)軟件全生命周期的全部環(huán)節(jié)管理工作巾兆,測試也其中猎物,而測試人員在整個項目組人員組成中又占據(jù)了不小的比例,如果某個系統(tǒng)的版本密集角塑,需求量旺盛蔫磨,測試人員的工作量是飽和的,但如果一段時間內(nèi)無大版本上線圃伶,則會出現(xiàn)人力資源浪費的情況堤如,反之如果一個系統(tǒng)要出現(xiàn)大規(guī)模重構(gòu)或重大需求變更是,原有的測試人力資源就會無法滿足工作量的需求窒朋。這時如果A項目組想從B項目組借人來完成工作搀罢,基本是不可能的,給予以下兩種考量侥猩,B不會借人給A項目組:
(1)榔至、B項目當(dāng)前本身也比較忙碌,無資源外借
(2)欺劳、B項目目前比較空閑唧取,人是過量的,但如果人員外借划提,就相當(dāng)于想所有人宣布該項目組工作不飽滿兵怯,第二年的預(yù)算申請就會變得困難、以及產(chǎn)生很多消極影響
? ? ? ? 解決此問題腔剂,唯有測試人員集中管理媒区,統(tǒng)一分配,這樣才能平衡各系統(tǒng)掸犬、各版本不同時期的測試人員需求問題袜漩。
三、成立時機
? ? ? ? 測試工作及相關(guān)職責(zé)是采用虛擬化團隊方式來運作湾碎,還是獨立出測試中心來負責(zé)宙攻,這個嚴格依賴于一個企業(yè)的情況而定,沒有固定的模式可以套用介褥。那么測試中心合適需要獨立出來座掘,需要具備什么樣的先機條件呢?筆者認為從架構(gòu)的演化歷史中柔滔,看出一些經(jīng)驗溢陪。
3.1、架構(gòu)的演進式發(fā)展
第一階段:
? ? ? ? 公司A剛剛開始創(chuàng)業(yè)睛廊,正在打市場形真,但開始階段用戶量和交易量都很小,技術(shù)團隊也只有1個人超全,出于成本考慮咆霜,在一臺機器上使用LAMP架構(gòu)部署所有軟件邓馒,已經(jīng)完全滿足了公司的全部需求。
第二階段:
? ? ? ? 公司業(yè)務(wù)開始有所起色蛾坯,原有的架構(gòu)支撐起來已經(jīng)有點兒捉襟見肘光酣,技術(shù)團隊已經(jīng)擴充到了3個人,決定在原有的基礎(chǔ)上脉课,增加一臺機器挂疆,進行應(yīng)用與數(shù)據(jù)分離,各自獨立部署在一臺機器上下翎。
第三階段:
? ? ? ? 公司業(yè)務(wù)有發(fā)展了,發(fā)現(xiàn)技術(shù)又需要變革宝当,這時技術(shù)團隊已經(jīng)擴充到了10人左右视事,決定將原有一臺機器上應(yīng)用服務(wù)部署到一個集群中,同時在集群前面增加負載均衡庆揩。
第四階段:
? ? ? ? 業(yè)務(wù)不斷發(fā)展俐东,應(yīng)用集群化后,應(yīng)用相應(yīng)的速度明顯增加订晌,吞吐量也變大的很明顯虏辫,但慢慢發(fā)現(xiàn)經(jīng)常性出現(xiàn)數(shù)據(jù)庫表鎖死,單邊賬等情況锈拨,于是已經(jīng)擴充到20人的技術(shù)團隊砌庄,開始進行分庫、分表奕枢、分區(qū)操作娄昆,情況有所緩解,后又經(jīng)過討論研究缝彬,決定開始進行讀寫分離萌焰,劃分出一個主庫,三個從庫谷浅。
第五階段:
? ? ? ? 當(dāng)公司業(yè)務(wù)擴展之后扒俯,發(fā)現(xiàn)支撐業(yè)務(wù)的組件越來越多,發(fā)現(xiàn)耦合性也越來越強一疯,怎么辦呢撼玄?擴充到30人的技術(shù)團隊決定引入消息中間件、SOA架構(gòu)墩邀,來進行應(yīng)用解耦互纯,對于不重要的交易開始采用異步、或日終批量處理的方式磕蒲,情況得到大幅緩解留潦。
第六階段:
? ? ? ? 公司發(fā)展太快了只盹,公司的知名度已經(jīng)越來越高,老總已經(jīng)開始籌備IPO的事項兔院,一天老總找到CTO喝茶殖卑,表示技術(shù)要跟上業(yè)務(wù)的發(fā)展,絕對不能扯公司的后退坊萝,CTO回家后輾轉(zhuǎn)反側(cè)孵稽,反復(fù)捉摸老板葫蘆里到底賣什么藥,也在為自己的未來開始擔(dān)憂十偶,因為這時他已經(jīng)帶領(lǐng)了一百人的團隊了菩鲜,最后一拍腦袋,決定未雨綢繆惦积,開始在現(xiàn)有架構(gòu)體系上增加分布式緩存接校,以及搜索引擎。
第七階段:
? ? ? ? 之后一段時間狮崩,公司業(yè)務(wù)運行平穩(wěn)蛛勉,技術(shù)部門也受到了老板的獎勵,公司也如愿上了市睦柴,一天老板搞了公司的聚餐诽凌,在吃飯間隙,漫不經(jīng)心的對CTO說“有人說秒殺是個好東西坦敌!”侣诵,CTO聽完猶如晴天霹靂,連忙跟老板表示狱窘,技術(shù)團隊肯定支持窝趣,但需要一點點時間。匆匆吃完飯后训柴,立即召集手下技術(shù)團隊150人連夜開會哑舒,群策群力,最終決定幻馁,增加前端反向代理服務(wù)器洗鸵,并使用CDN節(jié)點,同時對重要交易系統(tǒng)進行微服務(wù)設(shè)計重構(gòu)仗嗦,并同步開發(fā)獨立秒殺模塊膘滨。
? ? ? ? 幾個月后,公司的秒殺活動圓滿結(jié)束稀拐,老板給CTO又漲了薪水火邓,同時技術(shù)團隊已經(jīng)擴充到了200人。
? ? ? ? 我們可以從上面看到,公司A的架構(gòu)演變铲咨,從單機LAMP到了最后包含集群躲胳、負載均衡、讀寫分離纤勒、消息中間件坯苹、SOA、分布式緩存摇天、搜索引擎粹湃、反向代理、CDN節(jié)點的復(fù)雜架構(gòu)泉坐,每一步的演化为鳄,都是公司業(yè)務(wù)的不斷發(fā)展推進的結(jié)果,那如果一開始就使用這個復(fù)雜的架構(gòu)可以嗎腕让?答案是不可以孤钦,因為沒有業(yè)務(wù)需要,公司也不會允許200人的技術(shù)團隊來維護本來就不多的業(yè)務(wù)记某。
3.2、測試的演進式發(fā)展
? ? ? ? 從架構(gòu)的演進式發(fā)展維度构捡,我們也可以摸索出測試的演進式發(fā)展液南,以及何時成立獨立的測試中心。
(1)勾徽、混沌時期
? ? ? ? 假設(shè)公司一開始之后兩個項目組滑凉,每個項目組各負責(zé)一個系統(tǒng)的開發(fā)工作,業(yè)務(wù)需求變化也不是特別頻繁喘帚,每個項目組也大概各10人左右畅姊,這種情況下,可能連獨立的測試人員都不用吹由,直接開發(fā)兼職測試若未,也就是全能型開發(fā)人員,從需求到運維的所有環(huán)節(jié)倾鲫,都自己搞定粗合,系統(tǒng)也運行的不錯。這時不需要單獨的測試人員乌昔,當(dāng)然更不需要單獨的測試團隊隙疚。
(2)、初現(xiàn)雛形
? ? ? ? 后來公司業(yè)務(wù)發(fā)展越來越大磕道,項目組也越來越多供屉,逐漸可能有10幾個項目組,而每個項目的上線時間也都不相同,相互之間的交易調(diào)用等依賴也越來越多伶丐,而一些公共的測試環(huán)節(jié)需要獨立出來統(tǒng)一管理悼做,例如測試環(huán)境準備與維護,測試整體的統(tǒng)一組織等撵割,給予這個情況贿堰,老板決定成立一個獨立的測試部門,來進行統(tǒng)一協(xié)調(diào)管理啡彬,而這個部門的主要職責(zé)目前只有兩塊:
a羹与、測試環(huán)境的整理規(guī)劃、分配庶灿、維護纵搁,測試版本的安裝等相關(guān)環(huán)境管理實施事項
b、年度測試計劃編制往踢、測試整體組織腾誉、實施
? ? ? ? 到這時,測試中心雛形其實已經(jīng)具備峻呕,只不過暫時是以獨立測試部門的形式利职,還不具備中心的條件。
(3)瘦癌、成長壯大
? ? ? ? 公司的業(yè)務(wù)開始越來越多猪贪,業(yè)務(wù)種類也越來越復(fù)雜,技術(shù)團隊開發(fā)了的系統(tǒng)已經(jīng)達到了幾十個讯私,相互之間的協(xié)調(diào)配合工作越來越多热押,而各系統(tǒng)開發(fā)周期不一、投產(chǎn)點各不相同斤寇,配合其他系統(tǒng)改造量也逐步上升桶癣,甚至出現(xiàn)了要配合公司外系統(tǒng)的改造與測試支持,同時老板為了降低成本娘锁,決定在幾個二線城市成立軟件開發(fā)中心牙寞,導(dǎo)致配合協(xié)調(diào)難度極具增大,原有的測試部門疲于應(yīng)對莫秆,也最終無法保證上線版本質(zhì)量碎税,生產(chǎn)上已經(jīng)出了幾次嚴重缺陷,對公司造成了很惡劣的影響馏锡。CTO找到測試部門主管多次商議雷蹂,最終決定將測試部門大幅增加人員,以保證測試質(zhì)量杯道,同時對原有的職責(zé)進行擴充匪煌,增加專業(yè)的性能測試小組责蝠,功能測試小組,并將原有的人員劃分成環(huán)境小組和測試管理小組萎庭,有效的解決眼下的危機霜医。
(4)、獨立自治
? ? ? ? 在現(xiàn)有的體系下運行了一年后驳规,發(fā)現(xiàn)逐步又有新問題出現(xiàn)肴敛,因為考核原因,測試人員與開發(fā)人員一同考核吗购,而長期的工作同事關(guān)系医男,導(dǎo)致測試人員往往礙于情面不會通過正常途徑完全暴露跟自己熟悉的開發(fā)人員的問題,經(jīng)常采取私下溝通的方式進行捻勉,因為測試部門還掛靠在某一個開發(fā)中心下面镀梭,涉及到跨中心的測試協(xié)調(diào)上,仍無法站在整體的角度進行組織和協(xié)調(diào)踱启,為測試質(zhì)量帶來了隱患报账。另外性能測試方面,經(jīng)驗積累沒有完全應(yīng)用到所有項目組上埠偿,性能測試小組疲于應(yīng)對不斷的測試任務(wù)透罢,且本中心的任務(wù)較多,導(dǎo)致生產(chǎn)上缺陷又開始有增多的趨勢冠蒋,這時老板看到了這個情況羽圃,詳細聽取了CTO與測試部門主管的工作匯報,老板沉默片刻后浊服,一拍桌子统屈,口中蹦出兩個字“分家”胚吁,自此測試部門完全獨立出來牙躺,與原有的開發(fā)中心并列,不再是從屬關(guān)系腕扶,獨立考核孽拷,以前的四個小組,也發(fā)展成四個獨立團隊半抱,并擴充了人員規(guī)模脓恕,生產(chǎn)上的缺陷終于又下來了,自此窿侈,測試中心完全成立炼幔。
? ? ? ? 從上面的演化式的發(fā)展,我們總結(jié)出以下幾個情況需考慮成立測試中心:
? ? ? ? (1)史简、技術(shù)部門下屬項目組已經(jīng)超過十個
? ? ? ? (2)乃秀、開發(fā)部門異地辦公,甚至是在不同城市
? ? ? ? (3)、公司生產(chǎn)上的問題呈現(xiàn)出上升的趨勢
? ? ? ? (4)跺讯、用戶量在可預(yù)期的未來會出現(xiàn)大幅增長枢贿,對性能指標(biāo)要求變得越來越高
? ? ? ? (5)、各項目組內(nèi)部測試人員忙閑不均刀脏,部門壁壘十分嚴重局荚,無法平衡
? ? ? ? (6)、技術(shù)部門要大力開展自動化測試
? ? 在任何公司愈污,包括任何體制耀态,都是問題推動解決方案,加上一定程度的提前預(yù)判和未雨綢繆钙畔,故有信心做大做強的公司茫陆,在一定的發(fā)展階段后,必然要成立獨立的測試中心擎析,以為公司軟件質(zhì)量保駕護航簿盅。