Question:
描述測試開發(fā)工程師在整個(gè)業(yè)務(wù)研發(fā)價(jià)值鏈的作用乃至將來的發(fā)展方向,加上朝著這樣高效能團(tuán)隊(duì)演進(jìn)的過程和計(jì)劃
Answer:
測試開發(fā)工程師(Software Test Engineer),下面簡稱SET。
SET應(yīng)參與開發(fā)過程改進(jìn)質(zhì)量
SET也是開發(fā)角色,和軟件開發(fā)是合作伙伴關(guān)系,關(guān)注產(chǎn)品/平臺的質(zhì)量提升和測試覆蓋率的增加,日常需要參與產(chǎn)品/平臺的設(shè)計(jì)評審,強(qiáng)調(diào)預(yù)防行為而不是檢測。
SET的重心在代碼的可測試性和通用測試基礎(chǔ)框架上。為了增加代碼的可測試性,甚至?xí)Υa進(jìn)行重構(gòu),以及判斷是否需要新增testing hook(為測試新增的接口,顯示系統(tǒng)內(nèi)部狀態(tài)),提供程序結(jié)構(gòu)和代碼風(fēng)格建議給開發(fā)人員。SET可以參與開發(fā)的代碼評審。
為了高效的進(jìn)行測試開發(fā),應(yīng)建立一些公共庫/共享代碼(可復(fù)用性大于功能復(fù)雜性和設(shè)計(jì)巧妙性)。提供比較多的test harness,test infrastructure, mock and fake供軟件開發(fā)崗/測試開發(fā)崗使用。測試和開發(fā)應(yīng)采用相同的語言。
另外,只有能加速開發(fā)過程的自動化測試才有意義,測試不應(yīng)拖慢開發(fā)的速度。
自動化測試開發(fā)
試圖自動化所有端到端的測試用例,是一個(gè)常見的錯(cuò)誤。
自動化投入越多,維護(hù)成本越大。自動化計(jì)劃,應(yīng)該規(guī)模更小,目的性更強(qiáng),20%的用例覆蓋80%使用場景的優(yōu)先自動化。
端到端的自動化測試投入過度,會把產(chǎn)品特定功能綁定在一起,產(chǎn)品穩(wěn)定之前都不會特別有用。SET應(yīng)該投入到提高質(zhì)量,而不是維護(hù)不穩(wěn)定的測試套件上。
SET應(yīng)維護(hù)著不同測試類型之間的健康比例,經(jīng)驗(yàn)法則:70%是小型;20%是中型;10%是大型。如果面向用戶,集成度高,用戶接口復(fù)雜,增加中大型測試比例;
基礎(chǔ)平臺或面向數(shù)據(jù),增加小型測試比例。
自動化測試用例應(yīng)能以隨機(jī)順序執(zhí)行用例(任意順序也意味著可以并發(fā)),未來可以使用依賴分析技術(shù)來優(yōu)化,做到一個(gè)代碼的變更只運(yùn)行所在模塊的測試用例。
增強(qiáng)開發(fā)人員做測試的文化
讓測試認(rèn)證變成一個(gè)富有聲望的事情,從1到5級,有勛章可以炫耀。
- 級別1:基本操作,還有去除所有非確定性測試(結(jié)果不確定的測試),挑選冒煙測試;
- 級別2:提高增量覆蓋率
- 級別3:測試新增代碼
- 級別4:測試歷史遺留代碼(針對可測試性做重構(gòu))
- 級別5:更高的覆蓋率,每個(gè)缺陷對應(yīng)增加測試用例
(如果Coding可以做到測試資源集中管理,再分發(fā)到部門/項(xiàng)目組,可以反過來約束開發(fā)團(tuán)隊(duì):
團(tuán)隊(duì)的測試認(rèn)證級別代表提高測試的重視程度,是測試團(tuán)隊(duì)決定是否投入有限測試資源的重要參考指標(biāo)。通過這種方式倒逼開發(fā)團(tuán)隊(duì)重視測試實(shí)踐,因?yàn)楸仨氈匾暅y試實(shí)踐,才能獲得測試資源)
SET的橫向影響
SET先從本部門做好,如果做出成績,可以允許項(xiàng)目組/部門間的借調(diào),可以保持新鮮感,也能方便好的想法快速蔓延。
這樣SET也會有一個(gè)很大的優(yōu)勢,就是產(chǎn)品方面的寬廣視野,也很適合審核初期階段的設(shè)計(jì)文檔。
SET的未來
目前存在軟件開發(fā)崗和測試開發(fā)崗,未來應(yīng)只有軟件開發(fā)崗,目標(biāo)就是將測試開發(fā)崗做沒有。
測試代碼變成一等公民,全部由軟件開發(fā)崗編寫。
軟件開發(fā)團(tuán)隊(duì)里的新成員負(fù)責(zé)測試開發(fā),因?yàn)楸仨殞W(xué)習(xí)產(chǎn)品的所有東西,包括內(nèi)部設(shè)計(jì),是一個(gè)非常理想的熱身項(xiàng)目。