剛開始,慢慢做閱讀時間約 2 分鐘
按下按鈕之後,還未知道結果
創作者請工具生成一張圖片,畫面卻一直在等。他於是再按一次,或者程式自動替他重試。表面看只是把同一件事再試一下,但遠端的伺服器可能早已開始處理第一次要求。
這是一個值得測試的情境,並非某次實際扣錯點數的事故紀錄。在 InkSpire 這類工具裏,重複送出要求需要小心處理,因為每次生成都可能用掉點數,也會產生使用者想保留的作品。
要認得,這仍是同一次嘗試
處理期間把按鈕設為暫時不可再按,可以減少誤觸,卻未解決等候逾時或重新連線後的情況。「等候逾時」只代表使用者的裝置不再繼續等,伺服器那邊有否完成工作,其實還未知。
常見的技術做法,是為同一次操作保留一個固定識別碼(稱為 idempotency key,幂等鍵)。重試時帶着同一個識別碼,伺服器便能認出這是剛才那次操作,直接交回已記錄的結果,而不會重新製作或再扣一次點數。即使兩個相同要求同時到達,也必須由伺服器把關;單靠改變畫面按鈕上的文字並不足夠。
把中斷的次序也試一次
測試時,不妨試試連續按兩下、回應很慢、中途斷線,以及伺服器其實已完成後再重試。除了看畫面顯示,也要檢查操作紀錄和點數變化。至於使用者主動想重新製作一次,則要與重試原來的要求分清楚。
不同服務,做法會不同。我想先問清楚的是:一個人因為不知道剛才發生了甚麼而再試時,工具能否先查明白,再決定是否需要重做?