iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 7
0
自我挑戰組

開源組織生態觀察筆記系列 第 7

[Day7] Bugzilla --- 如何報一個好 Bug?

  • 分享至 

  • xImage
  •  

一個好的 Bug 對使用者、開發者都是很有幫助的,因此來學習如何報一個好的 Bug
而這篇文章也是 Bugzilla 系列的最終回

如何報一個好 Bug?

前些天瞭解了 Bugzilla 的使用操作與一些觀念,因此今天要回頭看第一篇文章提到的「Bug report writing guidelines」,藉此學習 Mozilla 針對貢獻者撰寫的 Bug Report 指引手冊。

這份手冊大綱有以下幾點

  • How to report a bug
  • Writing a clear summary
  • Writing precise steps to reproduce
  • Providing additional information
  • Advanced

整份文件的精要其實都在 How to report a bug,以下其他幾點都是舉例說明,因此讓筆者快速總結寫一份好的 Bug Report,身為貢獻者的注意事項有哪些

報 Bug 之前

在報 Bug 之前有件事情是相當值得初學者注意的

確保軟體是最新版本,理想來說,最好不是釋出的版本(Release)而是開發中(dev)的版本,避免你要回報的 bug 或許早已被修復

取得最新版本的方式隨著不同開源專案而變化,舉例來說:放在 GitHub 上的專案,通常會將開發中的分支(branch)當作主頁面的分支,而非 master。相對容易取得的釋出版本,開發中版本多處於需要自行編譯的狀況,因此如果第一時間發現 Bug 的軟體版本不是最新釋出版本,建議先取得最新的釋出版本嘗試一次,如果仍有狀況,就進到下一個步驟。

發起一個不重複的 Bug

發起一個不重複的 bug 是昨天與前天文章的內容之一,在發起自己的 Bug 前,先確認是否已經有存在的 Bug 是一件很重要的事情,如果不是先調查,你的貢獻反而會變成專案維護者的負擔,因此 Bug 搜尋技巧相當重要。而後市選擇正確的產品與功能分類,以確保 Bug 的歸類是正確的。

寫一句精要的 Bug 說明

好的 Bug Report 第一先決條件:下一個精要的標題!如同手冊舉的例子,要言簡意賅的描述 Bug

Good: "Cancelling a File Copy dialog crashes File Manager"
Bad: "Software crashes"

Good: "Down-arrow scrolling doesn't work in styled with overflow:hidden"
Bad: "Browser should work with my web site"

如何重現 Bug?步驟為何?

Bug 若無法重現,就無法修復

筆者認為在 Bug Report 的環節中,初學者要花點時間才能掌握好,不過如同手冊所說「Bug 如果無法重現,就不法修復」,對於有心想貢獻的朋友,務必謹記在心。

根據手冊,基本要素有三大項

  1. 重現的詳細步驟
  2. 預期結果
  3. 執行結果

簡單來說就是一種科學實驗的精神,描述步驟越詳細越好,然後還要清楚預期行為來當作對照組,也因此詳細記錄執行結果是很重要的。

額外資訊

筆者認為「額外資訊」就好比 Bug 的身分證名,舉凡

  • 產生錯誤的螢幕截圖
  • 軟體版本
  • 作業系統
  • 環境設定變數
  • 錯誤訊息
    這幾項越詳細就越能幫助開發者打造一個重現 Bug 的環境,前面三點如同字面意思,我們來看後面兩點

環境設定變數
此手冊舉 Firefox 使用者喜好來說明:建議使用一個初始化的使用者設定(profile)來當作重現 Bug 的環境,避免 Bug 的產生可能是具有多種變因,而導致後續修復的困難。

再舉 LibreOffice 為例,之前筆者見過一種例子:在 MS 的系統下,使用者常常會裝很多非開源字體,如果用 LibreOffice 開啟就有可能導致軟體崩潰/內容跑掉,這樣的情況對於開源軟體來說,不是一個可以修復的 Bug,因為源頭的字體並不是開源的。

錯誤訊息
筆者認為錯誤訊息的回報就真的需要有點經驗的使用者才能做到,手冊中指出的錯誤訊息根據不同的來源就有不同的回報方法,舉例來說如果是 Crash 比較好的錯誤訊息就需要提供 "stack trace" 的訊息,要能夠撈出 stack trace 的錯誤訊息,對於一般使用者來說是相當有難度的。

不過如果是在 Linux 底下,如果是 Crash 錯誤與其用圖示開啟,不訪可以嘗試用 Terminal 來開啟程式,也有機會撈出錯誤訊息,並加以回報

結語

今天的主題「如何報一個好 Bug?」,雖然沒那麼簡單上手,但多練習幾次總會賞手的!那連續四天的 Bug 的主題就先暫時告個段落,希望有對讀者在參與開源軟體貢獻/管理專案的 Bug 知識有幫助。

明天的主題會再找一個跟開源組織相關的主題來探討,但是開源組織的生態觀察筆記要在 30 天內每天僅僅花 2 小時介紹,筆者想應該是介紹不完,而在寫文章的過程中,越發瞭解只有實際參與,才能真正了解開源組織,因此建議對開源有興趣的朋友也能及早投入,在開源組織,人人都能貢獻 :)


上一篇
[Day6] Bugzilla --- Life Circle of Bug
下一篇
[Day8] GNU and FSF --- GNU Project
系列文
開源組織生態觀察筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言