開(kāi)發(fā)自測(cè)模式實(shí)踐
長(zhǎng)期以來(lái)業(yè)務(wù)線測(cè)試有這種困擾:淘寶業(yè)務(wù)線傳統(tǒng)的項(xiàng)目流程把開(kāi)發(fā)、測(cè)試兩個(gè)階段分得比較明顯,導(dǎo)致開(kāi)發(fā)趕時(shí)間寫代碼,提測(cè)階段測(cè)出一些低級(jí)bug;重新返工不僅測(cè)試時(shí)間延長(zhǎng),也導(dǎo)致開(kāi)發(fā)、測(cè)試同學(xué)都累。
在天彤的支持下,本人今年3月份來(lái)到C2B市場(chǎng)團(tuán)隊(duì)輪崗開(kāi)發(fā),實(shí)踐了開(kāi)發(fā)自測(cè)的項(xiàng)目模式。這是一個(gè)新產(chǎn)品團(tuán)隊(duì),新模式比較容易落地。迄今經(jīng)歷了5個(gè)項(xiàng)目 (C2B公益概念版、C2B標(biāo)準(zhǔn)版、C2B公益版2期、C2B合買版和合買版雙12活動(dòng)),摸索了近1年,有過(guò)困難和困惑,總體看來(lái)實(shí)踐效果還是挺不錯(cuò) 的,分享一下。
分享分為實(shí)踐案例、模式小結(jié)和展望3部分
一、實(shí)踐案例
以時(shí)間為維度,實(shí)踐中經(jīng)歷了以下3個(gè)階段。每個(gè)階段都是在前一階段模式的基礎(chǔ)上根據(jù)實(shí)際情況優(yōu)化的
階段1:人人都是開(kāi)發(fā),沒(méi)有專職測(cè)試
有兩個(gè)項(xiàng)目
1、C2B團(tuán)購(gòu)概念版(3.20-4.15,開(kāi)發(fā)測(cè)試比3:0),第1次實(shí)踐成功
這是第一次輕量級(jí)嘗試,加上我有3個(gè)開(kāi)發(fā),功能全部自測(cè),最后我主導(dǎo)驗(yàn)收了一下功能。項(xiàng)目流程如下
說(shuō)明:
1)由于前端資源緊缺問(wèn)題,所以后期才開(kāi)始前端編碼
2)TC也要開(kāi)發(fā)自己寫。給開(kāi)發(fā)培訓(xùn)了一下從UC到TC的轉(zhuǎn)化方法
3)整體驗(yàn)收包括代碼review、PD驗(yàn)收和我再覆蓋一下主流程
效果:
1)單測(cè)和接口測(cè)試覆蓋很好地保證了質(zhì)量
在單測(cè)和接口測(cè)試階段都發(fā)現(xiàn)了bug,避免遺留到功能測(cè)試階段;后端編碼的穩(wěn)定性,能讓開(kāi)發(fā)在后期專注在前端功能的開(kāi)發(fā)和聯(lián)調(diào)上,不用擔(dān)憂底層的質(zhì)量
2)功能測(cè)試時(shí)間大大縮短
因?yàn)橘Y源問(wèn)題前端介入較晚,全部聯(lián)調(diào)好后離計(jì)劃發(fā)布日還剩2天,這兩天的功能測(cè)試時(shí)間里我們找出了大部分問(wèn)題并解決了,完成了驗(yàn)收和發(fā)布。項(xiàng)目總共花了19個(gè)工作日,開(kāi)發(fā)時(shí)間稍微延長(zhǎng),測(cè)試時(shí)間大大縮短,總的項(xiàng)目時(shí)間是縮短的。
3)項(xiàng)目質(zhì)量穩(wěn)定
發(fā)布后,后端遺留一個(gè)因線上、daily環(huán)境不一致導(dǎo)致的bug;前臺(tái)遺留1個(gè)bug。在時(shí)間很有限的情況下,總體質(zhì)量不錯(cuò)
問(wèn)題:
UC、TC有一定的重復(fù)工作量,初次編寫TC的開(kāi)發(fā)工程師寫得不太好且消耗時(shí)間略多
因?yàn)榈谝粋€(gè)項(xiàng)目比較成功,所以第二個(gè)項(xiàng)目繼續(xù)沿用上一次的自測(cè)模式,項(xiàng)目流程基本不變。
效果:
關(guān)鍵詞還是前端資源緊張,全部聯(lián)調(diào)好后只剩下1天的daily測(cè)試時(shí)間。因?yàn)榍捌诟髯宰詼y(cè)做得比較充分,所以依舊是后端穩(wěn)定,前端小問(wèn)題比較多。花了1天修復(fù)完大部分前端問(wèn)題后,按時(shí)發(fā)布。
問(wèn)題:
此次需求點(diǎn)很多,時(shí)間又緊,人員配置全部都是開(kāi)發(fā)的情況下,沒(méi)有一個(gè)人能夠關(guān)注到整體業(yè)務(wù),對(duì)所有的業(yè)務(wù)邏輯能比較清晰。導(dǎo)致
1)系統(tǒng)方面:后面新需求過(guò)來(lái)評(píng)估時(shí),要花費(fèi)更多的時(shí)間,潛在bug發(fā)生的可能性增加
2)業(yè)務(wù)方面:用戶體驗(yàn),對(duì)PD新需求的控制力什么的,照顧不太到
3)流程方面:UC略不規(guī)范,導(dǎo)致轉(zhuǎn)化成TC不太方便,也不方便別人看,不方便驗(yàn)收和測(cè)試
階段2:開(kāi)發(fā)自測(cè),測(cè)試關(guān)注整體業(yè)務(wù)
1、公益版2期(7.13-8.3,開(kāi)發(fā)測(cè)試比4:1)
2、合買版(10.19-11.3,開(kāi)發(fā)測(cè)試比4:1)
這兩個(gè)項(xiàng)目又新增了開(kāi)發(fā)資源,吸取了前兩次的經(jīng)驗(yàn)教訓(xùn)后,繼續(xù)優(yōu)化一下項(xiàng)目模式。
優(yōu)化點(diǎn):
1)項(xiàng)目里我不再擔(dān)任開(kāi)發(fā)人員,全職做測(cè)試;因?yàn)榍懊鎯蓚€(gè)項(xiàng)目自測(cè)效果不錯(cuò),所以依舊堅(jiān)持開(kāi)發(fā)自測(cè)的思路
2)強(qiáng)化UC,弱化TC。開(kāi)發(fā)不再編寫TC,但要詳細(xì)寫好UC。由我負(fù)責(zé)寫一些主流程TC和容易出錯(cuò)環(huán)節(jié)的TC
弱化TC的原因:
i.和UC有重復(fù)工作量
ii.黑盒功能用例寫得再多也不能保證全部覆蓋
iii.TC也是給開(kāi)發(fā)自測(cè)參考用的。開(kāi)發(fā)自測(cè)習(xí)慣是根據(jù)代碼邏輯做功能測(cè)試,流程性的一般根據(jù)自己的UC進(jìn)行自測(cè),然后再覆蓋一下TC上容易遺漏的點(diǎn),基本能滿足自測(cè)期望達(dá)到的目標(biāo)
3)增強(qiáng)代碼review
測(cè)試從前期就介入代碼review中,避免項(xiàng)目后面大家一起review的工作量太大。項(xiàng)目代碼略穩(wěn)定后,我每天花在代碼review上的時(shí)間至少占工作量的三分之一
4)完善回歸系統(tǒng)
效果:
1)測(cè)試能對(duì)整體業(yè)務(wù)點(diǎn)都很了解,并且能在前期就review出一些bug
2)從時(shí)間上可以看出,項(xiàng)目時(shí)間都在一個(gè)月內(nèi)。這里測(cè)試時(shí)間壓縮了很多,兩個(gè)項(xiàng)目提測(cè)到發(fā)布都只花了4天
合買版雙12活動(dòng)(11.23-12.6,開(kāi)發(fā)測(cè)試比4:1)
階段2進(jìn)行得比較順利,于是接下來(lái)的項(xiàng)目繼續(xù)在此模式基礎(chǔ)上優(yōu)化
優(yōu)化點(diǎn):
1)測(cè)試全程介入技術(shù)方案評(píng)審和代碼review
從技術(shù)方案開(kāi)始介入,review sql、業(yè)務(wù)層代碼、vm層代碼
2)更加關(guān)注系統(tǒng)性能方面的東西
測(cè)試同學(xué)能有時(shí)間學(xué)習(xí)性能測(cè)試,并為系統(tǒng)進(jìn)行了性能調(diào)優(yōu),為雙12做好準(zhǔn)備
問(wèn)題:
前端代碼尚無(wú)能力review。
二、模式小結(jié)
有些人疑惑,開(kāi)發(fā)自測(cè)后,測(cè)試干什么?
這就回到了開(kāi)頭提到的困擾。開(kāi)發(fā)自測(cè)模式,能把開(kāi)發(fā)和測(cè)試從低級(jí)bug中解放出來(lái),開(kāi)發(fā)可以提高代碼質(zhì)量,測(cè)試可以關(guān)注更深層次的系統(tǒng)質(zhì)量(比如性能和代碼優(yōu)化等),整個(gè)團(tuán)隊(duì)能提升效率,進(jìn)入良性循環(huán)。
那么寫了那么多,經(jīng)歷了半年多的探索,目前我們項(xiàng)目組到達(dá)了什么程度呢?從項(xiàng)目模式、效果和測(cè)試同學(xué)的角色3方面來(lái)描述一下。
1、產(chǎn)出了一個(gè)被現(xiàn)實(shí)考驗(yàn)過(guò)的項(xiàng)目模式(當(dāng)然還在繼續(xù)優(yōu)化中)
1)UC
開(kāi)發(fā)同學(xué)要寫詳細(xì)、標(biāo)準(zhǔn)的UC,方便后續(xù)測(cè)試和維護(hù);測(cè)試同學(xué)根據(jù)UC簡(jiǎn)單得寫一些TC,方便開(kāi)發(fā)自測(cè)
2)DAO層單測(cè)
新增sql必須要寫單測(cè)用例,修改sql必須要回歸單測(cè)用例
3)業(yè)務(wù)層單測(cè)
已經(jīng)有比較完善的單測(cè)環(huán)境,開(kāi)發(fā)可以根據(jù)個(gè)人喜好,在manager層或ao層進(jìn)行單測(cè),無(wú)硬性要求
4)代碼review貫穿整個(gè)流程
分為兩類代碼review,目前我們項(xiàng)目組兩類并存
i.測(cè)試同學(xué)主導(dǎo)的每日review
項(xiàng)目里每天測(cè)試同學(xué)都會(huì)review開(kāi)發(fā)提交的代碼,這不僅僅是發(fā)現(xiàn)bug,目前我們的代碼review已經(jīng)能到優(yōu)化代碼或設(shè)計(jì)方案的階段。例如:http://kelude.taobao.net/issues/206462?page=1
ii.傳統(tǒng)的項(xiàng)目組review
在項(xiàng)目后期集中式得進(jìn)行一兩次review,有效果但量較大
5)功能自測(cè)&驗(yàn)收
功能自測(cè)開(kāi)發(fā)根據(jù)UC和TC進(jìn)行;驗(yàn)收是PD介入,頁(yè)面有新需求可以及時(shí)改動(dòng)
6)整體測(cè)試
主要由我來(lái)執(zhí)行,進(jìn)行主流程測(cè)試和隨機(jī)測(cè)試,但不會(huì)覆蓋所有點(diǎn),其他功能點(diǎn)的質(zhì)量開(kāi)發(fā)同學(xué)自己保證
1)工期縮短。這是最明顯的,目前這幾個(gè)項(xiàng)目的daily、預(yù)發(fā)測(cè)試時(shí)間加起來(lái)都沒(méi)超過(guò)1周的
2)質(zhì)量提高。
i.開(kāi)發(fā)同學(xué)的代碼質(zhì)量提高了。以前測(cè)試同學(xué)都基本是保姆式的,現(xiàn)在測(cè)試介入得少了,遺漏bug會(huì)增加嗎?剛開(kāi)始開(kāi)發(fā)會(huì)略感不適應(yīng),但長(zhǎng)期來(lái)看對(duì)整個(gè)團(tuán)隊(duì)肯定是有益的
ii.整個(gè)開(kāi)發(fā)流程中,很多bug發(fā)現(xiàn)在前期,后期底層基本很穩(wěn)定了
3)釋放測(cè)試資源
目前我們團(tuán)隊(duì)的開(kāi)發(fā)測(cè)試比是4:1,最高時(shí)是5:1。在開(kāi)發(fā)大部分時(shí)間工作量飽和的情況下,測(cè)試資源基本能滿足項(xiàng)目組需要
4)周期快,能夠滿足一周多次發(fā)布的需求
交易線標(biāo)準(zhǔn)的日常流程:上一周提需求,周五UC評(píng)審,下周二提測(cè),周三預(yù)發(fā),周四發(fā)布。1周發(fā)布1次
目前我們?nèi)粘V饕?開(kāi)發(fā)自測(cè)+代碼review+腳本回歸 保證質(zhì)量,測(cè)試同學(xué)不用花太多精力進(jìn)行功能測(cè)試。因此團(tuán)隊(duì)效率很高,甚至能達(dá)到一天一次的發(fā)布頻率(當(dāng)然發(fā)布多了不是好事)
3、測(cè)試同學(xué)的任務(wù)
從初級(jí)bug的痛苦中釋放出來(lái)后,測(cè)試關(guān)注什么?
1)業(yè)務(wù)方面
了解整體業(yè)務(wù)和邏輯,review覆蓋整個(gè)研發(fā)流程,包括技術(shù)方案、sql、業(yè)務(wù)代碼、vm,做一個(gè)熟悉整個(gè)系統(tǒng)的角色
2)持續(xù)回歸
這一直是測(cè)試同學(xué)的強(qiáng)項(xiàng),維護(hù)一個(gè)成形的產(chǎn)品需要建立一套完善的回歸體系
3)其他方面
系統(tǒng)性能?算法測(cè)試?單測(cè)回歸?無(wú)線?隨便,因?yàn)橛袝r(shí)間有精力了,都可以去做
三、展望。我們才剛開(kāi)始
明年測(cè)試策略需要怎樣完善?產(chǎn)品在不斷迭代,市場(chǎng)在不斷增長(zhǎng),測(cè)試壓力得到釋放后,有更多的事等著我們?nèi)プ觥D壳跋氲降挠幸韵?點(diǎn)
1)測(cè)試數(shù)據(jù)
方便開(kāi)發(fā)同學(xué)自測(cè)
2)前端代碼review
這一直是痛點(diǎn),前端沒(méi)有成形的review機(jī)制。明年學(xué)習(xí)一下前端知識(shí),希望在review上有所突破
3)完善回歸
方便開(kāi)發(fā)自測(cè),最好開(kāi)發(fā)能根據(jù)改動(dòng)點(diǎn)進(jìn)行定制的腳本回歸
做到了這些,就做成了一個(gè)完整的開(kāi)發(fā)自測(cè)生態(tài)圈。明年繼續(xù)努力!
posted on 2013-01-04 14:25 順其自然EVO 閱讀(227) 評(píng)論(0) 編輯 收藏 所屬分類: 測(cè)試學(xué)習(xí)專欄