iT邦幫忙

2026 iThome 鐵人賽

DAY 4
0

有一項 bug ,在調整前我請 Ray 評估需要多少時間。Ray 看了一下,告訴我:「星期三會好。」

很好,有明確時間,規格也請他重新敘述,目前符合想像,看起來萬事俱備,只欠東風。更驚人的是,到了星期三,功能居然如期交了出來。天知道我看著他回覆的「我做完了」有多感動。

但,基於前幾次累積下來的交手經驗,我還是多問了一句:「有自己測過嗎?」
「有,我測過了沒問題。」

很好。有測試,還準時交付,事情慢慢地走上了正軌,我的專案終於開始有救了嗎??擦著眼角的淚水,覺得今天的陽光特別燦爛。

星期四,我準備開始驗收。這次的功能有不同情境,我拿出 case 開始測試。

第一個:錯
沒關係,人生難免有意外,畢竟人無完人,可能只是沒有注意到吧?

第二個:錯
嗯......開始感受到一絲熟悉的氣息,果然是熟悉的 Ray 最對味。

第三個:還是錯
我看著眼前三個 Case,陷入了長考,同時回想了一下星期三回覆的:「有,我測過了沒問題。」一時之間,對「測過」這兩個字產生了濃厚的興趣,通過率目前看來0%,跟我對於測試過的定義似乎有一點點小小的差距。


Environment:為什麼工程師明明測過,複測還是錯?

在軟體開發中,工程師寫完 Code 後,通常不會直接丟到正式環境,而是會經過不同的 Environment(環境)進行開發與測試。依照不同專案,可能會有 Local、DEV、SIT、UAT、PROD 等環境。每個環境的用途、設定、資料甚至串接的服務都可能不同,因此「測過了」其實還有一個很重要的問題:

你在哪裡測的?

1. Local 測試:在工程師自己的環境先確認

Local Environment 可以簡單理解成工程師自己電腦上的開發環境。

功能開發完成後,通常會先在 Local 進行基本的 Self Test,確定程式至少能正常執行,主要功能符合預期,才會再將 Code Commit、Merge,準備部署到共用的測試環境。因此,Local 測試正常,只代表第一關通過了,並不代表部署到其他環境後一定會得到相同結果。

2. 測試環境:確認部署出去的版本也能正常運作

當 Code 從 Local 進入 DEV、SIT 或 UAT 等環境後,面對的環境設定、測試資料、API 或其他串接服務都可能有所不同。

這也是為什麼軟體開發中偶爾會出現一句非常經典的話:「可是我 Local 明明是好的。」
(Ray 大也很常這樣跟我說)

所以當工程師說「測過了」,除了確認在哪個環境測,也要確認測試的版本和現在部署出去的版本是不是同一版。

3. 部署完成:先做基本確認再正式交測

即使 Local 已經測試成功,部署到共用環境後,還是可以先進行一次基本功能確認,例如 Smoke Test(冒煙測試),快速確認主要功能是否能正常運作。

Smoke Test 不會把所有 Test Case 從頭到尾完整測過一次,而是先挑幾個最基本、最重要的功能快速確認。例如網站能不能正常開啟、主要流程能不能操作,或這次修改的功能是否能正常執行。
「冒煙測試」這個名稱其實源自硬體測試的概念:設備通電後,先看看會不會直接「冒煙」。後來被軟體開發借來形容——先快速確認這一版會不會一上場就出大事。

如果連這些基本功能都有問題,就代表這個版本可能還不適合繼續進行更完整的測試。

對 PM 來說,不需要自己架環境,也不一定需要懂得怎麼部署,但至少測試時,可以再三確認一下:

在哪個環境測?
現在部署的是哪一版?
部署後有沒有再確認?


當然,依照專案成員之間的默契,測完了就是上 UAT 給我以及 USER 測試,因此無論到底是在哪個環境沒問題,測出來就是沒辦法。而且這些錯誤,是原本 BUG 就出現的地方,而非改過之後另外出現的錯誤,換言之,就是原本要修改的東西,並沒有解決。

後來,因為 Ray 的開發進度無法應付客戶,有機會再和前任工程師合作。他改出來的功能一次到位,程式碼乾淨整齊,debug 後複測沒有問題。
我:「你太強了,完全沒有錯喔你超棒!!」
工程師:「因為我會自己先測過一次啊:D」

當天下班踏著月色回家,月下吟詠:

需求交君無掛念,改成功能自安詳,當時只道是尋常。


上一篇
Day3 當進度只有路徑,沒有位移
系列文
我的工程師好像哪裡怪怪的4
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言