發(fā)布時間:2017-05-12 15:38 | 標(biāo)簽:
Unite 2017 Shanghai
微信掃一掃:分享
微信里點“發(fā)現(xiàn)”,掃一下
二維碼便可將本文分享至朋友圈
Unite 2017 Shanghai將于5月11日-13日在上海·國際會議中心舉辦,國內(nèi)技術(shù)專場演講中Unity開發(fā)工程師蔡元星分享《A Bug’s Life》主題,介紹Unity是如何處理用戶提交Bug到解決Bug,到發(fā)布Bug整個完整過程。
以下為VR陀螺整理的演講實錄:(略有刪減)
蔡元星:
我是Unity開發(fā)工程師,我今天給大家講的題目叫做A Bug’s Life,為什么叫這個名字呢?我想借這個機會給大家講一下Unity是如何處理用戶提交Bug到解決Bug,到發(fā)布Bug整個完整過程。
Unity從5.3版本之后投入了大量資源在穩(wěn)定性上,我們希望和用戶一起配合,把產(chǎn)品質(zhì)量做得更好,所以其實我們是需要大家在Bug上面的反饋。
我會教大家如何報告bug,Unity是如何處理bug報告以及修復(fù)bug的,然后用戶如何追蹤bug修復(fù)的進度,以及最后我們Unity是如何發(fā)布bug fix的。
首先,用戶如何向Unity報告bug。
我們有一個叫做Unity Bug Reporter的工具,從 Help 到Report a Bug啟動,編輯器崩潰它會自動啟動。在報一個Bug的操作界面,帶星號的選項都是要填的。
What is the problem related to,Crash bug - Unity編輯器或者發(fā)布的游戲崩潰,A problem with the Editor - 編輯器使用中的問題,A problem with the Player - 發(fā)布游戲運行中的問題。
第二個是This is the first time - 當(dāng)你不知道如何重現(xiàn)問題時選擇,Sometimes but not always - 偶爾發(fā)生或者隨機發(fā)生,Always - 100%重現(xiàn)。
另外你需要填你的email地址,因為我們會通過郵件聯(lián)系你告知bug處理的進度,或者詢問有關(guān)這個bug的更多信息。
接下來是一個Bug的描述,要用英語寫,第一個是說你覺得你的Bug你認為的錯誤行為是什么,以及什么時候它發(fā)生。
這里有一個例子,這個是數(shù)據(jù)庫里面已經(jīng)有的一個Bug,叫做Editor crashes when adding text component to game object in play mode via script,自動建議可能相關(guān)的問題。
當(dāng)你輸入的時候,無論是論壇還是Bug追蹤工具已經(jīng)有的Bug和你輸入的關(guān)鍵字匹配的話相關(guān)會列在這里。
接下來最重要的是你這個Bug呈現(xiàn)的步驟。
你要盡量寫的詳細,每一步如何最終觸發(fā)這個Bug,你要寫清楚你期待的它的正確行為是什么,它實際錯誤的行為是什么。
另外一個很重要的一步是,我們需要一個你可以重現(xiàn)Bug的項目,如果你的bug是和項目中具體的資源或者腳本相關(guān)的,所以需要大家的項目文件,這個僅需包含重現(xiàn)bug所必須的文件,不要包含Library文件夾。
另外我們保證是對用戶上傳的文件絕對保密的,所以不會用作重現(xiàn)bug之外的其他用途,所以大家這一點可以放心,除了項目文件本身,你還可以上傳一些描述重現(xiàn)步驟的視頻或者視頻、截圖,最后點擊Send。
最后是上傳重現(xiàn)項目的步驟,如果大家的項目比較大的話,傳起來可能非常慢,我們官方有兩個很小的工具幫助大家精簡項目。
第一個叫做Repro Project Wizard,是你導(dǎo)入package后選擇Window->Repro Project Wizard,原理很簡單,就是把發(fā)生bug的場景加入到Assets to Copy中,場景中引用的其他資源會自動添加,加入其他運行該場景所必須的文件,紋理尺寸可以選擇縮小紋理尺寸,最后按Create Project會在指定路徑創(chuàng)建出新的一個文件。
另一個Project Stripping Tool比較簡單,有選擇的把特定類型的資源從項目中刪除,操作可撤銷,導(dǎo)入package后在任意文件或文件夾上右鍵單擊。
下面告訴大家怎樣才是優(yōu)質(zhì)的Bug報告。
可重現(xiàn)性是最重要的,如果能重現(xiàn),我們敢保證有99%的把握可以修復(fù)bug,如果上傳項目文件的話對我們修復(fù)Bug有非常大的幫助,你們可以提供更好的相關(guān)信息幫助我們更好的修復(fù)Bug。
另外必須要用英語,因為我們沒有人力處理非英語的報告。
提交Bug以后, Unity如何處理bug報告以及修復(fù)bug。
這里面提到一個概念是incident,用戶每發(fā)送一個bug報告,我們的系統(tǒng)中就會自動創(chuàng)建一個對應(yīng)的incident。
Unity工程師只關(guān)注bug,你的incident成功轉(zhuǎn)為bug之后會收到郵件通知,我們盡力處理所有的incident,但數(shù)量太多時做不到,所以用一個評級系統(tǒng)來確定優(yōu)先級。
它是從0排到5,0就是你的Bug報告寫的不清楚,沒有重現(xiàn)步驟,或者垃圾郵件的話就是0;5就是你有完整的重現(xiàn)項目,寫了非常詳細明確的描述這是5,評級越高就越有可能被處理并轉(zhuǎn)化為bug,企業(yè)級支持用戶的incident有最高優(yōu)先級。
接下來,我們內(nèi)部工程師到底怎么修Bug,一個incident轉(zhuǎn)為bug時,會根據(jù)影響的模塊分配給相應(yīng)的工程師團隊,我們會計算一個叫做“用戶痛苦”指數(shù)決定優(yōu)先級,依據(jù)是這個Bug的嚴重性,潛在影響的用戶數(shù)量,影響的平臺,還有它是否之前的版本是正常的現(xiàn)在壞了,Issue Tracker上面可以投票,投票數(shù)越多影響用戶越多,還有是否來自企業(yè)級支持用戶。
報了Bug之后要怎么追蹤我們處理的進度。
首先是會有郵件的溝通,你提交bug后會收到確認郵件,告知bug ID。
另外bug被成功重現(xiàn)之后,就是incident轉(zhuǎn)成 bug之后,bug被resolve,你可以回復(fù)任何一封通知郵件,附加更多信息,我們內(nèi)部的QA和工程師收到這封郵件,可以與Unity QA或工程師交流,也可以通過這種形式給你的Bug附加更多的信息。
下面來介紹我們Issue Tracker,當(dāng)你的incident被轉(zhuǎn)為bug,相關(guān)信息有可能會公布在 https://issuetracker.unity3d.com這個網(wǎng)站上面。
這個其實是相當(dāng)于我們一個對外公開的Bug數(shù)據(jù)庫,所有QA重現(xiàn)的Bug大家在這里可以查到。
另外,如果你在你的Bug報告里面提到你自己的郵件地址、公司名稱、項目信息,我們的QA會人工把這些信息過濾掉不會公開,另外你上傳的項目文件也不會公開,你收到搜索確認郵件里的bug ID,另外有投票的功能,每個有10票,如果你看到哪一個Bug是你遇到的,你想提高它修復(fù)的速度或者機率的話可以給它投票,所以一個Bug在這里面的票數(shù)越多,它的優(yōu)先級越高,就越有可能被修復(fù),大家不報Bug,在這里面看到你的問題,也可以通過投票的方式來加快它被修復(fù)的速度。
接下來就是Issue Tracker具體Bug打開的一個界面,可以看到這20個Votes是說20個不同用戶遇到相同的問題給它的投票,這個投票越高優(yōu)先級越高,還可以看到它在哪一個版本發(fā)現(xiàn)的,還有這個ID就是剛才說的Bug ID,最后Regression看一下是不是在5.6之前的版本是正常的,在5.6壞了,這個也可以。
另外,Issue Tracker里面大家看到上面黑的是這個Bug目前的狀態(tài),用戶報告的每一個Bug其實都是有7個狀態(tài),Active是說這個Bug正在調(diào)查或修復(fù)中,新報的Bug默認都是這個狀態(tài)。
另外六個就是你的Bug被解決之后,會被解決成以下六種不同的狀態(tài)。
Fixed就是確實是一個Bug,已經(jīng)修好了
Postponed是說確定是一個問題但目前不打算修復(fù),可以預(yù)見的未來之內(nèi)不打算修復(fù);
Duplicate就是你這個Bug和另外一個bug是相同的問題,為了減少大家處理的時間,把相同的Bug直接解決Duplicate;
Not Reproducible是Unity的工程師我們嘗試修復(fù)時此bug已無法再重現(xiàn)。
Won’ t Fix這個比較少見但是也是會出現(xiàn),由于某些合理的原因我們決定不修這個bug。
By Design不是bug。
如果bug resolve的結(jié)果不是Fixed或Duplicate,我們會郵件告訴你具體的原因,為什么結(jié)果是這樣的。
最后說一下我們Unity如何發(fā)布Bug修復(fù)。
我們有三種版本,所謂的重要版本比如說5.6.0大的重要版本,這種是包含新功能,以及對已有功能改進以及對bug修復(fù),三個月一次,另外我們有補丁版本,需要到 https://unity3d.com/unity/qa/patch-releases網(wǎng)站直接下載安裝文件。
還有一種版本就是所謂的公開版本,就是每四個補丁版本中所有的bug修復(fù),五個星期一次,這種版本在編輯器中Check for Updates會通知。
另外如果大家報的Bug最終是修復(fù)狀態(tài),肯定想到底是在哪一個具體版本里面修復(fù)的,一般情況下Unity的工程師修復(fù)的bug會發(fā)布在下一個重要版本中,這是一般的Bug;但是我們?nèi)绻J為這個Bug比較嚴重,我們會選擇后向移植到之前的版本中。
稍微總結(jié)一下,我們說到要使用Unity Bug Reporter工具來報告bug,我是我們向Unity提交Bug最主要的方式;還有使用我們提供的工具精簡你的項目并發(fā)給我們,幫助我們重現(xiàn)bug;另外你提供越多的信息,你的incident就越有可能被重現(xiàn)被轉(zhuǎn)為真正的bug,最后被真正的修復(fù);
另外,我們內(nèi)部根據(jù)bug帶給用戶的痛苦來決定優(yōu)先級;還有就是我們Bug修復(fù)的進度,如果是你自己報的Bug會通過email跟你溝通;也可以到Issue Tracker鼓勵大家多用一些,歷史上所有的Bug在里面都有記錄,所以你遇到真正的Bug,其實有非常大的可能是在這里面查到的;另外我最后講到我們發(fā)布補丁版本的方式,如果有非常緊急的Bug,可以到那個網(wǎng)站去下載最新的補丁版本。
謝謝大家!
投稿/爆料:tougao@youxituoluo.com
稿件/商務(wù)合作: 六六(微信 13138755620)
加入行業(yè)交流群:六六(微信 13138755620)