那一成紅燈,差點讓我放掉一隻登入 bug

#Appium #QA 思維 #自動化測試 #CI/CD

沒有人動過測試。 那天整批 Appium 測試開始紅,git log 卻乾乾淨淨——沒人改過測試,也沒人改過功能。它就是,自己開始壞了。 而我手上正卡著一個決定:這個版本到底能不能釋出。 壓力不是來自測試,是來自人 那個決定真正的重量,不在紅燈本身,在房間裡的人。Boss 說這版一定要釋出,PO 也說一定要釋出。 所以我面對的,從來不只是「這版到底有沒有壞」這個技術問題——是我得在「上面都說一定要上」和「我手上只有一團我說不清的紅燈」之間,自己扛下那個判斷。要擋一個所有人都在催的版本,是這世界上最難的事之一。而光靠一句「我覺得怪怪的」,你擋不住。 九成過,一成紅 更麻煩的是,那團紅燈不是全紅。九成過,一成紅。 最折磨人的恰恰是這個比例。全紅你反而輕鬆——全紅你知道一定出了大事,沒得猶豫。偏偏是這種九比一最磨人:九成的綠在你耳邊說「應該沒事吧」,那一成的紅又不准你安心。你沒辦法拍胸脯說那一成是雜訊,也拿不出證據說它是真的。你就卡在 90% 的安心和 10% 的不安中間,而時鐘在走,上面在催。 flaky 真正的毒 而我心裡其實有個聲音說:那一成,十之八九又是 flaky 吧。 這套 Appium 測試三天兩頭亂紅——timing 差一點、元素還沒出來、模擬器冷啟動慢半拍,都能讓它莫名其妙失敗。我早就習慣了:看到紅,先重跑,多半就綠了。 這就是 flaky 真正的毒。它最可怕的地方,不是讓你看到假的失敗,而是它會慢慢訓練你,養成一個習慣——對紅燈翻白眼。一次、兩次、十次都是假警報之後,你的手指比腦袋還快,紅燈一跳出來,想都不想就按重跑。 而當你已經學會了忽略失敗,真正的那一隻,就混在那團雜訊裡,大搖大擺地走過去。 那一隻,是登入 然後我點開了那一成。 藏在裡面的,是帳號登入壞了。 不是什麼邊角功能——是登入。這要是放出去,不是某個畫面怪怪的,是所有使用者打開 App,直接進不來。而它,就躺在那團我天天翻白眼的 flaky 紅燈裡,跟一堆「等一下重跑就好」的假失敗,長得一模一樣。 救我的不是工具,是多確認一步 我差點就放掉它。九成都過了,反正它平常也亂紅,手指都快按下重跑了。 但這次我沒有停在「重跑看看」。對那個可疑的失敗,我多做了幾步:重跑,它連紅;點開 log,每一次都死在登入回應那一段,不是平常 flaky 那種東一個西一個的隨機死法;最後我乾脆拿真機手動登一次——登不進去。 到這裡,它就不再是「我覺得怪怪的」了。重跑連紅、log 指向同一處、手動重現——三個各自獨立的來源,都指著同一件事:它是真的。 證據,是 QA 唯一站得住的東西 回頭看,那天救我的不是任何工具,是「對可疑的地方,多確認一步」。手動還是自動從來不是重點,重點是我最後攤得出一個別人也看得到的東西,而不是我的直覺。 因為釋不釋出,從來不該賭在「我覺得」。在那個 boss 和 PO 都說一定要上的房間裡,「我覺得怪怪的」一秒就被輾過去;但「重跑五次連紅、log 都死在登入、真機也進不去」——這個,沒有人能輕易推翻。 這就是那天教會我的事:flaky 不可怕,可怕的是它讓你戒掉了「要證據」的習慣。而證據,是 QA 在那種房間裡,唯一站得住的東西。